aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt3
-rw-r--r--MAINTAINERS3
-rw-r--r--arch/arm/common/Kconfig1
-rw-r--r--arch/arm/mach-imx/cpufreq.c15
-rw-r--r--arch/arm/mach-imx/generic.c9
-rw-r--r--arch/arm/mach-ns9xxx/mach-cc9p9360dev.c2
-rw-r--r--arch/arm/mach-omap1/board-h2.c1
-rw-r--r--arch/arm/mach-omap2/clock.c1
-rw-r--r--arch/arm/mach-omap2/clock.h3
-rw-r--r--arch/arm/mach-pxa/tosa.c3
-rw-r--r--arch/i386/Kconfig2
-rw-r--r--arch/i386/kernel/acpi/boot.c23
-rw-r--r--arch/ia64/configs/tiger_defconfig263
-rw-r--r--arch/ia64/configs/zx1_defconfig344
-rw-r--r--arch/ia64/defconfig321
-rw-r--r--arch/ia64/kernel/crash.c10
-rw-r--r--arch/ia64/kernel/efi.c2
-rw-r--r--arch/ia64/kernel/mca.c8
-rw-r--r--arch/ia64/kernel/mca_drv.c65
-rw-r--r--arch/ia64/kernel/ptrace.c1
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c44
-rw-r--r--arch/ia64/sn/kernel/setup.c2
-rw-r--r--arch/powerpc/configs/cell_defconfig151
-rw-r--r--arch/powerpc/mm/hash_utils_64.c6
-rw-r--r--arch/powerpc/mm/hugetlbpage.c4
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c81
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c24
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c4
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c20
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h6
-rw-r--r--arch/powerpc/platforms/cell/spufs/switch.c62
-rw-r--r--arch/powerpc/platforms/ps3/mm.c2
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c2
-rw-r--r--arch/sparc/kernel/process.c16
-rw-r--r--arch/sparc/kernel/traps.c6
-rw-r--r--arch/sparc64/kernel/process.c9
-rw-r--r--drivers/acpi/Kconfig12
-rw-r--r--drivers/acpi/blacklist.c10
-rw-r--r--drivers/acpi/ec.c40
-rw-r--r--drivers/acpi/events/evmisc.c25
-rw-r--r--drivers/acpi/ibm_acpi.c28
-rw-r--r--drivers/acpi/power.c20
-rw-r--r--drivers/acpi/resources/rscreate.c25
-rw-r--r--drivers/acpi/video.c38
-rw-r--r--drivers/ata/libata-acpi.c7
-rw-r--r--drivers/base/core.c23
-rw-r--r--drivers/misc/asus-laptop.c2
-rw-r--r--drivers/misc/sony-laptop.c2
-rw-r--r--drivers/mmc/imxmmc.c13
-rw-r--r--drivers/pci/msi.c150
-rw-r--r--drivers/pci/pci.c29
-rw-r--r--drivers/pci/pci.h2
-rw-r--r--drivers/pci/pcie/aer/aerdrv.c6
-rw-r--r--drivers/pci/pcie/portdrv_pci.c6
-rw-r--r--drivers/pci/search.c2
-rw-r--r--drivers/pnp/pnpacpi/rsparser.c120
-rw-r--r--drivers/ps3/ps3av.c9
-rw-r--r--drivers/ps3/sys-manager.c6
-rw-r--r--drivers/ps3/vuart.c2
-rw-r--r--drivers/usb/class/cdc-acm.c8
-rw-r--r--drivers/usb/core/devio.c13
-rw-r--r--drivers/usb/core/hub.c9
-rw-r--r--drivers/usb/core/message.c9
-rw-r--r--drivers/usb/gadget/at91_udc.c6
-rw-r--r--drivers/usb/gadget/goku_udc.c29
-rw-r--r--drivers/usb/host/ehci-hub.c3
-rw-r--r--drivers/usb/host/uhci-hub.c11
-rw-r--r--drivers/usb/misc/ftdi-elan.c18
-rw-r--r--drivers/usb/net/dm9601.c4
-rw-r--r--drivers/usb/serial/airprime.c47
-rw-r--r--drivers/usb/serial/cp2101.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.c90
-rw-r--r--drivers/usb/serial/ftdi_sio.h21
-rw-r--r--drivers/usb/serial/ipaq.c2
-rw-r--r--drivers/usb/serial/usb-serial.c22
-rw-r--r--drivers/usb/storage/unusual_devs.h17
-rw-r--r--drivers/video/backlight/locomolcd.c4
-rw-r--r--drivers/video/bw2.c18
-rw-r--r--drivers/video/cg14.c5
-rw-r--r--include/asm-arm/arch-ixp4xx/ixp4xx-regs.h6
-rw-r--r--include/asm-arm/arch-lh7a40x/entry-macro.S12
-rw-r--r--include/asm-i386/vmi_time.h2
-rw-r--r--include/asm-ia64/kexec.h1
-rw-r--r--include/asm-ia64/mca.h2
-rw-r--r--include/asm-ia64/pal.h1
-rw-r--r--include/asm-ia64/pci.h3
-rw-r--r--include/asm-ia64/sal.h5
-rw-r--r--include/asm-ia64/unwind.h2
-rw-r--r--include/asm-powerpc/spu.h7
-rw-r--r--include/asm-powerpc/spu_csa.h4
-rw-r--r--include/asm-powerpc/systbl.h3
-rw-r--r--include/asm-powerpc/unistd.h4
-rw-r--r--include/asm-sparc/unistd.h1
-rw-r--r--include/asm-sparc64/unistd.h1
-rw-r--r--include/linux/msi.h8
-rw-r--r--include/linux/pci.h5
-rw-r--r--include/linux/pci_regs.h1
-rw-r--r--kernel/module.c6
-rw-r--r--lib/kobject.c2
-rw-r--r--net/dccp/dccp.h1
-rw-r--r--net/dccp/output.c16
-rw-r--r--net/dccp/timer.c25
-rw-r--r--net/ipv4/cipso_ipv4.c5
-rw-r--r--net/ipv4/devinet.c4
-rw-r--r--net/ipv4/igmp.c2
-rw-r--r--net/ipv6/ipv6_sockglue.c4
-rw-r--r--net/rose/af_rose.c80
-rw-r--r--net/wanrouter/af_wanpipe.c2600
-rw-r--r--net/xfrm/xfrm_state.c6
109 files changed, 1743 insertions, 3510 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 914119309ddb..856c8b114e71 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -126,7 +126,8 @@ and is between 256 and 4096 characters. It is defined in the file
126 See header of drivers/scsi/53c7xx.c. 126 See header of drivers/scsi/53c7xx.c.
127 See also Documentation/scsi/ncr53c7xx.txt. 127 See also Documentation/scsi/ncr53c7xx.txt.
128 128
129 acpi= [HW,ACPI] Advanced Configuration and Power Interface 129 acpi= [HW,ACPI,X86-64,i386]
130 Advanced Configuration and Power Interface
130 Format: { force | off | ht | strict | noirq } 131 Format: { force | off | ht | strict | noirq }
131 force -- enable ACPI if default was off 132 force -- enable ACPI if default was off
132 off -- disable ACPI if default was on 133 off -- disable ACPI if default was on
diff --git a/MAINTAINERS b/MAINTAINERS
index 9993b9009415..17555bba20af 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1103,9 +1103,6 @@ W: http://lanana.org/docs/device-list/index.html
1103L: linux-kernel@vger.kernel.org 1103L: linux-kernel@vger.kernel.org
1104S: Maintained 1104S: Maintained
1105 1105
1106DEVICE FILESYSTEM
1107S: Obsolete
1108
1109DIGI INTL. EPCA DRIVER 1106DIGI INTL. EPCA DRIVER
1110P: Digi International, Inc 1107P: Digi International, Inc
1111M: Eng.Linux@digi.com 1108M: Eng.Linux@digi.com
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index 5e34ca6d38b6..3e073467caca 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -28,6 +28,7 @@ config SHARP_PARAM
28 28
29config SHARPSL_PM 29config SHARPSL_PM
30 bool 30 bool
31 select APM_EMULATION
31 32
32config SHARP_SCOOP 33config SHARP_SCOOP
33 bool 34 bool
diff --git a/arch/arm/mach-imx/cpufreq.c b/arch/arm/mach-imx/cpufreq.c
index 4f66e90db74f..7e70e0b0b989 100644
--- a/arch/arm/mach-imx/cpufreq.c
+++ b/arch/arm/mach-imx/cpufreq.c
@@ -50,6 +50,7 @@
50#define CR_920T_ASYNC_MODE 0xC0000000 50#define CR_920T_ASYNC_MODE 0xC0000000
51 51
52static u32 mpctl0_at_boot; 52static u32 mpctl0_at_boot;
53static u32 bclk_div_at_boot;
53 54
54static void imx_set_async_mode(void) 55static void imx_set_async_mode(void)
55{ 56{
@@ -82,13 +83,13 @@ static void imx_set_mpctl0(u32 mpctl0)
82 * imx_compute_mpctl - compute new PLL parameters 83 * imx_compute_mpctl - compute new PLL parameters
83 * @new_mpctl: pointer to location assigned by new PLL control register value 84 * @new_mpctl: pointer to location assigned by new PLL control register value
84 * @cur_mpctl: current PLL control register parameters 85 * @cur_mpctl: current PLL control register parameters
86 * @f_ref: reference source frequency Hz
85 * @freq: required frequency in Hz 87 * @freq: required frequency in Hz
86 * @relation: is one of %CPUFREQ_RELATION_L (supremum) 88 * @relation: is one of %CPUFREQ_RELATION_L (supremum)
87 * and %CPUFREQ_RELATION_H (infimum) 89 * and %CPUFREQ_RELATION_H (infimum)
88 */ 90 */
89long imx_compute_mpctl(u32 *new_mpctl, u32 cur_mpctl, unsigned long freq, int relation) 91long imx_compute_mpctl(u32 *new_mpctl, u32 cur_mpctl, u32 f_ref, unsigned long freq, int relation)
90{ 92{
91 u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512);
92 u32 mfi; 93 u32 mfi;
93 u32 mfn; 94 u32 mfn;
94 u32 mfd; 95 u32 mfd;
@@ -182,7 +183,7 @@ static int imx_set_target(struct cpufreq_policy *policy,
182 unsigned long flags; 183 unsigned long flags;
183 long freq; 184 long freq;
184 long sysclk; 185 long sysclk;
185 unsigned int bclk_div = 1; 186 unsigned int bclk_div = bclk_div_at_boot;
186 187
187 /* 188 /*
188 * Some governors do not respects CPU and policy lower limits 189 * Some governors do not respects CPU and policy lower limits
@@ -202,8 +203,8 @@ static int imx_set_target(struct cpufreq_policy *policy,
202 203
203 sysclk = imx_get_system_clk(); 204 sysclk = imx_get_system_clk();
204 205
205 if (freq > sysclk + 1000000) { 206 if (freq > sysclk / bclk_div_at_boot + 1000000) {
206 freq = imx_compute_mpctl(&mpctl0, mpctl0_at_boot, freq, relation); 207 freq = imx_compute_mpctl(&mpctl0, mpctl0_at_boot, CLK32 * 512, freq, relation);
207 if (freq < 0) { 208 if (freq < 0) {
208 printk(KERN_WARNING "imx: target frequency %ld Hz cannot be set\n", freq); 209 printk(KERN_WARNING "imx: target frequency %ld Hz cannot be set\n", freq);
209 return -EINVAL; 210 return -EINVAL;
@@ -217,6 +218,8 @@ static int imx_set_target(struct cpufreq_policy *policy,
217 218
218 if(bclk_div > 16) 219 if(bclk_div > 16)
219 bclk_div = 16; 220 bclk_div = 16;
221 if(bclk_div < bclk_div_at_boot)
222 bclk_div = bclk_div_at_boot;
220 } 223 }
221 freq = (sysclk + bclk_div / 2) / bclk_div; 224 freq = (sysclk + bclk_div / 2) / bclk_div;
222 } 225 }
@@ -285,7 +288,7 @@ static struct cpufreq_driver imx_driver = {
285 288
286static int __init imx_cpufreq_init(void) 289static int __init imx_cpufreq_init(void)
287{ 290{
288 291 bclk_div_at_boot = __mfld2val(CSCR_BCLK_DIV, CSCR) + 1;
289 mpctl0_at_boot = 0; 292 mpctl0_at_boot = 0;
290 293
291 if((CSCR & CSCR_MPEN) && 294 if((CSCR & CSCR_MPEN) &&
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c
index b5aa49d00ca3..7a7fa51ec62c 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -102,7 +102,7 @@ EXPORT_SYMBOL(imx_gpio_mode);
102 * f = 2 * f_ref * -------------------- 102 * f = 2 * f_ref * --------------------
103 * pd + 1 103 * pd + 1
104 */ 104 */
105static unsigned int imx_decode_pll(unsigned int pll) 105static unsigned int imx_decode_pll(unsigned int pll, u32 f_ref)
106{ 106{
107 unsigned long long ll; 107 unsigned long long ll;
108 unsigned long quot; 108 unsigned long quot;
@@ -111,7 +111,6 @@ static unsigned int imx_decode_pll(unsigned int pll)
111 u32 mfn = pll & 0x3ff; 111 u32 mfn = pll & 0x3ff;
112 u32 mfd = (pll >> 16) & 0x3ff; 112 u32 mfd = (pll >> 16) & 0x3ff;
113 u32 pd = (pll >> 26) & 0xf; 113 u32 pd = (pll >> 26) & 0xf;
114 u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512);
115 114
116 mfi = mfi <= 5 ? 5 : mfi; 115 mfi = mfi <= 5 ? 5 : mfi;
117 116
@@ -124,13 +123,15 @@ static unsigned int imx_decode_pll(unsigned int pll)
124 123
125unsigned int imx_get_system_clk(void) 124unsigned int imx_get_system_clk(void)
126{ 125{
127 return imx_decode_pll(SPCTL0); 126 u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512);
127
128 return imx_decode_pll(SPCTL0, f_ref);
128} 129}
129EXPORT_SYMBOL(imx_get_system_clk); 130EXPORT_SYMBOL(imx_get_system_clk);
130 131
131unsigned int imx_get_mcu_clk(void) 132unsigned int imx_get_mcu_clk(void)
132{ 133{
133 return imx_decode_pll(MPCTL0); 134 return imx_decode_pll(MPCTL0, CLK32 * 512);
134} 135}
135EXPORT_SYMBOL(imx_get_mcu_clk); 136EXPORT_SYMBOL(imx_get_mcu_clk);
136 137
diff --git a/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c b/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c
index a193dd931512..760c9d0db7c3 100644
--- a/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c
+++ b/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c
@@ -32,7 +32,7 @@ static void __init mach_cc9p9360dev_init_machine(void)
32 board_a9m9750dev_init_machine(); 32 board_a9m9750dev_init_machine();
33} 33}
34 34
35MACHINE_START(CC9P9360DEV, "Connect Core 9P 9360 on an A9M9750 Devboard") 35MACHINE_START(CC9P9360DEV, "Digi ConnectCore 9P 9360 on an A9M9750 Devboard")
36 .map_io = mach_cc9p9360dev_map_io, 36 .map_io = mach_cc9p9360dev_map_io,
37 .init_irq = mach_cc9p9360dev_init_irq, 37 .init_irq = mach_cc9p9360dev_init_irq,
38 .init_machine = mach_cc9p9360dev_init_machine, 38 .init_machine = mach_cc9p9360dev_init_machine,
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 6e113078f7ab..ad519390dd58 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -27,6 +27,7 @@
27#include <linux/mtd/nand.h> 27#include <linux/mtd/nand.h>
28#include <linux/mtd/partitions.h> 28#include <linux/mtd/partitions.h>
29#include <linux/input.h> 29#include <linux/input.h>
30#include <linux/workqueue.h>
30 31
31#include <asm/hardware.h> 32#include <asm/hardware.h>
32#include <asm/mach-types.h> 33#include <asm/mach-types.h>
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 0de201c3d50b..5170481afeab 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -27,6 +27,7 @@
27 27
28#include <asm/arch/clock.h> 28#include <asm/arch/clock.h>
29#include <asm/arch/sram.h> 29#include <asm/arch/sram.h>
30#include <asm/div64.h>
30 31
31#include "prcm-regs.h" 32#include "prcm-regs.h"
32#include "memory.h" 33#include "memory.h"
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
index 8816f5a33a28..162978fd5359 100644
--- a/arch/arm/mach-omap2/clock.h
+++ b/arch/arm/mach-omap2/clock.h
@@ -1013,7 +1013,8 @@ static struct clk dss2_fck = { /* Alt clk used in power management */
1013 .name = "dss2_fck", 1013 .name = "dss2_fck",
1014 .parent = &sys_ck, /* fixed at sys_ck or 48MHz */ 1014 .parent = &sys_ck, /* fixed at sys_ck or 48MHz */
1015 .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | 1015 .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
1016 RATE_CKCTL | CM_CORE_SEL1 | RATE_FIXED, 1016 RATE_CKCTL | CM_CORE_SEL1 | RATE_FIXED |
1017 DELAYED_APP,
1017 .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, 1018 .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE,
1018 .enable_bit = 1, 1019 .enable_bit = 1,
1019 .src_offset = 13, 1020 .src_offset = 13,
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 7915a5a22865..72738771fb57 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -28,6 +28,7 @@
28#include <asm/hardware.h> 28#include <asm/hardware.h>
29#include <asm/irq.h> 29#include <asm/irq.h>
30#include <asm/system.h> 30#include <asm/system.h>
31#include <asm/arch/pxa-regs.h>
31#include <asm/arch/irda.h> 32#include <asm/arch/irda.h>
32#include <asm/arch/mmc.h> 33#include <asm/arch/mmc.h>
33#include <asm/arch/udc.h> 34#include <asm/arch/udc.h>
@@ -35,8 +36,6 @@
35#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
36#include <asm/mach/map.h> 37#include <asm/mach/map.h>
37#include <asm/mach/irq.h> 38#include <asm/mach/irq.h>
38
39#include <asm/arch/pxa-regs.h>
40#include <asm/arch/tosa.h> 39#include <asm/arch/tosa.h>
41 40
42#include <asm/hardware/scoop.h> 41#include <asm/hardware/scoop.h>
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 27e8453274e6..53d62373a524 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -220,7 +220,7 @@ config PARAVIRT
220 220
221config VMI 221config VMI
222 bool "VMI Paravirt-ops support" 222 bool "VMI Paravirt-ops support"
223 depends on PARAVIRT 223 depends on PARAVIRT && !COMPAT_VDSO
224 help 224 help
225 VMI provides a paravirtualized interface to the VMware ESX server 225 VMI provides a paravirtualized interface to the VMware ESX server
226 (it could be used by other hypervisors in theory too, but is not 226 (it could be used by other hypervisors in theory too, but is not
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index e5eb97a910ed..9ea5b8ecc7e1 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -1072,7 +1072,28 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
1072 "ASUS A7V ACPI BIOS Revision 1007"), 1072 "ASUS A7V ACPI BIOS Revision 1007"),
1073 }, 1073 },
1074 }, 1074 },
1075 1075 {
1076 /*
1077 * Latest BIOS for IBM 600E (1.16) has bad pcinum
1078 * for LPC bridge, which is needed for the PCI
1079 * interrupt links to work. DSDT fix is in bug 5966.
1080 * 2645, 2646 model numbers are shared with 600/600E/600X
1081 */
1082 .callback = disable_acpi_irq,
1083 .ident = "IBM Thinkpad 600 Series 2645",
1084 .matches = {
1085 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1086 DMI_MATCH(DMI_BOARD_NAME, "2645"),
1087 },
1088 },
1089 {
1090 .callback = disable_acpi_irq,
1091 .ident = "IBM Thinkpad 600 Series 2646",
1092 .matches = {
1093 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1094 DMI_MATCH(DMI_BOARD_NAME, "2646"),
1095 },
1096 },
1076 /* 1097 /*
1077 * Boxes that need ACPI PCI IRQ routing and PCI scan disabled 1098 * Boxes that need ACPI PCI IRQ routing and PCI scan disabled
1078 */ 1099 */
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index 9d1cffb57cde..a1446931b401 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_defconfig
@@ -1,8 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc5 3# Linux kernel version: 2.6.21-rc3
4# Mon Feb 27 15:49:18 2006 4# Thu Mar 8 11:07:09 2007
5# 5#
6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
6 7
7# 8#
8# Code maturity level options 9# Code maturity level options
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION=""
18CONFIG_LOCALVERSION_AUTO=y 19CONFIG_LOCALVERSION_AUTO=y
19CONFIG_SWAP=y 20CONFIG_SWAP=y
20CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
22# CONFIG_IPC_NS is not set
23CONFIG_SYSVIPC_SYSCTL=y
21CONFIG_POSIX_MQUEUE=y 24CONFIG_POSIX_MQUEUE=y
22# CONFIG_BSD_PROCESS_ACCT is not set 25# CONFIG_BSD_PROCESS_ACCT is not set
23CONFIG_SYSCTL=y 26# CONFIG_TASKSTATS is not set
27# CONFIG_UTS_NS is not set
24# CONFIG_AUDIT is not set 28# CONFIG_AUDIT is not set
25CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
26CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
27# CONFIG_CPUSETS is not set 31# CONFIG_CPUSETS is not set
32CONFIG_SYSFS_DEPRECATED=y
33# CONFIG_RELAY is not set
34CONFIG_BLK_DEV_INITRD=y
28CONFIG_INITRAMFS_SOURCE="" 35CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y 36CONFIG_CC_OPTIMIZE_FOR_SIZE=y
37CONFIG_SYSCTL=y
30# CONFIG_EMBEDDED is not set 38# CONFIG_EMBEDDED is not set
39CONFIG_SYSCTL_SYSCALL=y
31CONFIG_KALLSYMS=y 40CONFIG_KALLSYMS=y
32CONFIG_KALLSYMS_ALL=y 41CONFIG_KALLSYMS_ALL=y
33# CONFIG_KALLSYMS_EXTRA_PASS is not set 42# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 48CONFIG_FUTEX=y
40CONFIG_EPOLL=y 49CONFIG_EPOLL=y
41CONFIG_SHMEM=y 50CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y 51CONFIG_SLAB=y
52CONFIG_VM_EVENT_COUNTERS=y
53CONFIG_RT_MUTEXES=y
47# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set 56# CONFIG_SLOB is not set
@@ -54,7 +61,6 @@ CONFIG_BASE_SMALL=0
54CONFIG_MODULES=y 61CONFIG_MODULES=y
55CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
56# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
57CONFIG_OBSOLETE_MODPARM=y
58CONFIG_MODVERSIONS=y 64CONFIG_MODVERSIONS=y
59CONFIG_MODULE_SRCVERSION_ALL=y 65CONFIG_MODULE_SRCVERSION_ALL=y
60CONFIG_KMOD=y 66CONFIG_KMOD=y
@@ -63,6 +69,8 @@ CONFIG_STOP_MACHINE=y
63# 69#
64# Block layer 70# Block layer
65# 71#
72CONFIG_BLOCK=y
73# CONFIG_BLK_DEV_IO_TRACE is not set
66 74
67# 75#
68# IO Schedulers 76# IO Schedulers
@@ -82,15 +90,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
82# 90#
83CONFIG_IA64=y 91CONFIG_IA64=y
84CONFIG_64BIT=y 92CONFIG_64BIT=y
93CONFIG_ZONE_DMA=y
85CONFIG_MMU=y 94CONFIG_MMU=y
86CONFIG_SWIOTLB=y 95CONFIG_SWIOTLB=y
87CONFIG_RWSEM_XCHGADD_ALGORITHM=y 96CONFIG_RWSEM_XCHGADD_ALGORITHM=y
97# CONFIG_ARCH_HAS_ILOG2_U32 is not set
98# CONFIG_ARCH_HAS_ILOG2_U64 is not set
99CONFIG_GENERIC_FIND_NEXT_BIT=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 100CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_TIME_INTERPOLATION=y 101CONFIG_TIME_INTERPOLATION=y
102CONFIG_DMI=y
90CONFIG_EFI=y 103CONFIG_EFI=y
91CONFIG_GENERIC_IOMAP=y 104CONFIG_GENERIC_IOMAP=y
92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 105CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
93CONFIG_DMA_IS_DMA32=y 106CONFIG_AUDIT_ARCH=y
94# CONFIG_IA64_GENERIC is not set 107# CONFIG_IA64_GENERIC is not set
95CONFIG_IA64_DIG=y 108CONFIG_IA64_DIG=y
96# CONFIG_IA64_HP_ZX1 is not set 109# CONFIG_IA64_HP_ZX1 is not set
@@ -107,6 +120,7 @@ CONFIG_PGTABLE_3=y
107# CONFIG_PGTABLE_4 is not set 120# CONFIG_PGTABLE_4 is not set
108# CONFIG_HZ_100 is not set 121# CONFIG_HZ_100 is not set
109CONFIG_HZ_250=y 122CONFIG_HZ_250=y
123# CONFIG_HZ_300 is not set
110# CONFIG_HZ_1000 is not set 124# CONFIG_HZ_1000 is not set
111CONFIG_HZ=250 125CONFIG_HZ=250
112CONFIG_IA64_L1_CACHE_SHIFT=7 126CONFIG_IA64_L1_CACHE_SHIFT=7
@@ -116,9 +130,10 @@ CONFIG_FORCE_MAX_ZONEORDER=17
116CONFIG_SMP=y 130CONFIG_SMP=y
117CONFIG_NR_CPUS=16 131CONFIG_NR_CPUS=16
118CONFIG_HOTPLUG_CPU=y 132CONFIG_HOTPLUG_CPU=y
133CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
134# CONFIG_SCHED_SMT is not set
119CONFIG_PERMIT_BSP_REMOVE=y 135CONFIG_PERMIT_BSP_REMOVE=y
120CONFIG_FORCE_CPEI_RETARGET=y 136CONFIG_FORCE_CPEI_RETARGET=y
121# CONFIG_SCHED_SMT is not set
122# CONFIG_PREEMPT is not set 137# CONFIG_PREEMPT is not set
123CONFIG_SELECT_MEMORY_MODEL=y 138CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y 139CONFIG_FLATMEM_MANUAL=y
@@ -128,10 +143,13 @@ CONFIG_FLATMEM=y
128CONFIG_FLAT_NODE_MEM_MAP=y 143CONFIG_FLAT_NODE_MEM_MAP=y
129# CONFIG_SPARSEMEM_STATIC is not set 144# CONFIG_SPARSEMEM_STATIC is not set
130CONFIG_SPLIT_PTLOCK_CPUS=4 145CONFIG_SPLIT_PTLOCK_CPUS=4
146CONFIG_RESOURCES_64BIT=y
147CONFIG_ZONE_DMA_FLAG=1
131CONFIG_ARCH_SELECT_MEMORY_MODEL=y 148CONFIG_ARCH_SELECT_MEMORY_MODEL=y
132CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 149CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
133CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
134CONFIG_ARCH_SPARSEMEM_ENABLE=y 151CONFIG_ARCH_SPARSEMEM_ENABLE=y
152CONFIG_ARCH_POPULATES_NODE_MAP=y
135CONFIG_VIRTUAL_MEM_MAP=y 153CONFIG_VIRTUAL_MEM_MAP=y
136CONFIG_HOLES_IN_ZONE=y 154CONFIG_HOLES_IN_ZONE=y
137CONFIG_IA32_SUPPORT=y 155CONFIG_IA32_SUPPORT=y
@@ -139,6 +157,9 @@ CONFIG_COMPAT=y
139CONFIG_IA64_MCA_RECOVERY=y 157CONFIG_IA64_MCA_RECOVERY=y
140CONFIG_PERFMON=y 158CONFIG_PERFMON=y
141CONFIG_IA64_PALINFO=y 159CONFIG_IA64_PALINFO=y
160# CONFIG_IA64_ESI is not set
161CONFIG_KEXEC=y
162# CONFIG_CRASH_DUMP is not set
142 163
143# 164#
144# Firmware Drivers 165# Firmware Drivers
@@ -154,13 +175,16 @@ CONFIG_BINFMT_MISC=m
154CONFIG_PM=y 175CONFIG_PM=y
155CONFIG_PM_LEGACY=y 176CONFIG_PM_LEGACY=y
156# CONFIG_PM_DEBUG is not set 177# CONFIG_PM_DEBUG is not set
178# CONFIG_PM_SYSFS_DEPRECATED is not set
157 179
158# 180#
159# ACPI (Advanced Configuration and Power Interface) Support 181# ACPI (Advanced Configuration and Power Interface) Support
160# 182#
161CONFIG_ACPI=y 183CONFIG_ACPI=y
184CONFIG_ACPI_PROCFS=y
162CONFIG_ACPI_BUTTON=m 185CONFIG_ACPI_BUTTON=m
163CONFIG_ACPI_FAN=m 186CONFIG_ACPI_FAN=m
187# CONFIG_ACPI_DOCK is not set
164CONFIG_ACPI_PROCESSOR=m 188CONFIG_ACPI_PROCESSOR=m
165CONFIG_ACPI_HOTPLUG_CPU=y 189CONFIG_ACPI_HOTPLUG_CPU=y
166CONFIG_ACPI_THERMAL=m 190CONFIG_ACPI_THERMAL=m
@@ -181,8 +205,8 @@ CONFIG_ACPI_CONTAINER=m
181# 205#
182CONFIG_PCI=y 206CONFIG_PCI=y
183CONFIG_PCI_DOMAINS=y 207CONFIG_PCI_DOMAINS=y
208# CONFIG_PCIEPORTBUS is not set
184# CONFIG_PCI_MSI is not set 209# CONFIG_PCI_MSI is not set
185CONFIG_PCI_LEGACY_PROC=y
186# CONFIG_PCI_DEBUG is not set 210# CONFIG_PCI_DEBUG is not set
187 211
188# 212#
@@ -212,6 +236,10 @@ CONFIG_NET=y
212CONFIG_PACKET=y 236CONFIG_PACKET=y
213# CONFIG_PACKET_MMAP is not set 237# CONFIG_PACKET_MMAP is not set
214CONFIG_UNIX=y 238CONFIG_UNIX=y
239CONFIG_XFRM=y
240# CONFIG_XFRM_USER is not set
241# CONFIG_XFRM_SUB_POLICY is not set
242# CONFIG_XFRM_MIGRATE is not set
215# CONFIG_NET_KEY is not set 243# CONFIG_NET_KEY is not set
216CONFIG_INET=y 244CONFIG_INET=y
217CONFIG_IP_MULTICAST=y 245CONFIG_IP_MULTICAST=y
@@ -226,12 +254,21 @@ CONFIG_SYN_COOKIES=y
226# CONFIG_INET_AH is not set 254# CONFIG_INET_AH is not set
227# CONFIG_INET_ESP is not set 255# CONFIG_INET_ESP is not set
228# CONFIG_INET_IPCOMP is not set 256# CONFIG_INET_IPCOMP is not set
257# CONFIG_INET_XFRM_TUNNEL is not set
229# CONFIG_INET_TUNNEL is not set 258# CONFIG_INET_TUNNEL is not set
259CONFIG_INET_XFRM_MODE_TRANSPORT=y
260CONFIG_INET_XFRM_MODE_TUNNEL=y
261CONFIG_INET_XFRM_MODE_BEET=y
230CONFIG_INET_DIAG=y 262CONFIG_INET_DIAG=y
231CONFIG_INET_TCP_DIAG=y 263CONFIG_INET_TCP_DIAG=y
232# CONFIG_TCP_CONG_ADVANCED is not set 264# CONFIG_TCP_CONG_ADVANCED is not set
233CONFIG_TCP_CONG_BIC=y 265CONFIG_TCP_CONG_CUBIC=y
266CONFIG_DEFAULT_TCP_CONG="cubic"
267# CONFIG_TCP_MD5SIG is not set
234# CONFIG_IPV6 is not set 268# CONFIG_IPV6 is not set
269# CONFIG_INET6_XFRM_TUNNEL is not set
270# CONFIG_INET6_TUNNEL is not set
271# CONFIG_NETWORK_SECMARK is not set
235# CONFIG_NETFILTER is not set 272# CONFIG_NETFILTER is not set
236 273
237# 274#
@@ -257,7 +294,6 @@ CONFIG_TCP_CONG_BIC=y
257# CONFIG_ATALK is not set 294# CONFIG_ATALK is not set
258# CONFIG_X25 is not set 295# CONFIG_X25 is not set
259# CONFIG_LAPB is not set 296# CONFIG_LAPB is not set
260# CONFIG_NET_DIVERT is not set
261# CONFIG_ECONET is not set 297# CONFIG_ECONET is not set
262# CONFIG_WAN_ROUTER is not set 298# CONFIG_WAN_ROUTER is not set
263 299
@@ -286,6 +322,8 @@ CONFIG_STANDALONE=y
286CONFIG_PREVENT_FIRMWARE_BUILD=y 322CONFIG_PREVENT_FIRMWARE_BUILD=y
287CONFIG_FW_LOADER=m 323CONFIG_FW_LOADER=m
288# CONFIG_DEBUG_DRIVER is not set 324# CONFIG_DEBUG_DRIVER is not set
325# CONFIG_DEBUG_DEVRES is not set
326# CONFIG_SYS_HYPERVISOR is not set
289 327
290# 328#
291# Connector - unified userspace <-> kernelspace linker 329# Connector - unified userspace <-> kernelspace linker
@@ -329,11 +367,17 @@ CONFIG_BLK_DEV_NBD=m
329CONFIG_BLK_DEV_RAM=y 367CONFIG_BLK_DEV_RAM=y
330CONFIG_BLK_DEV_RAM_COUNT=16 368CONFIG_BLK_DEV_RAM_COUNT=16
331CONFIG_BLK_DEV_RAM_SIZE=4096 369CONFIG_BLK_DEV_RAM_SIZE=4096
332CONFIG_BLK_DEV_INITRD=y 370CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
333# CONFIG_CDROM_PKTCDVD is not set 371# CONFIG_CDROM_PKTCDVD is not set
334# CONFIG_ATA_OVER_ETH is not set 372# CONFIG_ATA_OVER_ETH is not set
335 373
336# 374#
375# Misc devices
376#
377# CONFIG_SGI_IOC4 is not set
378# CONFIG_TIFM_CORE is not set
379
380#
337# ATA/ATAPI/MFM/RLL support 381# ATA/ATAPI/MFM/RLL support
338# 382#
339CONFIG_IDE=y 383CONFIG_IDE=y
@@ -350,6 +394,7 @@ CONFIG_BLK_DEV_IDECD=y
350# CONFIG_BLK_DEV_IDETAPE is not set 394# CONFIG_BLK_DEV_IDETAPE is not set
351CONFIG_BLK_DEV_IDEFLOPPY=y 395CONFIG_BLK_DEV_IDEFLOPPY=y
352CONFIG_BLK_DEV_IDESCSI=m 396CONFIG_BLK_DEV_IDESCSI=m
397# CONFIG_BLK_DEV_IDEACPI is not set
353# CONFIG_IDE_TASK_IOCTL is not set 398# CONFIG_IDE_TASK_IOCTL is not set
354 399
355# 400#
@@ -376,8 +421,10 @@ CONFIG_BLK_DEV_CMD64X=y
376# CONFIG_BLK_DEV_CS5530 is not set 421# CONFIG_BLK_DEV_CS5530 is not set
377# CONFIG_BLK_DEV_HPT34X is not set 422# CONFIG_BLK_DEV_HPT34X is not set
378# CONFIG_BLK_DEV_HPT366 is not set 423# CONFIG_BLK_DEV_HPT366 is not set
424# CONFIG_BLK_DEV_JMICRON is not set
379# CONFIG_BLK_DEV_SC1200 is not set 425# CONFIG_BLK_DEV_SC1200 is not set
380CONFIG_BLK_DEV_PIIX=y 426CONFIG_BLK_DEV_PIIX=y
427# CONFIG_BLK_DEV_IT8213 is not set
381# CONFIG_BLK_DEV_IT821X is not set 428# CONFIG_BLK_DEV_IT821X is not set
382# CONFIG_BLK_DEV_NS87415 is not set 429# CONFIG_BLK_DEV_NS87415 is not set
383# CONFIG_BLK_DEV_PDC202XX_OLD is not set 430# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -387,6 +434,7 @@ CONFIG_BLK_DEV_PIIX=y
387# CONFIG_BLK_DEV_SLC90E66 is not set 434# CONFIG_BLK_DEV_SLC90E66 is not set
388# CONFIG_BLK_DEV_TRM290 is not set 435# CONFIG_BLK_DEV_TRM290 is not set
389# CONFIG_BLK_DEV_VIA82CXXX is not set 436# CONFIG_BLK_DEV_VIA82CXXX is not set
437# CONFIG_BLK_DEV_TC86C001 is not set
390# CONFIG_IDE_ARM is not set 438# CONFIG_IDE_ARM is not set
391CONFIG_BLK_DEV_IDEDMA=y 439CONFIG_BLK_DEV_IDEDMA=y
392# CONFIG_IDEDMA_IVB is not set 440# CONFIG_IDEDMA_IVB is not set
@@ -398,6 +446,8 @@ CONFIG_IDEDMA_AUTO=y
398# 446#
399# CONFIG_RAID_ATTRS is not set 447# CONFIG_RAID_ATTRS is not set
400CONFIG_SCSI=y 448CONFIG_SCSI=y
449# CONFIG_SCSI_TGT is not set
450CONFIG_SCSI_NETLINK=y
401CONFIG_SCSI_PROC_FS=y 451CONFIG_SCSI_PROC_FS=y
402 452
403# 453#
@@ -417,14 +467,16 @@ CONFIG_CHR_DEV_SG=m
417# CONFIG_SCSI_MULTI_LUN is not set 467# CONFIG_SCSI_MULTI_LUN is not set
418# CONFIG_SCSI_CONSTANTS is not set 468# CONFIG_SCSI_CONSTANTS is not set
419# CONFIG_SCSI_LOGGING is not set 469# CONFIG_SCSI_LOGGING is not set
470# CONFIG_SCSI_SCAN_ASYNC is not set
420 471
421# 472#
422# SCSI Transport Attributes 473# SCSI Transports
423# 474#
424CONFIG_SCSI_SPI_ATTRS=y 475CONFIG_SCSI_SPI_ATTRS=y
425CONFIG_SCSI_FC_ATTRS=y 476CONFIG_SCSI_FC_ATTRS=y
426# CONFIG_SCSI_ISCSI_ATTRS is not set 477# CONFIG_SCSI_ISCSI_ATTRS is not set
427# CONFIG_SCSI_SAS_ATTRS is not set 478# CONFIG_SCSI_SAS_ATTRS is not set
479# CONFIG_SCSI_SAS_LIBSAS is not set
428 480
429# 481#
430# SCSI low-level drivers 482# SCSI low-level drivers
@@ -437,29 +489,36 @@ CONFIG_SCSI_FC_ATTRS=y
437# CONFIG_SCSI_AIC7XXX is not set 489# CONFIG_SCSI_AIC7XXX is not set
438# CONFIG_SCSI_AIC7XXX_OLD is not set 490# CONFIG_SCSI_AIC7XXX_OLD is not set
439# CONFIG_SCSI_AIC79XX is not set 491# CONFIG_SCSI_AIC79XX is not set
492# CONFIG_SCSI_AIC94XX is not set
493# CONFIG_SCSI_ARCMSR is not set
440# CONFIG_MEGARAID_NEWGEN is not set 494# CONFIG_MEGARAID_NEWGEN is not set
441# CONFIG_MEGARAID_LEGACY is not set 495# CONFIG_MEGARAID_LEGACY is not set
442# CONFIG_MEGARAID_SAS is not set 496# CONFIG_MEGARAID_SAS is not set
443# CONFIG_SCSI_SATA is not set 497# CONFIG_SCSI_HPTIOP is not set
444# CONFIG_SCSI_DMX3191D is not set 498# CONFIG_SCSI_DMX3191D is not set
445# CONFIG_SCSI_FUTURE_DOMAIN is not set 499# CONFIG_SCSI_FUTURE_DOMAIN is not set
446# CONFIG_SCSI_IPS is not set 500# CONFIG_SCSI_IPS is not set
447# CONFIG_SCSI_INITIO is not set 501# CONFIG_SCSI_INITIO is not set
448# CONFIG_SCSI_INIA100 is not set 502# CONFIG_SCSI_INIA100 is not set
503# CONFIG_SCSI_STEX is not set
449CONFIG_SCSI_SYM53C8XX_2=y 504CONFIG_SCSI_SYM53C8XX_2=y
450CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 505CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
451CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 506CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
452CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 507CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
453# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 508CONFIG_SCSI_SYM53C8XX_MMIO=y
454# CONFIG_SCSI_IPR is not set
455CONFIG_SCSI_QLOGIC_FC=y
456# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
457CONFIG_SCSI_QLOGIC_1280=y 509CONFIG_SCSI_QLOGIC_1280=y
458# CONFIG_SCSI_QLA_FC is not set 510# CONFIG_SCSI_QLA_FC is not set
511# CONFIG_SCSI_QLA_ISCSI is not set
459# CONFIG_SCSI_LPFC is not set 512# CONFIG_SCSI_LPFC is not set
460# CONFIG_SCSI_DC395x is not set 513# CONFIG_SCSI_DC395x is not set
461# CONFIG_SCSI_DC390T is not set 514# CONFIG_SCSI_DC390T is not set
462# CONFIG_SCSI_DEBUG is not set 515# CONFIG_SCSI_DEBUG is not set
516# CONFIG_SCSI_SRP is not set
517
518#
519# Serial ATA (prod) and Parallel ATA (experimental) drivers
520#
521# CONFIG_ATA is not set
463 522
464# 523#
465# Multi-device support (RAID and LVM) 524# Multi-device support (RAID and LVM)
@@ -470,11 +529,11 @@ CONFIG_MD_LINEAR=m
470CONFIG_MD_RAID0=m 529CONFIG_MD_RAID0=m
471CONFIG_MD_RAID1=m 530CONFIG_MD_RAID1=m
472# CONFIG_MD_RAID10 is not set 531# CONFIG_MD_RAID10 is not set
473CONFIG_MD_RAID5=m 532# CONFIG_MD_RAID456 is not set
474CONFIG_MD_RAID6=m
475CONFIG_MD_MULTIPATH=m 533CONFIG_MD_MULTIPATH=m
476# CONFIG_MD_FAULTY is not set 534# CONFIG_MD_FAULTY is not set
477CONFIG_BLK_DEV_DM=m 535CONFIG_BLK_DEV_DM=m
536# CONFIG_DM_DEBUG is not set
478CONFIG_DM_CRYPT=m 537CONFIG_DM_CRYPT=m
479CONFIG_DM_SNAPSHOT=m 538CONFIG_DM_SNAPSHOT=m
480CONFIG_DM_MIRROR=m 539CONFIG_DM_MIRROR=m
@@ -563,6 +622,7 @@ CONFIG_E100=m
563# CONFIG_EPIC100 is not set 622# CONFIG_EPIC100 is not set
564# CONFIG_SUNDANCE is not set 623# CONFIG_SUNDANCE is not set
565# CONFIG_VIA_RHINE is not set 624# CONFIG_VIA_RHINE is not set
625# CONFIG_SC92031 is not set
566 626
567# 627#
568# Ethernet (1000 Mbit) 628# Ethernet (1000 Mbit)
@@ -583,13 +643,18 @@ CONFIG_E1000=y
583# CONFIG_VIA_VELOCITY is not set 643# CONFIG_VIA_VELOCITY is not set
584CONFIG_TIGON3=y 644CONFIG_TIGON3=y
585# CONFIG_BNX2 is not set 645# CONFIG_BNX2 is not set
646# CONFIG_QLA3XXX is not set
647# CONFIG_ATL1 is not set
586 648
587# 649#
588# Ethernet (10000 Mbit) 650# Ethernet (10000 Mbit)
589# 651#
590# CONFIG_CHELSIO_T1 is not set 652# CONFIG_CHELSIO_T1 is not set
653# CONFIG_CHELSIO_T3 is not set
591# CONFIG_IXGB is not set 654# CONFIG_IXGB is not set
592# CONFIG_S2IO is not set 655# CONFIG_S2IO is not set
656# CONFIG_MYRI10GE is not set
657# CONFIG_NETXEN_NIC is not set
593 658
594# 659#
595# Token Ring devices 660# Token Ring devices
@@ -631,6 +696,7 @@ CONFIG_NET_POLL_CONTROLLER=y
631# Input device support 696# Input device support
632# 697#
633CONFIG_INPUT=y 698CONFIG_INPUT=y
699# CONFIG_INPUT_FF_MEMLESS is not set
634 700
635# 701#
636# Userland interfaces 702# Userland interfaces
@@ -653,6 +719,7 @@ CONFIG_KEYBOARD_ATKBD=y
653# CONFIG_KEYBOARD_LKKBD is not set 719# CONFIG_KEYBOARD_LKKBD is not set
654# CONFIG_KEYBOARD_XTKBD is not set 720# CONFIG_KEYBOARD_XTKBD is not set
655# CONFIG_KEYBOARD_NEWTON is not set 721# CONFIG_KEYBOARD_NEWTON is not set
722# CONFIG_KEYBOARD_STOWAWAY is not set
656CONFIG_INPUT_MOUSE=y 723CONFIG_INPUT_MOUSE=y
657CONFIG_MOUSE_PS2=y 724CONFIG_MOUSE_PS2=y
658# CONFIG_MOUSE_SERIAL is not set 725# CONFIG_MOUSE_SERIAL is not set
@@ -682,6 +749,7 @@ CONFIG_GAMEPORT=m
682CONFIG_VT=y 749CONFIG_VT=y
683CONFIG_VT_CONSOLE=y 750CONFIG_VT_CONSOLE=y
684CONFIG_HW_CONSOLE=y 751CONFIG_HW_CONSOLE=y
752# CONFIG_VT_HW_CONSOLE_BINDING is not set
685CONFIG_SERIAL_NONSTANDARD=y 753CONFIG_SERIAL_NONSTANDARD=y
686# CONFIG_COMPUTONE is not set 754# CONFIG_COMPUTONE is not set
687# CONFIG_ROCKETPORT is not set 755# CONFIG_ROCKETPORT is not set
@@ -689,12 +757,14 @@ CONFIG_SERIAL_NONSTANDARD=y
689# CONFIG_DIGIEPCA is not set 757# CONFIG_DIGIEPCA is not set
690# CONFIG_MOXA_INTELLIO is not set 758# CONFIG_MOXA_INTELLIO is not set
691# CONFIG_MOXA_SMARTIO is not set 759# CONFIG_MOXA_SMARTIO is not set
760# CONFIG_MOXA_SMARTIO_NEW is not set
692# CONFIG_ISI is not set 761# CONFIG_ISI is not set
693# CONFIG_SYNCLINKMP is not set 762# CONFIG_SYNCLINKMP is not set
694# CONFIG_SYNCLINK_GT is not set 763# CONFIG_SYNCLINK_GT is not set
695# CONFIG_N_HDLC is not set 764# CONFIG_N_HDLC is not set
696# CONFIG_SPECIALIX is not set 765# CONFIG_SPECIALIX is not set
697# CONFIG_SX is not set 766# CONFIG_SX is not set
767# CONFIG_RIO is not set
698# CONFIG_STALDRV is not set 768# CONFIG_STALDRV is not set
699 769
700# 770#
@@ -702,7 +772,8 @@ CONFIG_SERIAL_NONSTANDARD=y
702# 772#
703CONFIG_SERIAL_8250=y 773CONFIG_SERIAL_8250=y
704CONFIG_SERIAL_8250_CONSOLE=y 774CONFIG_SERIAL_8250_CONSOLE=y
705CONFIG_SERIAL_8250_ACPI=y 775CONFIG_SERIAL_8250_PCI=y
776CONFIG_SERIAL_8250_PNP=y
706CONFIG_SERIAL_8250_NR_UARTS=6 777CONFIG_SERIAL_8250_NR_UARTS=6
707CONFIG_SERIAL_8250_RUNTIME_UARTS=4 778CONFIG_SERIAL_8250_RUNTIME_UARTS=4
708CONFIG_SERIAL_8250_EXTENDED=y 779CONFIG_SERIAL_8250_EXTENDED=y
@@ -734,10 +805,6 @@ CONFIG_EFI_RTC=y
734# CONFIG_DTLK is not set 805# CONFIG_DTLK is not set
735# CONFIG_R3964 is not set 806# CONFIG_R3964 is not set
736# CONFIG_APPLICOM is not set 807# CONFIG_APPLICOM is not set
737
738#
739# Ftape, the floppy tape device driver
740#
741CONFIG_AGP=m 808CONFIG_AGP=m
742CONFIG_AGP_I460=m 809CONFIG_AGP_I460=m
743CONFIG_DRM=m 810CONFIG_DRM=m
@@ -759,7 +826,6 @@ CONFIG_HPET_MMAP=y
759# TPM devices 826# TPM devices
760# 827#
761# CONFIG_TCG_TPM is not set 828# CONFIG_TCG_TPM is not set
762# CONFIG_TELCLOCK is not set
763 829
764# 830#
765# I2C support 831# I2C support
@@ -782,16 +848,16 @@ CONFIG_HPET_MMAP=y
782# 848#
783CONFIG_HWMON=y 849CONFIG_HWMON=y
784# CONFIG_HWMON_VID is not set 850# CONFIG_HWMON_VID is not set
851# CONFIG_SENSORS_ABITUGURU is not set
785# CONFIG_SENSORS_F71805F is not set 852# CONFIG_SENSORS_F71805F is not set
853# CONFIG_SENSORS_PC87427 is not set
854# CONFIG_SENSORS_VT1211 is not set
786# CONFIG_HWMON_DEBUG_CHIP is not set 855# CONFIG_HWMON_DEBUG_CHIP is not set
787 856
788# 857#
789# Misc devices 858# Multifunction device drivers
790#
791
792#
793# Multimedia Capabilities Port drivers
794# 859#
860# CONFIG_MFD_SM501 is not set
795 861
796# 862#
797# Multimedia devices 863# Multimedia devices
@@ -802,16 +868,19 @@ CONFIG_HWMON=y
802# Digital Video Broadcasting Devices 868# Digital Video Broadcasting Devices
803# 869#
804# CONFIG_DVB is not set 870# CONFIG_DVB is not set
871# CONFIG_USB_DABUSB is not set
805 872
806# 873#
807# Graphics support 874# Graphics support
808# 875#
876# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
809# CONFIG_FB is not set 877# CONFIG_FB is not set
810 878
811# 879#
812# Console display driver support 880# Console display driver support
813# 881#
814CONFIG_VGA_CONSOLE=y 882CONFIG_VGA_CONSOLE=y
883# CONFIG_VGACON_SOFT_SCROLLBACK is not set
815CONFIG_DUMMY_CONSOLE=y 884CONFIG_DUMMY_CONSOLE=y
816 885
817# 886#
@@ -820,10 +889,17 @@ CONFIG_DUMMY_CONSOLE=y
820# CONFIG_SOUND is not set 889# CONFIG_SOUND is not set
821 890
822# 891#
892# HID Devices
893#
894CONFIG_HID=y
895# CONFIG_HID_DEBUG is not set
896
897#
823# USB support 898# USB support
824# 899#
825CONFIG_USB_ARCH_HAS_HCD=y 900CONFIG_USB_ARCH_HAS_HCD=y
826CONFIG_USB_ARCH_HAS_OHCI=y 901CONFIG_USB_ARCH_HAS_OHCI=y
902CONFIG_USB_ARCH_HAS_EHCI=y
827CONFIG_USB=y 903CONFIG_USB=y
828# CONFIG_USB_DEBUG is not set 904# CONFIG_USB_DEBUG is not set
829 905
@@ -831,7 +907,6 @@ CONFIG_USB=y
831# Miscellaneous USB options 907# Miscellaneous USB options
832# 908#
833CONFIG_USB_DEVICEFS=y 909CONFIG_USB_DEVICEFS=y
834# CONFIG_USB_BANDWIDTH is not set
835# CONFIG_USB_DYNAMIC_MINORS is not set 910# CONFIG_USB_DYNAMIC_MINORS is not set
836# CONFIG_USB_SUSPEND is not set 911# CONFIG_USB_SUSPEND is not set
837# CONFIG_USB_OTG is not set 912# CONFIG_USB_OTG is not set
@@ -842,9 +917,12 @@ CONFIG_USB_DEVICEFS=y
842CONFIG_USB_EHCI_HCD=m 917CONFIG_USB_EHCI_HCD=m
843# CONFIG_USB_EHCI_SPLIT_ISO is not set 918# CONFIG_USB_EHCI_SPLIT_ISO is not set
844# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 919# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
920# CONFIG_USB_EHCI_TT_NEWSCHED is not set
921# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
845# CONFIG_USB_ISP116X_HCD is not set 922# CONFIG_USB_ISP116X_HCD is not set
846CONFIG_USB_OHCI_HCD=m 923CONFIG_USB_OHCI_HCD=m
847# CONFIG_USB_OHCI_BIG_ENDIAN is not set 924# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
925# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
848CONFIG_USB_OHCI_LITTLE_ENDIAN=y 926CONFIG_USB_OHCI_LITTLE_ENDIAN=y
849CONFIG_USB_UHCI_HCD=y 927CONFIG_USB_UHCI_HCD=y
850# CONFIG_USB_SL811_HCD is not set 928# CONFIG_USB_SL811_HCD is not set
@@ -873,13 +951,13 @@ CONFIG_USB_STORAGE=m
873# CONFIG_USB_STORAGE_SDDR55 is not set 951# CONFIG_USB_STORAGE_SDDR55 is not set
874# CONFIG_USB_STORAGE_JUMPSHOT is not set 952# CONFIG_USB_STORAGE_JUMPSHOT is not set
875# CONFIG_USB_STORAGE_ALAUDA is not set 953# CONFIG_USB_STORAGE_ALAUDA is not set
954# CONFIG_USB_STORAGE_KARMA is not set
876# CONFIG_USB_LIBUSUAL is not set 955# CONFIG_USB_LIBUSUAL is not set
877 956
878# 957#
879# USB Input Devices 958# USB Input Devices
880# 959#
881CONFIG_USB_HID=y 960CONFIG_USB_HID=y
882CONFIG_USB_HIDINPUT=y
883# CONFIG_USB_HIDINPUT_POWERBOOK is not set 961# CONFIG_USB_HIDINPUT_POWERBOOK is not set
884# CONFIG_HID_FF is not set 962# CONFIG_HID_FF is not set
885# CONFIG_USB_HIDDEV is not set 963# CONFIG_USB_HIDDEV is not set
@@ -888,15 +966,14 @@ CONFIG_USB_HIDINPUT=y
888# CONFIG_USB_ACECAD is not set 966# CONFIG_USB_ACECAD is not set
889# CONFIG_USB_KBTAB is not set 967# CONFIG_USB_KBTAB is not set
890# CONFIG_USB_POWERMATE is not set 968# CONFIG_USB_POWERMATE is not set
891# CONFIG_USB_MTOUCH is not set 969# CONFIG_USB_TOUCHSCREEN is not set
892# CONFIG_USB_ITMTOUCH is not set
893# CONFIG_USB_EGALAX is not set
894# CONFIG_USB_YEALINK is not set 970# CONFIG_USB_YEALINK is not set
895# CONFIG_USB_XPAD is not set 971# CONFIG_USB_XPAD is not set
896# CONFIG_USB_ATI_REMOTE is not set 972# CONFIG_USB_ATI_REMOTE is not set
897# CONFIG_USB_ATI_REMOTE2 is not set 973# CONFIG_USB_ATI_REMOTE2 is not set
898# CONFIG_USB_KEYSPAN_REMOTE is not set 974# CONFIG_USB_KEYSPAN_REMOTE is not set
899# CONFIG_USB_APPLETOUCH is not set 975# CONFIG_USB_APPLETOUCH is not set
976# CONFIG_USB_GTCO is not set
900 977
901# 978#
902# USB Imaging devices 979# USB Imaging devices
@@ -905,21 +982,13 @@ CONFIG_USB_HIDINPUT=y
905# CONFIG_USB_MICROTEK is not set 982# CONFIG_USB_MICROTEK is not set
906 983
907# 984#
908# USB Multimedia devices
909#
910# CONFIG_USB_DABUSB is not set
911
912#
913# Video4Linux support is needed for USB Multimedia device support
914#
915
916#
917# USB Network Adapters 985# USB Network Adapters
918# 986#
919# CONFIG_USB_CATC is not set 987# CONFIG_USB_CATC is not set
920# CONFIG_USB_KAWETH is not set 988# CONFIG_USB_KAWETH is not set
921# CONFIG_USB_PEGASUS is not set 989# CONFIG_USB_PEGASUS is not set
922# CONFIG_USB_RTL8150 is not set 990# CONFIG_USB_RTL8150 is not set
991# CONFIG_USB_USBNET_MII is not set
923# CONFIG_USB_USBNET is not set 992# CONFIG_USB_USBNET is not set
924# CONFIG_USB_MON is not set 993# CONFIG_USB_MON is not set
925 994
@@ -937,17 +1006,23 @@ CONFIG_USB_HIDINPUT=y
937# 1006#
938# CONFIG_USB_EMI62 is not set 1007# CONFIG_USB_EMI62 is not set
939# CONFIG_USB_EMI26 is not set 1008# CONFIG_USB_EMI26 is not set
1009# CONFIG_USB_ADUTUX is not set
940# CONFIG_USB_AUERSWALD is not set 1010# CONFIG_USB_AUERSWALD is not set
941# CONFIG_USB_RIO500 is not set 1011# CONFIG_USB_RIO500 is not set
942# CONFIG_USB_LEGOTOWER is not set 1012# CONFIG_USB_LEGOTOWER is not set
943# CONFIG_USB_LCD is not set 1013# CONFIG_USB_LCD is not set
1014# CONFIG_USB_BERRY_CHARGE is not set
944# CONFIG_USB_LED is not set 1015# CONFIG_USB_LED is not set
1016# CONFIG_USB_CYPRESS_CY7C63 is not set
945# CONFIG_USB_CYTHERM is not set 1017# CONFIG_USB_CYTHERM is not set
946# CONFIG_USB_PHIDGETKIT is not set 1018# CONFIG_USB_PHIDGET is not set
947# CONFIG_USB_PHIDGETSERVO is not set
948# CONFIG_USB_IDMOUSE is not set 1019# CONFIG_USB_IDMOUSE is not set
1020# CONFIG_USB_FTDI_ELAN is not set
1021# CONFIG_USB_APPLEDISPLAY is not set
949# CONFIG_USB_SISUSBVGA is not set 1022# CONFIG_USB_SISUSBVGA is not set
950# CONFIG_USB_LD is not set 1023# CONFIG_USB_LD is not set
1024# CONFIG_USB_TRANCEVIBRATOR is not set
1025# CONFIG_USB_IOWARRIOR is not set
951# CONFIG_USB_TEST is not set 1026# CONFIG_USB_TEST is not set
952 1027
953# 1028#
@@ -965,15 +1040,55 @@ CONFIG_USB_HIDINPUT=y
965# CONFIG_MMC is not set 1040# CONFIG_MMC is not set
966 1041
967# 1042#
1043# LED devices
1044#
1045# CONFIG_NEW_LEDS is not set
1046
1047#
1048# LED drivers
1049#
1050
1051#
1052# LED Triggers
1053#
1054
1055#
968# InfiniBand support 1056# InfiniBand support
969# 1057#
970# CONFIG_INFINIBAND is not set 1058# CONFIG_INFINIBAND is not set
971 1059
972# 1060#
973# EDAC - error detection and reporting (RAS) 1061# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1062#
1063
1064#
1065# Real Time Clock
1066#
1067# CONFIG_RTC_CLASS is not set
1068
1069#
1070# DMA Engine support
1071#
1072# CONFIG_DMA_ENGINE is not set
1073
1074#
1075# DMA Clients
974# 1076#
975 1077
976# 1078#
1079# DMA Devices
1080#
1081
1082#
1083# Auxiliary Display support
1084#
1085
1086#
1087# Virtualization
1088#
1089# CONFIG_MSPEC is not set
1090
1091#
977# File systems 1092# File systems
978# 1093#
979CONFIG_EXT2_FS=y 1094CONFIG_EXT2_FS=y
@@ -985,6 +1100,7 @@ CONFIG_EXT3_FS=y
985CONFIG_EXT3_FS_XATTR=y 1100CONFIG_EXT3_FS_XATTR=y
986CONFIG_EXT3_FS_POSIX_ACL=y 1101CONFIG_EXT3_FS_POSIX_ACL=y
987CONFIG_EXT3_FS_SECURITY=y 1102CONFIG_EXT3_FS_SECURITY=y
1103# CONFIG_EXT4DEV_FS is not set
988CONFIG_JBD=y 1104CONFIG_JBD=y
989# CONFIG_JBD_DEBUG is not set 1105# CONFIG_JBD_DEBUG is not set
990CONFIG_FS_MBCACHE=y 1106CONFIG_FS_MBCACHE=y
@@ -997,15 +1113,16 @@ CONFIG_REISERFS_FS_SECURITY=y
997# CONFIG_JFS_FS is not set 1113# CONFIG_JFS_FS is not set
998CONFIG_FS_POSIX_ACL=y 1114CONFIG_FS_POSIX_ACL=y
999CONFIG_XFS_FS=y 1115CONFIG_XFS_FS=y
1000CONFIG_XFS_EXPORT=y
1001# CONFIG_XFS_QUOTA is not set 1116# CONFIG_XFS_QUOTA is not set
1002# CONFIG_XFS_SECURITY is not set 1117# CONFIG_XFS_SECURITY is not set
1003# CONFIG_XFS_POSIX_ACL is not set 1118# CONFIG_XFS_POSIX_ACL is not set
1004# CONFIG_XFS_RT is not set 1119# CONFIG_XFS_RT is not set
1120# CONFIG_GFS2_FS is not set
1005# CONFIG_OCFS2_FS is not set 1121# CONFIG_OCFS2_FS is not set
1006# CONFIG_MINIX_FS is not set 1122# CONFIG_MINIX_FS is not set
1007# CONFIG_ROMFS_FS is not set 1123# CONFIG_ROMFS_FS is not set
1008CONFIG_INOTIFY=y 1124CONFIG_INOTIFY=y
1125CONFIG_INOTIFY_USER=y
1009# CONFIG_QUOTA is not set 1126# CONFIG_QUOTA is not set
1010CONFIG_DNOTIFY=y 1127CONFIG_DNOTIFY=y
1011CONFIG_AUTOFS_FS=y 1128CONFIG_AUTOFS_FS=y
@@ -1038,12 +1155,13 @@ CONFIG_NTFS_FS=m
1038# 1155#
1039CONFIG_PROC_FS=y 1156CONFIG_PROC_FS=y
1040CONFIG_PROC_KCORE=y 1157CONFIG_PROC_KCORE=y
1158CONFIG_PROC_SYSCTL=y
1041CONFIG_SYSFS=y 1159CONFIG_SYSFS=y
1042CONFIG_TMPFS=y 1160CONFIG_TMPFS=y
1161# CONFIG_TMPFS_POSIX_ACL is not set
1043CONFIG_HUGETLBFS=y 1162CONFIG_HUGETLBFS=y
1044CONFIG_HUGETLB_PAGE=y 1163CONFIG_HUGETLB_PAGE=y
1045CONFIG_RAMFS=y 1164CONFIG_RAMFS=y
1046# CONFIG_RELAYFS_FS is not set
1047# CONFIG_CONFIGFS_FS is not set 1165# CONFIG_CONFIGFS_FS is not set
1048 1166
1049# 1167#
@@ -1078,7 +1196,7 @@ CONFIG_NFSD_V4=y
1078CONFIG_NFSD_TCP=y 1196CONFIG_NFSD_TCP=y
1079CONFIG_LOCKD=m 1197CONFIG_LOCKD=m
1080CONFIG_LOCKD_V4=y 1198CONFIG_LOCKD_V4=y
1081CONFIG_EXPORTFS=y 1199CONFIG_EXPORTFS=m
1082CONFIG_NFS_COMMON=y 1200CONFIG_NFS_COMMON=y
1083CONFIG_SUNRPC=m 1201CONFIG_SUNRPC=m
1084CONFIG_SUNRPC_GSS=m 1202CONFIG_SUNRPC_GSS=m
@@ -1089,7 +1207,9 @@ CONFIG_SMB_NLS_DEFAULT=y
1089CONFIG_SMB_NLS_REMOTE="cp437" 1207CONFIG_SMB_NLS_REMOTE="cp437"
1090CONFIG_CIFS=m 1208CONFIG_CIFS=m
1091# CONFIG_CIFS_STATS is not set 1209# CONFIG_CIFS_STATS is not set
1210# CONFIG_CIFS_WEAK_PW_HASH is not set
1092# CONFIG_CIFS_XATTR is not set 1211# CONFIG_CIFS_XATTR is not set
1212# CONFIG_CIFS_DEBUG2 is not set
1093# CONFIG_CIFS_EXPERIMENTAL is not set 1213# CONFIG_CIFS_EXPERIMENTAL is not set
1094# CONFIG_NCP_FS is not set 1214# CONFIG_NCP_FS is not set
1095# CONFIG_CODA_FS is not set 1215# CONFIG_CODA_FS is not set
@@ -1162,15 +1282,25 @@ CONFIG_NLS_KOI8_U=m
1162CONFIG_NLS_UTF8=m 1282CONFIG_NLS_UTF8=m
1163 1283
1164# 1284#
1285# Distributed Lock Manager
1286#
1287# CONFIG_DLM is not set
1288
1289#
1165# Library routines 1290# Library routines
1166# 1291#
1292CONFIG_BITREVERSE=y
1167# CONFIG_CRC_CCITT is not set 1293# CONFIG_CRC_CCITT is not set
1168# CONFIG_CRC16 is not set 1294# CONFIG_CRC16 is not set
1169CONFIG_CRC32=y 1295CONFIG_CRC32=y
1170# CONFIG_LIBCRC32C is not set 1296# CONFIG_LIBCRC32C is not set
1297CONFIG_PLIST=y
1298CONFIG_HAS_IOMEM=y
1299CONFIG_HAS_IOPORT=y
1171CONFIG_GENERIC_HARDIRQS=y 1300CONFIG_GENERIC_HARDIRQS=y
1172CONFIG_GENERIC_IRQ_PROBE=y 1301CONFIG_GENERIC_IRQ_PROBE=y
1173CONFIG_GENERIC_PENDING_IRQ=y 1302CONFIG_GENERIC_PENDING_IRQ=y
1303CONFIG_IRQ_PER_CPU=y
1174 1304
1175# 1305#
1176# Instrumentation Support 1306# Instrumentation Support
@@ -1182,21 +1312,31 @@ CONFIG_GENERIC_PENDING_IRQ=y
1182# Kernel hacking 1312# Kernel hacking
1183# 1313#
1184# CONFIG_PRINTK_TIME is not set 1314# CONFIG_PRINTK_TIME is not set
1315CONFIG_ENABLE_MUST_CHECK=y
1185CONFIG_MAGIC_SYSRQ=y 1316CONFIG_MAGIC_SYSRQ=y
1317# CONFIG_UNUSED_SYMBOLS is not set
1318# CONFIG_DEBUG_FS is not set
1319# CONFIG_HEADERS_CHECK is not set
1186CONFIG_DEBUG_KERNEL=y 1320CONFIG_DEBUG_KERNEL=y
1321# CONFIG_DEBUG_SHIRQ is not set
1187CONFIG_LOG_BUF_SHIFT=20 1322CONFIG_LOG_BUF_SHIFT=20
1188CONFIG_DETECT_SOFTLOCKUP=y 1323CONFIG_DETECT_SOFTLOCKUP=y
1189# CONFIG_SCHEDSTATS is not set 1324# CONFIG_SCHEDSTATS is not set
1325# CONFIG_TIMER_STATS is not set
1190# CONFIG_DEBUG_SLAB is not set 1326# CONFIG_DEBUG_SLAB is not set
1191CONFIG_DEBUG_MUTEXES=y 1327# CONFIG_DEBUG_RT_MUTEXES is not set
1328# CONFIG_RT_MUTEX_TESTER is not set
1192# CONFIG_DEBUG_SPINLOCK is not set 1329# CONFIG_DEBUG_SPINLOCK is not set
1330CONFIG_DEBUG_MUTEXES=y
1193# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1331# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1332# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1194# CONFIG_DEBUG_KOBJECT is not set 1333# CONFIG_DEBUG_KOBJECT is not set
1195# CONFIG_DEBUG_INFO is not set 1334# CONFIG_DEBUG_INFO is not set
1196# CONFIG_DEBUG_FS is not set
1197# CONFIG_DEBUG_VM is not set 1335# CONFIG_DEBUG_VM is not set
1336# CONFIG_DEBUG_LIST is not set
1198CONFIG_FORCED_INLINING=y 1337CONFIG_FORCED_INLINING=y
1199# CONFIG_RCU_TORTURE_TEST is not set 1338# CONFIG_RCU_TORTURE_TEST is not set
1339# CONFIG_FAULT_INJECTION is not set
1200CONFIG_IA64_GRANULE_16MB=y 1340CONFIG_IA64_GRANULE_16MB=y
1201# CONFIG_IA64_GRANULE_64MB is not set 1341# CONFIG_IA64_GRANULE_64MB is not set
1202# CONFIG_IA64_PRINT_HAZARDS is not set 1342# CONFIG_IA64_PRINT_HAZARDS is not set
@@ -1215,7 +1355,11 @@ CONFIG_SYSVIPC_COMPAT=y
1215# Cryptographic options 1355# Cryptographic options
1216# 1356#
1217CONFIG_CRYPTO=y 1357CONFIG_CRYPTO=y
1358CONFIG_CRYPTO_ALGAPI=y
1359CONFIG_CRYPTO_BLKCIPHER=m
1360CONFIG_CRYPTO_MANAGER=m
1218# CONFIG_CRYPTO_HMAC is not set 1361# CONFIG_CRYPTO_HMAC is not set
1362# CONFIG_CRYPTO_XCBC is not set
1219# CONFIG_CRYPTO_NULL is not set 1363# CONFIG_CRYPTO_NULL is not set
1220# CONFIG_CRYPTO_MD4 is not set 1364# CONFIG_CRYPTO_MD4 is not set
1221CONFIG_CRYPTO_MD5=y 1365CONFIG_CRYPTO_MD5=y
@@ -1224,7 +1368,13 @@ CONFIG_CRYPTO_MD5=y
1224# CONFIG_CRYPTO_SHA512 is not set 1368# CONFIG_CRYPTO_SHA512 is not set
1225# CONFIG_CRYPTO_WP512 is not set 1369# CONFIG_CRYPTO_WP512 is not set
1226# CONFIG_CRYPTO_TGR192 is not set 1370# CONFIG_CRYPTO_TGR192 is not set
1371# CONFIG_CRYPTO_GF128MUL is not set
1372CONFIG_CRYPTO_ECB=m
1373CONFIG_CRYPTO_CBC=m
1374CONFIG_CRYPTO_PCBC=m
1375# CONFIG_CRYPTO_LRW is not set
1227CONFIG_CRYPTO_DES=m 1376CONFIG_CRYPTO_DES=m
1377# CONFIG_CRYPTO_FCRYPT is not set
1228# CONFIG_CRYPTO_BLOWFISH is not set 1378# CONFIG_CRYPTO_BLOWFISH is not set
1229# CONFIG_CRYPTO_TWOFISH is not set 1379# CONFIG_CRYPTO_TWOFISH is not set
1230# CONFIG_CRYPTO_SERPENT is not set 1380# CONFIG_CRYPTO_SERPENT is not set
@@ -1238,6 +1388,7 @@ CONFIG_CRYPTO_DES=m
1238# CONFIG_CRYPTO_DEFLATE is not set 1388# CONFIG_CRYPTO_DEFLATE is not set
1239# CONFIG_CRYPTO_MICHAEL_MIC is not set 1389# CONFIG_CRYPTO_MICHAEL_MIC is not set
1240# CONFIG_CRYPTO_CRC32C is not set 1390# CONFIG_CRYPTO_CRC32C is not set
1391# CONFIG_CRYPTO_CAMELLIA is not set
1241# CONFIG_CRYPTO_TEST is not set 1392# CONFIG_CRYPTO_TEST is not set
1242 1393
1243# 1394#
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig
index 949dc4670a0c..1c7955c16358 100644
--- a/arch/ia64/configs/zx1_defconfig
+++ b/arch/ia64/configs/zx1_defconfig
@@ -1,8 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc5 3# Linux kernel version: 2.6.21-rc3
4# Mon Feb 27 15:55:36 2006 4# Thu Mar 8 11:04:20 2007
5# 5#
6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
6 7
7# 8#
8# Code maturity level options 9# Code maturity level options
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION=""
18CONFIG_LOCALVERSION_AUTO=y 19CONFIG_LOCALVERSION_AUTO=y
19CONFIG_SWAP=y 20CONFIG_SWAP=y
20CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
22# CONFIG_IPC_NS is not set
23CONFIG_SYSVIPC_SYSCTL=y
21# CONFIG_POSIX_MQUEUE is not set 24# CONFIG_POSIX_MQUEUE is not set
22CONFIG_BSD_PROCESS_ACCT=y 25CONFIG_BSD_PROCESS_ACCT=y
23# CONFIG_BSD_PROCESS_ACCT_V3 is not set 26# CONFIG_BSD_PROCESS_ACCT_V3 is not set
24CONFIG_SYSCTL=y 27# CONFIG_TASKSTATS is not set
28# CONFIG_UTS_NS is not set
25# CONFIG_AUDIT is not set 29# CONFIG_AUDIT is not set
26# CONFIG_IKCONFIG is not set 30# CONFIG_IKCONFIG is not set
27# CONFIG_CPUSETS is not set 31# CONFIG_CPUSETS is not set
32CONFIG_SYSFS_DEPRECATED=y
33# CONFIG_RELAY is not set
34CONFIG_BLK_DEV_INITRD=y
28CONFIG_INITRAMFS_SOURCE="" 35CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y 36CONFIG_CC_OPTIMIZE_FOR_SIZE=y
37CONFIG_SYSCTL=y
30# CONFIG_EMBEDDED is not set 38# CONFIG_EMBEDDED is not set
39CONFIG_SYSCTL_SYSCALL=y
31CONFIG_KALLSYMS=y 40CONFIG_KALLSYMS=y
32# CONFIG_KALLSYMS_ALL is not set 41# CONFIG_KALLSYMS_ALL is not set
33# CONFIG_KALLSYMS_EXTRA_PASS is not set 42# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 48CONFIG_FUTEX=y
40CONFIG_EPOLL=y 49CONFIG_EPOLL=y
41CONFIG_SHMEM=y 50CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y 51CONFIG_SLAB=y
52CONFIG_VM_EVENT_COUNTERS=y
53CONFIG_RT_MUTEXES=y
47# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set 56# CONFIG_SLOB is not set
@@ -53,14 +60,16 @@ CONFIG_BASE_SMALL=0
53# 60#
54CONFIG_MODULES=y 61CONFIG_MODULES=y
55# CONFIG_MODULE_UNLOAD is not set 62# CONFIG_MODULE_UNLOAD is not set
56CONFIG_OBSOLETE_MODPARM=y
57# CONFIG_MODVERSIONS is not set 63# CONFIG_MODVERSIONS is not set
58# CONFIG_MODULE_SRCVERSION_ALL is not set 64# CONFIG_MODULE_SRCVERSION_ALL is not set
59# CONFIG_KMOD is not set 65# CONFIG_KMOD is not set
66CONFIG_STOP_MACHINE=y
60 67
61# 68#
62# Block layer 69# Block layer
63# 70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
64 73
65# 74#
66# IO Schedulers 75# IO Schedulers
@@ -80,15 +89,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
80# 89#
81CONFIG_IA64=y 90CONFIG_IA64=y
82CONFIG_64BIT=y 91CONFIG_64BIT=y
92CONFIG_ZONE_DMA=y
83CONFIG_MMU=y 93CONFIG_MMU=y
84CONFIG_SWIOTLB=y
85CONFIG_RWSEM_XCHGADD_ALGORITHM=y 94CONFIG_RWSEM_XCHGADD_ALGORITHM=y
95# CONFIG_ARCH_HAS_ILOG2_U32 is not set
96# CONFIG_ARCH_HAS_ILOG2_U64 is not set
97CONFIG_GENERIC_FIND_NEXT_BIT=y
86CONFIG_GENERIC_CALIBRATE_DELAY=y 98CONFIG_GENERIC_CALIBRATE_DELAY=y
87CONFIG_TIME_INTERPOLATION=y 99CONFIG_TIME_INTERPOLATION=y
100CONFIG_DMI=y
88CONFIG_EFI=y 101CONFIG_EFI=y
89CONFIG_GENERIC_IOMAP=y 102CONFIG_GENERIC_IOMAP=y
90CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 103CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
91CONFIG_DMA_IS_DMA32=y 104CONFIG_AUDIT_ARCH=y
92# CONFIG_IA64_GENERIC is not set 105# CONFIG_IA64_GENERIC is not set
93# CONFIG_IA64_DIG is not set 106# CONFIG_IA64_DIG is not set
94CONFIG_IA64_HP_ZX1=y 107CONFIG_IA64_HP_ZX1=y
@@ -105,6 +118,7 @@ CONFIG_PGTABLE_3=y
105# CONFIG_PGTABLE_4 is not set 118# CONFIG_PGTABLE_4 is not set
106# CONFIG_HZ_100 is not set 119# CONFIG_HZ_100 is not set
107CONFIG_HZ_250=y 120CONFIG_HZ_250=y
121# CONFIG_HZ_300 is not set
108# CONFIG_HZ_1000 is not set 122# CONFIG_HZ_1000 is not set
109CONFIG_HZ=250 123CONFIG_HZ=250
110CONFIG_IA64_L1_CACHE_SHIFT=7 124CONFIG_IA64_L1_CACHE_SHIFT=7
@@ -113,8 +127,10 @@ CONFIG_IOSAPIC=y
113CONFIG_FORCE_MAX_ZONEORDER=17 127CONFIG_FORCE_MAX_ZONEORDER=17
114CONFIG_SMP=y 128CONFIG_SMP=y
115CONFIG_NR_CPUS=16 129CONFIG_NR_CPUS=16
116# CONFIG_HOTPLUG_CPU is not set 130CONFIG_HOTPLUG_CPU=y
131CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
117# CONFIG_SCHED_SMT is not set 132# CONFIG_SCHED_SMT is not set
133# CONFIG_PERMIT_BSP_REMOVE is not set
118# CONFIG_PREEMPT is not set 134# CONFIG_PREEMPT is not set
119CONFIG_SELECT_MEMORY_MODEL=y 135CONFIG_SELECT_MEMORY_MODEL=y
120CONFIG_FLATMEM_MANUAL=y 136CONFIG_FLATMEM_MANUAL=y
@@ -124,11 +140,14 @@ CONFIG_FLATMEM=y
124CONFIG_FLAT_NODE_MEM_MAP=y 140CONFIG_FLAT_NODE_MEM_MAP=y
125# CONFIG_SPARSEMEM_STATIC is not set 141# CONFIG_SPARSEMEM_STATIC is not set
126CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
143CONFIG_RESOURCES_64BIT=y
144CONFIG_ZONE_DMA_FLAG=1
127CONFIG_ARCH_SELECT_MEMORY_MODEL=y 145CONFIG_ARCH_SELECT_MEMORY_MODEL=y
128CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 146CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
129CONFIG_ARCH_FLATMEM_ENABLE=y 147CONFIG_ARCH_FLATMEM_ENABLE=y
130CONFIG_ARCH_SPARSEMEM_ENABLE=y 148CONFIG_ARCH_SPARSEMEM_ENABLE=y
131CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y 149CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
150CONFIG_ARCH_POPULATES_NODE_MAP=y
132CONFIG_VIRTUAL_MEM_MAP=y 151CONFIG_VIRTUAL_MEM_MAP=y
133CONFIG_HOLES_IN_ZONE=y 152CONFIG_HOLES_IN_ZONE=y
134CONFIG_IA32_SUPPORT=y 153CONFIG_IA32_SUPPORT=y
@@ -136,6 +155,9 @@ CONFIG_COMPAT=y
136CONFIG_IA64_MCA_RECOVERY=y 155CONFIG_IA64_MCA_RECOVERY=y
137CONFIG_PERFMON=y 156CONFIG_PERFMON=y
138CONFIG_IA64_PALINFO=y 157CONFIG_IA64_PALINFO=y
158# CONFIG_IA64_ESI is not set
159# CONFIG_KEXEC is not set
160CONFIG_CRASH_DUMP=y
139 161
140# 162#
141# Firmware Drivers 163# Firmware Drivers
@@ -151,21 +173,25 @@ CONFIG_BINFMT_MISC=y
151CONFIG_PM=y 173CONFIG_PM=y
152CONFIG_PM_LEGACY=y 174CONFIG_PM_LEGACY=y
153# CONFIG_PM_DEBUG is not set 175# CONFIG_PM_DEBUG is not set
176# CONFIG_PM_SYSFS_DEPRECATED is not set
154 177
155# 178#
156# ACPI (Advanced Configuration and Power Interface) Support 179# ACPI (Advanced Configuration and Power Interface) Support
157# 180#
158CONFIG_ACPI=y 181CONFIG_ACPI=y
182CONFIG_ACPI_PROCFS=y
159CONFIG_ACPI_BUTTON=y 183CONFIG_ACPI_BUTTON=y
160CONFIG_ACPI_FAN=y 184CONFIG_ACPI_FAN=y
185# CONFIG_ACPI_DOCK is not set
161CONFIG_ACPI_PROCESSOR=y 186CONFIG_ACPI_PROCESSOR=y
187CONFIG_ACPI_HOTPLUG_CPU=y
162CONFIG_ACPI_THERMAL=y 188CONFIG_ACPI_THERMAL=y
163CONFIG_ACPI_BLACKLIST_YEAR=0 189CONFIG_ACPI_BLACKLIST_YEAR=0
164# CONFIG_ACPI_DEBUG is not set 190# CONFIG_ACPI_DEBUG is not set
165CONFIG_ACPI_EC=y 191CONFIG_ACPI_EC=y
166CONFIG_ACPI_POWER=y 192CONFIG_ACPI_POWER=y
167CONFIG_ACPI_SYSTEM=y 193CONFIG_ACPI_SYSTEM=y
168# CONFIG_ACPI_CONTAINER is not set 194CONFIG_ACPI_CONTAINER=y
169 195
170# 196#
171# CPU Frequency scaling 197# CPU Frequency scaling
@@ -177,8 +203,8 @@ CONFIG_ACPI_SYSTEM=y
177# 203#
178CONFIG_PCI=y 204CONFIG_PCI=y
179CONFIG_PCI_DOMAINS=y 205CONFIG_PCI_DOMAINS=y
206# CONFIG_PCIEPORTBUS is not set
180# CONFIG_PCI_MSI is not set 207# CONFIG_PCI_MSI is not set
181CONFIG_PCI_LEGACY_PROC=y
182# CONFIG_PCI_DEBUG is not set 208# CONFIG_PCI_DEBUG is not set
183 209
184# 210#
@@ -208,6 +234,10 @@ CONFIG_NET=y
208CONFIG_PACKET=y 234CONFIG_PACKET=y
209# CONFIG_PACKET_MMAP is not set 235# CONFIG_PACKET_MMAP is not set
210CONFIG_UNIX=y 236CONFIG_UNIX=y
237CONFIG_XFRM=y
238# CONFIG_XFRM_USER is not set
239# CONFIG_XFRM_SUB_POLICY is not set
240# CONFIG_XFRM_MIGRATE is not set
211# CONFIG_NET_KEY is not set 241# CONFIG_NET_KEY is not set
212CONFIG_INET=y 242CONFIG_INET=y
213CONFIG_IP_MULTICAST=y 243CONFIG_IP_MULTICAST=y
@@ -222,17 +252,26 @@ CONFIG_IP_FIB_HASH=y
222# CONFIG_INET_AH is not set 252# CONFIG_INET_AH is not set
223# CONFIG_INET_ESP is not set 253# CONFIG_INET_ESP is not set
224# CONFIG_INET_IPCOMP is not set 254# CONFIG_INET_IPCOMP is not set
255# CONFIG_INET_XFRM_TUNNEL is not set
225# CONFIG_INET_TUNNEL is not set 256# CONFIG_INET_TUNNEL is not set
257CONFIG_INET_XFRM_MODE_TRANSPORT=y
258CONFIG_INET_XFRM_MODE_TUNNEL=y
259CONFIG_INET_XFRM_MODE_BEET=y
226CONFIG_INET_DIAG=y 260CONFIG_INET_DIAG=y
227CONFIG_INET_TCP_DIAG=y 261CONFIG_INET_TCP_DIAG=y
228# CONFIG_TCP_CONG_ADVANCED is not set 262# CONFIG_TCP_CONG_ADVANCED is not set
229CONFIG_TCP_CONG_BIC=y 263CONFIG_TCP_CONG_CUBIC=y
264CONFIG_DEFAULT_TCP_CONG="cubic"
265# CONFIG_TCP_MD5SIG is not set
230 266
231# 267#
232# IP: Virtual Server Configuration 268# IP: Virtual Server Configuration
233# 269#
234# CONFIG_IP_VS is not set 270# CONFIG_IP_VS is not set
235# CONFIG_IPV6 is not set 271# CONFIG_IPV6 is not set
272# CONFIG_INET6_XFRM_TUNNEL is not set
273# CONFIG_INET6_TUNNEL is not set
274# CONFIG_NETWORK_SECMARK is not set
236CONFIG_NETFILTER=y 275CONFIG_NETFILTER=y
237# CONFIG_NETFILTER_DEBUG is not set 276# CONFIG_NETFILTER_DEBUG is not set
238 277
@@ -240,14 +279,15 @@ CONFIG_NETFILTER=y
240# Core Netfilter Configuration 279# Core Netfilter Configuration
241# 280#
242# CONFIG_NETFILTER_NETLINK is not set 281# CONFIG_NETFILTER_NETLINK is not set
243# CONFIG_NF_CONNTRACK is not set 282# CONFIG_NF_CONNTRACK_ENABLED is not set
244# CONFIG_NETFILTER_XTABLES is not set 283# CONFIG_NETFILTER_XTABLES is not set
245 284
246# 285#
247# IP: Netfilter Configuration 286# IP: Netfilter Configuration
248# 287#
249# CONFIG_IP_NF_CONNTRACK is not set
250# CONFIG_IP_NF_QUEUE is not set 288# CONFIG_IP_NF_QUEUE is not set
289# CONFIG_IP_NF_IPTABLES is not set
290# CONFIG_IP_NF_ARPTABLES is not set
251 291
252# 292#
253# DCCP Configuration (EXPERIMENTAL) 293# DCCP Configuration (EXPERIMENTAL)
@@ -272,7 +312,6 @@ CONFIG_NETFILTER=y
272# CONFIG_ATALK is not set 312# CONFIG_ATALK is not set
273# CONFIG_X25 is not set 313# CONFIG_X25 is not set
274# CONFIG_LAPB is not set 314# CONFIG_LAPB is not set
275# CONFIG_NET_DIVERT is not set
276# CONFIG_ECONET is not set 315# CONFIG_ECONET is not set
277# CONFIG_WAN_ROUTER is not set 316# CONFIG_WAN_ROUTER is not set
278 317
@@ -285,6 +324,7 @@ CONFIG_NETFILTER=y
285# Network testing 324# Network testing
286# 325#
287# CONFIG_NET_PKTGEN is not set 326# CONFIG_NET_PKTGEN is not set
327# CONFIG_NET_TCPPROBE is not set
288# CONFIG_HAMRADIO is not set 328# CONFIG_HAMRADIO is not set
289# CONFIG_IRDA is not set 329# CONFIG_IRDA is not set
290# CONFIG_BT is not set 330# CONFIG_BT is not set
@@ -301,6 +341,8 @@ CONFIG_STANDALONE=y
301CONFIG_PREVENT_FIRMWARE_BUILD=y 341CONFIG_PREVENT_FIRMWARE_BUILD=y
302# CONFIG_FW_LOADER is not set 342# CONFIG_FW_LOADER is not set
303# CONFIG_DEBUG_DRIVER is not set 343# CONFIG_DEBUG_DRIVER is not set
344# CONFIG_DEBUG_DEVRES is not set
345# CONFIG_SYS_HYPERVISOR is not set
304 346
305# 347#
306# Connector - unified userspace <-> kernelspace linker 348# Connector - unified userspace <-> kernelspace linker
@@ -344,11 +386,17 @@ CONFIG_BLK_DEV_LOOP=y
344CONFIG_BLK_DEV_RAM=y 386CONFIG_BLK_DEV_RAM=y
345CONFIG_BLK_DEV_RAM_COUNT=16 387CONFIG_BLK_DEV_RAM_COUNT=16
346CONFIG_BLK_DEV_RAM_SIZE=4096 388CONFIG_BLK_DEV_RAM_SIZE=4096
347CONFIG_BLK_DEV_INITRD=y 389CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
348# CONFIG_CDROM_PKTCDVD is not set 390# CONFIG_CDROM_PKTCDVD is not set
349# CONFIG_ATA_OVER_ETH is not set 391# CONFIG_ATA_OVER_ETH is not set
350 392
351# 393#
394# Misc devices
395#
396# CONFIG_SGI_IOC4 is not set
397# CONFIG_TIFM_CORE is not set
398
399#
352# ATA/ATAPI/MFM/RLL support 400# ATA/ATAPI/MFM/RLL support
353# 401#
354CONFIG_IDE=y 402CONFIG_IDE=y
@@ -365,6 +413,7 @@ CONFIG_BLK_DEV_IDECD=y
365# CONFIG_BLK_DEV_IDETAPE is not set 413# CONFIG_BLK_DEV_IDETAPE is not set
366# CONFIG_BLK_DEV_IDEFLOPPY is not set 414# CONFIG_BLK_DEV_IDEFLOPPY is not set
367# CONFIG_BLK_DEV_IDESCSI is not set 415# CONFIG_BLK_DEV_IDESCSI is not set
416# CONFIG_BLK_DEV_IDEACPI is not set
368# CONFIG_IDE_TASK_IOCTL is not set 417# CONFIG_IDE_TASK_IOCTL is not set
369 418
370# 419#
@@ -390,8 +439,10 @@ CONFIG_BLK_DEV_CMD64X=y
390# CONFIG_BLK_DEV_CS5530 is not set 439# CONFIG_BLK_DEV_CS5530 is not set
391# CONFIG_BLK_DEV_HPT34X is not set 440# CONFIG_BLK_DEV_HPT34X is not set
392# CONFIG_BLK_DEV_HPT366 is not set 441# CONFIG_BLK_DEV_HPT366 is not set
442# CONFIG_BLK_DEV_JMICRON is not set
393# CONFIG_BLK_DEV_SC1200 is not set 443# CONFIG_BLK_DEV_SC1200 is not set
394# CONFIG_BLK_DEV_PIIX is not set 444# CONFIG_BLK_DEV_PIIX is not set
445# CONFIG_BLK_DEV_IT8213 is not set
395# CONFIG_BLK_DEV_IT821X is not set 446# CONFIG_BLK_DEV_IT821X is not set
396# CONFIG_BLK_DEV_NS87415 is not set 447# CONFIG_BLK_DEV_NS87415 is not set
397# CONFIG_BLK_DEV_PDC202XX_OLD is not set 448# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -401,6 +452,7 @@ CONFIG_BLK_DEV_CMD64X=y
401# CONFIG_BLK_DEV_SLC90E66 is not set 452# CONFIG_BLK_DEV_SLC90E66 is not set
402# CONFIG_BLK_DEV_TRM290 is not set 453# CONFIG_BLK_DEV_TRM290 is not set
403# CONFIG_BLK_DEV_VIA82CXXX is not set 454# CONFIG_BLK_DEV_VIA82CXXX is not set
455# CONFIG_BLK_DEV_TC86C001 is not set
404# CONFIG_IDE_ARM is not set 456# CONFIG_IDE_ARM is not set
405CONFIG_BLK_DEV_IDEDMA=y 457CONFIG_BLK_DEV_IDEDMA=y
406# CONFIG_IDEDMA_IVB is not set 458# CONFIG_IDEDMA_IVB is not set
@@ -412,6 +464,8 @@ CONFIG_BLK_DEV_IDEDMA=y
412# 464#
413# CONFIG_RAID_ATTRS is not set 465# CONFIG_RAID_ATTRS is not set
414CONFIG_SCSI=y 466CONFIG_SCSI=y
467# CONFIG_SCSI_TGT is not set
468CONFIG_SCSI_NETLINK=y
415CONFIG_SCSI_PROC_FS=y 469CONFIG_SCSI_PROC_FS=y
416 470
417# 471#
@@ -431,14 +485,16 @@ CONFIG_CHR_DEV_SG=y
431CONFIG_SCSI_MULTI_LUN=y 485CONFIG_SCSI_MULTI_LUN=y
432CONFIG_SCSI_CONSTANTS=y 486CONFIG_SCSI_CONSTANTS=y
433CONFIG_SCSI_LOGGING=y 487CONFIG_SCSI_LOGGING=y
488# CONFIG_SCSI_SCAN_ASYNC is not set
434 489
435# 490#
436# SCSI Transport Attributes 491# SCSI Transports
437# 492#
438CONFIG_SCSI_SPI_ATTRS=y 493CONFIG_SCSI_SPI_ATTRS=y
439CONFIG_SCSI_FC_ATTRS=y 494CONFIG_SCSI_FC_ATTRS=y
440# CONFIG_SCSI_ISCSI_ATTRS is not set 495# CONFIG_SCSI_ISCSI_ATTRS is not set
441# CONFIG_SCSI_SAS_ATTRS is not set 496# CONFIG_SCSI_SAS_ATTRS is not set
497# CONFIG_SCSI_SAS_LIBSAS is not set
442 498
443# 499#
444# SCSI low-level drivers 500# SCSI low-level drivers
@@ -451,28 +507,36 @@ CONFIG_SCSI_FC_ATTRS=y
451# CONFIG_SCSI_AIC7XXX is not set 507# CONFIG_SCSI_AIC7XXX is not set
452# CONFIG_SCSI_AIC7XXX_OLD is not set 508# CONFIG_SCSI_AIC7XXX_OLD is not set
453# CONFIG_SCSI_AIC79XX is not set 509# CONFIG_SCSI_AIC79XX is not set
510# CONFIG_SCSI_AIC94XX is not set
511# CONFIG_SCSI_ARCMSR is not set
454# CONFIG_MEGARAID_NEWGEN is not set 512# CONFIG_MEGARAID_NEWGEN is not set
455# CONFIG_MEGARAID_LEGACY is not set 513# CONFIG_MEGARAID_LEGACY is not set
456# CONFIG_MEGARAID_SAS is not set 514# CONFIG_MEGARAID_SAS is not set
457# CONFIG_SCSI_SATA is not set 515# CONFIG_SCSI_HPTIOP is not set
458# CONFIG_SCSI_DMX3191D is not set 516# CONFIG_SCSI_DMX3191D is not set
459# CONFIG_SCSI_FUTURE_DOMAIN is not set 517# CONFIG_SCSI_FUTURE_DOMAIN is not set
460# CONFIG_SCSI_IPS is not set 518# CONFIG_SCSI_IPS is not set
461# CONFIG_SCSI_INITIO is not set 519# CONFIG_SCSI_INITIO is not set
462# CONFIG_SCSI_INIA100 is not set 520# CONFIG_SCSI_INIA100 is not set
521# CONFIG_SCSI_STEX is not set
463CONFIG_SCSI_SYM53C8XX_2=y 522CONFIG_SCSI_SYM53C8XX_2=y
464CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 523CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
465CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 524CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
466CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 525CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
467# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 526CONFIG_SCSI_SYM53C8XX_MMIO=y
468# CONFIG_SCSI_IPR is not set
469# CONFIG_SCSI_QLOGIC_FC is not set
470CONFIG_SCSI_QLOGIC_1280=y 527CONFIG_SCSI_QLOGIC_1280=y
471# CONFIG_SCSI_QLA_FC is not set 528# CONFIG_SCSI_QLA_FC is not set
529# CONFIG_SCSI_QLA_ISCSI is not set
472# CONFIG_SCSI_LPFC is not set 530# CONFIG_SCSI_LPFC is not set
473# CONFIG_SCSI_DC395x is not set 531# CONFIG_SCSI_DC395x is not set
474# CONFIG_SCSI_DC390T is not set 532# CONFIG_SCSI_DC390T is not set
475# CONFIG_SCSI_DEBUG is not set 533# CONFIG_SCSI_DEBUG is not set
534# CONFIG_SCSI_SRP is not set
535
536#
537# Serial ATA (prod) and Parallel ATA (experimental) drivers
538#
539# CONFIG_ATA is not set
476 540
477# 541#
478# Multi-device support (RAID and LVM) 542# Multi-device support (RAID and LVM)
@@ -562,6 +626,7 @@ CONFIG_E100=y
562# CONFIG_EPIC100 is not set 626# CONFIG_EPIC100 is not set
563# CONFIG_SUNDANCE is not set 627# CONFIG_SUNDANCE is not set
564# CONFIG_VIA_RHINE is not set 628# CONFIG_VIA_RHINE is not set
629# CONFIG_SC92031 is not set
565 630
566# 631#
567# Ethernet (1000 Mbit) 632# Ethernet (1000 Mbit)
@@ -582,13 +647,18 @@ CONFIG_E1000=y
582# CONFIG_VIA_VELOCITY is not set 647# CONFIG_VIA_VELOCITY is not set
583CONFIG_TIGON3=y 648CONFIG_TIGON3=y
584# CONFIG_BNX2 is not set 649# CONFIG_BNX2 is not set
650# CONFIG_QLA3XXX is not set
651# CONFIG_ATL1 is not set
585 652
586# 653#
587# Ethernet (10000 Mbit) 654# Ethernet (10000 Mbit)
588# 655#
589# CONFIG_CHELSIO_T1 is not set 656# CONFIG_CHELSIO_T1 is not set
657# CONFIG_CHELSIO_T3 is not set
590# CONFIG_IXGB is not set 658# CONFIG_IXGB is not set
591# CONFIG_S2IO is not set 659# CONFIG_S2IO is not set
660# CONFIG_MYRI10GE is not set
661# CONFIG_NETXEN_NIC is not set
592 662
593# 663#
594# Token Ring devices 664# Token Ring devices
@@ -628,6 +698,7 @@ CONFIG_TIGON3=y
628# Input device support 698# Input device support
629# 699#
630CONFIG_INPUT=y 700CONFIG_INPUT=y
701# CONFIG_INPUT_FF_MEMLESS is not set
631 702
632# 703#
633# Userland interfaces 704# Userland interfaces
@@ -666,6 +737,7 @@ CONFIG_SERIO=y
666CONFIG_VT=y 737CONFIG_VT=y
667CONFIG_VT_CONSOLE=y 738CONFIG_VT_CONSOLE=y
668CONFIG_HW_CONSOLE=y 739CONFIG_HW_CONSOLE=y
740# CONFIG_VT_HW_CONSOLE_BINDING is not set
669# CONFIG_SERIAL_NONSTANDARD is not set 741# CONFIG_SERIAL_NONSTANDARD is not set
670 742
671# 743#
@@ -673,7 +745,8 @@ CONFIG_HW_CONSOLE=y
673# 745#
674CONFIG_SERIAL_8250=y 746CONFIG_SERIAL_8250=y
675CONFIG_SERIAL_8250_CONSOLE=y 747CONFIG_SERIAL_8250_CONSOLE=y
676CONFIG_SERIAL_8250_ACPI=y 748CONFIG_SERIAL_8250_PCI=y
749CONFIG_SERIAL_8250_PNP=y
677CONFIG_SERIAL_8250_NR_UARTS=8 750CONFIG_SERIAL_8250_NR_UARTS=8
678CONFIG_SERIAL_8250_RUNTIME_UARTS=4 751CONFIG_SERIAL_8250_RUNTIME_UARTS=4
679CONFIG_SERIAL_8250_EXTENDED=y 752CONFIG_SERIAL_8250_EXTENDED=y
@@ -705,10 +778,6 @@ CONFIG_EFI_RTC=y
705# CONFIG_DTLK is not set 778# CONFIG_DTLK is not set
706# CONFIG_R3964 is not set 779# CONFIG_R3964 is not set
707# CONFIG_APPLICOM is not set 780# CONFIG_APPLICOM is not set
708
709#
710# Ftape, the floppy tape device driver
711#
712CONFIG_AGP=y 781CONFIG_AGP=y
713CONFIG_AGP_HP_ZX1=y 782CONFIG_AGP_HP_ZX1=y
714CONFIG_DRM=y 783CONFIG_DRM=y
@@ -727,7 +796,6 @@ CONFIG_DRM_RADEON=y
727# TPM devices 796# TPM devices
728# 797#
729# CONFIG_TCG_TPM is not set 798# CONFIG_TCG_TPM is not set
730# CONFIG_TELCLOCK is not set
731 799
732# 800#
733# I2C support 801# I2C support
@@ -754,10 +822,11 @@ CONFIG_I2C_ALGOPCF=y
754# CONFIG_I2C_I810 is not set 822# CONFIG_I2C_I810 is not set
755# CONFIG_I2C_PIIX4 is not set 823# CONFIG_I2C_PIIX4 is not set
756# CONFIG_I2C_NFORCE2 is not set 824# CONFIG_I2C_NFORCE2 is not set
825# CONFIG_I2C_OCORES is not set
757# CONFIG_I2C_PARPORT_LIGHT is not set 826# CONFIG_I2C_PARPORT_LIGHT is not set
827# CONFIG_I2C_PASEMI is not set
758# CONFIG_I2C_PROSAVAGE is not set 828# CONFIG_I2C_PROSAVAGE is not set
759# CONFIG_I2C_SAVAGE4 is not set 829# CONFIG_I2C_SAVAGE4 is not set
760# CONFIG_SCx200_ACB is not set
761# CONFIG_I2C_SIS5595 is not set 830# CONFIG_I2C_SIS5595 is not set
762# CONFIG_I2C_SIS630 is not set 831# CONFIG_I2C_SIS630 is not set
763# CONFIG_I2C_SIS96X is not set 832# CONFIG_I2C_SIS96X is not set
@@ -776,9 +845,7 @@ CONFIG_I2C_ALGOPCF=y
776# CONFIG_SENSORS_PCF8574 is not set 845# CONFIG_SENSORS_PCF8574 is not set
777# CONFIG_SENSORS_PCA9539 is not set 846# CONFIG_SENSORS_PCA9539 is not set
778# CONFIG_SENSORS_PCF8591 is not set 847# CONFIG_SENSORS_PCF8591 is not set
779# CONFIG_SENSORS_RTC8564 is not set
780# CONFIG_SENSORS_MAX6875 is not set 848# CONFIG_SENSORS_MAX6875 is not set
781# CONFIG_RTC_X1205_I2C is not set
782# CONFIG_I2C_DEBUG_CORE is not set 849# CONFIG_I2C_DEBUG_CORE is not set
783# CONFIG_I2C_DEBUG_ALGO is not set 850# CONFIG_I2C_DEBUG_ALGO is not set
784# CONFIG_I2C_DEBUG_BUS is not set 851# CONFIG_I2C_DEBUG_BUS is not set
@@ -802,28 +869,31 @@ CONFIG_I2C_ALGOPCF=y
802# CONFIG_HWMON_VID is not set 869# CONFIG_HWMON_VID is not set
803 870
804# 871#
805# Misc devices 872# Multifunction device drivers
806#
807
808#
809# Multimedia Capabilities Port drivers
810# 873#
874# CONFIG_MFD_SM501 is not set
811 875
812# 876#
813# Multimedia devices 877# Multimedia devices
814# 878#
815CONFIG_VIDEO_DEV=y 879CONFIG_VIDEO_DEV=y
880CONFIG_VIDEO_V4L1=y
881CONFIG_VIDEO_V4L1_COMPAT=y
882CONFIG_VIDEO_V4L2=y
816 883
817# 884#
818# Video For Linux 885# Video Capture Adapters
819# 886#
820 887
821# 888#
822# Video Adapters 889# Video Capture Adapters
823# 890#
824# CONFIG_VIDEO_ADV_DEBUG is not set 891# CONFIG_VIDEO_ADV_DEBUG is not set
892CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
893# CONFIG_VIDEO_VIVI is not set
825# CONFIG_VIDEO_BT848 is not set 894# CONFIG_VIDEO_BT848 is not set
826# CONFIG_VIDEO_CPIA is not set 895# CONFIG_VIDEO_CPIA is not set
896# CONFIG_VIDEO_CPIA2 is not set
827# CONFIG_VIDEO_SAA5246A is not set 897# CONFIG_VIDEO_SAA5246A is not set
828# CONFIG_VIDEO_SAA5249 is not set 898# CONFIG_VIDEO_SAA5249 is not set
829# CONFIG_TUNER_3036 is not set 899# CONFIG_TUNER_3036 is not set
@@ -835,10 +905,27 @@ CONFIG_VIDEO_DEV=y
835# CONFIG_VIDEO_HEXIUM_ORION is not set 905# CONFIG_VIDEO_HEXIUM_ORION is not set
836# CONFIG_VIDEO_HEXIUM_GEMINI is not set 906# CONFIG_VIDEO_HEXIUM_GEMINI is not set
837# CONFIG_VIDEO_CX88 is not set 907# CONFIG_VIDEO_CX88 is not set
908# CONFIG_VIDEO_CAFE_CCIC is not set
909
910#
911# V4L USB devices
912#
913# CONFIG_VIDEO_PVRUSB2 is not set
838# CONFIG_VIDEO_EM28XX is not set 914# CONFIG_VIDEO_EM28XX is not set
915# CONFIG_VIDEO_USBVISION is not set
916# CONFIG_USB_VICAM is not set
917# CONFIG_USB_IBMCAM is not set
918# CONFIG_USB_KONICAWC is not set
919# CONFIG_USB_QUICKCAM_MESSENGER is not set
920# CONFIG_USB_ET61X251 is not set
839# CONFIG_VIDEO_OVCAMCHIP is not set 921# CONFIG_VIDEO_OVCAMCHIP is not set
840# CONFIG_VIDEO_AUDIO_DECODER is not set 922# CONFIG_USB_W9968CF is not set
841# CONFIG_VIDEO_DECODER is not set 923# CONFIG_USB_OV511 is not set
924# CONFIG_USB_SE401 is not set
925# CONFIG_USB_SN9C102 is not set
926# CONFIG_USB_STV680 is not set
927# CONFIG_USB_ZC0301 is not set
928# CONFIG_USB_PWC is not set
842 929
843# 930#
844# Radio Adapters 931# Radio Adapters
@@ -846,22 +933,35 @@ CONFIG_VIDEO_DEV=y
846# CONFIG_RADIO_GEMTEK_PCI is not set 933# CONFIG_RADIO_GEMTEK_PCI is not set
847# CONFIG_RADIO_MAXIRADIO is not set 934# CONFIG_RADIO_MAXIRADIO is not set
848# CONFIG_RADIO_MAESTRO is not set 935# CONFIG_RADIO_MAESTRO is not set
936# CONFIG_USB_DSBR is not set
849 937
850# 938#
851# Digital Video Broadcasting Devices 939# Digital Video Broadcasting Devices
852# 940#
853# CONFIG_DVB is not set 941# CONFIG_DVB is not set
942# CONFIG_USB_DABUSB is not set
854 943
855# 944#
856# Graphics support 945# Graphics support
857# 946#
947CONFIG_BACKLIGHT_LCD_SUPPORT=y
948CONFIG_BACKLIGHT_CLASS_DEVICE=y
949CONFIG_LCD_CLASS_DEVICE=m
858CONFIG_FB=y 950CONFIG_FB=y
951# CONFIG_FIRMWARE_EDID is not set
952CONFIG_FB_DDC=y
859CONFIG_FB_CFB_FILLRECT=y 953CONFIG_FB_CFB_FILLRECT=y
860CONFIG_FB_CFB_COPYAREA=y 954CONFIG_FB_CFB_COPYAREA=y
861CONFIG_FB_CFB_IMAGEBLIT=y 955CONFIG_FB_CFB_IMAGEBLIT=y
956# CONFIG_FB_SVGALIB is not set
862# CONFIG_FB_MACMODES is not set 957# CONFIG_FB_MACMODES is not set
958CONFIG_FB_BACKLIGHT=y
863CONFIG_FB_MODE_HELPERS=y 959CONFIG_FB_MODE_HELPERS=y
864# CONFIG_FB_TILEBLITTING is not set 960# CONFIG_FB_TILEBLITTING is not set
961
962#
963# Frambuffer hardware drivers
964#
865# CONFIG_FB_CIRRUS is not set 965# CONFIG_FB_CIRRUS is not set
866# CONFIG_FB_PM2 is not set 966# CONFIG_FB_PM2 is not set
867# CONFIG_FB_CYBER2000 is not set 967# CONFIG_FB_CYBER2000 is not set
@@ -871,12 +971,13 @@ CONFIG_FB_MODE_HELPERS=y
871# CONFIG_FB_NVIDIA is not set 971# CONFIG_FB_NVIDIA is not set
872# CONFIG_FB_RIVA is not set 972# CONFIG_FB_RIVA is not set
873# CONFIG_FB_MATROX is not set 973# CONFIG_FB_MATROX is not set
874# CONFIG_FB_RADEON_OLD is not set
875CONFIG_FB_RADEON=y 974CONFIG_FB_RADEON=y
876CONFIG_FB_RADEON_I2C=y 975CONFIG_FB_RADEON_I2C=y
976CONFIG_FB_RADEON_BACKLIGHT=y
877CONFIG_FB_RADEON_DEBUG=y 977CONFIG_FB_RADEON_DEBUG=y
878# CONFIG_FB_ATY128 is not set 978# CONFIG_FB_ATY128 is not set
879# CONFIG_FB_ATY is not set 979# CONFIG_FB_ATY is not set
980# CONFIG_FB_S3 is not set
880# CONFIG_FB_SAVAGE is not set 981# CONFIG_FB_SAVAGE is not set
881# CONFIG_FB_SIS is not set 982# CONFIG_FB_SIS is not set
882# CONFIG_FB_NEOMAGIC is not set 983# CONFIG_FB_NEOMAGIC is not set
@@ -890,6 +991,7 @@ CONFIG_FB_RADEON_DEBUG=y
890# Console display driver support 991# Console display driver support
891# 992#
892CONFIG_VGA_CONSOLE=y 993CONFIG_VGA_CONSOLE=y
994# CONFIG_VGACON_SOFT_SCROLLBACK is not set
893CONFIG_DUMMY_CONSOLE=y 995CONFIG_DUMMY_CONSOLE=y
894CONFIG_FRAMEBUFFER_CONSOLE=y 996CONFIG_FRAMEBUFFER_CONSOLE=y
895# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 997# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
@@ -904,7 +1006,6 @@ CONFIG_LOGO=y
904# CONFIG_LOGO_LINUX_MONO is not set 1006# CONFIG_LOGO_LINUX_MONO is not set
905# CONFIG_LOGO_LINUX_VGA16 is not set 1007# CONFIG_LOGO_LINUX_VGA16 is not set
906CONFIG_LOGO_LINUX_CLUT224=y 1008CONFIG_LOGO_LINUX_CLUT224=y
907# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
908 1009
909# 1010#
910# Sound 1011# Sound
@@ -924,9 +1025,11 @@ CONFIG_SND_SEQUENCER=y
924CONFIG_SND_OSSEMUL=y 1025CONFIG_SND_OSSEMUL=y
925CONFIG_SND_MIXER_OSS=y 1026CONFIG_SND_MIXER_OSS=y
926CONFIG_SND_PCM_OSS=y 1027CONFIG_SND_PCM_OSS=y
1028CONFIG_SND_PCM_OSS_PLUGINS=y
927CONFIG_SND_SEQUENCER_OSS=y 1029CONFIG_SND_SEQUENCER_OSS=y
928# CONFIG_SND_DYNAMIC_MINORS is not set 1030# CONFIG_SND_DYNAMIC_MINORS is not set
929CONFIG_SND_SUPPORT_OLD_API=y 1031CONFIG_SND_SUPPORT_OLD_API=y
1032CONFIG_SND_VERBOSE_PROCFS=y
930# CONFIG_SND_VERBOSE_PRINTK is not set 1033# CONFIG_SND_VERBOSE_PRINTK is not set
931# CONFIG_SND_DEBUG is not set 1034# CONFIG_SND_DEBUG is not set
932 1035
@@ -936,7 +1039,6 @@ CONFIG_SND_SUPPORT_OLD_API=y
936CONFIG_SND_MPU401_UART=y 1039CONFIG_SND_MPU401_UART=y
937CONFIG_SND_OPL3_LIB=y 1040CONFIG_SND_OPL3_LIB=y
938CONFIG_SND_AC97_CODEC=y 1041CONFIG_SND_AC97_CODEC=y
939CONFIG_SND_AC97_BUS=y
940# CONFIG_SND_DUMMY is not set 1042# CONFIG_SND_DUMMY is not set
941# CONFIG_SND_VIRMIDI is not set 1043# CONFIG_SND_VIRMIDI is not set
942# CONFIG_SND_MTPAV is not set 1044# CONFIG_SND_MTPAV is not set
@@ -947,6 +1049,7 @@ CONFIG_SND_AC97_BUS=y
947# PCI devices 1049# PCI devices
948# 1050#
949# CONFIG_SND_AD1889 is not set 1051# CONFIG_SND_AD1889 is not set
1052# CONFIG_SND_ALS300 is not set
950# CONFIG_SND_ALI5451 is not set 1053# CONFIG_SND_ALI5451 is not set
951# CONFIG_SND_ATIIXP is not set 1054# CONFIG_SND_ATIIXP is not set
952# CONFIG_SND_ATIIXP_MODEM is not set 1055# CONFIG_SND_ATIIXP_MODEM is not set
@@ -959,6 +1062,18 @@ CONFIG_SND_AC97_BUS=y
959# CONFIG_SND_CMIPCI is not set 1062# CONFIG_SND_CMIPCI is not set
960# CONFIG_SND_CS4281 is not set 1063# CONFIG_SND_CS4281 is not set
961# CONFIG_SND_CS46XX is not set 1064# CONFIG_SND_CS46XX is not set
1065# CONFIG_SND_DARLA20 is not set
1066# CONFIG_SND_GINA20 is not set
1067# CONFIG_SND_LAYLA20 is not set
1068# CONFIG_SND_DARLA24 is not set
1069# CONFIG_SND_GINA24 is not set
1070# CONFIG_SND_LAYLA24 is not set
1071# CONFIG_SND_MONA is not set
1072# CONFIG_SND_MIA is not set
1073# CONFIG_SND_ECHO3G is not set
1074# CONFIG_SND_INDIGO is not set
1075# CONFIG_SND_INDIGOIO is not set
1076# CONFIG_SND_INDIGODJ is not set
962# CONFIG_SND_EMU10K1 is not set 1077# CONFIG_SND_EMU10K1 is not set
963# CONFIG_SND_EMU10K1X is not set 1078# CONFIG_SND_EMU10K1X is not set
964# CONFIG_SND_ENS1370 is not set 1079# CONFIG_SND_ENS1370 is not set
@@ -966,7 +1081,7 @@ CONFIG_SND_AC97_BUS=y
966# CONFIG_SND_ES1938 is not set 1081# CONFIG_SND_ES1938 is not set
967# CONFIG_SND_ES1968 is not set 1082# CONFIG_SND_ES1968 is not set
968CONFIG_SND_FM801=y 1083CONFIG_SND_FM801=y
969CONFIG_SND_FM801_TEA575X=y 1084# CONFIG_SND_FM801_TEA575X_BOOL is not set
970# CONFIG_SND_HDA_INTEL is not set 1085# CONFIG_SND_HDA_INTEL is not set
971# CONFIG_SND_HDSP is not set 1086# CONFIG_SND_HDSP is not set
972# CONFIG_SND_HDSPM is not set 1087# CONFIG_SND_HDSPM is not set
@@ -979,6 +1094,7 @@ CONFIG_SND_FM801_TEA575X=y
979# CONFIG_SND_MIXART is not set 1094# CONFIG_SND_MIXART is not set
980# CONFIG_SND_NM256 is not set 1095# CONFIG_SND_NM256 is not set
981# CONFIG_SND_PCXHR is not set 1096# CONFIG_SND_PCXHR is not set
1097# CONFIG_SND_RIPTIDE is not set
982# CONFIG_SND_RME32 is not set 1098# CONFIG_SND_RME32 is not set
983# CONFIG_SND_RME96 is not set 1099# CONFIG_SND_RME96 is not set
984# CONFIG_SND_RME9652 is not set 1100# CONFIG_SND_RME9652 is not set
@@ -988,6 +1104,7 @@ CONFIG_SND_FM801_TEA575X=y
988# CONFIG_SND_VIA82XX_MODEM is not set 1104# CONFIG_SND_VIA82XX_MODEM is not set
989# CONFIG_SND_VX222 is not set 1105# CONFIG_SND_VX222 is not set
990# CONFIG_SND_YMFPCI is not set 1106# CONFIG_SND_YMFPCI is not set
1107# CONFIG_SND_AC97_POWER_SAVE is not set
991 1108
992# 1109#
993# USB devices 1110# USB devices
@@ -995,15 +1112,28 @@ CONFIG_SND_FM801_TEA575X=y
995# CONFIG_SND_USB_AUDIO is not set 1112# CONFIG_SND_USB_AUDIO is not set
996 1113
997# 1114#
1115# SoC audio support
1116#
1117# CONFIG_SND_SOC is not set
1118
1119#
998# Open Sound System 1120# Open Sound System
999# 1121#
1000# CONFIG_SOUND_PRIME is not set 1122# CONFIG_SOUND_PRIME is not set
1123CONFIG_AC97_BUS=y
1124
1125#
1126# HID Devices
1127#
1128CONFIG_HID=y
1129# CONFIG_HID_DEBUG is not set
1001 1130
1002# 1131#
1003# USB support 1132# USB support
1004# 1133#
1005CONFIG_USB_ARCH_HAS_HCD=y 1134CONFIG_USB_ARCH_HAS_HCD=y
1006CONFIG_USB_ARCH_HAS_OHCI=y 1135CONFIG_USB_ARCH_HAS_OHCI=y
1136CONFIG_USB_ARCH_HAS_EHCI=y
1007CONFIG_USB=y 1137CONFIG_USB=y
1008# CONFIG_USB_DEBUG is not set 1138# CONFIG_USB_DEBUG is not set
1009 1139
@@ -1011,7 +1141,6 @@ CONFIG_USB=y
1011# Miscellaneous USB options 1141# Miscellaneous USB options
1012# 1142#
1013# CONFIG_USB_DEVICEFS is not set 1143# CONFIG_USB_DEVICEFS is not set
1014CONFIG_USB_BANDWIDTH=y
1015# CONFIG_USB_DYNAMIC_MINORS is not set 1144# CONFIG_USB_DYNAMIC_MINORS is not set
1016# CONFIG_USB_SUSPEND is not set 1145# CONFIG_USB_SUSPEND is not set
1017# CONFIG_USB_OTG is not set 1146# CONFIG_USB_OTG is not set
@@ -1022,9 +1151,12 @@ CONFIG_USB_BANDWIDTH=y
1022CONFIG_USB_EHCI_HCD=y 1151CONFIG_USB_EHCI_HCD=y
1023# CONFIG_USB_EHCI_SPLIT_ISO is not set 1152# CONFIG_USB_EHCI_SPLIT_ISO is not set
1024# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1153# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1154# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1155# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
1025# CONFIG_USB_ISP116X_HCD is not set 1156# CONFIG_USB_ISP116X_HCD is not set
1026CONFIG_USB_OHCI_HCD=y 1157CONFIG_USB_OHCI_HCD=y
1027# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1158# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1159# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1028CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1160CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1029CONFIG_USB_UHCI_HCD=y 1161CONFIG_USB_UHCI_HCD=y
1030# CONFIG_USB_SL811_HCD is not set 1162# CONFIG_USB_SL811_HCD is not set
@@ -1032,7 +1164,6 @@ CONFIG_USB_UHCI_HCD=y
1032# 1164#
1033# USB Device Class drivers 1165# USB Device Class drivers
1034# 1166#
1035# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
1036# CONFIG_USB_ACM is not set 1167# CONFIG_USB_ACM is not set
1037# CONFIG_USB_PRINTER is not set 1168# CONFIG_USB_PRINTER is not set
1038 1169
@@ -1054,13 +1185,13 @@ CONFIG_USB_STORAGE=y
1054# CONFIG_USB_STORAGE_SDDR55 is not set 1185# CONFIG_USB_STORAGE_SDDR55 is not set
1055# CONFIG_USB_STORAGE_JUMPSHOT is not set 1186# CONFIG_USB_STORAGE_JUMPSHOT is not set
1056# CONFIG_USB_STORAGE_ALAUDA is not set 1187# CONFIG_USB_STORAGE_ALAUDA is not set
1188# CONFIG_USB_STORAGE_KARMA is not set
1057# CONFIG_USB_LIBUSUAL is not set 1189# CONFIG_USB_LIBUSUAL is not set
1058 1190
1059# 1191#
1060# USB Input Devices 1192# USB Input Devices
1061# 1193#
1062CONFIG_USB_HID=y 1194CONFIG_USB_HID=y
1063CONFIG_USB_HIDINPUT=y
1064# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1195# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1065# CONFIG_HID_FF is not set 1196# CONFIG_HID_FF is not set
1066CONFIG_USB_HIDDEV=y 1197CONFIG_USB_HIDDEV=y
@@ -1069,15 +1200,14 @@ CONFIG_USB_HIDDEV=y
1069# CONFIG_USB_ACECAD is not set 1200# CONFIG_USB_ACECAD is not set
1070# CONFIG_USB_KBTAB is not set 1201# CONFIG_USB_KBTAB is not set
1071# CONFIG_USB_POWERMATE is not set 1202# CONFIG_USB_POWERMATE is not set
1072# CONFIG_USB_MTOUCH is not set 1203# CONFIG_USB_TOUCHSCREEN is not set
1073# CONFIG_USB_ITMTOUCH is not set
1074# CONFIG_USB_EGALAX is not set
1075# CONFIG_USB_YEALINK is not set 1204# CONFIG_USB_YEALINK is not set
1076# CONFIG_USB_XPAD is not set 1205# CONFIG_USB_XPAD is not set
1077# CONFIG_USB_ATI_REMOTE is not set 1206# CONFIG_USB_ATI_REMOTE is not set
1078# CONFIG_USB_ATI_REMOTE2 is not set 1207# CONFIG_USB_ATI_REMOTE2 is not set
1079# CONFIG_USB_KEYSPAN_REMOTE is not set 1208# CONFIG_USB_KEYSPAN_REMOTE is not set
1080# CONFIG_USB_APPLETOUCH is not set 1209# CONFIG_USB_APPLETOUCH is not set
1210# CONFIG_USB_GTCO is not set
1081 1211
1082# 1212#
1083# USB Imaging devices 1213# USB Imaging devices
@@ -1086,27 +1216,13 @@ CONFIG_USB_HIDDEV=y
1086# CONFIG_USB_MICROTEK is not set 1216# CONFIG_USB_MICROTEK is not set
1087 1217
1088# 1218#
1089# USB Multimedia devices
1090#
1091# CONFIG_USB_DABUSB is not set
1092# CONFIG_USB_VICAM is not set
1093# CONFIG_USB_DSBR is not set
1094# CONFIG_USB_ET61X251 is not set
1095# CONFIG_USB_IBMCAM is not set
1096# CONFIG_USB_KONICAWC is not set
1097# CONFIG_USB_OV511 is not set
1098# CONFIG_USB_SE401 is not set
1099# CONFIG_USB_SN9C102 is not set
1100# CONFIG_USB_STV680 is not set
1101# CONFIG_USB_PWC is not set
1102
1103#
1104# USB Network Adapters 1219# USB Network Adapters
1105# 1220#
1106# CONFIG_USB_CATC is not set 1221# CONFIG_USB_CATC is not set
1107# CONFIG_USB_KAWETH is not set 1222# CONFIG_USB_KAWETH is not set
1108# CONFIG_USB_PEGASUS is not set 1223# CONFIG_USB_PEGASUS is not set
1109# CONFIG_USB_RTL8150 is not set 1224# CONFIG_USB_RTL8150 is not set
1225# CONFIG_USB_USBNET_MII is not set
1110# CONFIG_USB_USBNET is not set 1226# CONFIG_USB_USBNET is not set
1111CONFIG_USB_MON=y 1227CONFIG_USB_MON=y
1112 1228
@@ -1124,17 +1240,23 @@ CONFIG_USB_MON=y
1124# 1240#
1125# CONFIG_USB_EMI62 is not set 1241# CONFIG_USB_EMI62 is not set
1126# CONFIG_USB_EMI26 is not set 1242# CONFIG_USB_EMI26 is not set
1243# CONFIG_USB_ADUTUX is not set
1127# CONFIG_USB_AUERSWALD is not set 1244# CONFIG_USB_AUERSWALD is not set
1128# CONFIG_USB_RIO500 is not set 1245# CONFIG_USB_RIO500 is not set
1129# CONFIG_USB_LEGOTOWER is not set 1246# CONFIG_USB_LEGOTOWER is not set
1130# CONFIG_USB_LCD is not set 1247# CONFIG_USB_LCD is not set
1248# CONFIG_USB_BERRY_CHARGE is not set
1131# CONFIG_USB_LED is not set 1249# CONFIG_USB_LED is not set
1250# CONFIG_USB_CYPRESS_CY7C63 is not set
1132# CONFIG_USB_CYTHERM is not set 1251# CONFIG_USB_CYTHERM is not set
1133# CONFIG_USB_PHIDGETKIT is not set 1252# CONFIG_USB_PHIDGET is not set
1134# CONFIG_USB_PHIDGETSERVO is not set
1135# CONFIG_USB_IDMOUSE is not set 1253# CONFIG_USB_IDMOUSE is not set
1254# CONFIG_USB_FTDI_ELAN is not set
1255# CONFIG_USB_APPLEDISPLAY is not set
1136# CONFIG_USB_SISUSBVGA is not set 1256# CONFIG_USB_SISUSBVGA is not set
1137# CONFIG_USB_LD is not set 1257# CONFIG_USB_LD is not set
1258# CONFIG_USB_TRANCEVIBRATOR is not set
1259# CONFIG_USB_IOWARRIOR is not set
1138 1260
1139# 1261#
1140# USB DSL modem support 1262# USB DSL modem support
@@ -1151,13 +1273,53 @@ CONFIG_USB_MON=y
1151# CONFIG_MMC is not set 1273# CONFIG_MMC is not set
1152 1274
1153# 1275#
1276# LED devices
1277#
1278# CONFIG_NEW_LEDS is not set
1279
1280#
1281# LED drivers
1282#
1283
1284#
1285# LED Triggers
1286#
1287
1288#
1154# InfiniBand support 1289# InfiniBand support
1155# 1290#
1156# CONFIG_INFINIBAND is not set 1291# CONFIG_INFINIBAND is not set
1157 1292
1158# 1293#
1159# EDAC - error detection and reporting (RAS) 1294# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1295#
1296
1297#
1298# Real Time Clock
1160# 1299#
1300# CONFIG_RTC_CLASS is not set
1301
1302#
1303# DMA Engine support
1304#
1305# CONFIG_DMA_ENGINE is not set
1306
1307#
1308# DMA Clients
1309#
1310
1311#
1312# DMA Devices
1313#
1314
1315#
1316# Auxiliary Display support
1317#
1318
1319#
1320# Virtualization
1321#
1322# CONFIG_MSPEC is not set
1161 1323
1162# 1324#
1163# File systems 1325# File systems
@@ -1171,6 +1333,7 @@ CONFIG_EXT3_FS=y
1171CONFIG_EXT3_FS_XATTR=y 1333CONFIG_EXT3_FS_XATTR=y
1172# CONFIG_EXT3_FS_POSIX_ACL is not set 1334# CONFIG_EXT3_FS_POSIX_ACL is not set
1173# CONFIG_EXT3_FS_SECURITY is not set 1335# CONFIG_EXT3_FS_SECURITY is not set
1336# CONFIG_EXT4DEV_FS is not set
1174CONFIG_JBD=y 1337CONFIG_JBD=y
1175# CONFIG_JBD_DEBUG is not set 1338# CONFIG_JBD_DEBUG is not set
1176CONFIG_FS_MBCACHE=y 1339CONFIG_FS_MBCACHE=y
@@ -1178,6 +1341,7 @@ CONFIG_FS_MBCACHE=y
1178# CONFIG_JFS_FS is not set 1341# CONFIG_JFS_FS is not set
1179# CONFIG_FS_POSIX_ACL is not set 1342# CONFIG_FS_POSIX_ACL is not set
1180# CONFIG_XFS_FS is not set 1343# CONFIG_XFS_FS is not set
1344# CONFIG_GFS2_FS is not set
1181# CONFIG_OCFS2_FS is not set 1345# CONFIG_OCFS2_FS is not set
1182# CONFIG_MINIX_FS is not set 1346# CONFIG_MINIX_FS is not set
1183# CONFIG_ROMFS_FS is not set 1347# CONFIG_ROMFS_FS is not set
@@ -1212,12 +1376,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1212# 1376#
1213CONFIG_PROC_FS=y 1377CONFIG_PROC_FS=y
1214CONFIG_PROC_KCORE=y 1378CONFIG_PROC_KCORE=y
1379CONFIG_PROC_VMCORE=y
1380CONFIG_PROC_SYSCTL=y
1215CONFIG_SYSFS=y 1381CONFIG_SYSFS=y
1216CONFIG_TMPFS=y 1382CONFIG_TMPFS=y
1383# CONFIG_TMPFS_POSIX_ACL is not set
1217CONFIG_HUGETLBFS=y 1384CONFIG_HUGETLBFS=y
1218CONFIG_HUGETLB_PAGE=y 1385CONFIG_HUGETLB_PAGE=y
1219CONFIG_RAMFS=y 1386CONFIG_RAMFS=y
1220# CONFIG_RELAYFS_FS is not set
1221# CONFIG_CONFIGFS_FS is not set 1387# CONFIG_CONFIGFS_FS is not set
1222 1388
1223# 1389#
@@ -1331,15 +1497,25 @@ CONFIG_NLS_KOI8_U=y
1331CONFIG_NLS_UTF8=y 1497CONFIG_NLS_UTF8=y
1332 1498
1333# 1499#
1500# Distributed Lock Manager
1501#
1502# CONFIG_DLM is not set
1503
1504#
1334# Library routines 1505# Library routines
1335# 1506#
1507CONFIG_BITREVERSE=y
1336# CONFIG_CRC_CCITT is not set 1508# CONFIG_CRC_CCITT is not set
1337# CONFIG_CRC16 is not set 1509# CONFIG_CRC16 is not set
1338CONFIG_CRC32=y 1510CONFIG_CRC32=y
1339# CONFIG_LIBCRC32C is not set 1511# CONFIG_LIBCRC32C is not set
1512CONFIG_PLIST=y
1513CONFIG_HAS_IOMEM=y
1514CONFIG_HAS_IOPORT=y
1340CONFIG_GENERIC_HARDIRQS=y 1515CONFIG_GENERIC_HARDIRQS=y
1341CONFIG_GENERIC_IRQ_PROBE=y 1516CONFIG_GENERIC_IRQ_PROBE=y
1342CONFIG_GENERIC_PENDING_IRQ=y 1517CONFIG_GENERIC_PENDING_IRQ=y
1518CONFIG_IRQ_PER_CPU=y
1343 1519
1344# 1520#
1345# Instrumentation Support 1521# Instrumentation Support
@@ -1351,21 +1527,32 @@ CONFIG_KPROBES=y
1351# Kernel hacking 1527# Kernel hacking
1352# 1528#
1353# CONFIG_PRINTK_TIME is not set 1529# CONFIG_PRINTK_TIME is not set
1530CONFIG_ENABLE_MUST_CHECK=y
1354CONFIG_MAGIC_SYSRQ=y 1531CONFIG_MAGIC_SYSRQ=y
1532# CONFIG_UNUSED_SYMBOLS is not set
1533# CONFIG_DEBUG_FS is not set
1534# CONFIG_HEADERS_CHECK is not set
1355CONFIG_DEBUG_KERNEL=y 1535CONFIG_DEBUG_KERNEL=y
1536# CONFIG_DEBUG_SHIRQ is not set
1356CONFIG_LOG_BUF_SHIFT=17 1537CONFIG_LOG_BUF_SHIFT=17
1357CONFIG_DETECT_SOFTLOCKUP=y 1538CONFIG_DETECT_SOFTLOCKUP=y
1358# CONFIG_SCHEDSTATS is not set 1539# CONFIG_SCHEDSTATS is not set
1540# CONFIG_TIMER_STATS is not set
1359# CONFIG_DEBUG_SLAB is not set 1541# CONFIG_DEBUG_SLAB is not set
1360CONFIG_DEBUG_MUTEXES=y 1542# CONFIG_DEBUG_RT_MUTEXES is not set
1543# CONFIG_RT_MUTEX_TESTER is not set
1361# CONFIG_DEBUG_SPINLOCK is not set 1544# CONFIG_DEBUG_SPINLOCK is not set
1545CONFIG_DEBUG_MUTEXES=y
1362# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1546# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1547# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1363# CONFIG_DEBUG_KOBJECT is not set 1548# CONFIG_DEBUG_KOBJECT is not set
1364# CONFIG_DEBUG_INFO is not set 1549# CONFIG_DEBUG_INFO is not set
1365# CONFIG_DEBUG_FS is not set
1366# CONFIG_DEBUG_VM is not set 1550# CONFIG_DEBUG_VM is not set
1551# CONFIG_DEBUG_LIST is not set
1367CONFIG_FORCED_INLINING=y 1552CONFIG_FORCED_INLINING=y
1368# CONFIG_RCU_TORTURE_TEST is not set 1553# CONFIG_RCU_TORTURE_TEST is not set
1554# CONFIG_LKDTM is not set
1555# CONFIG_FAULT_INJECTION is not set
1369CONFIG_IA64_GRANULE_16MB=y 1556CONFIG_IA64_GRANULE_16MB=y
1370# CONFIG_IA64_GRANULE_64MB is not set 1557# CONFIG_IA64_GRANULE_64MB is not set
1371CONFIG_IA64_PRINT_HAZARDS=y 1558CONFIG_IA64_PRINT_HAZARDS=y
@@ -1384,7 +1571,11 @@ CONFIG_SYSVIPC_COMPAT=y
1384# Cryptographic options 1571# Cryptographic options
1385# 1572#
1386CONFIG_CRYPTO=y 1573CONFIG_CRYPTO=y
1574CONFIG_CRYPTO_ALGAPI=y
1575CONFIG_CRYPTO_BLKCIPHER=y
1576CONFIG_CRYPTO_MANAGER=y
1387# CONFIG_CRYPTO_HMAC is not set 1577# CONFIG_CRYPTO_HMAC is not set
1578# CONFIG_CRYPTO_XCBC is not set
1388# CONFIG_CRYPTO_NULL is not set 1579# CONFIG_CRYPTO_NULL is not set
1389# CONFIG_CRYPTO_MD4 is not set 1580# CONFIG_CRYPTO_MD4 is not set
1390CONFIG_CRYPTO_MD5=y 1581CONFIG_CRYPTO_MD5=y
@@ -1393,7 +1584,13 @@ CONFIG_CRYPTO_MD5=y
1393# CONFIG_CRYPTO_SHA512 is not set 1584# CONFIG_CRYPTO_SHA512 is not set
1394# CONFIG_CRYPTO_WP512 is not set 1585# CONFIG_CRYPTO_WP512 is not set
1395# CONFIG_CRYPTO_TGR192 is not set 1586# CONFIG_CRYPTO_TGR192 is not set
1587# CONFIG_CRYPTO_GF128MUL is not set
1588CONFIG_CRYPTO_ECB=m
1589CONFIG_CRYPTO_CBC=y
1590CONFIG_CRYPTO_PCBC=m
1591# CONFIG_CRYPTO_LRW is not set
1396CONFIG_CRYPTO_DES=y 1592CONFIG_CRYPTO_DES=y
1593# CONFIG_CRYPTO_FCRYPT is not set
1397# CONFIG_CRYPTO_BLOWFISH is not set 1594# CONFIG_CRYPTO_BLOWFISH is not set
1398# CONFIG_CRYPTO_TWOFISH is not set 1595# CONFIG_CRYPTO_TWOFISH is not set
1399# CONFIG_CRYPTO_SERPENT is not set 1596# CONFIG_CRYPTO_SERPENT is not set
@@ -1407,6 +1604,7 @@ CONFIG_CRYPTO_DES=y
1407# CONFIG_CRYPTO_DEFLATE is not set 1604# CONFIG_CRYPTO_DEFLATE is not set
1408# CONFIG_CRYPTO_MICHAEL_MIC is not set 1605# CONFIG_CRYPTO_MICHAEL_MIC is not set
1409# CONFIG_CRYPTO_CRC32C is not set 1606# CONFIG_CRYPTO_CRC32C is not set
1607# CONFIG_CRYPTO_CAMELLIA is not set
1410# CONFIG_CRYPTO_TEST is not set 1608# CONFIG_CRYPTO_TEST is not set
1411 1609
1412# 1610#
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig
index 9001b3fbaa32..153bfdc0182d 100644
--- a/arch/ia64/defconfig
+++ b/arch/ia64/defconfig
@@ -1,8 +1,9 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc5 3# Linux kernel version: 2.6.21-rc3
4# Mon Feb 27 16:02:28 2006 4# Thu Mar 8 11:01:03 2007
5# 5#
6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
6 7
7# 8#
8# Code maturity level options 9# Code maturity level options
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION=""
18CONFIG_LOCALVERSION_AUTO=y 19CONFIG_LOCALVERSION_AUTO=y
19CONFIG_SWAP=y 20CONFIG_SWAP=y
20CONFIG_SYSVIPC=y 21CONFIG_SYSVIPC=y
22# CONFIG_IPC_NS is not set
23CONFIG_SYSVIPC_SYSCTL=y
21CONFIG_POSIX_MQUEUE=y 24CONFIG_POSIX_MQUEUE=y
22# CONFIG_BSD_PROCESS_ACCT is not set 25# CONFIG_BSD_PROCESS_ACCT is not set
23CONFIG_SYSCTL=y 26# CONFIG_TASKSTATS is not set
27# CONFIG_UTS_NS is not set
24# CONFIG_AUDIT is not set 28# CONFIG_AUDIT is not set
25CONFIG_IKCONFIG=y 29CONFIG_IKCONFIG=y
26CONFIG_IKCONFIG_PROC=y 30CONFIG_IKCONFIG_PROC=y
27# CONFIG_CPUSETS is not set 31# CONFIG_CPUSETS is not set
32CONFIG_SYSFS_DEPRECATED=y
33# CONFIG_RELAY is not set
34CONFIG_BLK_DEV_INITRD=y
28CONFIG_INITRAMFS_SOURCE="" 35CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y 36CONFIG_CC_OPTIMIZE_FOR_SIZE=y
37CONFIG_SYSCTL=y
30# CONFIG_EMBEDDED is not set 38# CONFIG_EMBEDDED is not set
39CONFIG_SYSCTL_SYSCALL=y
31CONFIG_KALLSYMS=y 40CONFIG_KALLSYMS=y
32CONFIG_KALLSYMS_ALL=y 41CONFIG_KALLSYMS_ALL=y
33# CONFIG_KALLSYMS_EXTRA_PASS is not set 42# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 48CONFIG_FUTEX=y
40CONFIG_EPOLL=y 49CONFIG_EPOLL=y
41CONFIG_SHMEM=y 50CONFIG_SHMEM=y
42CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y 51CONFIG_SLAB=y
52CONFIG_VM_EVENT_COUNTERS=y
53CONFIG_RT_MUTEXES=y
47# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set 56# CONFIG_SLOB is not set
@@ -54,7 +61,6 @@ CONFIG_BASE_SMALL=0
54CONFIG_MODULES=y 61CONFIG_MODULES=y
55CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
56# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
57CONFIG_OBSOLETE_MODPARM=y
58CONFIG_MODVERSIONS=y 64CONFIG_MODVERSIONS=y
59# CONFIG_MODULE_SRCVERSION_ALL is not set 65# CONFIG_MODULE_SRCVERSION_ALL is not set
60CONFIG_KMOD=y 66CONFIG_KMOD=y
@@ -63,6 +69,8 @@ CONFIG_STOP_MACHINE=y
63# 69#
64# Block layer 70# Block layer
65# 71#
72CONFIG_BLOCK=y
73# CONFIG_BLK_DEV_IO_TRACE is not set
66 74
67# 75#
68# IO Schedulers 76# IO Schedulers
@@ -82,15 +90,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
82# 90#
83CONFIG_IA64=y 91CONFIG_IA64=y
84CONFIG_64BIT=y 92CONFIG_64BIT=y
93CONFIG_ZONE_DMA=y
85CONFIG_MMU=y 94CONFIG_MMU=y
86CONFIG_SWIOTLB=y 95CONFIG_SWIOTLB=y
87CONFIG_RWSEM_XCHGADD_ALGORITHM=y 96CONFIG_RWSEM_XCHGADD_ALGORITHM=y
97# CONFIG_ARCH_HAS_ILOG2_U32 is not set
98# CONFIG_ARCH_HAS_ILOG2_U64 is not set
99CONFIG_GENERIC_FIND_NEXT_BIT=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 100CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_TIME_INTERPOLATION=y 101CONFIG_TIME_INTERPOLATION=y
102CONFIG_DMI=y
90CONFIG_EFI=y 103CONFIG_EFI=y
91CONFIG_GENERIC_IOMAP=y 104CONFIG_GENERIC_IOMAP=y
92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 105CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
93CONFIG_DMA_IS_DMA32=y 106CONFIG_AUDIT_ARCH=y
94CONFIG_IA64_GENERIC=y 107CONFIG_IA64_GENERIC=y
95# CONFIG_IA64_DIG is not set 108# CONFIG_IA64_DIG is not set
96# CONFIG_IA64_HP_ZX1 is not set 109# CONFIG_IA64_HP_ZX1 is not set
@@ -107,6 +120,7 @@ CONFIG_PGTABLE_3=y
107# CONFIG_PGTABLE_4 is not set 120# CONFIG_PGTABLE_4 is not set
108# CONFIG_HZ_100 is not set 121# CONFIG_HZ_100 is not set
109CONFIG_HZ_250=y 122CONFIG_HZ_250=y
123# CONFIG_HZ_300 is not set
110# CONFIG_HZ_1000 is not set 124# CONFIG_HZ_1000 is not set
111CONFIG_HZ=250 125CONFIG_HZ=250
112CONFIG_IA64_L1_CACHE_SHIFT=7 126CONFIG_IA64_L1_CACHE_SHIFT=7
@@ -116,9 +130,10 @@ CONFIG_IOSAPIC=y
116CONFIG_FORCE_MAX_ZONEORDER=17 130CONFIG_FORCE_MAX_ZONEORDER=17
117CONFIG_SMP=y 131CONFIG_SMP=y
118CONFIG_NR_CPUS=512 132CONFIG_NR_CPUS=512
119CONFIG_IA64_NR_NODES=256
120CONFIG_HOTPLUG_CPU=y 133CONFIG_HOTPLUG_CPU=y
134CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
121# CONFIG_SCHED_SMT is not set 135# CONFIG_SCHED_SMT is not set
136# CONFIG_PERMIT_BSP_REMOVE is not set
122# CONFIG_PREEMPT is not set 137# CONFIG_PREEMPT is not set
123CONFIG_SELECT_MEMORY_MODEL=y 138CONFIG_SELECT_MEMORY_MODEL=y
124# CONFIG_FLATMEM_MANUAL is not set 139# CONFIG_FLATMEM_MANUAL is not set
@@ -130,21 +145,34 @@ CONFIG_NEED_MULTIPLE_NODES=y
130# CONFIG_SPARSEMEM_STATIC is not set 145# CONFIG_SPARSEMEM_STATIC is not set
131CONFIG_SPLIT_PTLOCK_CPUS=4 146CONFIG_SPLIT_PTLOCK_CPUS=4
132CONFIG_MIGRATION=y 147CONFIG_MIGRATION=y
148CONFIG_RESOURCES_64BIT=y
149CONFIG_ZONE_DMA_FLAG=1
133CONFIG_ARCH_SELECT_MEMORY_MODEL=y 150CONFIG_ARCH_SELECT_MEMORY_MODEL=y
134CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 151CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
135CONFIG_ARCH_FLATMEM_ENABLE=y 152CONFIG_ARCH_FLATMEM_ENABLE=y
136CONFIG_ARCH_SPARSEMEM_ENABLE=y 153CONFIG_ARCH_SPARSEMEM_ENABLE=y
137CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y 154CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
138CONFIG_NUMA=y 155CONFIG_NUMA=y
156CONFIG_NODES_SHIFT=10
157CONFIG_ARCH_POPULATES_NODE_MAP=y
139CONFIG_VIRTUAL_MEM_MAP=y 158CONFIG_VIRTUAL_MEM_MAP=y
140CONFIG_HOLES_IN_ZONE=y 159CONFIG_HOLES_IN_ZONE=y
141CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y 160CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
161CONFIG_HAVE_ARCH_NODEDATA_EXTENSION=y
142CONFIG_IA32_SUPPORT=y 162CONFIG_IA32_SUPPORT=y
143CONFIG_COMPAT=y 163CONFIG_COMPAT=y
144CONFIG_IA64_MCA_RECOVERY=y 164CONFIG_IA64_MCA_RECOVERY=y
145CONFIG_PERFMON=y 165CONFIG_PERFMON=y
146CONFIG_IA64_PALINFO=y 166CONFIG_IA64_PALINFO=y
147CONFIG_SGI_SN=y 167CONFIG_SGI_SN=y
168# CONFIG_IA64_ESI is not set
169
170#
171# SN Devices
172#
173CONFIG_SGI_IOC3=m
174CONFIG_KEXEC=y
175CONFIG_CRASH_DUMP=y
148 176
149# 177#
150# Firmware Drivers 178# Firmware Drivers
@@ -160,13 +188,16 @@ CONFIG_BINFMT_MISC=m
160CONFIG_PM=y 188CONFIG_PM=y
161CONFIG_PM_LEGACY=y 189CONFIG_PM_LEGACY=y
162# CONFIG_PM_DEBUG is not set 190# CONFIG_PM_DEBUG is not set
191# CONFIG_PM_SYSFS_DEPRECATED is not set
163 192
164# 193#
165# ACPI (Advanced Configuration and Power Interface) Support 194# ACPI (Advanced Configuration and Power Interface) Support
166# 195#
167CONFIG_ACPI=y 196CONFIG_ACPI=y
197CONFIG_ACPI_PROCFS=y
168CONFIG_ACPI_BUTTON=m 198CONFIG_ACPI_BUTTON=m
169CONFIG_ACPI_FAN=m 199CONFIG_ACPI_FAN=m
200# CONFIG_ACPI_DOCK is not set
170CONFIG_ACPI_PROCESSOR=m 201CONFIG_ACPI_PROCESSOR=m
171CONFIG_ACPI_HOTPLUG_CPU=y 202CONFIG_ACPI_HOTPLUG_CPU=y
172CONFIG_ACPI_THERMAL=m 203CONFIG_ACPI_THERMAL=m
@@ -188,8 +219,8 @@ CONFIG_ACPI_CONTAINER=m
188# 219#
189CONFIG_PCI=y 220CONFIG_PCI=y
190CONFIG_PCI_DOMAINS=y 221CONFIG_PCI_DOMAINS=y
222# CONFIG_PCIEPORTBUS is not set
191# CONFIG_PCI_MSI is not set 223# CONFIG_PCI_MSI is not set
192CONFIG_PCI_LEGACY_PROC=y
193# CONFIG_PCI_DEBUG is not set 224# CONFIG_PCI_DEBUG is not set
194 225
195# 226#
@@ -220,6 +251,10 @@ CONFIG_NET=y
220CONFIG_PACKET=y 251CONFIG_PACKET=y
221# CONFIG_PACKET_MMAP is not set 252# CONFIG_PACKET_MMAP is not set
222CONFIG_UNIX=y 253CONFIG_UNIX=y
254CONFIG_XFRM=y
255# CONFIG_XFRM_USER is not set
256# CONFIG_XFRM_SUB_POLICY is not set
257# CONFIG_XFRM_MIGRATE is not set
223# CONFIG_NET_KEY is not set 258# CONFIG_NET_KEY is not set
224CONFIG_INET=y 259CONFIG_INET=y
225CONFIG_IP_MULTICAST=y 260CONFIG_IP_MULTICAST=y
@@ -234,12 +269,21 @@ CONFIG_SYN_COOKIES=y
234# CONFIG_INET_AH is not set 269# CONFIG_INET_AH is not set
235# CONFIG_INET_ESP is not set 270# CONFIG_INET_ESP is not set
236# CONFIG_INET_IPCOMP is not set 271# CONFIG_INET_IPCOMP is not set
272# CONFIG_INET_XFRM_TUNNEL is not set
237# CONFIG_INET_TUNNEL is not set 273# CONFIG_INET_TUNNEL is not set
274CONFIG_INET_XFRM_MODE_TRANSPORT=y
275CONFIG_INET_XFRM_MODE_TUNNEL=y
276CONFIG_INET_XFRM_MODE_BEET=y
238CONFIG_INET_DIAG=y 277CONFIG_INET_DIAG=y
239CONFIG_INET_TCP_DIAG=y 278CONFIG_INET_TCP_DIAG=y
240# CONFIG_TCP_CONG_ADVANCED is not set 279# CONFIG_TCP_CONG_ADVANCED is not set
241CONFIG_TCP_CONG_BIC=y 280CONFIG_TCP_CONG_CUBIC=y
281CONFIG_DEFAULT_TCP_CONG="cubic"
282# CONFIG_TCP_MD5SIG is not set
242# CONFIG_IPV6 is not set 283# CONFIG_IPV6 is not set
284# CONFIG_INET6_XFRM_TUNNEL is not set
285# CONFIG_INET6_TUNNEL is not set
286# CONFIG_NETWORK_SECMARK is not set
243# CONFIG_NETFILTER is not set 287# CONFIG_NETFILTER is not set
244 288
245# 289#
@@ -265,7 +309,6 @@ CONFIG_TCP_CONG_BIC=y
265# CONFIG_ATALK is not set 309# CONFIG_ATALK is not set
266# CONFIG_X25 is not set 310# CONFIG_X25 is not set
267# CONFIG_LAPB is not set 311# CONFIG_LAPB is not set
268# CONFIG_NET_DIVERT is not set
269# CONFIG_ECONET is not set 312# CONFIG_ECONET is not set
270# CONFIG_WAN_ROUTER is not set 313# CONFIG_WAN_ROUTER is not set
271 314
@@ -294,6 +337,8 @@ CONFIG_STANDALONE=y
294CONFIG_PREVENT_FIRMWARE_BUILD=y 337CONFIG_PREVENT_FIRMWARE_BUILD=y
295CONFIG_FW_LOADER=m 338CONFIG_FW_LOADER=m
296# CONFIG_DEBUG_DRIVER is not set 339# CONFIG_DEBUG_DRIVER is not set
340# CONFIG_DEBUG_DEVRES is not set
341# CONFIG_SYS_HYPERVISOR is not set
297 342
298# 343#
299# Connector - unified userspace <-> kernelspace linker 344# Connector - unified userspace <-> kernelspace linker
@@ -337,11 +382,17 @@ CONFIG_BLK_DEV_NBD=m
337CONFIG_BLK_DEV_RAM=y 382CONFIG_BLK_DEV_RAM=y
338CONFIG_BLK_DEV_RAM_COUNT=16 383CONFIG_BLK_DEV_RAM_COUNT=16
339CONFIG_BLK_DEV_RAM_SIZE=4096 384CONFIG_BLK_DEV_RAM_SIZE=4096
340CONFIG_BLK_DEV_INITRD=y 385CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
341# CONFIG_CDROM_PKTCDVD is not set 386# CONFIG_CDROM_PKTCDVD is not set
342# CONFIG_ATA_OVER_ETH is not set 387# CONFIG_ATA_OVER_ETH is not set
343 388
344# 389#
390# Misc devices
391#
392CONFIG_SGI_IOC4=y
393# CONFIG_TIFM_CORE is not set
394
395#
345# ATA/ATAPI/MFM/RLL support 396# ATA/ATAPI/MFM/RLL support
346# 397#
347CONFIG_IDE=y 398CONFIG_IDE=y
@@ -358,6 +409,7 @@ CONFIG_BLK_DEV_IDECD=y
358# CONFIG_BLK_DEV_IDETAPE is not set 409# CONFIG_BLK_DEV_IDETAPE is not set
359CONFIG_BLK_DEV_IDEFLOPPY=y 410CONFIG_BLK_DEV_IDEFLOPPY=y
360CONFIG_BLK_DEV_IDESCSI=m 411CONFIG_BLK_DEV_IDESCSI=m
412# CONFIG_BLK_DEV_IDEACPI is not set
361# CONFIG_IDE_TASK_IOCTL is not set 413# CONFIG_IDE_TASK_IOCTL is not set
362 414
363# 415#
@@ -384,8 +436,10 @@ CONFIG_BLK_DEV_CMD64X=y
384# CONFIG_BLK_DEV_CS5530 is not set 436# CONFIG_BLK_DEV_CS5530 is not set
385# CONFIG_BLK_DEV_HPT34X is not set 437# CONFIG_BLK_DEV_HPT34X is not set
386# CONFIG_BLK_DEV_HPT366 is not set 438# CONFIG_BLK_DEV_HPT366 is not set
439# CONFIG_BLK_DEV_JMICRON is not set
387# CONFIG_BLK_DEV_SC1200 is not set 440# CONFIG_BLK_DEV_SC1200 is not set
388CONFIG_BLK_DEV_PIIX=y 441CONFIG_BLK_DEV_PIIX=y
442# CONFIG_BLK_DEV_IT8213 is not set
389# CONFIG_BLK_DEV_IT821X is not set 443# CONFIG_BLK_DEV_IT821X is not set
390# CONFIG_BLK_DEV_NS87415 is not set 444# CONFIG_BLK_DEV_NS87415 is not set
391# CONFIG_BLK_DEV_PDC202XX_OLD is not set 445# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -396,6 +450,7 @@ CONFIG_BLK_DEV_SGIIOC4=y
396# CONFIG_BLK_DEV_SLC90E66 is not set 450# CONFIG_BLK_DEV_SLC90E66 is not set
397# CONFIG_BLK_DEV_TRM290 is not set 451# CONFIG_BLK_DEV_TRM290 is not set
398# CONFIG_BLK_DEV_VIA82CXXX is not set 452# CONFIG_BLK_DEV_VIA82CXXX is not set
453# CONFIG_BLK_DEV_TC86C001 is not set
399# CONFIG_IDE_ARM is not set 454# CONFIG_IDE_ARM is not set
400CONFIG_BLK_DEV_IDEDMA=y 455CONFIG_BLK_DEV_IDEDMA=y
401# CONFIG_IDEDMA_IVB is not set 456# CONFIG_IDEDMA_IVB is not set
@@ -407,6 +462,8 @@ CONFIG_IDEDMA_AUTO=y
407# 462#
408# CONFIG_RAID_ATTRS is not set 463# CONFIG_RAID_ATTRS is not set
409CONFIG_SCSI=y 464CONFIG_SCSI=y
465# CONFIG_SCSI_TGT is not set
466CONFIG_SCSI_NETLINK=y
410CONFIG_SCSI_PROC_FS=y 467CONFIG_SCSI_PROC_FS=y
411 468
412# 469#
@@ -426,14 +483,16 @@ CONFIG_CHR_DEV_SG=m
426# CONFIG_SCSI_MULTI_LUN is not set 483# CONFIG_SCSI_MULTI_LUN is not set
427# CONFIG_SCSI_CONSTANTS is not set 484# CONFIG_SCSI_CONSTANTS is not set
428# CONFIG_SCSI_LOGGING is not set 485# CONFIG_SCSI_LOGGING is not set
486# CONFIG_SCSI_SCAN_ASYNC is not set
429 487
430# 488#
431# SCSI Transport Attributes 489# SCSI Transports
432# 490#
433CONFIG_SCSI_SPI_ATTRS=y 491CONFIG_SCSI_SPI_ATTRS=y
434CONFIG_SCSI_FC_ATTRS=y 492CONFIG_SCSI_FC_ATTRS=y
435# CONFIG_SCSI_ISCSI_ATTRS is not set 493# CONFIG_SCSI_ISCSI_ATTRS is not set
436# CONFIG_SCSI_SAS_ATTRS is not set 494# CONFIG_SCSI_SAS_ATTRS is not set
495# CONFIG_SCSI_SAS_LIBSAS is not set
437 496
438# 497#
439# SCSI low-level drivers 498# SCSI low-level drivers
@@ -446,43 +505,36 @@ CONFIG_SCSI_FC_ATTRS=y
446# CONFIG_SCSI_AIC7XXX is not set 505# CONFIG_SCSI_AIC7XXX is not set
447# CONFIG_SCSI_AIC7XXX_OLD is not set 506# CONFIG_SCSI_AIC7XXX_OLD is not set
448# CONFIG_SCSI_AIC79XX is not set 507# CONFIG_SCSI_AIC79XX is not set
508# CONFIG_SCSI_AIC94XX is not set
509# CONFIG_SCSI_ARCMSR is not set
449# CONFIG_MEGARAID_NEWGEN is not set 510# CONFIG_MEGARAID_NEWGEN is not set
450# CONFIG_MEGARAID_LEGACY is not set 511# CONFIG_MEGARAID_LEGACY is not set
451# CONFIG_MEGARAID_SAS is not set 512# CONFIG_MEGARAID_SAS is not set
452CONFIG_SCSI_SATA=y 513# CONFIG_SCSI_HPTIOP is not set
453# CONFIG_SCSI_SATA_AHCI is not set
454# CONFIG_SCSI_SATA_SVW is not set
455# CONFIG_SCSI_ATA_PIIX is not set
456# CONFIG_SCSI_SATA_MV is not set
457# CONFIG_SCSI_SATA_NV is not set
458# CONFIG_SCSI_PDC_ADMA is not set
459# CONFIG_SCSI_SATA_QSTOR is not set
460# CONFIG_SCSI_SATA_PROMISE is not set
461# CONFIG_SCSI_SATA_SX4 is not set
462# CONFIG_SCSI_SATA_SIL is not set
463# CONFIG_SCSI_SATA_SIL24 is not set
464# CONFIG_SCSI_SATA_SIS is not set
465# CONFIG_SCSI_SATA_ULI is not set
466# CONFIG_SCSI_SATA_VIA is not set
467CONFIG_SCSI_SATA_VITESSE=y
468# CONFIG_SCSI_DMX3191D is not set 514# CONFIG_SCSI_DMX3191D is not set
469# CONFIG_SCSI_FUTURE_DOMAIN is not set 515# CONFIG_SCSI_FUTURE_DOMAIN is not set
470# CONFIG_SCSI_IPS is not set 516# CONFIG_SCSI_IPS is not set
471# CONFIG_SCSI_INITIO is not set 517# CONFIG_SCSI_INITIO is not set
472# CONFIG_SCSI_INIA100 is not set 518# CONFIG_SCSI_INIA100 is not set
519# CONFIG_SCSI_STEX is not set
473CONFIG_SCSI_SYM53C8XX_2=y 520CONFIG_SCSI_SYM53C8XX_2=y
474CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 521CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
475CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 522CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
476CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 523CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
477# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 524CONFIG_SCSI_SYM53C8XX_MMIO=y
478# CONFIG_SCSI_IPR is not set
479# CONFIG_SCSI_QLOGIC_FC is not set
480CONFIG_SCSI_QLOGIC_1280=y 525CONFIG_SCSI_QLOGIC_1280=y
481# CONFIG_SCSI_QLA_FC is not set 526# CONFIG_SCSI_QLA_FC is not set
527# CONFIG_SCSI_QLA_ISCSI is not set
482# CONFIG_SCSI_LPFC is not set 528# CONFIG_SCSI_LPFC is not set
483# CONFIG_SCSI_DC395x is not set 529# CONFIG_SCSI_DC395x is not set
484# CONFIG_SCSI_DC390T is not set 530# CONFIG_SCSI_DC390T is not set
485# CONFIG_SCSI_DEBUG is not set 531# CONFIG_SCSI_DEBUG is not set
532# CONFIG_SCSI_SRP is not set
533
534#
535# Serial ATA (prod) and Parallel ATA (experimental) drivers
536#
537# CONFIG_ATA is not set
486 538
487# 539#
488# Multi-device support (RAID and LVM) 540# Multi-device support (RAID and LVM)
@@ -493,11 +545,11 @@ CONFIG_MD_LINEAR=m
493CONFIG_MD_RAID0=m 545CONFIG_MD_RAID0=m
494CONFIG_MD_RAID1=m 546CONFIG_MD_RAID1=m
495# CONFIG_MD_RAID10 is not set 547# CONFIG_MD_RAID10 is not set
496CONFIG_MD_RAID5=m 548# CONFIG_MD_RAID456 is not set
497CONFIG_MD_RAID6=m
498CONFIG_MD_MULTIPATH=m 549CONFIG_MD_MULTIPATH=m
499# CONFIG_MD_FAULTY is not set 550# CONFIG_MD_FAULTY is not set
500CONFIG_BLK_DEV_DM=m 551CONFIG_BLK_DEV_DM=m
552# CONFIG_DM_DEBUG is not set
501CONFIG_DM_CRYPT=m 553CONFIG_DM_CRYPT=m
502CONFIG_DM_SNAPSHOT=m 554CONFIG_DM_SNAPSHOT=m
503CONFIG_DM_MIRROR=m 555CONFIG_DM_MIRROR=m
@@ -587,6 +639,7 @@ CONFIG_E100=m
587# CONFIG_EPIC100 is not set 639# CONFIG_EPIC100 is not set
588# CONFIG_SUNDANCE is not set 640# CONFIG_SUNDANCE is not set
589# CONFIG_VIA_RHINE is not set 641# CONFIG_VIA_RHINE is not set
642# CONFIG_SC92031 is not set
590 643
591# 644#
592# Ethernet (1000 Mbit) 645# Ethernet (1000 Mbit)
@@ -607,13 +660,18 @@ CONFIG_E1000=y
607# CONFIG_VIA_VELOCITY is not set 660# CONFIG_VIA_VELOCITY is not set
608CONFIG_TIGON3=y 661CONFIG_TIGON3=y
609# CONFIG_BNX2 is not set 662# CONFIG_BNX2 is not set
663# CONFIG_QLA3XXX is not set
664# CONFIG_ATL1 is not set
610 665
611# 666#
612# Ethernet (10000 Mbit) 667# Ethernet (10000 Mbit)
613# 668#
614# CONFIG_CHELSIO_T1 is not set 669# CONFIG_CHELSIO_T1 is not set
670# CONFIG_CHELSIO_T3 is not set
615# CONFIG_IXGB is not set 671# CONFIG_IXGB is not set
616# CONFIG_S2IO is not set 672# CONFIG_S2IO is not set
673# CONFIG_MYRI10GE is not set
674# CONFIG_NETXEN_NIC is not set
617 675
618# 676#
619# Token Ring devices 677# Token Ring devices
@@ -655,6 +713,7 @@ CONFIG_NET_POLL_CONTROLLER=y
655# Input device support 713# Input device support
656# 714#
657CONFIG_INPUT=y 715CONFIG_INPUT=y
716# CONFIG_INPUT_FF_MEMLESS is not set
658 717
659# 718#
660# Userland interfaces 719# Userland interfaces
@@ -677,6 +736,7 @@ CONFIG_KEYBOARD_ATKBD=y
677# CONFIG_KEYBOARD_LKKBD is not set 736# CONFIG_KEYBOARD_LKKBD is not set
678# CONFIG_KEYBOARD_XTKBD is not set 737# CONFIG_KEYBOARD_XTKBD is not set
679# CONFIG_KEYBOARD_NEWTON is not set 738# CONFIG_KEYBOARD_NEWTON is not set
739# CONFIG_KEYBOARD_STOWAWAY is not set
680CONFIG_INPUT_MOUSE=y 740CONFIG_INPUT_MOUSE=y
681CONFIG_MOUSE_PS2=y 741CONFIG_MOUSE_PS2=y
682# CONFIG_MOUSE_SERIAL is not set 742# CONFIG_MOUSE_SERIAL is not set
@@ -706,6 +766,7 @@ CONFIG_GAMEPORT=m
706CONFIG_VT=y 766CONFIG_VT=y
707CONFIG_VT_CONSOLE=y 767CONFIG_VT_CONSOLE=y
708CONFIG_HW_CONSOLE=y 768CONFIG_HW_CONSOLE=y
769# CONFIG_VT_HW_CONSOLE_BINDING is not set
709CONFIG_SERIAL_NONSTANDARD=y 770CONFIG_SERIAL_NONSTANDARD=y
710# CONFIG_COMPUTONE is not set 771# CONFIG_COMPUTONE is not set
711# CONFIG_ROCKETPORT is not set 772# CONFIG_ROCKETPORT is not set
@@ -713,12 +774,14 @@ CONFIG_SERIAL_NONSTANDARD=y
713# CONFIG_DIGIEPCA is not set 774# CONFIG_DIGIEPCA is not set
714# CONFIG_MOXA_INTELLIO is not set 775# CONFIG_MOXA_INTELLIO is not set
715# CONFIG_MOXA_SMARTIO is not set 776# CONFIG_MOXA_SMARTIO is not set
777# CONFIG_MOXA_SMARTIO_NEW is not set
716# CONFIG_ISI is not set 778# CONFIG_ISI is not set
717# CONFIG_SYNCLINKMP is not set 779# CONFIG_SYNCLINKMP is not set
718# CONFIG_SYNCLINK_GT is not set 780# CONFIG_SYNCLINK_GT is not set
719# CONFIG_N_HDLC is not set 781# CONFIG_N_HDLC is not set
720# CONFIG_SPECIALIX is not set 782# CONFIG_SPECIALIX is not set
721# CONFIG_SX is not set 783# CONFIG_SX is not set
784# CONFIG_RIO is not set
722# CONFIG_STALDRV is not set 785# CONFIG_STALDRV is not set
723CONFIG_SGI_SNSC=y 786CONFIG_SGI_SNSC=y
724CONFIG_SGI_TIOCX=y 787CONFIG_SGI_TIOCX=y
@@ -729,7 +792,8 @@ CONFIG_SGI_MBCS=m
729# 792#
730CONFIG_SERIAL_8250=y 793CONFIG_SERIAL_8250=y
731CONFIG_SERIAL_8250_CONSOLE=y 794CONFIG_SERIAL_8250_CONSOLE=y
732CONFIG_SERIAL_8250_ACPI=y 795CONFIG_SERIAL_8250_PCI=y
796CONFIG_SERIAL_8250_PNP=y
733CONFIG_SERIAL_8250_NR_UARTS=6 797CONFIG_SERIAL_8250_NR_UARTS=6
734CONFIG_SERIAL_8250_RUNTIME_UARTS=4 798CONFIG_SERIAL_8250_RUNTIME_UARTS=4
735CONFIG_SERIAL_8250_EXTENDED=y 799CONFIG_SERIAL_8250_EXTENDED=y
@@ -764,10 +828,6 @@ CONFIG_EFI_RTC=y
764# CONFIG_DTLK is not set 828# CONFIG_DTLK is not set
765# CONFIG_R3964 is not set 829# CONFIG_R3964 is not set
766# CONFIG_APPLICOM is not set 830# CONFIG_APPLICOM is not set
767
768#
769# Ftape, the floppy tape device driver
770#
771CONFIG_AGP=m 831CONFIG_AGP=m
772CONFIG_AGP_I460=m 832CONFIG_AGP_I460=m
773CONFIG_AGP_HP_ZX1=m 833CONFIG_AGP_HP_ZX1=m
@@ -792,7 +852,6 @@ CONFIG_MMTIMER=y
792# TPM devices 852# TPM devices
793# 853#
794# CONFIG_TCG_TPM is not set 854# CONFIG_TCG_TPM is not set
795# CONFIG_TELCLOCK is not set
796 855
797# 856#
798# I2C support 857# I2C support
@@ -815,16 +874,16 @@ CONFIG_MMTIMER=y
815# 874#
816CONFIG_HWMON=y 875CONFIG_HWMON=y
817# CONFIG_HWMON_VID is not set 876# CONFIG_HWMON_VID is not set
877# CONFIG_SENSORS_ABITUGURU is not set
818# CONFIG_SENSORS_F71805F is not set 878# CONFIG_SENSORS_F71805F is not set
879# CONFIG_SENSORS_PC87427 is not set
880# CONFIG_SENSORS_VT1211 is not set
819# CONFIG_HWMON_DEBUG_CHIP is not set 881# CONFIG_HWMON_DEBUG_CHIP is not set
820 882
821# 883#
822# Misc devices 884# Multifunction device drivers
823#
824
825#
826# Multimedia Capabilities Port drivers
827# 885#
886# CONFIG_MFD_SM501 is not set
828 887
829# 888#
830# Multimedia devices 889# Multimedia devices
@@ -835,16 +894,19 @@ CONFIG_HWMON=y
835# Digital Video Broadcasting Devices 894# Digital Video Broadcasting Devices
836# 895#
837# CONFIG_DVB is not set 896# CONFIG_DVB is not set
897# CONFIG_USB_DABUSB is not set
838 898
839# 899#
840# Graphics support 900# Graphics support
841# 901#
902# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
842# CONFIG_FB is not set 903# CONFIG_FB is not set
843 904
844# 905#
845# Console display driver support 906# Console display driver support
846# 907#
847CONFIG_VGA_CONSOLE=y 908CONFIG_VGA_CONSOLE=y
909# CONFIG_VGACON_SOFT_SCROLLBACK is not set
848CONFIG_DUMMY_CONSOLE=y 910CONFIG_DUMMY_CONSOLE=y
849 911
850# 912#
@@ -865,9 +927,11 @@ CONFIG_SND_SEQ_DUMMY=m
865CONFIG_SND_OSSEMUL=y 927CONFIG_SND_OSSEMUL=y
866CONFIG_SND_MIXER_OSS=m 928CONFIG_SND_MIXER_OSS=m
867CONFIG_SND_PCM_OSS=m 929CONFIG_SND_PCM_OSS=m
930CONFIG_SND_PCM_OSS_PLUGINS=y
868CONFIG_SND_SEQUENCER_OSS=y 931CONFIG_SND_SEQUENCER_OSS=y
869# CONFIG_SND_DYNAMIC_MINORS is not set 932# CONFIG_SND_DYNAMIC_MINORS is not set
870CONFIG_SND_SUPPORT_OLD_API=y 933CONFIG_SND_SUPPORT_OLD_API=y
934CONFIG_SND_VERBOSE_PROCFS=y
871CONFIG_SND_VERBOSE_PRINTK=y 935CONFIG_SND_VERBOSE_PRINTK=y
872# CONFIG_SND_DEBUG is not set 936# CONFIG_SND_DEBUG is not set
873 937
@@ -877,7 +941,6 @@ CONFIG_SND_VERBOSE_PRINTK=y
877CONFIG_SND_MPU401_UART=m 941CONFIG_SND_MPU401_UART=m
878CONFIG_SND_OPL3_LIB=m 942CONFIG_SND_OPL3_LIB=m
879CONFIG_SND_AC97_CODEC=m 943CONFIG_SND_AC97_CODEC=m
880CONFIG_SND_AC97_BUS=m
881CONFIG_SND_DUMMY=m 944CONFIG_SND_DUMMY=m
882CONFIG_SND_VIRMIDI=m 945CONFIG_SND_VIRMIDI=m
883CONFIG_SND_MTPAV=m 946CONFIG_SND_MTPAV=m
@@ -888,6 +951,7 @@ CONFIG_SND_MPU401=m
888# PCI devices 951# PCI devices
889# 952#
890# CONFIG_SND_AD1889 is not set 953# CONFIG_SND_AD1889 is not set
954# CONFIG_SND_ALS300 is not set
891# CONFIG_SND_ALI5451 is not set 955# CONFIG_SND_ALI5451 is not set
892# CONFIG_SND_ATIIXP is not set 956# CONFIG_SND_ATIIXP is not set
893# CONFIG_SND_ATIIXP_MODEM is not set 957# CONFIG_SND_ATIIXP_MODEM is not set
@@ -901,6 +965,18 @@ CONFIG_SND_MPU401=m
901CONFIG_SND_CS4281=m 965CONFIG_SND_CS4281=m
902CONFIG_SND_CS46XX=m 966CONFIG_SND_CS46XX=m
903CONFIG_SND_CS46XX_NEW_DSP=y 967CONFIG_SND_CS46XX_NEW_DSP=y
968# CONFIG_SND_DARLA20 is not set
969# CONFIG_SND_GINA20 is not set
970# CONFIG_SND_LAYLA20 is not set
971# CONFIG_SND_DARLA24 is not set
972# CONFIG_SND_GINA24 is not set
973# CONFIG_SND_LAYLA24 is not set
974# CONFIG_SND_MONA is not set
975# CONFIG_SND_MIA is not set
976# CONFIG_SND_ECHO3G is not set
977# CONFIG_SND_INDIGO is not set
978# CONFIG_SND_INDIGOIO is not set
979# CONFIG_SND_INDIGODJ is not set
904CONFIG_SND_EMU10K1=m 980CONFIG_SND_EMU10K1=m
905# CONFIG_SND_EMU10K1X is not set 981# CONFIG_SND_EMU10K1X is not set
906# CONFIG_SND_ENS1370 is not set 982# CONFIG_SND_ENS1370 is not set
@@ -908,7 +984,7 @@ CONFIG_SND_EMU10K1=m
908# CONFIG_SND_ES1938 is not set 984# CONFIG_SND_ES1938 is not set
909# CONFIG_SND_ES1968 is not set 985# CONFIG_SND_ES1968 is not set
910CONFIG_SND_FM801=m 986CONFIG_SND_FM801=m
911# CONFIG_SND_FM801_TEA575X is not set 987# CONFIG_SND_FM801_TEA575X_BOOL is not set
912# CONFIG_SND_HDA_INTEL is not set 988# CONFIG_SND_HDA_INTEL is not set
913# CONFIG_SND_HDSP is not set 989# CONFIG_SND_HDSP is not set
914# CONFIG_SND_HDSPM is not set 990# CONFIG_SND_HDSPM is not set
@@ -921,6 +997,7 @@ CONFIG_SND_FM801=m
921# CONFIG_SND_MIXART is not set 997# CONFIG_SND_MIXART is not set
922# CONFIG_SND_NM256 is not set 998# CONFIG_SND_NM256 is not set
923# CONFIG_SND_PCXHR is not set 999# CONFIG_SND_PCXHR is not set
1000# CONFIG_SND_RIPTIDE is not set
924# CONFIG_SND_RME32 is not set 1001# CONFIG_SND_RME32 is not set
925# CONFIG_SND_RME96 is not set 1002# CONFIG_SND_RME96 is not set
926# CONFIG_SND_RME9652 is not set 1003# CONFIG_SND_RME9652 is not set
@@ -930,6 +1007,7 @@ CONFIG_SND_FM801=m
930# CONFIG_SND_VIA82XX_MODEM is not set 1007# CONFIG_SND_VIA82XX_MODEM is not set
931# CONFIG_SND_VX222 is not set 1008# CONFIG_SND_VX222 is not set
932# CONFIG_SND_YMFPCI is not set 1009# CONFIG_SND_YMFPCI is not set
1010# CONFIG_SND_AC97_POWER_SAVE is not set
933 1011
934# 1012#
935# USB devices 1013# USB devices
@@ -937,15 +1015,28 @@ CONFIG_SND_FM801=m
937# CONFIG_SND_USB_AUDIO is not set 1015# CONFIG_SND_USB_AUDIO is not set
938 1016
939# 1017#
1018# SoC audio support
1019#
1020# CONFIG_SND_SOC is not set
1021
1022#
940# Open Sound System 1023# Open Sound System
941# 1024#
942# CONFIG_SOUND_PRIME is not set 1025# CONFIG_SOUND_PRIME is not set
1026CONFIG_AC97_BUS=m
1027
1028#
1029# HID Devices
1030#
1031CONFIG_HID=y
1032# CONFIG_HID_DEBUG is not set
943 1033
944# 1034#
945# USB support 1035# USB support
946# 1036#
947CONFIG_USB_ARCH_HAS_HCD=y 1037CONFIG_USB_ARCH_HAS_HCD=y
948CONFIG_USB_ARCH_HAS_OHCI=y 1038CONFIG_USB_ARCH_HAS_OHCI=y
1039CONFIG_USB_ARCH_HAS_EHCI=y
949CONFIG_USB=m 1040CONFIG_USB=m
950# CONFIG_USB_DEBUG is not set 1041# CONFIG_USB_DEBUG is not set
951 1042
@@ -953,7 +1044,6 @@ CONFIG_USB=m
953# Miscellaneous USB options 1044# Miscellaneous USB options
954# 1045#
955CONFIG_USB_DEVICEFS=y 1046CONFIG_USB_DEVICEFS=y
956# CONFIG_USB_BANDWIDTH is not set
957# CONFIG_USB_DYNAMIC_MINORS is not set 1047# CONFIG_USB_DYNAMIC_MINORS is not set
958# CONFIG_USB_SUSPEND is not set 1048# CONFIG_USB_SUSPEND is not set
959# CONFIG_USB_OTG is not set 1049# CONFIG_USB_OTG is not set
@@ -964,9 +1054,12 @@ CONFIG_USB_DEVICEFS=y
964CONFIG_USB_EHCI_HCD=m 1054CONFIG_USB_EHCI_HCD=m
965# CONFIG_USB_EHCI_SPLIT_ISO is not set 1055# CONFIG_USB_EHCI_SPLIT_ISO is not set
966# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1056# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1057# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1058# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
967# CONFIG_USB_ISP116X_HCD is not set 1059# CONFIG_USB_ISP116X_HCD is not set
968CONFIG_USB_OHCI_HCD=m 1060CONFIG_USB_OHCI_HCD=m
969# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1061# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1062# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
970CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1063CONFIG_USB_OHCI_LITTLE_ENDIAN=y
971CONFIG_USB_UHCI_HCD=m 1064CONFIG_USB_UHCI_HCD=m
972# CONFIG_USB_SL811_HCD is not set 1065# CONFIG_USB_SL811_HCD is not set
@@ -974,7 +1067,6 @@ CONFIG_USB_UHCI_HCD=m
974# 1067#
975# USB Device Class drivers 1068# USB Device Class drivers
976# 1069#
977# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
978# CONFIG_USB_ACM is not set 1070# CONFIG_USB_ACM is not set
979# CONFIG_USB_PRINTER is not set 1071# CONFIG_USB_PRINTER is not set
980 1072
@@ -996,13 +1088,13 @@ CONFIG_USB_STORAGE=m
996# CONFIG_USB_STORAGE_SDDR55 is not set 1088# CONFIG_USB_STORAGE_SDDR55 is not set
997# CONFIG_USB_STORAGE_JUMPSHOT is not set 1089# CONFIG_USB_STORAGE_JUMPSHOT is not set
998# CONFIG_USB_STORAGE_ALAUDA is not set 1090# CONFIG_USB_STORAGE_ALAUDA is not set
1091# CONFIG_USB_STORAGE_KARMA is not set
999# CONFIG_USB_LIBUSUAL is not set 1092# CONFIG_USB_LIBUSUAL is not set
1000 1093
1001# 1094#
1002# USB Input Devices 1095# USB Input Devices
1003# 1096#
1004CONFIG_USB_HID=m 1097CONFIG_USB_HID=m
1005CONFIG_USB_HIDINPUT=y
1006# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1098# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1007# CONFIG_HID_FF is not set 1099# CONFIG_HID_FF is not set
1008# CONFIG_USB_HIDDEV is not set 1100# CONFIG_USB_HIDDEV is not set
@@ -1017,15 +1109,14 @@ CONFIG_USB_HIDINPUT=y
1017# CONFIG_USB_ACECAD is not set 1109# CONFIG_USB_ACECAD is not set
1018# CONFIG_USB_KBTAB is not set 1110# CONFIG_USB_KBTAB is not set
1019# CONFIG_USB_POWERMATE is not set 1111# CONFIG_USB_POWERMATE is not set
1020# CONFIG_USB_MTOUCH is not set 1112# CONFIG_USB_TOUCHSCREEN is not set
1021# CONFIG_USB_ITMTOUCH is not set
1022# CONFIG_USB_EGALAX is not set
1023# CONFIG_USB_YEALINK is not set 1113# CONFIG_USB_YEALINK is not set
1024# CONFIG_USB_XPAD is not set 1114# CONFIG_USB_XPAD is not set
1025# CONFIG_USB_ATI_REMOTE is not set 1115# CONFIG_USB_ATI_REMOTE is not set
1026# CONFIG_USB_ATI_REMOTE2 is not set 1116# CONFIG_USB_ATI_REMOTE2 is not set
1027# CONFIG_USB_KEYSPAN_REMOTE is not set 1117# CONFIG_USB_KEYSPAN_REMOTE is not set
1028# CONFIG_USB_APPLETOUCH is not set 1118# CONFIG_USB_APPLETOUCH is not set
1119# CONFIG_USB_GTCO is not set
1029 1120
1030# 1121#
1031# USB Imaging devices 1122# USB Imaging devices
@@ -1034,21 +1125,13 @@ CONFIG_USB_HIDINPUT=y
1034# CONFIG_USB_MICROTEK is not set 1125# CONFIG_USB_MICROTEK is not set
1035 1126
1036# 1127#
1037# USB Multimedia devices
1038#
1039# CONFIG_USB_DABUSB is not set
1040
1041#
1042# Video4Linux support is needed for USB Multimedia device support
1043#
1044
1045#
1046# USB Network Adapters 1128# USB Network Adapters
1047# 1129#
1048# CONFIG_USB_CATC is not set 1130# CONFIG_USB_CATC is not set
1049# CONFIG_USB_KAWETH is not set 1131# CONFIG_USB_KAWETH is not set
1050# CONFIG_USB_PEGASUS is not set 1132# CONFIG_USB_PEGASUS is not set
1051# CONFIG_USB_RTL8150 is not set 1133# CONFIG_USB_RTL8150 is not set
1134# CONFIG_USB_USBNET_MII is not set
1052# CONFIG_USB_USBNET is not set 1135# CONFIG_USB_USBNET is not set
1053CONFIG_USB_MON=y 1136CONFIG_USB_MON=y
1054 1137
@@ -1066,17 +1149,23 @@ CONFIG_USB_MON=y
1066# 1149#
1067# CONFIG_USB_EMI62 is not set 1150# CONFIG_USB_EMI62 is not set
1068# CONFIG_USB_EMI26 is not set 1151# CONFIG_USB_EMI26 is not set
1152# CONFIG_USB_ADUTUX is not set
1069# CONFIG_USB_AUERSWALD is not set 1153# CONFIG_USB_AUERSWALD is not set
1070# CONFIG_USB_RIO500 is not set 1154# CONFIG_USB_RIO500 is not set
1071# CONFIG_USB_LEGOTOWER is not set 1155# CONFIG_USB_LEGOTOWER is not set
1072# CONFIG_USB_LCD is not set 1156# CONFIG_USB_LCD is not set
1157# CONFIG_USB_BERRY_CHARGE is not set
1073# CONFIG_USB_LED is not set 1158# CONFIG_USB_LED is not set
1159# CONFIG_USB_CYPRESS_CY7C63 is not set
1074# CONFIG_USB_CYTHERM is not set 1160# CONFIG_USB_CYTHERM is not set
1075# CONFIG_USB_PHIDGETKIT is not set 1161# CONFIG_USB_PHIDGET is not set
1076# CONFIG_USB_PHIDGETSERVO is not set
1077# CONFIG_USB_IDMOUSE is not set 1162# CONFIG_USB_IDMOUSE is not set
1163# CONFIG_USB_FTDI_ELAN is not set
1164# CONFIG_USB_APPLEDISPLAY is not set
1078# CONFIG_USB_SISUSBVGA is not set 1165# CONFIG_USB_SISUSBVGA is not set
1079# CONFIG_USB_LD is not set 1166# CONFIG_USB_LD is not set
1167# CONFIG_USB_TRANCEVIBRATOR is not set
1168# CONFIG_USB_IOWARRIOR is not set
1080# CONFIG_USB_TEST is not set 1169# CONFIG_USB_TEST is not set
1081 1170
1082# 1171#
@@ -1094,26 +1183,65 @@ CONFIG_USB_MON=y
1094# CONFIG_MMC is not set 1183# CONFIG_MMC is not set
1095 1184
1096# 1185#
1186# LED devices
1187#
1188# CONFIG_NEW_LEDS is not set
1189
1190#
1191# LED drivers
1192#
1193
1194#
1195# LED Triggers
1196#
1197
1198#
1097# InfiniBand support 1199# InfiniBand support
1098# 1200#
1099CONFIG_INFINIBAND=m 1201CONFIG_INFINIBAND=m
1100# CONFIG_INFINIBAND_USER_MAD is not set 1202# CONFIG_INFINIBAND_USER_MAD is not set
1101# CONFIG_INFINIBAND_USER_ACCESS is not set 1203# CONFIG_INFINIBAND_USER_ACCESS is not set
1204CONFIG_INFINIBAND_ADDR_TRANS=y
1102CONFIG_INFINIBAND_MTHCA=m 1205CONFIG_INFINIBAND_MTHCA=m
1103# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 1206CONFIG_INFINIBAND_MTHCA_DEBUG=y
1207# CONFIG_INFINIBAND_AMSO1100 is not set
1104CONFIG_INFINIBAND_IPOIB=m 1208CONFIG_INFINIBAND_IPOIB=m
1105# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 1209# CONFIG_INFINIBAND_IPOIB_CM is not set
1210CONFIG_INFINIBAND_IPOIB_DEBUG=y
1211# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
1106# CONFIG_INFINIBAND_SRP is not set 1212# CONFIG_INFINIBAND_SRP is not set
1213# CONFIG_INFINIBAND_ISER is not set
1107 1214
1108# 1215#
1109# SN Devices 1216# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1217#
1218
1219#
1220# Real Time Clock
1221#
1222# CONFIG_RTC_CLASS is not set
1223
1224#
1225# DMA Engine support
1226#
1227# CONFIG_DMA_ENGINE is not set
1228
1229#
1230# DMA Clients
1231#
1232
1233#
1234# DMA Devices
1235#
1236
1237#
1238# Auxiliary Display support
1110# 1239#
1111CONFIG_SGI_IOC4=y
1112CONFIG_SGI_IOC3=m
1113 1240
1114# 1241#
1115# EDAC - error detection and reporting (RAS) 1242# Virtualization
1116# 1243#
1244# CONFIG_MSPEC is not set
1117 1245
1118# 1246#
1119# File systems 1247# File systems
@@ -1127,6 +1255,7 @@ CONFIG_EXT3_FS=y
1127CONFIG_EXT3_FS_XATTR=y 1255CONFIG_EXT3_FS_XATTR=y
1128CONFIG_EXT3_FS_POSIX_ACL=y 1256CONFIG_EXT3_FS_POSIX_ACL=y
1129CONFIG_EXT3_FS_SECURITY=y 1257CONFIG_EXT3_FS_SECURITY=y
1258# CONFIG_EXT4DEV_FS is not set
1130CONFIG_JBD=y 1259CONFIG_JBD=y
1131# CONFIG_JBD_DEBUG is not set 1260# CONFIG_JBD_DEBUG is not set
1132CONFIG_FS_MBCACHE=y 1261CONFIG_FS_MBCACHE=y
@@ -1139,15 +1268,16 @@ CONFIG_REISERFS_FS_SECURITY=y
1139# CONFIG_JFS_FS is not set 1268# CONFIG_JFS_FS is not set
1140CONFIG_FS_POSIX_ACL=y 1269CONFIG_FS_POSIX_ACL=y
1141CONFIG_XFS_FS=y 1270CONFIG_XFS_FS=y
1142CONFIG_XFS_EXPORT=y
1143# CONFIG_XFS_QUOTA is not set 1271# CONFIG_XFS_QUOTA is not set
1144# CONFIG_XFS_SECURITY is not set 1272# CONFIG_XFS_SECURITY is not set
1145# CONFIG_XFS_POSIX_ACL is not set 1273# CONFIG_XFS_POSIX_ACL is not set
1146# CONFIG_XFS_RT is not set 1274# CONFIG_XFS_RT is not set
1275# CONFIG_GFS2_FS is not set
1147# CONFIG_OCFS2_FS is not set 1276# CONFIG_OCFS2_FS is not set
1148# CONFIG_MINIX_FS is not set 1277# CONFIG_MINIX_FS is not set
1149# CONFIG_ROMFS_FS is not set 1278# CONFIG_ROMFS_FS is not set
1150CONFIG_INOTIFY=y 1279CONFIG_INOTIFY=y
1280CONFIG_INOTIFY_USER=y
1151# CONFIG_QUOTA is not set 1281# CONFIG_QUOTA is not set
1152CONFIG_DNOTIFY=y 1282CONFIG_DNOTIFY=y
1153CONFIG_AUTOFS_FS=y 1283CONFIG_AUTOFS_FS=y
@@ -1180,12 +1310,14 @@ CONFIG_NTFS_FS=m
1180# 1310#
1181CONFIG_PROC_FS=y 1311CONFIG_PROC_FS=y
1182CONFIG_PROC_KCORE=y 1312CONFIG_PROC_KCORE=y
1313CONFIG_PROC_VMCORE=y
1314CONFIG_PROC_SYSCTL=y
1183CONFIG_SYSFS=y 1315CONFIG_SYSFS=y
1184CONFIG_TMPFS=y 1316CONFIG_TMPFS=y
1317# CONFIG_TMPFS_POSIX_ACL is not set
1185CONFIG_HUGETLBFS=y 1318CONFIG_HUGETLBFS=y
1186CONFIG_HUGETLB_PAGE=y 1319CONFIG_HUGETLB_PAGE=y
1187CONFIG_RAMFS=y 1320CONFIG_RAMFS=y
1188# CONFIG_RELAYFS_FS is not set
1189# CONFIG_CONFIGFS_FS is not set 1321# CONFIG_CONFIGFS_FS is not set
1190 1322
1191# 1323#
@@ -1220,7 +1352,7 @@ CONFIG_NFSD_V4=y
1220CONFIG_NFSD_TCP=y 1352CONFIG_NFSD_TCP=y
1221CONFIG_LOCKD=m 1353CONFIG_LOCKD=m
1222CONFIG_LOCKD_V4=y 1354CONFIG_LOCKD_V4=y
1223CONFIG_EXPORTFS=y 1355CONFIG_EXPORTFS=m
1224CONFIG_NFS_COMMON=y 1356CONFIG_NFS_COMMON=y
1225CONFIG_SUNRPC=m 1357CONFIG_SUNRPC=m
1226CONFIG_SUNRPC_GSS=m 1358CONFIG_SUNRPC_GSS=m
@@ -1231,7 +1363,9 @@ CONFIG_SMB_NLS_DEFAULT=y
1231CONFIG_SMB_NLS_REMOTE="cp437" 1363CONFIG_SMB_NLS_REMOTE="cp437"
1232CONFIG_CIFS=m 1364CONFIG_CIFS=m
1233# CONFIG_CIFS_STATS is not set 1365# CONFIG_CIFS_STATS is not set
1366# CONFIG_CIFS_WEAK_PW_HASH is not set
1234# CONFIG_CIFS_XATTR is not set 1367# CONFIG_CIFS_XATTR is not set
1368# CONFIG_CIFS_DEBUG2 is not set
1235# CONFIG_CIFS_EXPERIMENTAL is not set 1369# CONFIG_CIFS_EXPERIMENTAL is not set
1236# CONFIG_NCP_FS is not set 1370# CONFIG_NCP_FS is not set
1237# CONFIG_CODA_FS is not set 1371# CONFIG_CODA_FS is not set
@@ -1304,15 +1438,25 @@ CONFIG_NLS_KOI8_U=m
1304CONFIG_NLS_UTF8=m 1438CONFIG_NLS_UTF8=m
1305 1439
1306# 1440#
1441# Distributed Lock Manager
1442#
1443# CONFIG_DLM is not set
1444
1445#
1307# Library routines 1446# Library routines
1308# 1447#
1448CONFIG_BITREVERSE=y
1309# CONFIG_CRC_CCITT is not set 1449# CONFIG_CRC_CCITT is not set
1310# CONFIG_CRC16 is not set 1450# CONFIG_CRC16 is not set
1311CONFIG_CRC32=y 1451CONFIG_CRC32=y
1312# CONFIG_LIBCRC32C is not set 1452# CONFIG_LIBCRC32C is not set
1453CONFIG_PLIST=y
1454CONFIG_HAS_IOMEM=y
1455CONFIG_HAS_IOPORT=y
1313CONFIG_GENERIC_HARDIRQS=y 1456CONFIG_GENERIC_HARDIRQS=y
1314CONFIG_GENERIC_IRQ_PROBE=y 1457CONFIG_GENERIC_IRQ_PROBE=y
1315CONFIG_GENERIC_PENDING_IRQ=y 1458CONFIG_GENERIC_PENDING_IRQ=y
1459CONFIG_IRQ_PER_CPU=y
1316 1460
1317# 1461#
1318# HP Simulator drivers 1462# HP Simulator drivers
@@ -1331,21 +1475,31 @@ CONFIG_GENERIC_PENDING_IRQ=y
1331# Kernel hacking 1475# Kernel hacking
1332# 1476#
1333# CONFIG_PRINTK_TIME is not set 1477# CONFIG_PRINTK_TIME is not set
1478CONFIG_ENABLE_MUST_CHECK=y
1334CONFIG_MAGIC_SYSRQ=y 1479CONFIG_MAGIC_SYSRQ=y
1480# CONFIG_UNUSED_SYMBOLS is not set
1481# CONFIG_DEBUG_FS is not set
1482# CONFIG_HEADERS_CHECK is not set
1335CONFIG_DEBUG_KERNEL=y 1483CONFIG_DEBUG_KERNEL=y
1484# CONFIG_DEBUG_SHIRQ is not set
1336CONFIG_LOG_BUF_SHIFT=20 1485CONFIG_LOG_BUF_SHIFT=20
1337CONFIG_DETECT_SOFTLOCKUP=y 1486CONFIG_DETECT_SOFTLOCKUP=y
1338# CONFIG_SCHEDSTATS is not set 1487# CONFIG_SCHEDSTATS is not set
1488# CONFIG_TIMER_STATS is not set
1339# CONFIG_DEBUG_SLAB is not set 1489# CONFIG_DEBUG_SLAB is not set
1340CONFIG_DEBUG_MUTEXES=y 1490# CONFIG_DEBUG_RT_MUTEXES is not set
1491# CONFIG_RT_MUTEX_TESTER is not set
1341# CONFIG_DEBUG_SPINLOCK is not set 1492# CONFIG_DEBUG_SPINLOCK is not set
1493CONFIG_DEBUG_MUTEXES=y
1342# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1494# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1495# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1343# CONFIG_DEBUG_KOBJECT is not set 1496# CONFIG_DEBUG_KOBJECT is not set
1344# CONFIG_DEBUG_INFO is not set 1497# CONFIG_DEBUG_INFO is not set
1345# CONFIG_DEBUG_FS is not set
1346# CONFIG_DEBUG_VM is not set 1498# CONFIG_DEBUG_VM is not set
1499# CONFIG_DEBUG_LIST is not set
1347CONFIG_FORCED_INLINING=y 1500CONFIG_FORCED_INLINING=y
1348# CONFIG_RCU_TORTURE_TEST is not set 1501# CONFIG_RCU_TORTURE_TEST is not set
1502# CONFIG_FAULT_INJECTION is not set
1349CONFIG_IA64_GRANULE_16MB=y 1503CONFIG_IA64_GRANULE_16MB=y
1350# CONFIG_IA64_GRANULE_64MB is not set 1504# CONFIG_IA64_GRANULE_64MB is not set
1351# CONFIG_IA64_PRINT_HAZARDS is not set 1505# CONFIG_IA64_PRINT_HAZARDS is not set
@@ -1364,7 +1518,11 @@ CONFIG_SYSVIPC_COMPAT=y
1364# Cryptographic options 1518# Cryptographic options
1365# 1519#
1366CONFIG_CRYPTO=y 1520CONFIG_CRYPTO=y
1521CONFIG_CRYPTO_ALGAPI=y
1522CONFIG_CRYPTO_BLKCIPHER=m
1523CONFIG_CRYPTO_MANAGER=m
1367# CONFIG_CRYPTO_HMAC is not set 1524# CONFIG_CRYPTO_HMAC is not set
1525# CONFIG_CRYPTO_XCBC is not set
1368# CONFIG_CRYPTO_NULL is not set 1526# CONFIG_CRYPTO_NULL is not set
1369# CONFIG_CRYPTO_MD4 is not set 1527# CONFIG_CRYPTO_MD4 is not set
1370CONFIG_CRYPTO_MD5=y 1528CONFIG_CRYPTO_MD5=y
@@ -1373,7 +1531,13 @@ CONFIG_CRYPTO_MD5=y
1373# CONFIG_CRYPTO_SHA512 is not set 1531# CONFIG_CRYPTO_SHA512 is not set
1374# CONFIG_CRYPTO_WP512 is not set 1532# CONFIG_CRYPTO_WP512 is not set
1375# CONFIG_CRYPTO_TGR192 is not set 1533# CONFIG_CRYPTO_TGR192 is not set
1534# CONFIG_CRYPTO_GF128MUL is not set
1535CONFIG_CRYPTO_ECB=m
1536CONFIG_CRYPTO_CBC=m
1537CONFIG_CRYPTO_PCBC=m
1538# CONFIG_CRYPTO_LRW is not set
1376CONFIG_CRYPTO_DES=m 1539CONFIG_CRYPTO_DES=m
1540# CONFIG_CRYPTO_FCRYPT is not set
1377# CONFIG_CRYPTO_BLOWFISH is not set 1541# CONFIG_CRYPTO_BLOWFISH is not set
1378# CONFIG_CRYPTO_TWOFISH is not set 1542# CONFIG_CRYPTO_TWOFISH is not set
1379# CONFIG_CRYPTO_SERPENT is not set 1543# CONFIG_CRYPTO_SERPENT is not set
@@ -1387,6 +1551,7 @@ CONFIG_CRYPTO_DES=m
1387# CONFIG_CRYPTO_DEFLATE is not set 1551# CONFIG_CRYPTO_DEFLATE is not set
1388# CONFIG_CRYPTO_MICHAEL_MIC is not set 1552# CONFIG_CRYPTO_MICHAEL_MIC is not set
1389# CONFIG_CRYPTO_CRC32C is not set 1553# CONFIG_CRYPTO_CRC32C is not set
1554# CONFIG_CRYPTO_CAMELLIA is not set
1390# CONFIG_CRYPTO_TEST is not set 1555# CONFIG_CRYPTO_TEST is not set
1391 1556
1392# 1557#
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index 5cdd2f5fa064..7d1bbb4403ba 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -21,9 +21,9 @@
21#include <asm/mca.h> 21#include <asm/mca.h>
22 22
23int kdump_status[NR_CPUS]; 23int kdump_status[NR_CPUS];
24atomic_t kdump_cpu_freezed; 24static atomic_t kdump_cpu_frozen;
25atomic_t kdump_in_progress; 25atomic_t kdump_in_progress;
26int kdump_on_init = 1; 26static int kdump_on_init = 1;
27 27
28static inline Elf64_Word 28static inline Elf64_Word
29*append_elf_note(Elf64_Word *buf, char *name, unsigned type, void *data, 29*append_elf_note(Elf64_Word *buf, char *name, unsigned type, void *data,
@@ -86,7 +86,7 @@ kdump_wait_cpu_freeze(void)
86 int cpu_num = num_online_cpus() - 1; 86 int cpu_num = num_online_cpus() - 1;
87 int timeout = 1000; 87 int timeout = 1000;
88 while(timeout-- > 0) { 88 while(timeout-- > 0) {
89 if (atomic_read(&kdump_cpu_freezed) == cpu_num) 89 if (atomic_read(&kdump_cpu_frozen) == cpu_num)
90 return 0; 90 return 0;
91 udelay(1000); 91 udelay(1000);
92 } 92 }
@@ -108,8 +108,8 @@ machine_crash_shutdown(struct pt_regs *pt)
108 kexec_disable_iosapic(); 108 kexec_disable_iosapic();
109#ifdef CONFIG_SMP 109#ifdef CONFIG_SMP
110 kdump_smp_send_stop(); 110 kdump_smp_send_stop();
111 /* not all cpu response to IPI, send INIT to freeze them */
111 if (kdump_wait_cpu_freeze() && kdump_on_init) { 112 if (kdump_wait_cpu_freeze() && kdump_on_init) {
112 //not all cpu response to IPI, send INIT to freeze them
113 kdump_smp_send_init(); 113 kdump_smp_send_init();
114 } 114 }
115#endif 115#endif
@@ -136,7 +136,7 @@ kdump_cpu_freeze(struct unw_frame_info *info, void *arg)
136 cpuid = smp_processor_id(); 136 cpuid = smp_processor_id();
137 crash_save_this_cpu(); 137 crash_save_this_cpu();
138 current->thread.ksp = (__u64)info->sw - 16; 138 current->thread.ksp = (__u64)info->sw - 16;
139 atomic_inc(&kdump_cpu_freezed); 139 atomic_inc(&kdump_cpu_frozen);
140 kdump_status[cpuid] = 1; 140 kdump_status[cpuid] = 1;
141 mb(); 141 mb();
142#ifdef CONFIG_HOTPLUG_CPU 142#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 49b93682c752..f45f91d38cab 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -1142,7 +1142,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
1142/* find a block of memory aligned to 64M exclude reserved regions 1142/* find a block of memory aligned to 64M exclude reserved regions
1143 rsvd_regions are sorted 1143 rsvd_regions are sorted
1144 */ 1144 */
1145unsigned long 1145unsigned long __init
1146kdump_find_rsvd_region (unsigned long size, 1146kdump_find_rsvd_region (unsigned long size,
1147 struct rsvd_region *r, int n) 1147 struct rsvd_region *r, int n)
1148{ 1148{
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index a76add3e76a2..491687f84fb5 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -1192,8 +1192,6 @@ void
1192ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw, 1192ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1193 struct ia64_sal_os_state *sos) 1193 struct ia64_sal_os_state *sos)
1194{ 1194{
1195 pal_processor_state_info_t *psp = (pal_processor_state_info_t *)
1196 &sos->proc_state_param;
1197 int recover, cpu = smp_processor_id(); 1195 int recover, cpu = smp_processor_id();
1198 struct task_struct *previous_current; 1196 struct task_struct *previous_current;
1199 struct ia64_mca_notify_die nd = 1197 struct ia64_mca_notify_die nd =
@@ -1223,10 +1221,8 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1223 /* Get the MCA error record and log it */ 1221 /* Get the MCA error record and log it */
1224 ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA); 1222 ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA);
1225 1223
1226 /* TLB error is only exist in this SAL error record */ 1224 /* MCA error recovery */
1227 recover = (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc)) 1225 recover = (ia64_mca_ucmc_extension
1228 /* other error recovery */
1229 || (ia64_mca_ucmc_extension
1230 && ia64_mca_ucmc_extension( 1226 && ia64_mca_ucmc_extension(
1231 IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA), 1227 IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA),
1232 sos)); 1228 sos));
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index afc1403799c9..832cf1e647e8 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -602,11 +602,40 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx,
602 default: 602 default:
603 break; 603 break;
604 } 604 }
605 } else if (psp->cc && !psp->bc) { /* Cache error */
606 status = recover_from_read_error(slidx, peidx, pbci, sos);
605 } 607 }
606 608
607 return status; 609 return status;
608} 610}
609 611
612/*
613 * recover_from_tlb_check
614 * @peidx: pointer of index of processor error section
615 *
616 * Return value:
617 * 1 on Success / 0 on Failure
618 */
619static int
620recover_from_tlb_check(peidx_table_t *peidx)
621{
622 sal_log_mod_error_info_t *smei;
623 pal_tlb_check_info_t *ptci;
624
625 smei = (sal_log_mod_error_info_t *)peidx_tlb_check(peidx, 0);
626 ptci = (pal_tlb_check_info_t *)&(smei->check_info);
627
628 /*
629 * Look for signature of a duplicate TLB DTC entry, which is
630 * a SW bug and always fatal.
631 */
632 if (ptci->op == PAL_TLB_CHECK_OP_PURGE
633 && !(ptci->itr || ptci->dtc || ptci->itc))
634 return fatal_mca("Duplicate TLB entry");
635
636 return mca_recovered("TLB check recovered");
637}
638
610/** 639/**
611 * recover_from_processor_error 640 * recover_from_processor_error
612 * @platform: whether there are some platform error section or not 641 * @platform: whether there are some platform error section or not
@@ -618,13 +647,6 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx,
618 * Return value: 647 * Return value:
619 * 1 on Success / 0 on Failure 648 * 1 on Success / 0 on Failure
620 */ 649 */
621/*
622 * Later we try to recover when below all conditions are satisfied.
623 * 1. Only one processor error section is exist.
624 * 2. BUS_CHECK is exist and the others are not exist.(Except TLB_CHECK)
625 * 3. The entry of BUS_CHECK_INFO is 1.
626 * 4. "External bus error" flag is set and the others are not set.
627 */
628 650
629static int 651static int
630recover_from_processor_error(int platform, slidx_table_t *slidx, 652recover_from_processor_error(int platform, slidx_table_t *slidx,
@@ -652,38 +674,39 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
652 return fatal_mca("error not contained"); 674 return fatal_mca("error not contained");
653 675
654 /* 676 /*
677 * Look for recoverable TLB check
678 */
679 if (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc))
680 return recover_from_tlb_check(peidx);
681
682 /*
655 * The cache check and bus check bits have four possible states 683 * The cache check and bus check bits have four possible states
656 * cc bc 684 * cc bc
657 * 0 0 Weird record, not recovered
658 * 1 0 Cache error, not recovered
659 * 0 1 I/O error, attempt recovery
660 * 1 1 Memory error, attempt recovery 685 * 1 1 Memory error, attempt recovery
686 * 1 0 Cache error, attempt recovery
687 * 0 1 I/O error, attempt recovery
688 * 0 0 Other error type, not recovered
661 */ 689 */
662 if (psp->bc == 0 || pbci == NULL) 690 if (psp->cc == 0 && (psp->bc == 0 || pbci == NULL))
663 return fatal_mca("No bus check"); 691 return fatal_mca("No cache or bus check");
664 692
665 /* 693 /*
666 * Sorry, we cannot handle so many. 694 * Cannot handle more than one bus check.
667 */ 695 */
668 if (peidx_bus_check_num(peidx) > 1) 696 if (peidx_bus_check_num(peidx) > 1)
669 return fatal_mca("Too many bus checks"); 697 return fatal_mca("Too many bus checks");
670 /* 698
671 * Well, here is only one bus error.
672 */
673 if (pbci->ib) 699 if (pbci->ib)
674 return fatal_mca("Internal Bus error"); 700 return fatal_mca("Internal Bus error");
675 if (pbci->cc)
676 return fatal_mca("Cache-cache error");
677 if (pbci->eb && pbci->bsi > 0) 701 if (pbci->eb && pbci->bsi > 0)
678 return fatal_mca("External bus check fatal status"); 702 return fatal_mca("External bus check fatal status");
679 703
680 /* 704 /*
681 * This is a local MCA and estimated as recoverble external bus error. 705 * This is a local MCA and estimated as a recoverble error.
682 * (e.g. a load from poisoned memory)
683 * This means "there are some platform errors".
684 */ 706 */
685 if (platform) 707 if (platform)
686 return recover_from_platform_error(slidx, peidx, pbci, sos); 708 return recover_from_platform_error(slidx, peidx, pbci, sos);
709
687 /* 710 /*
688 * On account of strange SAL error record, we cannot recover. 711 * On account of strange SAL error record, we cannot recover.
689 */ 712 */
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 3f8918782e0c..00f803246948 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -1573,6 +1573,7 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
1573 1573
1574 case PTRACE_DETACH: 1574 case PTRACE_DETACH:
1575 /* detach a process that was attached. */ 1575 /* detach a process that was attached. */
1576 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1576 ret = ptrace_detach(child, data); 1577 ret = ptrace_detach(child, data);
1577 goto out_tsk; 1578 goto out_tsk;
1578 1579
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 8c331ca6e5c9..c6216f454ffb 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -53,12 +53,15 @@ sal_ioif_init(u64 *result)
53} 53}
54 54
55/* 55/*
56 * sn_hubdev_add - The 'add' function of the acpi_sn_hubdev_driver. 56 * sn_acpi_hubdev_init() - This function is called by acpi_ns_get_device_callback()
57 * Called for every "SGIHUB" or "SGITIO" device defined 57 * for all SGIHUB and SGITIO acpi devices defined in the
58 * in the ACPI namespace. 58 * DSDT. It obtains the hubdev_info pointer from the
59 * ACPI vendor resource, which the PROM setup, and sets up the
60 * hubdev_info in the pda.
59 */ 61 */
60static int __init 62
61sn_hubdev_add(struct acpi_device *device) 63static acpi_status __init
64sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret)
62{ 65{
63 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; 66 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
64 u64 addr; 67 u64 addr;
@@ -67,18 +70,19 @@ sn_hubdev_add(struct acpi_device *device)
67 int i; 70 int i;
68 u64 nasid; 71 u64 nasid;
69 struct acpi_resource *resource; 72 struct acpi_resource *resource;
70 int ret = 0;
71 acpi_status status; 73 acpi_status status;
72 struct acpi_resource_vendor_typed *vendor; 74 struct acpi_resource_vendor_typed *vendor;
73 extern void sn_common_hubdev_init(struct hubdev_info *); 75 extern void sn_common_hubdev_init(struct hubdev_info *);
74 76
75 status = acpi_get_vendor_resource(device->handle, METHOD_NAME__CRS, 77 status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS,
76 &sn_uuid, &buffer); 78 &sn_uuid, &buffer);
77 if (ACPI_FAILURE(status)) { 79 if (ACPI_FAILURE(status)) {
78 printk(KERN_ERR 80 printk(KERN_ERR
79 "sn_hubdev_add: acpi_get_vendor_resource() failed: %d\n", 81 "sn_acpi_hubdev_init: acpi_get_vendor_resource() "
80 status); 82 "(0x%x) failed for: ", status);
81 return 1; 83 acpi_ns_print_node_pathname(handle, NULL);
84 printk("\n");
85 return AE_OK; /* Continue walking namespace */
82 } 86 }
83 87
84 resource = buffer.pointer; 88 resource = buffer.pointer;
@@ -86,9 +90,10 @@ sn_hubdev_add(struct acpi_device *device)
86 if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != 90 if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) !=
87 sizeof(struct hubdev_info *)) { 91 sizeof(struct hubdev_info *)) {
88 printk(KERN_ERR 92 printk(KERN_ERR
89 "sn_hubdev_add: Invalid vendor data length: %d\n", 93 "sn_acpi_hubdev_init: Invalid vendor data length: %d for: ",
90 vendor->byte_length); 94 vendor->byte_length);
91 ret = 1; 95 acpi_ns_print_node_pathname(handle, NULL);
96 printk("\n");
92 goto exit; 97 goto exit;
93 } 98 }
94 99
@@ -103,7 +108,7 @@ sn_hubdev_add(struct acpi_device *device)
103 108
104exit: 109exit:
105 kfree(buffer.pointer); 110 kfree(buffer.pointer);
106 return ret; 111 return AE_OK; /* Continue walking namespace */
107} 112}
108 113
109/* 114/*
@@ -441,14 +446,6 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
441 446
442EXPORT_SYMBOL(sn_acpi_slot_fixup); 447EXPORT_SYMBOL(sn_acpi_slot_fixup);
443 448
444static struct acpi_driver acpi_sn_hubdev_driver = {
445 .name = "SGI HUBDEV Driver",
446 .ids = "SGIHUB,SGITIO",
447 .ops = {
448 .add = sn_hubdev_add,
449 },
450};
451
452 449
453/* 450/*
454 * sn_acpi_bus_fixup - Perform SN specific setup of software structs 451 * sn_acpi_bus_fixup - Perform SN specific setup of software structs
@@ -492,7 +489,10 @@ sn_io_acpi_init(void)
492 /* SN Altix does not follow the IOSAPIC IRQ routing model */ 489 /* SN Altix does not follow the IOSAPIC IRQ routing model */
493 acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; 490 acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM;
494 491
495 acpi_bus_register_driver(&acpi_sn_hubdev_driver); 492 /* Setup hubdev_info for all SGIHUB/SGITIO devices */
493 acpi_get_devices("SGIHUB", sn_acpi_hubdev_init, NULL, NULL);
494 acpi_get_devices("SGITIO", sn_acpi_hubdev_init, NULL, NULL);
495
496 status = sal_ioif_init(&result); 496 status = sal_ioif_init(&result);
497 if (status || result) 497 if (status || result)
498 panic("sal_ioif_init failed: [%lx] %s\n", 498 panic("sal_ioif_init failed: [%lx] %s\n",
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 8571e52c2efd..bd5373d593e1 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -397,6 +397,8 @@ void __init sn_setup(char **cmdline_p)
397 ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); 397 ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE);
398 ia64_sn_set_os_feature(OSF_ACPI_ENABLE); 398 ia64_sn_set_os_feature(OSF_ACPI_ENABLE);
399 399
400 /* Load the new DSDT and SSDT tables into the global table list. */
401 acpi_table_init();
400 402
401#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) 403#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE)
402 /* 404 /*
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index 24367319ce24..cf7e316ad4f6 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_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.20-rc5 3# Linux kernel version: 2.6.21-rc3
4# Mon Jan 22 22:12:56 2007 4# Fri Mar 9 23:34:53 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -61,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y
61CONFIG_SWAP=y 61CONFIG_SWAP=y
62CONFIG_SYSVIPC=y 62CONFIG_SYSVIPC=y
63# CONFIG_IPC_NS is not set 63# CONFIG_IPC_NS is not set
64CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set 65# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set 66# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set 67# CONFIG_TASKSTATS is not set
@@ -71,6 +72,7 @@ CONFIG_IKCONFIG_PROC=y
71CONFIG_CPUSETS=y 72CONFIG_CPUSETS=y
72CONFIG_SYSFS_DEPRECATED=y 73CONFIG_SYSFS_DEPRECATED=y
73# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
75CONFIG_BLK_DEV_INITRD=y
74CONFIG_INITRAMFS_SOURCE="" 76CONFIG_INITRAMFS_SOURCE=""
75CONFIG_CC_OPTIMIZE_FOR_SIZE=y 77CONFIG_CC_OPTIMIZE_FOR_SIZE=y
76CONFIG_SYSCTL=y 78CONFIG_SYSCTL=y
@@ -133,6 +135,7 @@ CONFIG_PPC_MULTIPLATFORM=y
133# CONFIG_PPC_PSERIES is not set 135# CONFIG_PPC_PSERIES is not set
134# CONFIG_PPC_ISERIES is not set 136# CONFIG_PPC_ISERIES is not set
135# CONFIG_PPC_MPC52xx is not set 137# CONFIG_PPC_MPC52xx is not set
138# CONFIG_PPC_MPC5200 is not set
136# CONFIG_PPC_PMAC is not set 139# CONFIG_PPC_PMAC is not set
137# CONFIG_PPC_MAPLE is not set 140# CONFIG_PPC_MAPLE is not set
138# CONFIG_PPC_PASEMI is not set 141# CONFIG_PPC_PASEMI is not set
@@ -140,8 +143,10 @@ CONFIG_PPC_CELL=y
140CONFIG_PPC_CELL_NATIVE=y 143CONFIG_PPC_CELL_NATIVE=y
141CONFIG_PPC_IBM_CELL_BLADE=y 144CONFIG_PPC_IBM_CELL_BLADE=y
142CONFIG_PPC_PS3=y 145CONFIG_PPC_PS3=y
146CONFIG_PPC_CELLEB=y
143CONFIG_PPC_NATIVE=y 147CONFIG_PPC_NATIVE=y
144CONFIG_UDBG_RTAS_CONSOLE=y 148CONFIG_UDBG_RTAS_CONSOLE=y
149CONFIG_PPC_UDBG_BEAT=y
145# CONFIG_U3_DART is not set 150# CONFIG_U3_DART is not set
146CONFIG_PPC_RTAS=y 151CONFIG_PPC_RTAS=y
147# CONFIG_RTAS_ERROR_LOGGING is not set 152# CONFIG_RTAS_ERROR_LOGGING is not set
@@ -181,10 +186,13 @@ CONFIG_CBE_CPUFREQ=m
181# 186#
182# PS3 Platform Options 187# PS3 Platform Options
183# 188#
189# CONFIG_PS3_ADVANCED is not set
184CONFIG_PS3_HTAB_SIZE=20 190CONFIG_PS3_HTAB_SIZE=20
185# CONFIG_PS3_DYNAMIC_DMA is not set 191# CONFIG_PS3_DYNAMIC_DMA is not set
186CONFIG_PS3_USE_LPAR_ADDR=y 192CONFIG_PS3_USE_LPAR_ADDR=y
187CONFIG_PS3_VUART=y 193CONFIG_PS3_VUART=y
194CONFIG_PS3_PS3AV=y
195CONFIG_PS3_SYS_MANAGER=y
188 196
189# 197#
190# Kernel options 198# Kernel options
@@ -226,6 +234,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
226CONFIG_SPLIT_PTLOCK_CPUS=4 234CONFIG_SPLIT_PTLOCK_CPUS=4
227CONFIG_MIGRATION=y 235CONFIG_MIGRATION=y
228CONFIG_RESOURCES_64BIT=y 236CONFIG_RESOURCES_64BIT=y
237CONFIG_ZONE_DMA_FLAG=1
229CONFIG_ARCH_MEMORY_PROBE=y 238CONFIG_ARCH_MEMORY_PROBE=y
230CONFIG_NODES_SPAN_OTHER_NODES=y 239CONFIG_NODES_SPAN_OTHER_NODES=y
231CONFIG_PPC_64K_PAGES=y 240CONFIG_PPC_64K_PAGES=y
@@ -239,6 +248,7 @@ CONFIG_ISA_DMA_API=y
239# 248#
240# Bus options 249# Bus options
241# 250#
251CONFIG_ZONE_DMA=y
242CONFIG_GENERIC_ISA_DMA=y 252CONFIG_GENERIC_ISA_DMA=y
243# CONFIG_MPIC_WEIRD is not set 253# CONFIG_MPIC_WEIRD is not set
244# CONFIG_PPC_I8259 is not set 254# CONFIG_PPC_I8259 is not set
@@ -274,6 +284,7 @@ CONFIG_UNIX=y
274CONFIG_XFRM=y 284CONFIG_XFRM=y
275# CONFIG_XFRM_USER is not set 285# CONFIG_XFRM_USER is not set
276# CONFIG_XFRM_SUB_POLICY is not set 286# CONFIG_XFRM_SUB_POLICY is not set
287# CONFIG_XFRM_MIGRATE is not set
277# CONFIG_NET_KEY is not set 288# CONFIG_NET_KEY is not set
278CONFIG_INET=y 289CONFIG_INET=y
279CONFIG_IP_MULTICAST=y 290CONFIG_IP_MULTICAST=y
@@ -340,6 +351,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m
340CONFIG_NETFILTER_XT_TARGET_MARK=m 351CONFIG_NETFILTER_XT_TARGET_MARK=m
341CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 352CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
342CONFIG_NETFILTER_XT_TARGET_NFLOG=m 353CONFIG_NETFILTER_XT_TARGET_NFLOG=m
354CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
343CONFIG_NETFILTER_XT_MATCH_COMMENT=m 355CONFIG_NETFILTER_XT_MATCH_COMMENT=m
344CONFIG_NETFILTER_XT_MATCH_DCCP=m 356CONFIG_NETFILTER_XT_MATCH_DCCP=m
345CONFIG_NETFILTER_XT_MATCH_DSCP=m 357CONFIG_NETFILTER_XT_MATCH_DSCP=m
@@ -376,7 +388,6 @@ CONFIG_IP_NF_FILTER=m
376CONFIG_IP_NF_TARGET_REJECT=m 388CONFIG_IP_NF_TARGET_REJECT=m
377CONFIG_IP_NF_TARGET_LOG=m 389CONFIG_IP_NF_TARGET_LOG=m
378CONFIG_IP_NF_TARGET_ULOG=m 390CONFIG_IP_NF_TARGET_ULOG=m
379CONFIG_IP_NF_TARGET_TCPMSS=m
380CONFIG_IP_NF_MANGLE=m 391CONFIG_IP_NF_MANGLE=m
381CONFIG_IP_NF_TARGET_TOS=m 392CONFIG_IP_NF_TARGET_TOS=m
382CONFIG_IP_NF_TARGET_ECN=m 393CONFIG_IP_NF_TARGET_ECN=m
@@ -444,6 +455,7 @@ CONFIG_STANDALONE=y
444CONFIG_PREVENT_FIRMWARE_BUILD=y 455CONFIG_PREVENT_FIRMWARE_BUILD=y
445CONFIG_FW_LOADER=y 456CONFIG_FW_LOADER=y
446# CONFIG_DEBUG_DRIVER is not set 457# CONFIG_DEBUG_DRIVER is not set
458# CONFIG_DEBUG_DEVRES is not set
447# CONFIG_SYS_HYPERVISOR is not set 459# CONFIG_SYS_HYPERVISOR is not set
448 460
449# 461#
@@ -464,6 +476,7 @@ CONFIG_FW_LOADER=y
464# 476#
465# Plug and Play support 477# Plug and Play support
466# 478#
479# CONFIG_PNPACPI is not set
467 480
468# 481#
469# Block devices 482# Block devices
@@ -483,7 +496,6 @@ CONFIG_BLK_DEV_RAM=y
483CONFIG_BLK_DEV_RAM_COUNT=16 496CONFIG_BLK_DEV_RAM_COUNT=16
484CONFIG_BLK_DEV_RAM_SIZE=131072 497CONFIG_BLK_DEV_RAM_SIZE=131072
485CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 498CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
486CONFIG_BLK_DEV_INITRD=y
487# CONFIG_CDROM_PKTCDVD is not set 499# CONFIG_CDROM_PKTCDVD is not set
488# CONFIG_ATA_OVER_ETH is not set 500# CONFIG_ATA_OVER_ETH is not set
489 501
@@ -537,6 +549,7 @@ CONFIG_BLK_DEV_AEC62XX=y
537# CONFIG_BLK_DEV_JMICRON is not set 549# CONFIG_BLK_DEV_JMICRON is not set
538# CONFIG_BLK_DEV_SC1200 is not set 550# CONFIG_BLK_DEV_SC1200 is not set
539# CONFIG_BLK_DEV_PIIX is not set 551# CONFIG_BLK_DEV_PIIX is not set
552# CONFIG_BLK_DEV_IT8213 is not set
540# CONFIG_BLK_DEV_IT821X is not set 553# CONFIG_BLK_DEV_IT821X is not set
541# CONFIG_BLK_DEV_NS87415 is not set 554# CONFIG_BLK_DEV_NS87415 is not set
542# CONFIG_BLK_DEV_PDC202XX_OLD is not set 555# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -547,6 +560,8 @@ CONFIG_BLK_DEV_SIIMAGE=y
547# CONFIG_BLK_DEV_SLC90E66 is not set 560# CONFIG_BLK_DEV_SLC90E66 is not set
548# CONFIG_BLK_DEV_TRM290 is not set 561# CONFIG_BLK_DEV_TRM290 is not set
549# CONFIG_BLK_DEV_VIA82CXXX is not set 562# CONFIG_BLK_DEV_VIA82CXXX is not set
563# CONFIG_BLK_DEV_TC86C001 is not set
564CONFIG_BLK_DEV_IDE_CELLEB=y
550# CONFIG_IDE_ARM is not set 565# CONFIG_IDE_ARM is not set
551CONFIG_BLK_DEV_IDEDMA=y 566CONFIG_BLK_DEV_IDEDMA=y
552# CONFIG_IDEDMA_IVB is not set 567# CONFIG_IDEDMA_IVB is not set
@@ -557,7 +572,7 @@ CONFIG_IDEDMA_AUTO=y
557# SCSI device support 572# SCSI device support
558# 573#
559# CONFIG_RAID_ATTRS is not set 574# CONFIG_RAID_ATTRS is not set
560CONFIG_SCSI=m 575CONFIG_SCSI=y
561# CONFIG_SCSI_TGT is not set 576# CONFIG_SCSI_TGT is not set
562# CONFIG_SCSI_NETLINK is not set 577# CONFIG_SCSI_NETLINK is not set
563CONFIG_SCSI_PROC_FS=y 578CONFIG_SCSI_PROC_FS=y
@@ -565,12 +580,12 @@ CONFIG_SCSI_PROC_FS=y
565# 580#
566# SCSI support type (disk, tape, CD-ROM) 581# SCSI support type (disk, tape, CD-ROM)
567# 582#
568CONFIG_BLK_DEV_SD=m 583CONFIG_BLK_DEV_SD=y
569# CONFIG_CHR_DEV_ST is not set 584# CONFIG_CHR_DEV_ST is not set
570# CONFIG_CHR_DEV_OSST is not set 585# CONFIG_CHR_DEV_OSST is not set
571CONFIG_BLK_DEV_SR=m 586CONFIG_BLK_DEV_SR=m
572# CONFIG_BLK_DEV_SR_VENDOR is not set 587# CONFIG_BLK_DEV_SR_VENDOR is not set
573CONFIG_CHR_DEV_SG=m 588CONFIG_CHR_DEV_SG=y
574# CONFIG_CHR_DEV_SCH is not set 589# CONFIG_CHR_DEV_SCH is not set
575 590
576# 591#
@@ -587,7 +602,7 @@ CONFIG_CHR_DEV_SG=m
587# CONFIG_SCSI_SPI_ATTRS is not set 602# CONFIG_SCSI_SPI_ATTRS is not set
588# CONFIG_SCSI_FC_ATTRS is not set 603# CONFIG_SCSI_FC_ATTRS is not set
589# CONFIG_SCSI_ISCSI_ATTRS is not set 604# CONFIG_SCSI_ISCSI_ATTRS is not set
590# CONFIG_SCSI_SAS_ATTRS is not set 605CONFIG_SCSI_SAS_ATTRS=y
591# CONFIG_SCSI_SAS_LIBSAS is not set 606# CONFIG_SCSI_SAS_LIBSAS is not set
592 607
593# 608#
@@ -617,6 +632,7 @@ CONFIG_CHR_DEV_SG=m
617# CONFIG_SCSI_INIA100 is not set 632# CONFIG_SCSI_INIA100 is not set
618# CONFIG_SCSI_STEX is not set 633# CONFIG_SCSI_STEX is not set
619# CONFIG_SCSI_SYM53C8XX_2 is not set 634# CONFIG_SCSI_SYM53C8XX_2 is not set
635# CONFIG_SCSI_IPR is not set
620# CONFIG_SCSI_QLOGIC_1280 is not set 636# CONFIG_SCSI_QLOGIC_1280 is not set
621# CONFIG_SCSI_QLA_FC is not set 637# CONFIG_SCSI_QLA_FC is not set
622# CONFIG_SCSI_QLA_ISCSI is not set 638# CONFIG_SCSI_QLA_ISCSI is not set
@@ -629,7 +645,60 @@ CONFIG_CHR_DEV_SG=m
629# 645#
630# Serial ATA (prod) and Parallel ATA (experimental) drivers 646# Serial ATA (prod) and Parallel ATA (experimental) drivers
631# 647#
632# CONFIG_ATA is not set 648CONFIG_ATA=y
649# CONFIG_ATA_NONSTANDARD is not set
650# CONFIG_SATA_AHCI is not set
651# CONFIG_SATA_SVW is not set
652# CONFIG_ATA_PIIX is not set
653# CONFIG_SATA_MV is not set
654# CONFIG_SATA_NV is not set
655# CONFIG_PDC_ADMA is not set
656# CONFIG_SATA_QSTOR is not set
657CONFIG_SATA_PROMISE=y
658# CONFIG_SATA_SX4 is not set
659# CONFIG_SATA_SIL is not set
660# CONFIG_SATA_SIL24 is not set
661# CONFIG_SATA_SIS is not set
662# CONFIG_SATA_ULI is not set
663# CONFIG_SATA_VIA is not set
664# CONFIG_SATA_VITESSE is not set
665# CONFIG_SATA_INIC162X is not set
666# CONFIG_PATA_ALI is not set
667# CONFIG_PATA_AMD is not set
668# CONFIG_PATA_ARTOP is not set
669# CONFIG_PATA_ATIIXP is not set
670# CONFIG_PATA_CMD64X is not set
671# CONFIG_PATA_CS5520 is not set
672# CONFIG_PATA_CS5530 is not set
673# CONFIG_PATA_CYPRESS is not set
674# CONFIG_PATA_EFAR is not set
675# CONFIG_ATA_GENERIC is not set
676# CONFIG_PATA_HPT366 is not set
677# CONFIG_PATA_HPT37X is not set
678# CONFIG_PATA_HPT3X2N is not set
679# CONFIG_PATA_HPT3X3 is not set
680# CONFIG_PATA_IT821X is not set
681# CONFIG_PATA_IT8213 is not set
682# CONFIG_PATA_JMICRON is not set
683# CONFIG_PATA_TRIFLEX is not set
684# CONFIG_PATA_MARVELL is not set
685# CONFIG_PATA_MPIIX is not set
686# CONFIG_PATA_OLDPIIX is not set
687# CONFIG_PATA_NETCELL is not set
688# CONFIG_PATA_NS87410 is not set
689# CONFIG_PATA_OPTI is not set
690# CONFIG_PATA_OPTIDMA is not set
691# CONFIG_PATA_PDC_OLD is not set
692# CONFIG_PATA_RADISYS is not set
693# CONFIG_PATA_RZ1000 is not set
694# CONFIG_PATA_SC1200 is not set
695# CONFIG_PATA_SERVERWORKS is not set
696CONFIG_PATA_PDC2027X=m
697# CONFIG_PATA_SIL680 is not set
698# CONFIG_PATA_SIS is not set
699# CONFIG_PATA_VIA is not set
700# CONFIG_PATA_WINBOND is not set
701# CONFIG_PATA_SCC is not set
633 702
634# 703#
635# Multi-device support (RAID and LVM) 704# Multi-device support (RAID and LVM)
@@ -655,10 +724,12 @@ CONFIG_DM_MULTIPATH=m
655# 724#
656# Fusion MPT device support 725# Fusion MPT device support
657# 726#
658# CONFIG_FUSION is not set 727CONFIG_FUSION=y
659# CONFIG_FUSION_SPI is not set 728# CONFIG_FUSION_SPI is not set
660# CONFIG_FUSION_FC is not set 729# CONFIG_FUSION_FC is not set
661# CONFIG_FUSION_SAS is not set 730CONFIG_FUSION_SAS=y
731CONFIG_FUSION_MAX_SGE=128
732# CONFIG_FUSION_CTL is not set
662 733
663# 734#
664# IEEE 1394 (FireWire) support 735# IEEE 1394 (FireWire) support
@@ -732,15 +803,18 @@ CONFIG_TIGON3=y
732# CONFIG_BNX2 is not set 803# CONFIG_BNX2 is not set
733CONFIG_SPIDER_NET=y 804CONFIG_SPIDER_NET=y
734# CONFIG_QLA3XXX is not set 805# CONFIG_QLA3XXX is not set
806# CONFIG_ATL1 is not set
735 807
736# 808#
737# Ethernet (10000 Mbit) 809# Ethernet (10000 Mbit)
738# 810#
739# CONFIG_CHELSIO_T1 is not set 811# CONFIG_CHELSIO_T1 is not set
812# CONFIG_CHELSIO_T3 is not set
740# CONFIG_IXGB is not set 813# CONFIG_IXGB is not set
741# CONFIG_S2IO is not set 814# CONFIG_S2IO is not set
742# CONFIG_MYRI10GE is not set 815# CONFIG_MYRI10GE is not set
743# CONFIG_NETXEN_NIC is not set 816# CONFIG_NETXEN_NIC is not set
817# CONFIG_PASEMI_MAC is not set
744 818
745# 819#
746# Token Ring devices 820# Token Ring devices
@@ -853,16 +927,27 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
853# 927#
854CONFIG_SERIAL_CORE=y 928CONFIG_SERIAL_CORE=y
855CONFIG_SERIAL_CORE_CONSOLE=y 929CONFIG_SERIAL_CORE_CONSOLE=y
930CONFIG_SERIAL_TXX9=y
931CONFIG_HAS_TXX9_SERIAL=y
932CONFIG_SERIAL_TXX9_NR_UARTS=2
933CONFIG_SERIAL_TXX9_CONSOLE=y
856# CONFIG_SERIAL_JSM is not set 934# CONFIG_SERIAL_JSM is not set
935CONFIG_SERIAL_OF_PLATFORM=y
857CONFIG_UNIX98_PTYS=y 936CONFIG_UNIX98_PTYS=y
858# CONFIG_LEGACY_PTYS is not set 937# CONFIG_LEGACY_PTYS is not set
859CONFIG_HVC_DRIVER=y 938CONFIG_HVC_DRIVER=y
860CONFIG_HVC_RTAS=y 939CONFIG_HVC_RTAS=y
940# CONFIG_HVC_BEAT is not set
861 941
862# 942#
863# IPMI 943# IPMI
864# 944#
865# CONFIG_IPMI_HANDLER is not set 945CONFIG_IPMI_HANDLER=m
946# CONFIG_IPMI_PANIC_EVENT is not set
947CONFIG_IPMI_DEVICE_INTERFACE=m
948CONFIG_IPMI_SI=m
949CONFIG_IPMI_WATCHDOG=m
950CONFIG_IPMI_POWEROFF=m
866 951
867# 952#
868# Watchdog Cards 953# Watchdog Cards
@@ -874,7 +959,7 @@ CONFIG_WATCHDOG=y
874# Watchdog Device Drivers 959# Watchdog Device Drivers
875# 960#
876# CONFIG_SOFT_WATCHDOG is not set 961# CONFIG_SOFT_WATCHDOG is not set
877CONFIG_WATCHDOG_RTAS=y 962# CONFIG_WATCHDOG_RTAS is not set
878 963
879# 964#
880# PCI-based Watchdog Cards 965# PCI-based Watchdog Cards
@@ -929,6 +1014,7 @@ CONFIG_I2C_ALGOBIT=y
929# CONFIG_I2C_NFORCE2 is not set 1014# CONFIG_I2C_NFORCE2 is not set
930# CONFIG_I2C_OCORES is not set 1015# CONFIG_I2C_OCORES is not set
931# CONFIG_I2C_PARPORT_LIGHT is not set 1016# CONFIG_I2C_PARPORT_LIGHT is not set
1017# CONFIG_I2C_PASEMI is not set
932# CONFIG_I2C_PROSAVAGE is not set 1018# CONFIG_I2C_PROSAVAGE is not set
933# CONFIG_I2C_SAVAGE4 is not set 1019# CONFIG_I2C_SAVAGE4 is not set
934# CONFIG_I2C_SIS5595 is not set 1020# CONFIG_I2C_SIS5595 is not set
@@ -973,6 +1059,11 @@ CONFIG_I2C_ALGOBIT=y
973# CONFIG_HWMON_VID is not set 1059# CONFIG_HWMON_VID is not set
974 1060
975# 1061#
1062# Multifunction device drivers
1063#
1064# CONFIG_MFD_SM501 is not set
1065
1066#
976# Multimedia devices 1067# Multimedia devices
977# 1068#
978# CONFIG_VIDEO_DEV is not set 1069# CONFIG_VIDEO_DEV is not set
@@ -986,7 +1077,7 @@ CONFIG_I2C_ALGOBIT=y
986# 1077#
987# Graphics support 1078# Graphics support
988# 1079#
989CONFIG_FIRMWARE_EDID=y 1080# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
990# CONFIG_FB is not set 1081# CONFIG_FB is not set
991# CONFIG_FB_IBM_GXT4500 is not set 1082# CONFIG_FB_IBM_GXT4500 is not set
992 1083
@@ -995,7 +1086,6 @@ CONFIG_FIRMWARE_EDID=y
995# 1086#
996# CONFIG_VGA_CONSOLE is not set 1087# CONFIG_VGA_CONSOLE is not set
997CONFIG_DUMMY_CONSOLE=y 1088CONFIG_DUMMY_CONSOLE=y
998# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
999 1089
1000# 1090#
1001# Sound 1091# Sound
@@ -1006,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y
1006# HID Devices 1096# HID Devices
1007# 1097#
1008CONFIG_HID=m 1098CONFIG_HID=m
1099# CONFIG_HID_DEBUG is not set
1009 1100
1010# 1101#
1011# USB support 1102# USB support
@@ -1020,9 +1111,7 @@ CONFIG_USB=m
1020# Miscellaneous USB options 1111# Miscellaneous USB options
1021# 1112#
1022CONFIG_USB_DEVICEFS=y 1113CONFIG_USB_DEVICEFS=y
1023# CONFIG_USB_BANDWIDTH is not set
1024# CONFIG_USB_DYNAMIC_MINORS is not set 1114# CONFIG_USB_DYNAMIC_MINORS is not set
1025# CONFIG_USB_MULTITHREAD_PROBE is not set
1026# CONFIG_USB_OTG is not set 1115# CONFIG_USB_OTG is not set
1027 1116
1028# 1117#
@@ -1032,9 +1121,15 @@ CONFIG_USB_EHCI_HCD=m
1032# CONFIG_USB_EHCI_SPLIT_ISO is not set 1121# CONFIG_USB_EHCI_SPLIT_ISO is not set
1033# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1122# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1034# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1123# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1124CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
1035# CONFIG_USB_ISP116X_HCD is not set 1125# CONFIG_USB_ISP116X_HCD is not set
1036CONFIG_USB_OHCI_HCD=m 1126CONFIG_USB_OHCI_HCD=m
1037# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1127CONFIG_USB_OHCI_HCD_PPC_OF=y
1128CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1129# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1130CONFIG_USB_OHCI_HCD_PCI=y
1131CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1132CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1038CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1133CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1039# CONFIG_USB_UHCI_HCD is not set 1134# CONFIG_USB_UHCI_HCD is not set
1040# CONFIG_USB_SL811_HCD is not set 1135# CONFIG_USB_SL811_HCD is not set
@@ -1088,6 +1183,7 @@ CONFIG_USB_STORAGE=m
1088# CONFIG_USB_ATI_REMOTE2 is not set 1183# CONFIG_USB_ATI_REMOTE2 is not set
1089# CONFIG_USB_KEYSPAN_REMOTE is not set 1184# CONFIG_USB_KEYSPAN_REMOTE is not set
1090# CONFIG_USB_APPLETOUCH is not set 1185# CONFIG_USB_APPLETOUCH is not set
1186# CONFIG_USB_GTCO is not set
1091 1187
1092# 1188#
1093# USB Imaging devices 1189# USB Imaging devices
@@ -1125,6 +1221,7 @@ CONFIG_USB_MON=y
1125# CONFIG_USB_RIO500 is not set 1221# CONFIG_USB_RIO500 is not set
1126# CONFIG_USB_LEGOTOWER is not set 1222# CONFIG_USB_LEGOTOWER is not set
1127# CONFIG_USB_LCD is not set 1223# CONFIG_USB_LCD is not set
1224# CONFIG_USB_BERRY_CHARGE is not set
1128# CONFIG_USB_LED is not set 1225# CONFIG_USB_LED is not set
1129# CONFIG_USB_CYPRESS_CY7C63 is not set 1226# CONFIG_USB_CYPRESS_CY7C63 is not set
1130# CONFIG_USB_CYTHERM is not set 1227# CONFIG_USB_CYTHERM is not set
@@ -1135,6 +1232,7 @@ CONFIG_USB_MON=y
1135# CONFIG_USB_SISUSBVGA is not set 1232# CONFIG_USB_SISUSBVGA is not set
1136# CONFIG_USB_LD is not set 1233# CONFIG_USB_LD is not set
1137# CONFIG_USB_TRANCEVIBRATOR is not set 1234# CONFIG_USB_TRANCEVIBRATOR is not set
1235# CONFIG_USB_IOWARRIOR is not set
1138# CONFIG_USB_TEST is not set 1236# CONFIG_USB_TEST is not set
1139 1237
1140# 1238#
@@ -1175,6 +1273,7 @@ CONFIG_INFINIBAND_MTHCA=m
1175CONFIG_INFINIBAND_MTHCA_DEBUG=y 1273CONFIG_INFINIBAND_MTHCA_DEBUG=y
1176# CONFIG_INFINIBAND_AMSO1100 is not set 1274# CONFIG_INFINIBAND_AMSO1100 is not set
1177CONFIG_INFINIBAND_IPOIB=m 1275CONFIG_INFINIBAND_IPOIB=m
1276# CONFIG_INFINIBAND_IPOIB_CM is not set
1178CONFIG_INFINIBAND_IPOIB_DEBUG=y 1277CONFIG_INFINIBAND_IPOIB_DEBUG=y
1179CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y 1278CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
1180# CONFIG_INFINIBAND_SRP is not set 1279# CONFIG_INFINIBAND_SRP is not set
@@ -1203,6 +1302,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
1203# 1302#
1204 1303
1205# 1304#
1305# Auxiliary Display support
1306#
1307
1308#
1206# Virtualization 1309# Virtualization
1207# 1310#
1208 1311
@@ -1395,7 +1498,8 @@ CONFIG_TEXTSEARCH_KMP=m
1395CONFIG_TEXTSEARCH_BM=m 1498CONFIG_TEXTSEARCH_BM=m
1396CONFIG_TEXTSEARCH_FSM=m 1499CONFIG_TEXTSEARCH_FSM=m
1397CONFIG_PLIST=y 1500CONFIG_PLIST=y
1398CONFIG_IOMAP_COPY=y 1501CONFIG_HAS_IOMEM=y
1502CONFIG_HAS_IOPORT=y
1399 1503
1400# 1504#
1401# Instrumentation Support 1505# Instrumentation Support
@@ -1414,15 +1518,16 @@ CONFIG_MAGIC_SYSRQ=y
1414CONFIG_DEBUG_FS=y 1518CONFIG_DEBUG_FS=y
1415# CONFIG_HEADERS_CHECK is not set 1519# CONFIG_HEADERS_CHECK is not set
1416CONFIG_DEBUG_KERNEL=y 1520CONFIG_DEBUG_KERNEL=y
1521# CONFIG_DEBUG_SHIRQ is not set
1417CONFIG_LOG_BUF_SHIFT=15 1522CONFIG_LOG_BUF_SHIFT=15
1418CONFIG_DETECT_SOFTLOCKUP=y 1523# CONFIG_DETECT_SOFTLOCKUP is not set
1419# CONFIG_SCHEDSTATS is not set 1524# CONFIG_SCHEDSTATS is not set
1525# CONFIG_TIMER_STATS is not set
1420# CONFIG_DEBUG_SLAB is not set 1526# CONFIG_DEBUG_SLAB is not set
1421# CONFIG_DEBUG_RT_MUTEXES is not set 1527# CONFIG_DEBUG_RT_MUTEXES is not set
1422# CONFIG_RT_MUTEX_TESTER is not set 1528# CONFIG_RT_MUTEX_TESTER is not set
1423# CONFIG_DEBUG_SPINLOCK is not set 1529# CONFIG_DEBUG_SPINLOCK is not set
1424CONFIG_DEBUG_MUTEXES=y 1530CONFIG_DEBUG_MUTEXES=y
1425# CONFIG_DEBUG_RWSEMS is not set
1426CONFIG_DEBUG_SPINLOCK_SLEEP=y 1531CONFIG_DEBUG_SPINLOCK_SLEEP=y
1427# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1532# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1428# CONFIG_DEBUG_KOBJECT is not set 1533# CONFIG_DEBUG_KOBJECT is not set
@@ -1432,6 +1537,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
1432# CONFIG_DEBUG_LIST is not set 1537# CONFIG_DEBUG_LIST is not set
1433# CONFIG_FORCED_INLINING is not set 1538# CONFIG_FORCED_INLINING is not set
1434# CONFIG_RCU_TORTURE_TEST is not set 1539# CONFIG_RCU_TORTURE_TEST is not set
1540# CONFIG_FAULT_INJECTION is not set
1435# CONFIG_DEBUG_STACKOVERFLOW is not set 1541# CONFIG_DEBUG_STACKOVERFLOW is not set
1436# CONFIG_DEBUG_STACK_USAGE is not set 1542# CONFIG_DEBUG_STACK_USAGE is not set
1437CONFIG_DEBUGGER=y 1543CONFIG_DEBUGGER=y
@@ -1469,8 +1575,10 @@ CONFIG_CRYPTO_SHA1=m
1469# CONFIG_CRYPTO_GF128MUL is not set 1575# CONFIG_CRYPTO_GF128MUL is not set
1470CONFIG_CRYPTO_ECB=m 1576CONFIG_CRYPTO_ECB=m
1471CONFIG_CRYPTO_CBC=m 1577CONFIG_CRYPTO_CBC=m
1578CONFIG_CRYPTO_PCBC=m
1472# CONFIG_CRYPTO_LRW is not set 1579# CONFIG_CRYPTO_LRW is not set
1473CONFIG_CRYPTO_DES=m 1580CONFIG_CRYPTO_DES=m
1581# CONFIG_CRYPTO_FCRYPT is not set
1474# CONFIG_CRYPTO_BLOWFISH is not set 1582# CONFIG_CRYPTO_BLOWFISH is not set
1475# CONFIG_CRYPTO_TWOFISH is not set 1583# CONFIG_CRYPTO_TWOFISH is not set
1476# CONFIG_CRYPTO_SERPENT is not set 1584# CONFIG_CRYPTO_SERPENT is not set
@@ -1484,6 +1592,7 @@ CONFIG_CRYPTO_DES=m
1484CONFIG_CRYPTO_DEFLATE=m 1592CONFIG_CRYPTO_DEFLATE=m
1485# CONFIG_CRYPTO_MICHAEL_MIC is not set 1593# CONFIG_CRYPTO_MICHAEL_MIC is not set
1486# CONFIG_CRYPTO_CRC32C is not set 1594# CONFIG_CRYPTO_CRC32C is not set
1595# CONFIG_CRYPTO_CAMELLIA is not set
1487# CONFIG_CRYPTO_TEST is not set 1596# CONFIG_CRYPTO_TEST is not set
1488 1597
1489# 1598#
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index c0d2a694fa30..3c7fe2c65b5a 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -685,6 +685,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
685 "non-cacheable mapping\n"); 685 "non-cacheable mapping\n");
686 psize = mmu_vmalloc_psize = MMU_PAGE_4K; 686 psize = mmu_vmalloc_psize = MMU_PAGE_4K;
687 } 687 }
688#ifdef CONFIG_SPE_BASE
689 spu_flush_all_slbs(mm);
690#endif
688 } 691 }
689 if (user_region) { 692 if (user_region) {
690 if (psize != get_paca()->context.user_psize) { 693 if (psize != get_paca()->context.user_psize) {
@@ -759,6 +762,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
759 mmu_psize_defs[MMU_PAGE_4K].sllp; 762 mmu_psize_defs[MMU_PAGE_4K].sllp;
760 get_paca()->context = mm->context; 763 get_paca()->context = mm->context;
761 slb_flush_and_rebolt(); 764 slb_flush_and_rebolt();
765#ifdef CONFIG_SPE_BASE
766 spu_flush_all_slbs(mm);
767#endif
762 } 768 }
763 } 769 }
764 if (mm->context.user_psize == MMU_PAGE_64K) 770 if (mm->context.user_psize == MMU_PAGE_64K)
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 8c77c791f87e..f6ffaaa7a5bf 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -24,6 +24,7 @@
24#include <asm/machdep.h> 24#include <asm/machdep.h>
25#include <asm/cputable.h> 25#include <asm/cputable.h>
26#include <asm/tlb.h> 26#include <asm/tlb.h>
27#include <asm/spu.h>
27 28
28#include <linux/sysctl.h> 29#include <linux/sysctl.h>
29 30
@@ -513,6 +514,9 @@ int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
513 if ((addr + len) > 0x100000000UL) 514 if ((addr + len) > 0x100000000UL)
514 err = open_high_hpage_areas(current->mm, 515 err = open_high_hpage_areas(current->mm,
515 HTLB_AREA_MASK(addr, len)); 516 HTLB_AREA_MASK(addr, len));
517#ifdef CONFIG_SPE_BASE
518 spu_flush_all_slbs(current->mm);
519#endif
516 if (err) { 520 if (err) {
517 printk(KERN_DEBUG "prepare_hugepage_range(%lx, %lx)" 521 printk(KERN_DEBUG "prepare_hugepage_range(%lx, %lx)"
518 " failed (lowmask: 0x%04hx, highmask: 0x%04hx)\n", 522 " failed (lowmask: 0x%04hx, highmask: 0x%04hx)\n",
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index c43999a10deb..eba7a2641dce 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -38,8 +38,61 @@
38const struct spu_management_ops *spu_management_ops; 38const struct spu_management_ops *spu_management_ops;
39const struct spu_priv1_ops *spu_priv1_ops; 39const struct spu_priv1_ops *spu_priv1_ops;
40 40
41static struct list_head spu_list[MAX_NUMNODES];
42static LIST_HEAD(spu_full_list);
43static DEFINE_MUTEX(spu_mutex);
44static spinlock_t spu_list_lock = SPIN_LOCK_UNLOCKED;
45
41EXPORT_SYMBOL_GPL(spu_priv1_ops); 46EXPORT_SYMBOL_GPL(spu_priv1_ops);
42 47
48void spu_invalidate_slbs(struct spu *spu)
49{
50 struct spu_priv2 __iomem *priv2 = spu->priv2;
51
52 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK)
53 out_be64(&priv2->slb_invalidate_all_W, 0UL);
54}
55EXPORT_SYMBOL_GPL(spu_invalidate_slbs);
56
57/* This is called by the MM core when a segment size is changed, to
58 * request a flush of all the SPEs using a given mm
59 */
60void spu_flush_all_slbs(struct mm_struct *mm)
61{
62 struct spu *spu;
63 unsigned long flags;
64
65 spin_lock_irqsave(&spu_list_lock, flags);
66 list_for_each_entry(spu, &spu_full_list, full_list) {
67 if (spu->mm == mm)
68 spu_invalidate_slbs(spu);
69 }
70 spin_unlock_irqrestore(&spu_list_lock, flags);
71}
72
73/* The hack below stinks... try to do something better one of
74 * these days... Does it even work properly with NR_CPUS == 1 ?
75 */
76static inline void mm_needs_global_tlbie(struct mm_struct *mm)
77{
78 int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1;
79
80 /* Global TLBIE broadcast required with SPEs. */
81 __cpus_setall(&mm->cpu_vm_mask, nr);
82}
83
84void spu_associate_mm(struct spu *spu, struct mm_struct *mm)
85{
86 unsigned long flags;
87
88 spin_lock_irqsave(&spu_list_lock, flags);
89 spu->mm = mm;
90 spin_unlock_irqrestore(&spu_list_lock, flags);
91 if (mm)
92 mm_needs_global_tlbie(mm);
93}
94EXPORT_SYMBOL_GPL(spu_associate_mm);
95
43static int __spu_trap_invalid_dma(struct spu *spu) 96static int __spu_trap_invalid_dma(struct spu *spu)
44{ 97{
45 pr_debug("%s\n", __FUNCTION__); 98 pr_debug("%s\n", __FUNCTION__);
@@ -74,6 +127,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
74 struct spu_priv2 __iomem *priv2 = spu->priv2; 127 struct spu_priv2 __iomem *priv2 = spu->priv2;
75 struct mm_struct *mm = spu->mm; 128 struct mm_struct *mm = spu->mm;
76 u64 esid, vsid, llp; 129 u64 esid, vsid, llp;
130 int psize;
77 131
78 pr_debug("%s\n", __FUNCTION__); 132 pr_debug("%s\n", __FUNCTION__);
79 133
@@ -90,22 +144,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
90 case USER_REGION_ID: 144 case USER_REGION_ID:
91#ifdef CONFIG_HUGETLB_PAGE 145#ifdef CONFIG_HUGETLB_PAGE
92 if (in_hugepage_area(mm->context, ea)) 146 if (in_hugepage_area(mm->context, ea))
93 llp = mmu_psize_defs[mmu_huge_psize].sllp; 147 psize = mmu_huge_psize;
94 else 148 else
95#endif 149#endif
96 llp = mmu_psize_defs[mmu_virtual_psize].sllp; 150 psize = mm->context.user_psize;
97 vsid = (get_vsid(mm->context.id, ea) << SLB_VSID_SHIFT) | 151 vsid = (get_vsid(mm->context.id, ea) << SLB_VSID_SHIFT) |
98 SLB_VSID_USER | llp; 152 SLB_VSID_USER;
99 break; 153 break;
100 case VMALLOC_REGION_ID: 154 case VMALLOC_REGION_ID:
101 llp = mmu_psize_defs[mmu_virtual_psize].sllp; 155 if (ea < VMALLOC_END)
156 psize = mmu_vmalloc_psize;
157 else
158 psize = mmu_io_psize;
102 vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | 159 vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) |
103 SLB_VSID_KERNEL | llp; 160 SLB_VSID_KERNEL;
104 break; 161 break;
105 case KERNEL_REGION_ID: 162 case KERNEL_REGION_ID:
106 llp = mmu_psize_defs[mmu_linear_psize].sllp; 163 psize = mmu_linear_psize;
107 vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | 164 vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) |
108 SLB_VSID_KERNEL | llp; 165 SLB_VSID_KERNEL;
109 break; 166 break;
110 default: 167 default:
111 /* Future: support kernel segments so that drivers 168 /* Future: support kernel segments so that drivers
@@ -114,9 +171,10 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
114 pr_debug("invalid region access at %016lx\n", ea); 171 pr_debug("invalid region access at %016lx\n", ea);
115 return 1; 172 return 1;
116 } 173 }
174 llp = mmu_psize_defs[psize].sllp;
117 175
118 out_be64(&priv2->slb_index_W, spu->slb_replace); 176 out_be64(&priv2->slb_index_W, spu->slb_replace);
119 out_be64(&priv2->slb_vsid_RW, vsid); 177 out_be64(&priv2->slb_vsid_RW, vsid | llp);
120 out_be64(&priv2->slb_esid_RW, esid); 178 out_be64(&priv2->slb_esid_RW, esid);
121 179
122 spu->slb_replace++; 180 spu->slb_replace++;
@@ -330,10 +388,6 @@ static void spu_free_irqs(struct spu *spu)
330 free_irq(spu->irqs[2], spu); 388 free_irq(spu->irqs[2], spu);
331} 389}
332 390
333static struct list_head spu_list[MAX_NUMNODES];
334static LIST_HEAD(spu_full_list);
335static DEFINE_MUTEX(spu_mutex);
336
337static void spu_init_channels(struct spu *spu) 391static void spu_init_channels(struct spu *spu)
338{ 392{
339 static const struct { 393 static const struct {
@@ -593,6 +647,7 @@ static int __init create_spu(void *data)
593 struct spu *spu; 647 struct spu *spu;
594 int ret; 648 int ret;
595 static int number; 649 static int number;
650 unsigned long flags;
596 651
597 ret = -ENOMEM; 652 ret = -ENOMEM;
598 spu = kzalloc(sizeof (*spu), GFP_KERNEL); 653 spu = kzalloc(sizeof (*spu), GFP_KERNEL);
@@ -620,8 +675,10 @@ static int __init create_spu(void *data)
620 goto out_free_irqs; 675 goto out_free_irqs;
621 676
622 mutex_lock(&spu_mutex); 677 mutex_lock(&spu_mutex);
678 spin_lock_irqsave(&spu_list_lock, flags);
623 list_add(&spu->list, &spu_list[spu->node]); 679 list_add(&spu->list, &spu_list[spu->node]);
624 list_add(&spu->full_list, &spu_full_list); 680 list_add(&spu->full_list, &spu_full_list);
681 spin_unlock_irqrestore(&spu_list_lock, flags);
625 mutex_unlock(&spu_mutex); 682 mutex_unlock(&spu_mutex);
626 683
627 goto out; 684 goto out;
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index b00653d69c01..505266a568d4 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -63,8 +63,8 @@ static ssize_t
63spufs_mem_read(struct file *file, char __user *buffer, 63spufs_mem_read(struct file *file, char __user *buffer,
64 size_t size, loff_t *pos) 64 size_t size, loff_t *pos)
65{ 65{
66 int ret;
67 struct spu_context *ctx = file->private_data; 66 struct spu_context *ctx = file->private_data;
67 ssize_t ret;
68 68
69 spu_acquire(ctx); 69 spu_acquire(ctx);
70 ret = __spufs_mem_read(ctx, buffer, size, pos); 70 ret = __spufs_mem_read(ctx, buffer, size, pos);
@@ -74,25 +74,29 @@ spufs_mem_read(struct file *file, char __user *buffer,
74 74
75static ssize_t 75static ssize_t
76spufs_mem_write(struct file *file, const char __user *buffer, 76spufs_mem_write(struct file *file, const char __user *buffer,
77 size_t size, loff_t *pos) 77 size_t size, loff_t *ppos)
78{ 78{
79 struct spu_context *ctx = file->private_data; 79 struct spu_context *ctx = file->private_data;
80 char *local_store; 80 char *local_store;
81 loff_t pos = *ppos;
81 int ret; 82 int ret;
82 83
83 size = min_t(ssize_t, LS_SIZE - *pos, size); 84 if (pos < 0)
84 if (size <= 0) 85 return -EINVAL;
86 if (pos > LS_SIZE)
85 return -EFBIG; 87 return -EFBIG;
86 *pos += size; 88 if (size > LS_SIZE - pos)
89 size = LS_SIZE - pos;
87 90
88 spu_acquire(ctx); 91 spu_acquire(ctx);
89
90 local_store = ctx->ops->get_ls(ctx); 92 local_store = ctx->ops->get_ls(ctx);
91 ret = copy_from_user(local_store + *pos - size, 93 ret = copy_from_user(local_store + pos, buffer, size);
92 buffer, size) ? -EFAULT : size;
93
94 spu_release(ctx); 94 spu_release(ctx);
95 return ret; 95
96 if (ret)
97 return -EFAULT;
98 *ppos = pos + size;
99 return size;
96} 100}
97 101
98static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma, 102static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma,
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index 353a8fa07ab8..f95a611ca362 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -143,7 +143,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
143 int ret; 143 int ret;
144 unsigned long runcntl = SPU_RUNCNTL_RUNNABLE; 144 unsigned long runcntl = SPU_RUNCNTL_RUNNABLE;
145 145
146 ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE); 146 ret = spu_acquire_runnable(ctx, 0);
147 if (ret) 147 if (ret)
148 return ret; 148 return ret;
149 149
@@ -155,7 +155,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
155 spu_release(ctx); 155 spu_release(ctx);
156 ret = spu_setup_isolated(ctx); 156 ret = spu_setup_isolated(ctx);
157 if (!ret) 157 if (!ret)
158 ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE); 158 ret = spu_acquire_runnable(ctx, 0);
159 } 159 }
160 160
161 /* if userspace has set the runcntrl register (eg, to issue an 161 /* if userspace has set the runcntrl register (eg, to issue an
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 2f25e68b4bac..39823cec0844 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -127,14 +127,6 @@ static void spu_remove_from_active_list(struct spu *spu)
127 mutex_unlock(&spu_prio->active_mutex[node]); 127 mutex_unlock(&spu_prio->active_mutex[node]);
128} 128}
129 129
130static inline void mm_needs_global_tlbie(struct mm_struct *mm)
131{
132 int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1;
133
134 /* Global TLBIE broadcast required with SPEs. */
135 __cpus_setall(&mm->cpu_vm_mask, nr);
136}
137
138static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier); 130static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier);
139 131
140static void spu_switch_notify(struct spu *spu, struct spu_context *ctx) 132static void spu_switch_notify(struct spu *spu, struct spu_context *ctx)
@@ -167,8 +159,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
167 ctx->spu = spu; 159 ctx->spu = spu;
168 ctx->ops = &spu_hw_ops; 160 ctx->ops = &spu_hw_ops;
169 spu->pid = current->pid; 161 spu->pid = current->pid;
170 spu->mm = ctx->owner; 162 spu_associate_mm(spu, ctx->owner);
171 mm_needs_global_tlbie(spu->mm);
172 spu->ibox_callback = spufs_ibox_callback; 163 spu->ibox_callback = spufs_ibox_callback;
173 spu->wbox_callback = spufs_wbox_callback; 164 spu->wbox_callback = spufs_wbox_callback;
174 spu->stop_callback = spufs_stop_callback; 165 spu->stop_callback = spufs_stop_callback;
@@ -205,7 +196,7 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
205 spu->stop_callback = NULL; 196 spu->stop_callback = NULL;
206 spu->mfc_callback = NULL; 197 spu->mfc_callback = NULL;
207 spu->dma_callback = NULL; 198 spu->dma_callback = NULL;
208 spu->mm = NULL; 199 spu_associate_mm(spu, NULL);
209 spu->pid = 0; 200 spu->pid = 0;
210 ctx->ops = &spu_backing_ops; 201 ctx->ops = &spu_backing_ops;
211 ctx->spu = NULL; 202 ctx->spu = NULL;
@@ -263,7 +254,6 @@ static void spu_prio_wait(struct spu_context *ctx)
263{ 254{
264 DEFINE_WAIT(wait); 255 DEFINE_WAIT(wait);
265 256
266 set_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
267 prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE); 257 prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE);
268 if (!signal_pending(current)) { 258 if (!signal_pending(current)) {
269 mutex_unlock(&ctx->state_mutex); 259 mutex_unlock(&ctx->state_mutex);
@@ -272,7 +262,6 @@ static void spu_prio_wait(struct spu_context *ctx)
272 } 262 }
273 __set_current_state(TASK_RUNNING); 263 __set_current_state(TASK_RUNNING);
274 remove_wait_queue(&ctx->stop_wq, &wait); 264 remove_wait_queue(&ctx->stop_wq, &wait);
275 clear_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
276} 265}
277 266
278/** 267/**
@@ -292,7 +281,7 @@ static void spu_reschedule(struct spu *spu)
292 best = sched_find_first_bit(spu_prio->bitmap); 281 best = sched_find_first_bit(spu_prio->bitmap);
293 if (best < MAX_PRIO) { 282 if (best < MAX_PRIO) {
294 struct spu_context *ctx = spu_grab_context(best); 283 struct spu_context *ctx = spu_grab_context(best);
295 if (ctx && test_bit(SPU_SCHED_WAKE, &ctx->sched_flags)) 284 if (ctx)
296 wake_up(&ctx->stop_wq); 285 wake_up(&ctx->stop_wq);
297 } 286 }
298 spin_unlock(&spu_prio->runq_lock); 287 spin_unlock(&spu_prio->runq_lock);
@@ -414,8 +403,7 @@ int spu_activate(struct spu_context *ctx, unsigned long flags)
414 } 403 }
415 404
416 spu_add_to_rq(ctx); 405 spu_add_to_rq(ctx);
417 if (!(flags & SPU_ACTIVATE_NOWAKE)) 406 spu_prio_wait(ctx);
418 spu_prio_wait(ctx);
419 spu_del_from_rq(ctx); 407 spu_del_from_rq(ctx);
420 } while (!signal_pending(current)); 408 } while (!signal_pending(current));
421 409
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 0c437891dfd5..5c4e47d69d79 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -41,7 +41,7 @@ struct spu_gang;
41 41
42/* ctx->sched_flags */ 42/* ctx->sched_flags */
43enum { 43enum {
44 SPU_SCHED_WAKE = 0, 44 SPU_SCHED_WAKE = 0, /* currently unused */
45}; 45};
46 46
47struct spu_context { 47struct spu_context {
@@ -191,9 +191,7 @@ void spu_forget(struct spu_context *ctx);
191int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags); 191int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags);
192void spu_acquire_saved(struct spu_context *ctx); 192void spu_acquire_saved(struct spu_context *ctx);
193int spu_acquire_exclusive(struct spu_context *ctx); 193int spu_acquire_exclusive(struct spu_context *ctx);
194enum { 194
195 SPU_ACTIVATE_NOWAKE = 1,
196};
197int spu_activate(struct spu_context *ctx, unsigned long flags); 195int spu_activate(struct spu_context *ctx, unsigned long flags);
198void spu_deactivate(struct spu_context *ctx); 196void spu_deactivate(struct spu_context *ctx);
199void spu_yield(struct spu_context *ctx); 197void spu_yield(struct spu_context *ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c
index c08981ff7fc6..fd91c73de34e 100644
--- a/arch/powerpc/platforms/cell/spufs/switch.c
+++ b/arch/powerpc/platforms/cell/spufs/switch.c
@@ -468,26 +468,6 @@ static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu)
468 MFC_CNTL_PURGE_DMA_COMPLETE); 468 MFC_CNTL_PURGE_DMA_COMPLETE);
469} 469}
470 470
471static inline void save_mfc_slbs(struct spu_state *csa, struct spu *spu)
472{
473 struct spu_priv2 __iomem *priv2 = spu->priv2;
474 int i;
475
476 /* Save, Step 29:
477 * If MFC_SR1[R]='1', save SLBs in CSA.
478 */
479 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) {
480 csa->priv2.slb_index_W = in_be64(&priv2->slb_index_W);
481 for (i = 0; i < 8; i++) {
482 out_be64(&priv2->slb_index_W, i);
483 eieio();
484 csa->slb_esid_RW[i] = in_be64(&priv2->slb_esid_RW);
485 csa->slb_vsid_RW[i] = in_be64(&priv2->slb_vsid_RW);
486 eieio();
487 }
488 }
489}
490
491static inline void setup_mfc_sr1(struct spu_state *csa, struct spu *spu) 471static inline void setup_mfc_sr1(struct spu_state *csa, struct spu *spu)
492{ 472{
493 /* Save, Step 30: 473 /* Save, Step 30:
@@ -708,20 +688,6 @@ static inline void resume_mfc_queue(struct spu_state *csa, struct spu *spu)
708 out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE); 688 out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE);
709} 689}
710 690
711static inline void invalidate_slbs(struct spu_state *csa, struct spu *spu)
712{
713 struct spu_priv2 __iomem *priv2 = spu->priv2;
714
715 /* Save, Step 45:
716 * Restore, Step 19:
717 * If MFC_SR1[R]=1, write 0 to SLB_Invalidate_All.
718 */
719 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) {
720 out_be64(&priv2->slb_invalidate_all_W, 0UL);
721 eieio();
722 }
723}
724
725static inline void get_kernel_slb(u64 ea, u64 slb[2]) 691static inline void get_kernel_slb(u64 ea, u64 slb[2])
726{ 692{
727 u64 llp; 693 u64 llp;
@@ -765,7 +731,7 @@ static inline void setup_mfc_slbs(struct spu_state *csa, struct spu *spu)
765 * MFC_SR1[R]=1 (in other words, assume that 731 * MFC_SR1[R]=1 (in other words, assume that
766 * translation is desired by OS environment). 732 * translation is desired by OS environment).
767 */ 733 */
768 invalidate_slbs(csa, spu); 734 spu_invalidate_slbs(spu);
769 get_kernel_slb((unsigned long)&spu_save_code[0], code_slb); 735 get_kernel_slb((unsigned long)&spu_save_code[0], code_slb);
770 get_kernel_slb((unsigned long)csa->lscsa, lscsa_slb); 736 get_kernel_slb((unsigned long)csa->lscsa, lscsa_slb);
771 load_mfc_slb(spu, code_slb, 0); 737 load_mfc_slb(spu, code_slb, 0);
@@ -1718,27 +1684,6 @@ static inline void check_ppuint_mb_stat(struct spu_state *csa, struct spu *spu)
1718 } 1684 }
1719} 1685}
1720 1686
1721static inline void restore_mfc_slbs(struct spu_state *csa, struct spu *spu)
1722{
1723 struct spu_priv2 __iomem *priv2 = spu->priv2;
1724 int i;
1725
1726 /* Restore, Step 68:
1727 * If MFC_SR1[R]='1', restore SLBs from CSA.
1728 */
1729 if (csa->priv1.mfc_sr1_RW & MFC_STATE1_RELOCATE_MASK) {
1730 for (i = 0; i < 8; i++) {
1731 out_be64(&priv2->slb_index_W, i);
1732 eieio();
1733 out_be64(&priv2->slb_esid_RW, csa->slb_esid_RW[i]);
1734 out_be64(&priv2->slb_vsid_RW, csa->slb_vsid_RW[i]);
1735 eieio();
1736 }
1737 out_be64(&priv2->slb_index_W, csa->priv2.slb_index_W);
1738 eieio();
1739 }
1740}
1741
1742static inline void restore_mfc_sr1(struct spu_state *csa, struct spu *spu) 1687static inline void restore_mfc_sr1(struct spu_state *csa, struct spu *spu)
1743{ 1688{
1744 /* Restore, Step 69: 1689 /* Restore, Step 69:
@@ -1875,7 +1820,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu)
1875 set_mfc_tclass_id(prev, spu); /* Step 26. */ 1820 set_mfc_tclass_id(prev, spu); /* Step 26. */
1876 purge_mfc_queue(prev, spu); /* Step 27. */ 1821 purge_mfc_queue(prev, spu); /* Step 27. */
1877 wait_purge_complete(prev, spu); /* Step 28. */ 1822 wait_purge_complete(prev, spu); /* Step 28. */
1878 save_mfc_slbs(prev, spu); /* Step 29. */
1879 setup_mfc_sr1(prev, spu); /* Step 30. */ 1823 setup_mfc_sr1(prev, spu); /* Step 30. */
1880 save_spu_npc(prev, spu); /* Step 31. */ 1824 save_spu_npc(prev, spu); /* Step 31. */
1881 save_spu_privcntl(prev, spu); /* Step 32. */ 1825 save_spu_privcntl(prev, spu); /* Step 32. */
@@ -1987,7 +1931,7 @@ static void harvest(struct spu_state *prev, struct spu *spu)
1987 reset_spu_privcntl(prev, spu); /* Step 16. */ 1931 reset_spu_privcntl(prev, spu); /* Step 16. */
1988 reset_spu_lslr(prev, spu); /* Step 17. */ 1932 reset_spu_lslr(prev, spu); /* Step 17. */
1989 setup_mfc_sr1(prev, spu); /* Step 18. */ 1933 setup_mfc_sr1(prev, spu); /* Step 18. */
1990 invalidate_slbs(prev, spu); /* Step 19. */ 1934 spu_invalidate_slbs(spu); /* Step 19. */
1991 reset_ch_part1(prev, spu); /* Step 20. */ 1935 reset_ch_part1(prev, spu); /* Step 20. */
1992 reset_ch_part2(prev, spu); /* Step 21. */ 1936 reset_ch_part2(prev, spu); /* Step 21. */
1993 enable_interrupts(prev, spu); /* Step 22. */ 1937 enable_interrupts(prev, spu); /* Step 22. */
@@ -2055,7 +1999,7 @@ static void restore_csa(struct spu_state *next, struct spu *spu)
2055 restore_spu_mb(next, spu); /* Step 65. */ 1999 restore_spu_mb(next, spu); /* Step 65. */
2056 check_ppu_mb_stat(next, spu); /* Step 66. */ 2000 check_ppu_mb_stat(next, spu); /* Step 66. */
2057 check_ppuint_mb_stat(next, spu); /* Step 67. */ 2001 check_ppuint_mb_stat(next, spu); /* Step 67. */
2058 restore_mfc_slbs(next, spu); /* Step 68. */ 2002 spu_invalidate_slbs(spu); /* Modified Step 68. */
2059 restore_mfc_sr1(next, spu); /* Step 69. */ 2003 restore_mfc_sr1(next, spu); /* Step 69. */
2060 restore_other_spu_access(next, spu); /* Step 70. */ 2004 restore_other_spu_access(next, spu); /* Step 70. */
2061 restore_spu_runcntl(next, spu); /* Step 71. */ 2005 restore_spu_runcntl(next, spu); /* Step 71. */
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c
index 42354de3f557..2014d2b44449 100644
--- a/arch/powerpc/platforms/ps3/mm.c
+++ b/arch/powerpc/platforms/ps3/mm.c
@@ -294,7 +294,7 @@ static int __init ps3_mm_add_memory(void)
294 unsigned long nr_pages; 294 unsigned long nr_pages;
295 295
296 if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) 296 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
297 return 0; 297 return -ENODEV;
298 298
299 BUG_ON(!mem_init_done); 299 BUG_ON(!mem_init_done);
300 300
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index a9f7e4a39a2a..3c48cce98a5c 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -172,7 +172,7 @@ int __init ps3_system_bus_init(void)
172 int result; 172 int result;
173 173
174 if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) 174 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
175 return 0; 175 return -ENODEV;
176 176
177 result = bus_register(&ps3_system_bus_type); 177 result = bus_register(&ps3_system_bus_type);
178 BUG_ON(result); 178 BUG_ON(result);
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c
index 113bd48a89bd..fc874e63a499 100644
--- a/arch/sparc/kernel/process.c
+++ b/arch/sparc/kernel/process.c
@@ -348,7 +348,7 @@ void exit_thread(void)
348#ifndef CONFIG_SMP 348#ifndef CONFIG_SMP
349 if(last_task_used_math == current) { 349 if(last_task_used_math == current) {
350#else 350#else
351 if(current_thread_info()->flags & _TIF_USEDFPU) { 351 if (test_thread_flag(TIF_USEDFPU)) {
352#endif 352#endif
353 /* Keep process from leaving FPU in a bogon state. */ 353 /* Keep process from leaving FPU in a bogon state. */
354 put_psr(get_psr() | PSR_EF); 354 put_psr(get_psr() | PSR_EF);
@@ -357,7 +357,7 @@ void exit_thread(void)
357#ifndef CONFIG_SMP 357#ifndef CONFIG_SMP
358 last_task_used_math = NULL; 358 last_task_used_math = NULL;
359#else 359#else
360 current_thread_info()->flags &= ~_TIF_USEDFPU; 360 clear_thread_flag(TIF_USEDFPU);
361#endif 361#endif
362 } 362 }
363} 363}
@@ -371,7 +371,7 @@ void flush_thread(void)
371#ifndef CONFIG_SMP 371#ifndef CONFIG_SMP
372 if(last_task_used_math == current) { 372 if(last_task_used_math == current) {
373#else 373#else
374 if(current_thread_info()->flags & _TIF_USEDFPU) { 374 if (test_thread_flag(TIF_USEDFPU)) {
375#endif 375#endif
376 /* Clean the fpu. */ 376 /* Clean the fpu. */
377 put_psr(get_psr() | PSR_EF); 377 put_psr(get_psr() | PSR_EF);
@@ -380,7 +380,7 @@ void flush_thread(void)
380#ifndef CONFIG_SMP 380#ifndef CONFIG_SMP
381 last_task_used_math = NULL; 381 last_task_used_math = NULL;
382#else 382#else
383 current_thread_info()->flags &= ~_TIF_USEDFPU; 383 clear_thread_flag(TIF_USEDFPU);
384#endif 384#endif
385 } 385 }
386 386
@@ -466,13 +466,13 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
466#ifndef CONFIG_SMP 466#ifndef CONFIG_SMP
467 if(last_task_used_math == current) { 467 if(last_task_used_math == current) {
468#else 468#else
469 if(current_thread_info()->flags & _TIF_USEDFPU) { 469 if (test_thread_flag(TIF_USEDFPU)) {
470#endif 470#endif
471 put_psr(get_psr() | PSR_EF); 471 put_psr(get_psr() | PSR_EF);
472 fpsave(&p->thread.float_regs[0], &p->thread.fsr, 472 fpsave(&p->thread.float_regs[0], &p->thread.fsr,
473 &p->thread.fpqueue[0], &p->thread.fpqdepth); 473 &p->thread.fpqueue[0], &p->thread.fpqdepth);
474#ifdef CONFIG_SMP 474#ifdef CONFIG_SMP
475 current_thread_info()->flags &= ~_TIF_USEDFPU; 475 clear_thread_flag(TIF_USEDFPU);
476#endif 476#endif
477 } 477 }
478 478
@@ -609,13 +609,13 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs)
609 return 1; 609 return 1;
610 } 610 }
611#ifdef CONFIG_SMP 611#ifdef CONFIG_SMP
612 if (current_thread_info()->flags & _TIF_USEDFPU) { 612 if (test_thread_flag(TIF_USEDFPU)) {
613 put_psr(get_psr() | PSR_EF); 613 put_psr(get_psr() | PSR_EF);
614 fpsave(&current->thread.float_regs[0], &current->thread.fsr, 614 fpsave(&current->thread.float_regs[0], &current->thread.fsr,
615 &current->thread.fpqueue[0], &current->thread.fpqdepth); 615 &current->thread.fpqueue[0], &current->thread.fpqdepth);
616 if (regs != NULL) { 616 if (regs != NULL) {
617 regs->psr &= ~(PSR_EF); 617 regs->psr &= ~(PSR_EF);
618 current_thread_info()->flags &= ~(_TIF_USEDFPU); 618 clear_thread_flag(TIF_USEDFPU);
619 } 619 }
620 } 620 }
621#else 621#else
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c
index 6a70d215fd04..527687afc1c4 100644
--- a/arch/sparc/kernel/traps.c
+++ b/arch/sparc/kernel/traps.c
@@ -259,7 +259,7 @@ void do_fpd_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc,
259 } else { 259 } else {
260 fpload(&current->thread.float_regs[0], &current->thread.fsr); 260 fpload(&current->thread.float_regs[0], &current->thread.fsr);
261 } 261 }
262 current_thread_info()->flags |= _TIF_USEDFPU; 262 set_thread_flag(TIF_USEDFPU);
263#endif 263#endif
264} 264}
265 265
@@ -290,7 +290,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc,
290#ifndef CONFIG_SMP 290#ifndef CONFIG_SMP
291 if(!fpt) { 291 if(!fpt) {
292#else 292#else
293 if(!(task_thread_info(fpt)->flags & _TIF_USEDFPU)) { 293 if (!test_tsk_thread_flag(fpt, TIF_USEDFPU)) {
294#endif 294#endif
295 fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth); 295 fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth);
296 regs->psr &= ~PSR_EF; 296 regs->psr &= ~PSR_EF;
@@ -333,7 +333,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc,
333 /* nope, better SIGFPE the offending process... */ 333 /* nope, better SIGFPE the offending process... */
334 334
335#ifdef CONFIG_SMP 335#ifdef CONFIG_SMP
336 task_thread_info(fpt)->flags &= ~_TIF_USEDFPU; 336 clear_tsk_thread_flag(fpt, TIF_USEDFPU);
337#endif 337#endif
338 if(psr & PSR_PS) { 338 if(psr & PSR_PS) {
339 /* The first fsr store/load we tried trapped, 339 /* The first fsr store/load we tried trapped,
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index 7d75cd4eb297..b291060c25a6 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -413,8 +413,13 @@ void flush_thread(void)
413 struct thread_info *t = current_thread_info(); 413 struct thread_info *t = current_thread_info();
414 struct mm_struct *mm; 414 struct mm_struct *mm;
415 415
416 if (t->flags & _TIF_ABI_PENDING) 416 if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
417 t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT); 417 clear_ti_thread_flag(t, TIF_ABI_PENDING);
418 if (test_ti_thread_flag(t, TIF_32BIT))
419 clear_ti_thread_flag(t, TIF_32BIT);
420 else
421 set_ti_thread_flag(t, TIF_32BIT);
422 }
418 423
419 mm = t->task->mm; 424 mm = t->task->mm;
420 if (mm) 425 if (mm)
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 7c49e103cf8f..e2ce4a9c1c92 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -7,6 +7,7 @@ menu "ACPI (Advanced Configuration and Power Interface) Support"
7 depends on !X86_VISWS 7 depends on !X86_VISWS
8 depends on !IA64_HP_SIM 8 depends on !IA64_HP_SIM
9 depends on IA64 || X86 9 depends on IA64 || X86
10 depends on PM
10 11
11config ACPI 12config ACPI
12 bool "ACPI Support" 13 bool "ACPI Support"
@@ -243,6 +244,17 @@ config ACPI_IBM_DOCK
243 244
244 If you are not sure, say N here. 245 If you are not sure, say N here.
245 246
247config ACPI_IBM_BAY
248 bool "Legacy Removable Bay Support"
249 depends on ACPI_IBM
250 default y
251 ---help---
252 Allows the ibm_acpi driver to handle removable bays. It will allow
253 disabling the device in the bay, and also generate notifications when
254 the bay lever is ejected or inserted.
255
256 If you are not sure, say Y here.
257
246config ACPI_TOSHIBA 258config ACPI_TOSHIBA
247 tristate "Toshiba Laptop Extras" 259 tristate "Toshiba Laptop Extras"
248 depends on X86 260 depends on X86
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index f289fd41e77d..3ec110ce00c8 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -79,11 +79,17 @@ static int __init blacklist_by_year(void)
79{ 79{
80 int year = dmi_get_year(DMI_BIOS_DATE); 80 int year = dmi_get_year(DMI_BIOS_DATE);
81 /* Doesn't exist? Likely an old system */ 81 /* Doesn't exist? Likely an old system */
82 if (year == -1) 82 if (year == -1) {
83 printk(KERN_ERR PREFIX "no DMI BIOS year, "
84 "acpi=force is required to enable ACPI\n" );
83 return 1; 85 return 1;
86 }
84 /* 0? Likely a buggy new BIOS */ 87 /* 0? Likely a buggy new BIOS */
85 if (year == 0) 88 if (year == 0) {
89 printk(KERN_ERR PREFIX "DMI BIOS year==0, "
90 "assuming ACPI-capable machine\n" );
86 return 0; 91 return 0;
92 }
87 if (year < CONFIG_ACPI_BLACKLIST_YEAR) { 93 if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
88 printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), " 94 printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "
89 "acpi=force is required to enable ACPI\n", 95 "acpi=force is required to enable ACPI\n",
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index ab6888373795..a802962ff2b4 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -100,6 +100,7 @@ static struct acpi_ec {
100 unsigned long global_lock; 100 unsigned long global_lock;
101 struct mutex lock; 101 struct mutex lock;
102 atomic_t query_pending; 102 atomic_t query_pending;
103 atomic_t event_count;
103 atomic_t leaving_burst; /* 0 : No, 1 : Yes, 2: abort */ 104 atomic_t leaving_burst; /* 0 : No, 1 : Yes, 2: abort */
104 wait_queue_head_t wait; 105 wait_queue_head_t wait;
105} *ec_ecdt; 106} *ec_ecdt;
@@ -131,10 +132,12 @@ static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data)
131 outb(data, ec->data_addr); 132 outb(data, ec->data_addr);
132} 133}
133 134
134static inline int acpi_ec_check_status(struct acpi_ec *ec, enum ec_event event) 135static inline int acpi_ec_check_status(struct acpi_ec *ec, enum ec_event event,
136 unsigned old_count)
135{ 137{
136 u8 status = acpi_ec_read_status(ec); 138 u8 status = acpi_ec_read_status(ec);
137 139 if (old_count == atomic_read(&ec->event_count))
140 return 0;
138 if (event == ACPI_EC_EVENT_OBF_1) { 141 if (event == ACPI_EC_EVENT_OBF_1) {
139 if (status & ACPI_EC_FLAG_OBF) 142 if (status & ACPI_EC_FLAG_OBF)
140 return 1; 143 return 1;
@@ -146,19 +149,19 @@ static inline int acpi_ec_check_status(struct acpi_ec *ec, enum ec_event event)
146 return 0; 149 return 0;
147} 150}
148 151
149static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event) 152static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, unsigned count)
150{ 153{
151 if (acpi_ec_mode == EC_POLL) { 154 if (acpi_ec_mode == EC_POLL) {
152 unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY); 155 unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY);
153 while (time_before(jiffies, delay)) { 156 while (time_before(jiffies, delay)) {
154 if (acpi_ec_check_status(ec, event)) 157 if (acpi_ec_check_status(ec, event, 0))
155 return 0; 158 return 0;
156 } 159 }
157 } else { 160 } else {
158 if (wait_event_timeout(ec->wait, 161 if (wait_event_timeout(ec->wait,
159 acpi_ec_check_status(ec, event), 162 acpi_ec_check_status(ec, event, count),
160 msecs_to_jiffies(ACPI_EC_DELAY)) || 163 msecs_to_jiffies(ACPI_EC_DELAY)) ||
161 acpi_ec_check_status(ec, event)) { 164 acpi_ec_check_status(ec, event, 0)) {
162 return 0; 165 return 0;
163 } else { 166 } else {
164 printk(KERN_ERR PREFIX "acpi_ec_wait timeout," 167 printk(KERN_ERR PREFIX "acpi_ec_wait timeout,"
@@ -225,21 +228,22 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, u8 command,
225 u8 * rdata, unsigned rdata_len) 228 u8 * rdata, unsigned rdata_len)
226{ 229{
227 int result = 0; 230 int result = 0;
228 231 unsigned count = atomic_read(&ec->event_count);
229 acpi_ec_write_cmd(ec, command); 232 acpi_ec_write_cmd(ec, command);
230 233
231 for (; wdata_len > 0; --wdata_len) { 234 for (; wdata_len > 0; --wdata_len) {
232 result = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0); 235 result = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0, count);
233 if (result) { 236 if (result) {
234 printk(KERN_ERR PREFIX 237 printk(KERN_ERR PREFIX
235 "write_cmd timeout, command = %d\n", command); 238 "write_cmd timeout, command = %d\n", command);
236 goto end; 239 goto end;
237 } 240 }
241 count = atomic_read(&ec->event_count);
238 acpi_ec_write_data(ec, *(wdata++)); 242 acpi_ec_write_data(ec, *(wdata++));
239 } 243 }
240 244
241 if (!rdata_len) { 245 if (!rdata_len) {
242 result = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0); 246 result = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0, count);
243 if (result) { 247 if (result) {
244 printk(KERN_ERR PREFIX 248 printk(KERN_ERR PREFIX
245 "finish-write timeout, command = %d\n", command); 249 "finish-write timeout, command = %d\n", command);
@@ -250,13 +254,13 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, u8 command,
250 } 254 }
251 255
252 for (; rdata_len > 0; --rdata_len) { 256 for (; rdata_len > 0; --rdata_len) {
253 result = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF_1); 257 result = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF_1, count);
254 if (result) { 258 if (result) {
255 printk(KERN_ERR PREFIX "read timeout, command = %d\n", 259 printk(KERN_ERR PREFIX "read timeout, command = %d\n",
256 command); 260 command);
257 goto end; 261 goto end;
258 } 262 }
259 263 count = atomic_read(&ec->event_count);
260 *(rdata++) = acpi_ec_read_data(ec); 264 *(rdata++) = acpi_ec_read_data(ec);
261 } 265 }
262 end: 266 end:
@@ -288,7 +292,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, u8 command,
288 /* Make sure GPE is enabled before doing transaction */ 292 /* Make sure GPE is enabled before doing transaction */
289 acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR); 293 acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR);
290 294
291 status = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0); 295 status = acpi_ec_wait(ec, ACPI_EC_EVENT_IBF_0, 0);
292 if (status) { 296 if (status) {
293 printk(KERN_DEBUG PREFIX 297 printk(KERN_DEBUG PREFIX
294 "input buffer is not empty, aborting transaction\n"); 298 "input buffer is not empty, aborting transaction\n");
@@ -369,8 +373,8 @@ int ec_write(u8 addr, u8 val)
369EXPORT_SYMBOL(ec_write); 373EXPORT_SYMBOL(ec_write);
370 374
371int ec_transaction(u8 command, 375int ec_transaction(u8 command,
372 const u8 * wdata, unsigned wdata_len, 376 const u8 * wdata, unsigned wdata_len,
373 u8 * rdata, unsigned rdata_len) 377 u8 * rdata, unsigned rdata_len)
374{ 378{
375 struct acpi_ec *ec; 379 struct acpi_ec *ec;
376 380
@@ -435,7 +439,7 @@ static u32 acpi_ec_gpe_handler(void *data)
435 acpi_status status = AE_OK; 439 acpi_status status = AE_OK;
436 u8 value; 440 u8 value;
437 struct acpi_ec *ec = (struct acpi_ec *)data; 441 struct acpi_ec *ec = (struct acpi_ec *)data;
438 442 atomic_inc(&ec->event_count);
439 if (acpi_ec_mode == EC_INTR) { 443 if (acpi_ec_mode == EC_INTR) {
440 wake_up(&ec->wait); 444 wake_up(&ec->wait);
441 } 445 }
@@ -633,6 +637,7 @@ static int acpi_ec_add(struct acpi_device *device)
633 ec->uid = -1; 637 ec->uid = -1;
634 mutex_init(&ec->lock); 638 mutex_init(&ec->lock);
635 atomic_set(&ec->query_pending, 0); 639 atomic_set(&ec->query_pending, 0);
640 atomic_set(&ec->event_count, 1);
636 if (acpi_ec_mode == EC_INTR) { 641 if (acpi_ec_mode == EC_INTR) {
637 atomic_set(&ec->leaving_burst, 1); 642 atomic_set(&ec->leaving_burst, 1);
638 init_waitqueue_head(&ec->wait); 643 init_waitqueue_head(&ec->wait);
@@ -807,6 +812,7 @@ acpi_fake_ecdt_callback(acpi_handle handle,
807 acpi_status status; 812 acpi_status status;
808 813
809 mutex_init(&ec_ecdt->lock); 814 mutex_init(&ec_ecdt->lock);
815 atomic_set(&ec_ecdt->event_count, 1);
810 if (acpi_ec_mode == EC_INTR) { 816 if (acpi_ec_mode == EC_INTR) {
811 init_waitqueue_head(&ec_ecdt->wait); 817 init_waitqueue_head(&ec_ecdt->wait);
812 } 818 }
@@ -888,6 +894,7 @@ static int __init acpi_ec_get_real_ecdt(void)
888 return -ENOMEM; 894 return -ENOMEM;
889 895
890 mutex_init(&ec_ecdt->lock); 896 mutex_init(&ec_ecdt->lock);
897 atomic_set(&ec_ecdt->event_count, 1);
891 if (acpi_ec_mode == EC_INTR) { 898 if (acpi_ec_mode == EC_INTR) {
892 init_waitqueue_head(&ec_ecdt->wait); 899 init_waitqueue_head(&ec_ecdt->wait);
893 } 900 }
@@ -1016,8 +1023,7 @@ static int __init acpi_ec_set_intr_mode(char *str)
1016 acpi_ec_mode = EC_POLL; 1023 acpi_ec_mode = EC_POLL;
1017 } 1024 }
1018 acpi_ec_driver.ops.add = acpi_ec_add; 1025 acpi_ec_driver.ops.add = acpi_ec_add;
1019 printk(KERN_NOTICE PREFIX "%s mode.\n", 1026 printk(KERN_NOTICE PREFIX "%s mode.\n", intr ? "interrupt" : "polling");
1020 intr ? "interrupt" : "polling");
1021 1027
1022 return 1; 1028 return 1;
1023} 1029}
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c
index d572700197f3..8dcade63b04b 100644
--- a/drivers/acpi/events/evmisc.c
+++ b/drivers/acpi/events/evmisc.c
@@ -423,6 +423,8 @@ static acpi_status acpi_ev_remove_global_lock_handler(void)
423 * the global lock appear as a standard mutex on the OS side. 423 * the global lock appear as a standard mutex on the OS side.
424 * 424 *
425 *****************************************************************************/ 425 *****************************************************************************/
426static acpi_thread_id acpi_ev_global_lock_thread_id;
427static int acpi_ev_global_lock_acquired;
426 428
427acpi_status acpi_ev_acquire_global_lock(u16 timeout) 429acpi_status acpi_ev_acquire_global_lock(u16 timeout)
428{ 430{
@@ -435,11 +437,24 @@ acpi_status acpi_ev_acquire_global_lock(u16 timeout)
435 * Only one thread can acquire the GL at a time, the global_lock_mutex 437 * Only one thread can acquire the GL at a time, the global_lock_mutex
436 * enforces this. This interface releases the interpreter if we must wait. 438 * enforces this. This interface releases the interpreter if we must wait.
437 */ 439 */
438 status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, timeout); 440 status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, 0);
441 if (status == AE_TIME) {
442 if (acpi_ev_global_lock_thread_id == acpi_os_get_thread_id()) {
443 acpi_ev_global_lock_acquired++;
444 return AE_OK;
445 }
446 }
447
448 if (ACPI_FAILURE(status)) {
449 status = acpi_ex_system_wait_mutex(acpi_gbl_global_lock_mutex, timeout);
450 }
439 if (ACPI_FAILURE(status)) { 451 if (ACPI_FAILURE(status)) {
440 return_ACPI_STATUS(status); 452 return_ACPI_STATUS(status);
441 } 453 }
442 454
455 acpi_ev_global_lock_thread_id = acpi_os_get_thread_id();
456 acpi_ev_global_lock_acquired++;
457
443 /* 458 /*
444 * Make sure that a global lock actually exists. If not, just treat 459 * Make sure that a global lock actually exists. If not, just treat
445 * the lock as a standard mutex. 460 * the lock as a standard mutex.
@@ -506,6 +521,11 @@ acpi_status acpi_ev_release_global_lock(void)
506 return_ACPI_STATUS(AE_NOT_ACQUIRED); 521 return_ACPI_STATUS(AE_NOT_ACQUIRED);
507 } 522 }
508 523
524 acpi_ev_global_lock_acquired--;
525 if (acpi_ev_global_lock_acquired > 0) {
526 return AE_OK;
527 }
528
509 if (acpi_gbl_global_lock_present) { 529 if (acpi_gbl_global_lock_present) {
510 530
511 /* Allow any thread to release the lock */ 531 /* Allow any thread to release the lock */
@@ -529,7 +549,8 @@ acpi_status acpi_ev_release_global_lock(void)
529 acpi_gbl_global_lock_acquired = FALSE; 549 acpi_gbl_global_lock_acquired = FALSE;
530 550
531 /* Release the local GL mutex */ 551 /* Release the local GL mutex */
532 552 acpi_ev_global_lock_thread_id = 0;
553 acpi_ev_global_lock_acquired = 0;
533 acpi_os_release_mutex(acpi_gbl_global_lock_mutex); 554 acpi_os_release_mutex(acpi_gbl_global_lock_mutex);
534 return_ACPI_STATUS(status); 555 return_ACPI_STATUS(status);
535} 556}
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c
index 4cc534e36e81..36901362fd24 100644
--- a/drivers/acpi/ibm_acpi.c
+++ b/drivers/acpi/ibm_acpi.c
@@ -86,6 +86,7 @@
86 86
87#include <linux/proc_fs.h> 87#include <linux/proc_fs.h>
88#include <linux/backlight.h> 88#include <linux/backlight.h>
89#include <linux/fb.h>
89#include <asm/uaccess.h> 90#include <asm/uaccess.h>
90 91
91#include <linux/dmi.h> 92#include <linux/dmi.h>
@@ -157,6 +158,7 @@ IBM_HANDLE(dock, root, "\\_SB.GDCK", /* X30, X31, X40 */
157 "\\_SB.PCI.ISA.SLCE", /* 570 */ 158 "\\_SB.PCI.ISA.SLCE", /* 570 */
158 ); /* A21e,G4x,R30,R31,R32,R40,R40e,R50e */ 159 ); /* A21e,G4x,R30,R31,R32,R40,R40e,R50e */
159#endif 160#endif
161#ifdef CONFIG_ACPI_IBM_BAY
160IBM_HANDLE(bay, root, "\\_SB.PCI.IDE.SECN.MAST", /* 570 */ 162IBM_HANDLE(bay, root, "\\_SB.PCI.IDE.SECN.MAST", /* 570 */
161 "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */ 163 "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */
162 "\\_SB.PCI0.SATA.SCND.MSTR", /* T60, X60, Z60 */ 164 "\\_SB.PCI0.SATA.SCND.MSTR", /* T60, X60, Z60 */
@@ -174,6 +176,7 @@ IBM_HANDLE(bay2, root, "\\_SB.PCI0.IDE0.PRIM.SLAV", /* A3x, R32 */
174IBM_HANDLE(bay2_ej, bay2, "_EJ3", /* 600e/x, 770e, A3x */ 176IBM_HANDLE(bay2_ej, bay2, "_EJ3", /* 600e/x, 770e, A3x */
175 "_EJ0", /* 770x */ 177 "_EJ0", /* 770x */
176 ); /* all others */ 178 ); /* all others */
179#endif /* CONFIG_ACPI_IBM_BAY */
177 180
178/* don't list other alternatives as we install a notify handler on the 570 */ 181/* don't list other alternatives as we install a notify handler on the 570 */
179IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */ 182IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */
@@ -1044,6 +1047,7 @@ static int light_write(char *buf)
1044 return 0; 1047 return 0;
1045} 1048}
1046 1049
1050#if defined(CONFIG_ACPI_IBM_DOCK) || defined(CONFIG_ACPI_IBM_BAY)
1047static int _sta(acpi_handle handle) 1051static int _sta(acpi_handle handle)
1048{ 1052{
1049 int status; 1053 int status;
@@ -1053,6 +1057,7 @@ static int _sta(acpi_handle handle)
1053 1057
1054 return status; 1058 return status;
1055} 1059}
1060#endif
1056 1061
1057#ifdef CONFIG_ACPI_IBM_DOCK 1062#ifdef CONFIG_ACPI_IBM_DOCK
1058#define dock_docked() (_sta(dock_handle) & 1) 1063#define dock_docked() (_sta(dock_handle) & 1)
@@ -1119,6 +1124,7 @@ static void dock_notify(struct ibm_struct *ibm, u32 event)
1119} 1124}
1120#endif 1125#endif
1121 1126
1127#ifdef CONFIG_ACPI_IBM_BAY
1122static int bay_status_supported; 1128static int bay_status_supported;
1123static int bay_status2_supported; 1129static int bay_status2_supported;
1124static int bay_eject_supported; 1130static int bay_eject_supported;
@@ -1194,6 +1200,7 @@ static void bay_notify(struct ibm_struct *ibm, u32 event)
1194{ 1200{
1195 acpi_bus_generate_event(ibm->device, event, 0); 1201 acpi_bus_generate_event(ibm->device, event, 0);
1196} 1202}
1203#endif /* CONFIG_ACPI_IBM_BAY */
1197 1204
1198static int cmos_read(char *p) 1205static int cmos_read(char *p)
1199{ 1206{
@@ -1701,7 +1708,10 @@ static int brightness_write(char *buf)
1701 1708
1702static int brightness_update_status(struct backlight_device *bd) 1709static int brightness_update_status(struct backlight_device *bd)
1703{ 1710{
1704 return brightness_set(bd->props.brightness); 1711 return brightness_set(
1712 (bd->props.fb_blank == FB_BLANK_UNBLANK &&
1713 bd->props.power == FB_BLANK_UNBLANK) ?
1714 bd->props.brightness : 0);
1705} 1715}
1706 1716
1707static struct backlight_ops ibm_backlight_data = { 1717static struct backlight_ops ibm_backlight_data = {
@@ -1711,6 +1721,12 @@ static struct backlight_ops ibm_backlight_data = {
1711 1721
1712static int brightness_init(void) 1722static int brightness_init(void)
1713{ 1723{
1724 int b;
1725
1726 b = brightness_get(NULL);
1727 if (b < 0)
1728 return b;
1729
1714 ibm_backlight_device = backlight_device_register("ibm", NULL, NULL, 1730 ibm_backlight_device = backlight_device_register("ibm", NULL, NULL,
1715 &ibm_backlight_data); 1731 &ibm_backlight_data);
1716 if (IS_ERR(ibm_backlight_device)) { 1732 if (IS_ERR(ibm_backlight_device)) {
@@ -1718,7 +1734,9 @@ static int brightness_init(void)
1718 return PTR_ERR(ibm_backlight_device); 1734 return PTR_ERR(ibm_backlight_device);
1719 } 1735 }
1720 1736
1721 ibm_backlight_device->props.max_brightness = 7; 1737 ibm_backlight_device->props.max_brightness = 7;
1738 ibm_backlight_device->props.brightness = b;
1739 backlight_update_status(ibm_backlight_device);
1722 1740
1723 return 0; 1741 return 0;
1724} 1742}
@@ -2353,6 +2371,7 @@ static struct ibm_struct ibms[] = {
2353 .type = ACPI_SYSTEM_NOTIFY, 2371 .type = ACPI_SYSTEM_NOTIFY,
2354 }, 2372 },
2355#endif 2373#endif
2374#ifdef CONFIG_ACPI_IBM_BAY
2356 { 2375 {
2357 .name = "bay", 2376 .name = "bay",
2358 .init = bay_init, 2377 .init = bay_init,
@@ -2362,6 +2381,7 @@ static struct ibm_struct ibms[] = {
2362 .handle = &bay_handle, 2381 .handle = &bay_handle,
2363 .type = ACPI_SYSTEM_NOTIFY, 2382 .type = ACPI_SYSTEM_NOTIFY,
2364 }, 2383 },
2384#endif /* CONFIG_ACPI_IBM_BAY */
2365 { 2385 {
2366 .name = "cmos", 2386 .name = "cmos",
2367 .read = cmos_read, 2387 .read = cmos_read,
@@ -2647,7 +2667,9 @@ IBM_PARAM(light);
2647#ifdef CONFIG_ACPI_IBM_DOCK 2667#ifdef CONFIG_ACPI_IBM_DOCK
2648IBM_PARAM(dock); 2668IBM_PARAM(dock);
2649#endif 2669#endif
2670#ifdef CONFIG_ACPI_IBM_BAY
2650IBM_PARAM(bay); 2671IBM_PARAM(bay);
2672#endif /* CONFIG_ACPI_IBM_BAY */
2651IBM_PARAM(cmos); 2673IBM_PARAM(cmos);
2652IBM_PARAM(led); 2674IBM_PARAM(led);
2653IBM_PARAM(beep); 2675IBM_PARAM(beep);
@@ -2723,12 +2745,14 @@ static int __init acpi_ibm_init(void)
2723 IBM_HANDLE_INIT(dock); 2745 IBM_HANDLE_INIT(dock);
2724#endif 2746#endif
2725 IBM_HANDLE_INIT(pci); 2747 IBM_HANDLE_INIT(pci);
2748#ifdef CONFIG_ACPI_IBM_BAY
2726 IBM_HANDLE_INIT(bay); 2749 IBM_HANDLE_INIT(bay);
2727 if (bay_handle) 2750 if (bay_handle)
2728 IBM_HANDLE_INIT(bay_ej); 2751 IBM_HANDLE_INIT(bay_ej);
2729 IBM_HANDLE_INIT(bay2); 2752 IBM_HANDLE_INIT(bay2);
2730 if (bay2_handle) 2753 if (bay2_handle)
2731 IBM_HANDLE_INIT(bay2_ej); 2754 IBM_HANDLE_INIT(bay2_ej);
2755#endif /* CONFIG_ACPI_IBM_BAY */
2732 IBM_HANDLE_INIT(beep); 2756 IBM_HANDLE_INIT(beep);
2733 IBM_HANDLE_INIT(ecrd); 2757 IBM_HANDLE_INIT(ecrd);
2734 IBM_HANDLE_INIT(ecwr); 2758 IBM_HANDLE_INIT(ecwr);
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index 1ef338545dfe..4ffecd179702 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -436,8 +436,6 @@ int acpi_power_transition(struct acpi_device *device, int state)
436 cl = &device->power.states[device->power.state].resources; 436 cl = &device->power.states[device->power.state].resources;
437 tl = &device->power.states[state].resources; 437 tl = &device->power.states[state].resources;
438 438
439 device->power.state = ACPI_STATE_UNKNOWN;
440
441 if (!cl->count && !tl->count) { 439 if (!cl->count && !tl->count) {
442 result = -ENODEV; 440 result = -ENODEV;
443 goto end; 441 goto end;
@@ -468,12 +466,15 @@ int acpi_power_transition(struct acpi_device *device, int state)
468 goto end; 466 goto end;
469 } 467 }
470 468
471 /* We shouldn't change the state till all above operations succeed */ 469 end:
472 device->power.state = state; 470 if (result) {
473 end: 471 device->power.state = ACPI_STATE_UNKNOWN;
474 if (result)
475 printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n", 472 printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n",
476 device->pnp.bus_id, state); 473 device->pnp.bus_id, state);
474 } else {
475 /* We shouldn't change the state till all above operations succeed */
476 device->power.state = state;
477 }
477 478
478 return result; 479 return result;
479} 480}
@@ -687,13 +688,6 @@ static int acpi_power_resume(struct acpi_device *device)
687 return result; 688 return result;
688 689
689 mutex_lock(&resource->resource_lock); 690 mutex_lock(&resource->resource_lock);
690 if ((resource->state == ACPI_POWER_RESOURCE_STATE_ON) &&
691 list_empty(&resource->reference)) {
692 mutex_unlock(&resource->resource_lock);
693 result = acpi_power_off_device(device->handle, NULL);
694 return result;
695 }
696
697 if ((resource->state == ACPI_POWER_RESOURCE_STATE_OFF) && 691 if ((resource->state == ACPI_POWER_RESOURCE_STATE_OFF) &&
698 !list_empty(&resource->reference)) { 692 !list_empty(&resource->reference)) {
699 ref = container_of(resource->reference.next, struct acpi_power_reference, node); 693 ref = container_of(resource->reference.next, struct acpi_power_reference, node);
diff --git a/drivers/acpi/resources/rscreate.c b/drivers/acpi/resources/rscreate.c
index 1358c06a969c..cc48ab05676c 100644
--- a/drivers/acpi/resources/rscreate.c
+++ b/drivers/acpi/resources/rscreate.c
@@ -191,6 +191,9 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
191 user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer); 191 user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
192 192
193 for (index = 0; index < number_of_elements; index++) { 193 for (index = 0; index < number_of_elements; index++) {
194 int source_name_index = 2;
195 int source_index_index = 3;
196
194 /* 197 /*
195 * Point user_prt past this current structure 198 * Point user_prt past this current structure
196 * 199 *
@@ -261,10 +264,28 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
261 } 264 }
262 265
263 /* 266 /*
267 * If BIOS erroneously reversed the _PRT source_name and source_index,
268 * then reverse them back.
269 */
270 if (ACPI_GET_OBJECT_TYPE (sub_object_list[3]) != ACPI_TYPE_INTEGER) {
271 if (acpi_gbl_enable_interpreter_slack) {
272 source_name_index = 3;
273 source_index_index = 2;
274 printk(KERN_WARNING "ACPI: Handling Garbled _PRT entry\n");
275 } else {
276 ACPI_ERROR((AE_INFO,
277 "(PRT[%X].source_index) Need Integer, found %s",
278 index,
279 acpi_ut_get_object_type_name(sub_object_list[3])));
280 return_ACPI_STATUS(AE_BAD_DATA);
281 }
282 }
283
284 /*
264 * 3) Third subobject: Dereference the PRT.source_name 285 * 3) Third subobject: Dereference the PRT.source_name
265 * The name may be unresolved (slack mode), so allow a null object 286 * The name may be unresolved (slack mode), so allow a null object
266 */ 287 */
267 obj_desc = sub_object_list[2]; 288 obj_desc = sub_object_list[source_name_index];
268 if (obj_desc) { 289 if (obj_desc) {
269 switch (ACPI_GET_OBJECT_TYPE(obj_desc)) { 290 switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {
270 case ACPI_TYPE_LOCAL_REFERENCE: 291 case ACPI_TYPE_LOCAL_REFERENCE:
@@ -339,7 +360,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
339 360
340 /* 4) Fourth subobject: Dereference the PRT.source_index */ 361 /* 4) Fourth subobject: Dereference the PRT.source_index */
341 362
342 obj_desc = sub_object_list[3]; 363 obj_desc = sub_object_list[source_index_index];
343 if (ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_INTEGER) { 364 if (ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_INTEGER) {
344 user_prt->source_index = (u32) obj_desc->integer.value; 365 user_prt->source_index = (u32) obj_desc->integer.value;
345 } else { 366 } else {
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 0771b434feb2..00d25b347255 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -102,9 +102,9 @@ struct acpi_video_bus_cap {
102 102
103struct acpi_video_device_attrib { 103struct acpi_video_device_attrib {
104 u32 display_index:4; /* A zero-based instance of the Display */ 104 u32 display_index:4; /* A zero-based instance of the Display */
105 u32 display_port_attachment:4; /*This field differenates displays type */ 105 u32 display_port_attachment:4; /*This field differentiates the display type */
106 u32 display_type:4; /*Describe the specific type in use */ 106 u32 display_type:4; /*Describe the specific type in use */
107 u32 vendor_specific:4; /*Chipset Vendor Specifi */ 107 u32 vendor_specific:4; /*Chipset Vendor Specific */
108 u32 bios_can_detect:1; /*BIOS can detect the device */ 108 u32 bios_can_detect:1; /*BIOS can detect the device */
109 u32 depend_on_vga:1; /*Non-VGA output device whose power is related to 109 u32 depend_on_vga:1; /*Non-VGA output device whose power is related to
110 the VGA device. */ 110 the VGA device. */
@@ -484,16 +484,16 @@ acpi_video_bus_POST_options(struct acpi_video_bus *video,
484 * 0. The system BIOS should NOT automatically switch(toggle) 484 * 0. The system BIOS should NOT automatically switch(toggle)
485 * the active display output. 485 * the active display output.
486 * 1. The system BIOS should automatically switch (toggle) the 486 * 1. The system BIOS should automatically switch (toggle) the
487 * active display output. No swich event. 487 * active display output. No switch event.
488 * 2. The _DGS value should be locked. 488 * 2. The _DGS value should be locked.
489 * 3. The system BIOS should not automatically switch (toggle) the 489 * 3. The system BIOS should not automatically switch (toggle) the
490 * active display output, but instead generate the display switch 490 * active display output, but instead generate the display switch
491 * event notify code. 491 * event notify code.
492 * lcd_flag : 492 * lcd_flag :
493 * 0. The system BIOS should automatically control the brightness level 493 * 0. The system BIOS should automatically control the brightness level
494 * of the LCD, when the power changes from AC to DC 494 * of the LCD when the power changes from AC to DC
495 * 1. The system BIOS should NOT automatically control the brightness 495 * 1. The system BIOS should NOT automatically control the brightness
496 * level of the LCD, when the power changes from AC to DC. 496 * level of the LCD when the power changes from AC to DC.
497 * Return Value: 497 * Return Value:
498 * -1 wrong arg. 498 * -1 wrong arg.
499 */ 499 */
@@ -525,7 +525,7 @@ acpi_video_bus_DOS(struct acpi_video_bus *video, int bios_flag, int lcd_flag)
525 * Return Value: 525 * Return Value:
526 * None 526 * None
527 * 527 *
528 * Find out all required AML method defined under the output 528 * Find out all required AML methods defined under the output
529 * device. 529 * device.
530 */ 530 */
531 531
@@ -636,7 +636,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
636 * Return Value: 636 * Return Value:
637 * None 637 * None
638 * 638 *
639 * Find out all required AML method defined under the video bus device. 639 * Find out all required AML methods defined under the video bus device.
640 */ 640 */
641 641
642static void acpi_video_bus_find_cap(struct acpi_video_bus *video) 642static void acpi_video_bus_find_cap(struct acpi_video_bus *video)
@@ -681,19 +681,19 @@ static int acpi_video_bus_check(struct acpi_video_bus *video)
681 * to check well known required nodes. 681 * to check well known required nodes.
682 */ 682 */
683 683
684 /* Does this device able to support video switching ? */ 684 /* Does this device support video switching? */
685 if (video->cap._DOS) { 685 if (video->cap._DOS) {
686 video->flags.multihead = 1; 686 video->flags.multihead = 1;
687 status = 0; 687 status = 0;
688 } 688 }
689 689
690 /* Does this device able to retrieve a retrieve a video ROM ? */ 690 /* Does this device support retrieving a video ROM? */
691 if (video->cap._ROM) { 691 if (video->cap._ROM) {
692 video->flags.rom = 1; 692 video->flags.rom = 1;
693 status = 0; 693 status = 0;
694 } 694 }
695 695
696 /* Does this device able to configure which video device to POST ? */ 696 /* Does this device support configuring which video device to POST? */
697 if (video->cap._GPD && video->cap._SPD && video->cap._VPO) { 697 if (video->cap._GPD && video->cap._SPD && video->cap._VPO) {
698 video->flags.post = 1; 698 video->flags.post = 1;
699 status = 0; 699 status = 0;
@@ -860,7 +860,7 @@ acpi_video_device_write_brightness(struct file *file,
860 if (level > 100) 860 if (level > 100)
861 return -EFAULT; 861 return -EFAULT;
862 862
863 /* validate though the list of available levels */ 863 /* validate through the list of available levels */
864 for (i = 0; i < dev->brightness->count; i++) 864 for (i = 0; i < dev->brightness->count; i++)
865 if (level == dev->brightness->levels[i]) { 865 if (level == dev->brightness->levels[i]) {
866 if (ACPI_SUCCESS 866 if (ACPI_SUCCESS
@@ -1065,10 +1065,10 @@ static int acpi_video_bus_POST_info_seq_show(struct seq_file *seq, void *offset)
1065 printk(KERN_WARNING PREFIX 1065 printk(KERN_WARNING PREFIX
1066 "The motherboard VGA device is not listed as a possible POST device.\n"); 1066 "The motherboard VGA device is not listed as a possible POST device.\n");
1067 printk(KERN_WARNING PREFIX 1067 printk(KERN_WARNING PREFIX
1068 "This indicate a BIOS bug. Please contact the manufacturer.\n"); 1068 "This indicates a BIOS bug. Please contact the manufacturer.\n");
1069 } 1069 }
1070 printk("%lx\n", options); 1070 printk("%lx\n", options);
1071 seq_printf(seq, "can POST: <intgrated video>"); 1071 seq_printf(seq, "can POST: <integrated video>");
1072 if (options & 2) 1072 if (options & 2)
1073 seq_printf(seq, " <PCI video>"); 1073 seq_printf(seq, " <PCI video>");
1074 if (options & 4) 1074 if (options & 4)
@@ -1102,7 +1102,7 @@ static int acpi_video_bus_POST_seq_show(struct seq_file *seq, void *offset)
1102 seq_printf(seq, "<not supported>\n"); 1102 seq_printf(seq, "<not supported>\n");
1103 goto end; 1103 goto end;
1104 } 1104 }
1105 seq_printf(seq, "device posted is <%s>\n", device_decode[id & 3]); 1105 seq_printf(seq, "device POSTed is <%s>\n", device_decode[id & 3]);
1106 1106
1107 end: 1107 end:
1108 return 0; 1108 return 0;
@@ -1156,7 +1156,7 @@ acpi_video_bus_write_POST(struct file *file,
1156 if (opt > 3) 1156 if (opt > 3)
1157 return -EFAULT; 1157 return -EFAULT;
1158 1158
1159 /* just in case an OEM 'forget' the motherboard... */ 1159 /* just in case an OEM 'forgot' the motherboard... */
1160 options |= 1; 1160 options |= 1;
1161 1161
1162 if (options & (1ul << opt)) { 1162 if (options & (1ul << opt)) {
@@ -1527,13 +1527,13 @@ static int acpi_video_device_enumerate(struct acpi_video_bus *video)
1527/* 1527/*
1528 * Arg: 1528 * Arg:
1529 * video : video bus device 1529 * video : video bus device
1530 * event : Nontify Event 1530 * event : notify event
1531 * 1531 *
1532 * Return: 1532 * Return:
1533 * < 0 : error 1533 * < 0 : error
1534 * 1534 *
1535 * 1. Find out the current active output device. 1535 * 1. Find out the current active output device.
1536 * 2. Identify the next output device to switch 1536 * 2. Identify the next output device to switch to.
1537 * 3. call _DSS to do actual switch. 1537 * 3. call _DSS to do actual switch.
1538 */ 1538 */
1539 1539
@@ -1723,12 +1723,12 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data)
1723 device = video->device; 1723 device = video->device;
1724 1724
1725 switch (event) { 1725 switch (event) {
1726 case ACPI_VIDEO_NOTIFY_SWITCH: /* User request that a switch occur, 1726 case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch,
1727 * most likely via hotkey. */ 1727 * most likely via hotkey. */
1728 acpi_bus_generate_event(device, event, 0); 1728 acpi_bus_generate_event(device, event, 0);
1729 break; 1729 break;
1730 1730
1731 case ACPI_VIDEO_NOTIFY_PROBE: /* User plug or remove a video 1731 case ACPI_VIDEO_NOTIFY_PROBE: /* User plugged in or removed a video
1732 * connector. */ 1732 * connector. */
1733 acpi_video_device_enumerate(video); 1733 acpi_video_device_enumerate(video);
1734 acpi_video_device_rebind(video); 1734 acpi_video_device_rebind(video);
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
index 019d8ffdde50..c428a56e6f31 100644
--- a/drivers/ata/libata-acpi.c
+++ b/drivers/ata/libata-acpi.c
@@ -576,6 +576,13 @@ int ata_acpi_exec_tfs(struct ata_port *ap)
576 576
577 if (noacpi) 577 if (noacpi)
578 return 0; 578 return 0;
579 /*
580 * TBD - implement PATA support. For now,
581 * we should not run GTF on PATA devices since some
582 * PATA require execution of GTM/STM before GTF.
583 */
584 if (!(ap->cbl == ATA_CBL_SATA))
585 return 0;
579 586
580 for (ix = 0; ix < ATA_MAX_DEVICES; ix++) { 587 for (ix = 0; ix < ATA_MAX_DEVICES; ix++) {
581 if (!ata_dev_enabled(&ap->device[ix])) 588 if (!ata_dev_enabled(&ap->device[ix]))
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 89ebe3682726..f191afe62b4d 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -584,17 +584,17 @@ int device_add(struct device *dev)
584 if (dev->kobj.parent != &dev->class->subsys.kset.kobj) 584 if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
585 sysfs_create_link(&dev->class->subsys.kset.kobj, 585 sysfs_create_link(&dev->class->subsys.kset.kobj,
586 &dev->kobj, dev->bus_id); 586 &dev->kobj, dev->bus_id);
587#ifdef CONFIG_SYSFS_DEPRECATED
588 if (parent) { 587 if (parent) {
589 sysfs_create_link(&dev->kobj, &dev->parent->kobj, 588 sysfs_create_link(&dev->kobj, &dev->parent->kobj,
590 "device"); 589 "device");
590#ifdef CONFIG_SYSFS_DEPRECATED
591 class_name = make_class_name(dev->class->name, 591 class_name = make_class_name(dev->class->name,
592 &dev->kobj); 592 &dev->kobj);
593 if (class_name) 593 if (class_name)
594 sysfs_create_link(&dev->parent->kobj, 594 sysfs_create_link(&dev->parent->kobj,
595 &dev->kobj, class_name); 595 &dev->kobj, class_name);
596 }
597#endif 596#endif
597 }
598 } 598 }
599 599
600 if ((error = device_add_attrs(dev))) 600 if ((error = device_add_attrs(dev)))
@@ -651,17 +651,17 @@ int device_add(struct device *dev)
651 if (dev->kobj.parent != &dev->class->subsys.kset.kobj) 651 if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
652 sysfs_remove_link(&dev->class->subsys.kset.kobj, 652 sysfs_remove_link(&dev->class->subsys.kset.kobj,
653 dev->bus_id); 653 dev->bus_id);
654#ifdef CONFIG_SYSFS_DEPRECATED
655 if (parent) { 654 if (parent) {
655#ifdef CONFIG_SYSFS_DEPRECATED
656 char *class_name = make_class_name(dev->class->name, 656 char *class_name = make_class_name(dev->class->name,
657 &dev->kobj); 657 &dev->kobj);
658 if (class_name) 658 if (class_name)
659 sysfs_remove_link(&dev->parent->kobj, 659 sysfs_remove_link(&dev->parent->kobj,
660 class_name); 660 class_name);
661 kfree(class_name); 661 kfree(class_name);
662#endif
662 sysfs_remove_link(&dev->kobj, "device"); 663 sysfs_remove_link(&dev->kobj, "device");
663 } 664 }
664#endif
665 665
666 down(&dev->class->sem); 666 down(&dev->class->sem);
667 /* notify any interfaces that the device is now gone */ 667 /* notify any interfaces that the device is now gone */
@@ -761,17 +761,17 @@ void device_del(struct device * dev)
761 if (dev->kobj.parent != &dev->class->subsys.kset.kobj) 761 if (dev->kobj.parent != &dev->class->subsys.kset.kobj)
762 sysfs_remove_link(&dev->class->subsys.kset.kobj, 762 sysfs_remove_link(&dev->class->subsys.kset.kobj,
763 dev->bus_id); 763 dev->bus_id);
764#ifdef CONFIG_SYSFS_DEPRECATED
765 if (parent) { 764 if (parent) {
765#ifdef CONFIG_SYSFS_DEPRECATED
766 char *class_name = make_class_name(dev->class->name, 766 char *class_name = make_class_name(dev->class->name,
767 &dev->kobj); 767 &dev->kobj);
768 if (class_name) 768 if (class_name)
769 sysfs_remove_link(&dev->parent->kobj, 769 sysfs_remove_link(&dev->parent->kobj,
770 class_name); 770 class_name);
771 kfree(class_name); 771 kfree(class_name);
772#endif
772 sysfs_remove_link(&dev->kobj, "device"); 773 sysfs_remove_link(&dev->kobj, "device");
773 } 774 }
774#endif
775 775
776 down(&dev->class->sem); 776 down(&dev->class->sem);
777 /* notify any interfaces that the device is now gone */ 777 /* notify any interfaces that the device is now gone */
@@ -1065,14 +1065,14 @@ int device_rename(struct device *dev, char *new_name)
1065 1065
1066 return error; 1066 return error;
1067} 1067}
1068 1068EXPORT_SYMBOL_GPL(device_rename);
1069 1069
1070static int device_move_class_links(struct device *dev, 1070static int device_move_class_links(struct device *dev,
1071 struct device *old_parent, 1071 struct device *old_parent,
1072 struct device *new_parent) 1072 struct device *new_parent)
1073{ 1073{
1074 int error = 0;
1074#ifdef CONFIG_SYSFS_DEPRECATED 1075#ifdef CONFIG_SYSFS_DEPRECATED
1075 int error;
1076 char *class_name; 1076 char *class_name;
1077 1077
1078 class_name = make_class_name(dev->class->name, &dev->kobj); 1078 class_name = make_class_name(dev->class->name, &dev->kobj);
@@ -1100,7 +1100,12 @@ out:
1100 kfree(class_name); 1100 kfree(class_name);
1101 return error; 1101 return error;
1102#else 1102#else
1103 return 0; 1103 if (old_parent)
1104 sysfs_remove_link(&dev->kobj, "device");
1105 if (new_parent)
1106 error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
1107 "device");
1108 return error;
1104#endif 1109#endif
1105} 1110}
1106 1111
diff --git a/drivers/misc/asus-laptop.c b/drivers/misc/asus-laptop.c
index 295e931c0dfb..4b232124a1ab 100644
--- a/drivers/misc/asus-laptop.c
+++ b/drivers/misc/asus-laptop.c
@@ -211,7 +211,7 @@ static struct workqueue_struct *led_workqueue;
211 enum led_brightness value); \ 211 enum led_brightness value); \
212 static void object##_led_update(struct work_struct *ignored); \ 212 static void object##_led_update(struct work_struct *ignored); \
213 static int object##_led_wk; \ 213 static int object##_led_wk; \
214 DECLARE_WORK(object##_led_work, object##_led_update); \ 214 static DECLARE_WORK(object##_led_work, object##_led_update); \
215 static struct led_classdev object##_led = { \ 215 static struct led_classdev object##_led = { \
216 .name = "asus:" ledname, \ 216 .name = "asus:" ledname, \
217 .brightness_set = object##_led_set, \ 217 .brightness_set = object##_led_set, \
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c
index 2ebe240dd537..ac708bc2f9f3 100644
--- a/drivers/misc/sony-laptop.c
+++ b/drivers/misc/sony-laptop.c
@@ -453,7 +453,7 @@ static int sony_acpi_resume(struct acpi_device *device)
453static int sony_acpi_add(struct acpi_device *device) 453static int sony_acpi_add(struct acpi_device *device)
454{ 454{
455 acpi_status status; 455 acpi_status status;
456 int result; 456 int result = 0;
457 acpi_handle handle; 457 acpi_handle handle;
458 458
459 sony_acpi_acpi_device = device; 459 sony_acpi_acpi_device = device;
diff --git a/drivers/mmc/imxmmc.c b/drivers/mmc/imxmmc.c
index b060d4bfba29..0de5c9e94e74 100644
--- a/drivers/mmc/imxmmc.c
+++ b/drivers/mmc/imxmmc.c
@@ -569,10 +569,12 @@ static int imxmci_cpu_driven_data(struct imxmci_host *host, unsigned int *pstat)
569 569
570 if(host->dma_dir == DMA_FROM_DEVICE) { 570 if(host->dma_dir == DMA_FROM_DEVICE) {
571 imxmci_busy_wait_for_status(host, &stat, 571 imxmci_busy_wait_for_status(host, &stat,
572 STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE, 572 STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE |
573 STATUS_TIME_OUT_READ,
573 50, "imxmci_cpu_driven_data read"); 574 50, "imxmci_cpu_driven_data read");
574 575
575 while((stat & (STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE)) && 576 while((stat & (STATUS_APPL_BUFF_FF | STATUS_DATA_TRANS_DONE)) &&
577 !(stat & STATUS_TIME_OUT_READ) &&
576 (host->data_cnt < 512)) { 578 (host->data_cnt < 512)) {
577 579
578 udelay(20); /* required for clocks < 8MHz*/ 580 udelay(20); /* required for clocks < 8MHz*/
@@ -602,6 +604,12 @@ static int imxmci_cpu_driven_data(struct imxmci_host *host, unsigned int *pstat)
602 if(host->dma_size & 0x1ff) 604 if(host->dma_size & 0x1ff)
603 stat &= ~STATUS_CRC_READ_ERR; 605 stat &= ~STATUS_CRC_READ_ERR;
604 606
607 if(stat & STATUS_TIME_OUT_READ) {
608 dev_dbg(mmc_dev(host->mmc), "imxmci_cpu_driven_data read timeout STATUS = 0x%x\n",
609 stat);
610 trans_done = -1;
611 }
612
605 } else { 613 } else {
606 imxmci_busy_wait_for_status(host, &stat, 614 imxmci_busy_wait_for_status(host, &stat,
607 STATUS_APPL_BUFF_FE, 615 STATUS_APPL_BUFF_FE,
@@ -709,6 +717,9 @@ static void imxmci_tasklet_fnc(unsigned long data)
709 */ 717 */
710 stat |= host->status_reg; 718 stat |= host->status_reg;
711 719
720 if(test_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events))
721 stat &= ~STATUS_CRC_READ_ERR;
722
712 if(test_bit(IMXMCI_PEND_WAIT_RESP_b, &host->pending_events)) { 723 if(test_bit(IMXMCI_PEND_WAIT_RESP_b, &host->pending_events)) {
713 imxmci_busy_wait_for_status(host, &stat, 724 imxmci_busy_wait_for_status(host, &stat,
714 STATUS_END_CMD_RESP | STATUS_ERR_MASK, 725 STATUS_END_CMD_RESP | STATUS_ERR_MASK,
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 01869b1782e4..ad33e0159514 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -100,6 +100,7 @@ static void msi_set_mask_bit(unsigned int irq, int flag)
100 BUG(); 100 BUG();
101 break; 101 break;
102 } 102 }
103 entry->msi_attrib.masked = !!flag;
103} 104}
104 105
105void read_msi_msg(unsigned int irq, struct msi_msg *msg) 106void read_msi_msg(unsigned int irq, struct msi_msg *msg)
@@ -179,6 +180,7 @@ void write_msi_msg(unsigned int irq, struct msi_msg *msg)
179 default: 180 default:
180 BUG(); 181 BUG();
181 } 182 }
183 entry->msg = *msg;
182} 184}
183 185
184void mask_msi_irq(unsigned int irq) 186void mask_msi_irq(unsigned int irq)
@@ -225,164 +227,60 @@ static struct msi_desc* alloc_msi_entry(void)
225} 227}
226 228
227#ifdef CONFIG_PM 229#ifdef CONFIG_PM
228static int __pci_save_msi_state(struct pci_dev *dev)
229{
230 int pos, i = 0;
231 u16 control;
232 struct pci_cap_saved_state *save_state;
233 u32 *cap;
234
235 if (!dev->msi_enabled)
236 return 0;
237
238 pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
239 if (pos <= 0)
240 return 0;
241
242 save_state = kzalloc(sizeof(struct pci_cap_saved_state) + sizeof(u32) * 5,
243 GFP_KERNEL);
244 if (!save_state) {
245 printk(KERN_ERR "Out of memory in pci_save_msi_state\n");
246 return -ENOMEM;
247 }
248 cap = &save_state->data[0];
249
250 pci_read_config_dword(dev, pos, &cap[i++]);
251 control = cap[0] >> 16;
252 pci_read_config_dword(dev, pos + PCI_MSI_ADDRESS_LO, &cap[i++]);
253 if (control & PCI_MSI_FLAGS_64BIT) {
254 pci_read_config_dword(dev, pos + PCI_MSI_ADDRESS_HI, &cap[i++]);
255 pci_read_config_dword(dev, pos + PCI_MSI_DATA_64, &cap[i++]);
256 } else
257 pci_read_config_dword(dev, pos + PCI_MSI_DATA_32, &cap[i++]);
258 if (control & PCI_MSI_FLAGS_MASKBIT)
259 pci_read_config_dword(dev, pos + PCI_MSI_MASK_BIT, &cap[i++]);
260 save_state->cap_nr = PCI_CAP_ID_MSI;
261 pci_add_saved_cap(dev, save_state);
262 return 0;
263}
264
265static void __pci_restore_msi_state(struct pci_dev *dev) 230static void __pci_restore_msi_state(struct pci_dev *dev)
266{ 231{
267 int i = 0, pos; 232 int pos;
268 u16 control; 233 u16 control;
269 struct pci_cap_saved_state *save_state; 234 struct msi_desc *entry;
270 u32 *cap;
271 235
272 if (!dev->msi_enabled) 236 if (!dev->msi_enabled)
273 return; 237 return;
274 238
275 save_state = pci_find_saved_cap(dev, PCI_CAP_ID_MSI); 239 entry = get_irq_msi(dev->irq);
276 pos = pci_find_capability(dev, PCI_CAP_ID_MSI); 240 pos = entry->msi_attrib.pos;
277 if (!save_state || pos <= 0)
278 return;
279 cap = &save_state->data[0];
280 241
281 pci_intx(dev, 0); /* disable intx */ 242 pci_intx(dev, 0); /* disable intx */
282 control = cap[i++] >> 16;
283 msi_set_enable(dev, 0); 243 msi_set_enable(dev, 0);
284 pci_write_config_dword(dev, pos + PCI_MSI_ADDRESS_LO, cap[i++]); 244 write_msi_msg(dev->irq, &entry->msg);
285 if (control & PCI_MSI_FLAGS_64BIT) { 245 if (entry->msi_attrib.maskbit)
286 pci_write_config_dword(dev, pos + PCI_MSI_ADDRESS_HI, cap[i++]); 246 msi_set_mask_bit(dev->irq, entry->msi_attrib.masked);
287 pci_write_config_dword(dev, pos + PCI_MSI_DATA_64, cap[i++]); 247
288 } else 248 pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &control);
289 pci_write_config_dword(dev, pos + PCI_MSI_DATA_32, cap[i++]); 249 control &= ~(PCI_MSI_FLAGS_QSIZE | PCI_MSI_FLAGS_ENABLE);
290 if (control & PCI_MSI_FLAGS_MASKBIT) 250 if (entry->msi_attrib.maskbit || !entry->msi_attrib.masked)
291 pci_write_config_dword(dev, pos + PCI_MSI_MASK_BIT, cap[i++]); 251 control |= PCI_MSI_FLAGS_ENABLE;
292 pci_write_config_word(dev, pos + PCI_MSI_FLAGS, control); 252 pci_write_config_word(dev, pos + PCI_MSI_FLAGS, control);
293 pci_remove_saved_cap(save_state);
294 kfree(save_state);
295}
296
297static int __pci_save_msix_state(struct pci_dev *dev)
298{
299 int pos;
300 int irq, head, tail = 0;
301 u16 control;
302 struct pci_cap_saved_state *save_state;
303
304 if (!dev->msix_enabled)
305 return 0;
306
307 pos = pci_find_capability(dev, PCI_CAP_ID_MSIX);
308 if (pos <= 0)
309 return 0;
310
311 /* save the capability */
312 pci_read_config_word(dev, msi_control_reg(pos), &control);
313 save_state = kzalloc(sizeof(struct pci_cap_saved_state) + sizeof(u16),
314 GFP_KERNEL);
315 if (!save_state) {
316 printk(KERN_ERR "Out of memory in pci_save_msix_state\n");
317 return -ENOMEM;
318 }
319 *((u16 *)&save_state->data[0]) = control;
320
321 /* save the table */
322 irq = head = dev->first_msi_irq;
323 while (head != tail) {
324 struct msi_desc *entry;
325
326 entry = get_irq_msi(irq);
327 read_msi_msg(irq, &entry->msg_save);
328
329 tail = entry->link.tail;
330 irq = tail;
331 }
332
333 save_state->cap_nr = PCI_CAP_ID_MSIX;
334 pci_add_saved_cap(dev, save_state);
335 return 0;
336}
337
338int pci_save_msi_state(struct pci_dev *dev)
339{
340 int rc;
341
342 rc = __pci_save_msi_state(dev);
343 if (rc)
344 return rc;
345
346 rc = __pci_save_msix_state(dev);
347
348 return rc;
349} 253}
350 254
351static void __pci_restore_msix_state(struct pci_dev *dev) 255static void __pci_restore_msix_state(struct pci_dev *dev)
352{ 256{
353 u16 save;
354 int pos; 257 int pos;
355 int irq, head, tail = 0; 258 int irq, head, tail = 0;
356 struct msi_desc *entry; 259 struct msi_desc *entry;
357 struct pci_cap_saved_state *save_state; 260 u16 control;
358 261
359 if (!dev->msix_enabled) 262 if (!dev->msix_enabled)
360 return; 263 return;
361 264
362 save_state = pci_find_saved_cap(dev, PCI_CAP_ID_MSIX);
363 if (!save_state)
364 return;
365 save = *((u16 *)&save_state->data[0]);
366 pci_remove_saved_cap(save_state);
367 kfree(save_state);
368
369 pos = pci_find_capability(dev, PCI_CAP_ID_MSIX);
370 if (pos <= 0)
371 return;
372
373 /* route the table */ 265 /* route the table */
374 pci_intx(dev, 0); /* disable intx */ 266 pci_intx(dev, 0); /* disable intx */
375 msix_set_enable(dev, 0); 267 msix_set_enable(dev, 0);
376 irq = head = dev->first_msi_irq; 268 irq = head = dev->first_msi_irq;
269 entry = get_irq_msi(irq);
270 pos = entry->msi_attrib.pos;
377 while (head != tail) { 271 while (head != tail) {
378 entry = get_irq_msi(irq); 272 entry = get_irq_msi(irq);
379 write_msi_msg(irq, &entry->msg_save); 273 write_msi_msg(irq, &entry->msg);
274 msi_set_mask_bit(irq, entry->msi_attrib.masked);
380 275
381 tail = entry->link.tail; 276 tail = entry->link.tail;
382 irq = tail; 277 irq = tail;
383 } 278 }
384 279
385 pci_write_config_word(dev, msi_control_reg(pos), save); 280 pci_read_config_word(dev, pos + PCI_MSIX_FLAGS, &control);
281 control &= ~PCI_MSIX_FLAGS_MASKALL;
282 control |= PCI_MSIX_FLAGS_ENABLE;
283 pci_write_config_word(dev, pos + PCI_MSIX_FLAGS, control);
386} 284}
387 285
388void pci_restore_msi_state(struct pci_dev *dev) 286void pci_restore_msi_state(struct pci_dev *dev)
@@ -420,6 +318,7 @@ static int msi_capability_init(struct pci_dev *dev)
420 entry->msi_attrib.is_64 = is_64bit_address(control); 318 entry->msi_attrib.is_64 = is_64bit_address(control);
421 entry->msi_attrib.entry_nr = 0; 319 entry->msi_attrib.entry_nr = 0;
422 entry->msi_attrib.maskbit = is_mask_bit_support(control); 320 entry->msi_attrib.maskbit = is_mask_bit_support(control);
321 entry->msi_attrib.masked = 1;
423 entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */ 322 entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */
424 entry->msi_attrib.pos = pos; 323 entry->msi_attrib.pos = pos;
425 if (is_mask_bit_support(control)) { 324 if (is_mask_bit_support(control)) {
@@ -507,6 +406,7 @@ static int msix_capability_init(struct pci_dev *dev,
507 entry->msi_attrib.is_64 = 1; 406 entry->msi_attrib.is_64 = 1;
508 entry->msi_attrib.entry_nr = j; 407 entry->msi_attrib.entry_nr = j;
509 entry->msi_attrib.maskbit = 1; 408 entry->msi_attrib.maskbit = 1;
409 entry->msi_attrib.masked = 1;
510 entry->msi_attrib.default_irq = dev->irq; 410 entry->msi_attrib.default_irq = dev->irq;
511 entry->msi_attrib.pos = pos; 411 entry->msi_attrib.pos = pos;
512 entry->dev = dev; 412 entry->dev = dev;
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index df495300ce3d..d3eab057b2d3 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -551,7 +551,9 @@ static int pci_save_pcie_state(struct pci_dev *dev)
551 if (pos <= 0) 551 if (pos <= 0)
552 return 0; 552 return 0;
553 553
554 save_state = kzalloc(sizeof(*save_state) + sizeof(u16) * 4, GFP_KERNEL); 554 save_state = pci_find_saved_cap(dev, PCI_CAP_ID_EXP);
555 if (!save_state)
556 save_state = kzalloc(sizeof(*save_state) + sizeof(u16) * 4, GFP_KERNEL);
555 if (!save_state) { 557 if (!save_state) {
556 dev_err(&dev->dev, "Out of memory in pci_save_pcie_state\n"); 558 dev_err(&dev->dev, "Out of memory in pci_save_pcie_state\n");
557 return -ENOMEM; 559 return -ENOMEM;
@@ -582,8 +584,6 @@ static void pci_restore_pcie_state(struct pci_dev *dev)
582 pci_write_config_word(dev, pos + PCI_EXP_LNKCTL, cap[i++]); 584 pci_write_config_word(dev, pos + PCI_EXP_LNKCTL, cap[i++]);
583 pci_write_config_word(dev, pos + PCI_EXP_SLTCTL, cap[i++]); 585 pci_write_config_word(dev, pos + PCI_EXP_SLTCTL, cap[i++]);
584 pci_write_config_word(dev, pos + PCI_EXP_RTCTL, cap[i++]); 586 pci_write_config_word(dev, pos + PCI_EXP_RTCTL, cap[i++]);
585 pci_remove_saved_cap(save_state);
586 kfree(save_state);
587} 587}
588 588
589 589
@@ -597,7 +597,9 @@ static int pci_save_pcix_state(struct pci_dev *dev)
597 if (pos <= 0) 597 if (pos <= 0)
598 return 0; 598 return 0;
599 599
600 save_state = kzalloc(sizeof(*save_state) + sizeof(u16), GFP_KERNEL); 600 save_state = pci_find_saved_cap(dev, PCI_CAP_ID_EXP);
601 if (!save_state)
602 save_state = kzalloc(sizeof(*save_state) + sizeof(u16), GFP_KERNEL);
601 if (!save_state) { 603 if (!save_state) {
602 dev_err(&dev->dev, "Out of memory in pci_save_pcie_state\n"); 604 dev_err(&dev->dev, "Out of memory in pci_save_pcie_state\n");
603 return -ENOMEM; 605 return -ENOMEM;
@@ -622,8 +624,6 @@ static void pci_restore_pcix_state(struct pci_dev *dev)
622 cap = (u16 *)&save_state->data[0]; 624 cap = (u16 *)&save_state->data[0];
623 625
624 pci_write_config_word(dev, pos + PCI_X_CMD, cap[i++]); 626 pci_write_config_word(dev, pos + PCI_X_CMD, cap[i++]);
625 pci_remove_saved_cap(save_state);
626 kfree(save_state);
627} 627}
628 628
629 629
@@ -638,8 +638,6 @@ pci_save_state(struct pci_dev *dev)
638 /* XXX: 100% dword access ok here? */ 638 /* XXX: 100% dword access ok here? */
639 for (i = 0; i < 16; i++) 639 for (i = 0; i < 16; i++)
640 pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]); 640 pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]);
641 if ((i = pci_save_msi_state(dev)) != 0)
642 return i;
643 if ((i = pci_save_pcie_state(dev)) != 0) 641 if ((i = pci_save_pcie_state(dev)) != 0)
644 return i; 642 return i;
645 if ((i = pci_save_pcix_state(dev)) != 0) 643 if ((i = pci_save_pcix_state(dev)) != 0)
@@ -757,7 +755,8 @@ int pci_enable_device(struct pci_dev *dev)
757 * when a device is enabled using managed PCI device enable interface. 755 * when a device is enabled using managed PCI device enable interface.
758 */ 756 */
759struct pci_devres { 757struct pci_devres {
760 unsigned int disable:1; 758 unsigned int enabled:1;
759 unsigned int pinned:1;
761 unsigned int orig_intx:1; 760 unsigned int orig_intx:1;
762 unsigned int restore_intx:1; 761 unsigned int restore_intx:1;
763 u32 region_mask; 762 u32 region_mask;
@@ -781,7 +780,7 @@ static void pcim_release(struct device *gendev, void *res)
781 if (this->restore_intx) 780 if (this->restore_intx)
782 pci_intx(dev, this->orig_intx); 781 pci_intx(dev, this->orig_intx);
783 782
784 if (this->disable) 783 if (this->enabled && !this->pinned)
785 pci_disable_device(dev); 784 pci_disable_device(dev);
786} 785}
787 786
@@ -820,12 +819,12 @@ int pcim_enable_device(struct pci_dev *pdev)
820 dr = get_pci_dr(pdev); 819 dr = get_pci_dr(pdev);
821 if (unlikely(!dr)) 820 if (unlikely(!dr))
822 return -ENOMEM; 821 return -ENOMEM;
823 WARN_ON(!!dr->disable); 822 WARN_ON(!!dr->enabled);
824 823
825 rc = pci_enable_device(pdev); 824 rc = pci_enable_device(pdev);
826 if (!rc) { 825 if (!rc) {
827 pdev->is_managed = 1; 826 pdev->is_managed = 1;
828 dr->disable = 1; 827 dr->enabled = 1;
829 } 828 }
830 return rc; 829 return rc;
831} 830}
@@ -843,9 +842,9 @@ void pcim_pin_device(struct pci_dev *pdev)
843 struct pci_devres *dr; 842 struct pci_devres *dr;
844 843
845 dr = find_pci_dr(pdev); 844 dr = find_pci_dr(pdev);
846 WARN_ON(!dr || !dr->disable); 845 WARN_ON(!dr || !dr->enabled);
847 if (dr) 846 if (dr)
848 dr->disable = 0; 847 dr->pinned = 1;
849} 848}
850 849
851/** 850/**
@@ -876,7 +875,7 @@ pci_disable_device(struct pci_dev *dev)
876 875
877 dr = find_pci_dr(dev); 876 dr = find_pci_dr(dev);
878 if (dr) 877 if (dr)
879 dr->disable = 0; 878 dr->enabled = 0;
880 879
881 if (atomic_sub_return(1, &dev->enable_cnt) != 0) 880 if (atomic_sub_return(1, &dev->enable_cnt) != 0)
882 return; 881 return;
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index ae7a975995a5..62ea04c8af64 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -52,10 +52,8 @@ static inline void pci_no_msi(void) { }
52#endif 52#endif
53 53
54#if defined(CONFIG_PCI_MSI) && defined(CONFIG_PM) 54#if defined(CONFIG_PCI_MSI) && defined(CONFIG_PM)
55int pci_save_msi_state(struct pci_dev *dev);
56void pci_restore_msi_state(struct pci_dev *dev); 55void pci_restore_msi_state(struct pci_dev *dev);
57#else 56#else
58static inline int pci_save_msi_state(struct pci_dev *dev) { return 0; }
59static inline void pci_restore_msi_state(struct pci_dev *dev) {} 57static inline void pci_restore_msi_state(struct pci_dev *dev) {}
60#endif 58#endif
61 59
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index b164de050d4f..db6ad8e763ac 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -66,7 +66,7 @@ static struct pci_error_handlers aer_error_handlers = {
66 .resume = aer_error_resume, 66 .resume = aer_error_resume,
67}; 67};
68 68
69static struct pcie_port_service_driver aerdrv = { 69static struct pcie_port_service_driver aerdriver = {
70 .name = "aer", 70 .name = "aer",
71 .id_table = &aer_id[0], 71 .id_table = &aer_id[0],
72 72
@@ -328,7 +328,7 @@ static void aer_error_resume(struct pci_dev *dev)
328 **/ 328 **/
329static int __init aer_service_init(void) 329static int __init aer_service_init(void)
330{ 330{
331 return pcie_port_service_register(&aerdrv); 331 return pcie_port_service_register(&aerdriver);
332} 332}
333 333
334/** 334/**
@@ -338,7 +338,7 @@ static int __init aer_service_init(void)
338 **/ 338 **/
339static void __exit aer_service_exit(void) 339static void __exit aer_service_exit(void)
340{ 340{
341 pcie_port_service_unregister(&aerdrv); 341 pcie_port_service_unregister(&aerdriver);
342} 342}
343 343
344module_init(aer_service_init); 344module_init(aer_service_init);
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index f17e7ed2b2a5..0be5a0b30725 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -276,7 +276,7 @@ static struct pci_error_handlers pcie_portdrv_err_handler = {
276 .resume = pcie_portdrv_err_resume, 276 .resume = pcie_portdrv_err_resume,
277}; 277};
278 278
279static struct pci_driver pcie_portdrv = { 279static struct pci_driver pcie_portdriver = {
280 .name = (char *)device_name, 280 .name = (char *)device_name,
281 .id_table = &port_pci_ids[0], 281 .id_table = &port_pci_ids[0],
282 282
@@ -298,7 +298,7 @@ static int __init pcie_portdrv_init(void)
298 printk(KERN_WARNING "PCIE: bus_register error: %d\n", retval); 298 printk(KERN_WARNING "PCIE: bus_register error: %d\n", retval);
299 goto out; 299 goto out;
300 } 300 }
301 retval = pci_register_driver(&pcie_portdrv); 301 retval = pci_register_driver(&pcie_portdriver);
302 if (retval) 302 if (retval)
303 pcie_port_bus_unregister(); 303 pcie_port_bus_unregister();
304 out: 304 out:
@@ -307,7 +307,7 @@ static int __init pcie_portdrv_init(void)
307 307
308static void __exit pcie_portdrv_exit(void) 308static void __exit pcie_portdrv_exit(void)
309{ 309{
310 pci_unregister_driver(&pcie_portdrv); 310 pci_unregister_driver(&pcie_portdriver);
311 pcie_port_bus_unregister(); 311 pcie_port_bus_unregister();
312} 312}
313 313
diff --git a/drivers/pci/search.c b/drivers/pci/search.c
index ff98eaddaa73..2dd8681d6b31 100644
--- a/drivers/pci/search.c
+++ b/drivers/pci/search.c
@@ -15,7 +15,7 @@
15 15
16DECLARE_RWSEM(pci_bus_sem); 16DECLARE_RWSEM(pci_bus_sem);
17 17
18static struct pci_bus * __devinit 18static struct pci_bus *
19pci_do_find_bus(struct pci_bus* bus, unsigned char busnr) 19pci_do_find_bus(struct pci_bus* bus, unsigned char busnr)
20{ 20{
21 struct pci_bus* child; 21 struct pci_bus* child;
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index 7a535542fe92..118ac9779b3c 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -89,6 +89,7 @@ pnpacpi_parse_allocated_irqresource(struct pnp_resource_table *res, u32 gsi,
89 return; 89 return;
90 90
91 res->irq_resource[i].flags = IORESOURCE_IRQ; // Also clears _UNSET flag 91 res->irq_resource[i].flags = IORESOURCE_IRQ; // Also clears _UNSET flag
92 res->irq_resource[i].flags |= irq_flags(triggering, polarity);
92 irq = acpi_register_gsi(gsi, triggering, polarity); 93 irq = acpi_register_gsi(gsi, triggering, polarity);
93 if (irq < 0) { 94 if (irq < 0) {
94 res->irq_resource[i].flags |= IORESOURCE_DISABLED; 95 res->irq_resource[i].flags |= IORESOURCE_DISABLED;
@@ -103,8 +104,52 @@ pnpacpi_parse_allocated_irqresource(struct pnp_resource_table *res, u32 gsi,
103 pcibios_penalize_isa_irq(irq, 1); 104 pcibios_penalize_isa_irq(irq, 1);
104} 105}
105 106
107static int dma_flags(int type, int bus_master, int transfer)
108{
109 int flags = 0;
110
111 if (bus_master)
112 flags |= IORESOURCE_DMA_MASTER;
113 switch (type) {
114 case ACPI_COMPATIBILITY:
115 flags |= IORESOURCE_DMA_COMPATIBLE;
116 break;
117 case ACPI_TYPE_A:
118 flags |= IORESOURCE_DMA_TYPEA;
119 break;
120 case ACPI_TYPE_B:
121 flags |= IORESOURCE_DMA_TYPEB;
122 break;
123 case ACPI_TYPE_F:
124 flags |= IORESOURCE_DMA_TYPEF;
125 break;
126 default:
127 /* Set a default value ? */
128 flags |= IORESOURCE_DMA_COMPATIBLE;
129 pnp_err("Invalid DMA type");
130 }
131 switch (transfer) {
132 case ACPI_TRANSFER_8:
133 flags |= IORESOURCE_DMA_8BIT;
134 break;
135 case ACPI_TRANSFER_8_16:
136 flags |= IORESOURCE_DMA_8AND16BIT;
137 break;
138 case ACPI_TRANSFER_16:
139 flags |= IORESOURCE_DMA_16BIT;
140 break;
141 default:
142 /* Set a default value ? */
143 flags |= IORESOURCE_DMA_8AND16BIT;
144 pnp_err("Invalid DMA transfer type");
145 }
146
147 return flags;
148}
149
106static void 150static void
107pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res, u32 dma) 151pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res, u32 dma,
152 int type, int bus_master, int transfer)
108{ 153{
109 int i = 0; 154 int i = 0;
110 while (i < PNP_MAX_DMA && 155 while (i < PNP_MAX_DMA &&
@@ -112,6 +157,7 @@ pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res, u32 dma)
112 i++; 157 i++;
113 if (i < PNP_MAX_DMA) { 158 if (i < PNP_MAX_DMA) {
114 res->dma_resource[i].flags = IORESOURCE_DMA; // Also clears _UNSET flag 159 res->dma_resource[i].flags = IORESOURCE_DMA; // Also clears _UNSET flag
160 res->dma_resource[i].flags |= dma_flags(type, bus_master, transfer);
115 if (dma == -1) { 161 if (dma == -1) {
116 res->dma_resource[i].flags |= IORESOURCE_DISABLED; 162 res->dma_resource[i].flags |= IORESOURCE_DISABLED;
117 return; 163 return;
@@ -123,7 +169,7 @@ pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res, u32 dma)
123 169
124static void 170static void
125pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res, 171pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res,
126 u64 io, u64 len) 172 u64 io, u64 len, int io_decode)
127{ 173{
128 int i = 0; 174 int i = 0;
129 while (!(res->port_resource[i].flags & IORESOURCE_UNSET) && 175 while (!(res->port_resource[i].flags & IORESOURCE_UNSET) &&
@@ -131,6 +177,8 @@ pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res,
131 i++; 177 i++;
132 if (i < PNP_MAX_PORT) { 178 if (i < PNP_MAX_PORT) {
133 res->port_resource[i].flags = IORESOURCE_IO; // Also clears _UNSET flag 179 res->port_resource[i].flags = IORESOURCE_IO; // Also clears _UNSET flag
180 if (io_decode == ACPI_DECODE_16)
181 res->port_resource[i].flags |= PNP_PORT_FLAG_16BITADDR;
134 if (len <= 0 || (io + len -1) >= 0x10003) { 182 if (len <= 0 || (io + len -1) >= 0x10003) {
135 res->port_resource[i].flags |= IORESOURCE_DISABLED; 183 res->port_resource[i].flags |= IORESOURCE_DISABLED;
136 return; 184 return;
@@ -142,7 +190,7 @@ pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res,
142 190
143static void 191static void
144pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res, 192pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res,
145 u64 mem, u64 len) 193 u64 mem, u64 len, int write_protect)
146{ 194{
147 int i = 0; 195 int i = 0;
148 while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) && 196 while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) &&
@@ -154,6 +202,9 @@ pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res,
154 res->mem_resource[i].flags |= IORESOURCE_DISABLED; 202 res->mem_resource[i].flags |= IORESOURCE_DISABLED;
155 return; 203 return;
156 } 204 }
205 if(write_protect == ACPI_READ_WRITE_MEMORY)
206 res->mem_resource[i].flags |= IORESOURCE_MEM_WRITEABLE;
207
157 res->mem_resource[i].start = mem; 208 res->mem_resource[i].start = mem;
158 res->mem_resource[i].end = mem + len - 1; 209 res->mem_resource[i].end = mem + len - 1;
159 } 210 }
@@ -178,10 +229,11 @@ pnpacpi_parse_allocated_address_space(struct pnp_resource_table *res_table,
178 229
179 if (p->resource_type == ACPI_MEMORY_RANGE) 230 if (p->resource_type == ACPI_MEMORY_RANGE)
180 pnpacpi_parse_allocated_memresource(res_table, 231 pnpacpi_parse_allocated_memresource(res_table,
181 p->minimum, p->address_length); 232 p->minimum, p->address_length, p->info.mem.write_protect);
182 else if (p->resource_type == ACPI_IO_RANGE) 233 else if (p->resource_type == ACPI_IO_RANGE)
183 pnpacpi_parse_allocated_ioresource(res_table, 234 pnpacpi_parse_allocated_ioresource(res_table,
184 p->minimum, p->address_length); 235 p->minimum, p->address_length,
236 p->granularity == 0xfff ? ACPI_DECODE_10 : ACPI_DECODE_16);
185} 237}
186 238
187static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res, 239static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
@@ -208,13 +260,17 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
208 case ACPI_RESOURCE_TYPE_DMA: 260 case ACPI_RESOURCE_TYPE_DMA:
209 if (res->data.dma.channel_count > 0) 261 if (res->data.dma.channel_count > 0)
210 pnpacpi_parse_allocated_dmaresource(res_table, 262 pnpacpi_parse_allocated_dmaresource(res_table,
211 res->data.dma.channels[0]); 263 res->data.dma.channels[0],
264 res->data.dma.type,
265 res->data.dma.bus_master,
266 res->data.dma.transfer);
212 break; 267 break;
213 268
214 case ACPI_RESOURCE_TYPE_IO: 269 case ACPI_RESOURCE_TYPE_IO:
215 pnpacpi_parse_allocated_ioresource(res_table, 270 pnpacpi_parse_allocated_ioresource(res_table,
216 res->data.io.minimum, 271 res->data.io.minimum,
217 res->data.io.address_length); 272 res->data.io.address_length,
273 res->data.io.io_decode);
218 break; 274 break;
219 275
220 case ACPI_RESOURCE_TYPE_START_DEPENDENT: 276 case ACPI_RESOURCE_TYPE_START_DEPENDENT:
@@ -224,7 +280,8 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
224 case ACPI_RESOURCE_TYPE_FIXED_IO: 280 case ACPI_RESOURCE_TYPE_FIXED_IO:
225 pnpacpi_parse_allocated_ioresource(res_table, 281 pnpacpi_parse_allocated_ioresource(res_table,
226 res->data.fixed_io.address, 282 res->data.fixed_io.address,
227 res->data.fixed_io.address_length); 283 res->data.fixed_io.address_length,
284 ACPI_DECODE_10);
228 break; 285 break;
229 286
230 case ACPI_RESOURCE_TYPE_VENDOR: 287 case ACPI_RESOURCE_TYPE_VENDOR:
@@ -236,17 +293,20 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
236 case ACPI_RESOURCE_TYPE_MEMORY24: 293 case ACPI_RESOURCE_TYPE_MEMORY24:
237 pnpacpi_parse_allocated_memresource(res_table, 294 pnpacpi_parse_allocated_memresource(res_table,
238 res->data.memory24.minimum, 295 res->data.memory24.minimum,
239 res->data.memory24.address_length); 296 res->data.memory24.address_length,
297 res->data.memory24.write_protect);
240 break; 298 break;
241 case ACPI_RESOURCE_TYPE_MEMORY32: 299 case ACPI_RESOURCE_TYPE_MEMORY32:
242 pnpacpi_parse_allocated_memresource(res_table, 300 pnpacpi_parse_allocated_memresource(res_table,
243 res->data.memory32.minimum, 301 res->data.memory32.minimum,
244 res->data.memory32.address_length); 302 res->data.memory32.address_length,
303 res->data.memory32.write_protect);
245 break; 304 break;
246 case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: 305 case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
247 pnpacpi_parse_allocated_memresource(res_table, 306 pnpacpi_parse_allocated_memresource(res_table,
248 res->data.fixed_memory32.address, 307 res->data.fixed_memory32.address,
249 res->data.fixed_memory32.address_length); 308 res->data.fixed_memory32.address_length,
309 res->data.fixed_memory32.write_protect);
250 break; 310 break;
251 case ACPI_RESOURCE_TYPE_ADDRESS16: 311 case ACPI_RESOURCE_TYPE_ADDRESS16:
252 case ACPI_RESOURCE_TYPE_ADDRESS32: 312 case ACPI_RESOURCE_TYPE_ADDRESS32:
@@ -304,42 +364,8 @@ static void pnpacpi_parse_dma_option(struct pnp_option *option, struct acpi_reso
304 364
305 for(i = 0; i < p->channel_count; i++) 365 for(i = 0; i < p->channel_count; i++)
306 dma->map |= 1 << p->channels[i]; 366 dma->map |= 1 << p->channels[i];
307 dma->flags = 0; 367
308 if (p->bus_master) 368 dma->flags = dma_flags(p->type, p->bus_master, p->transfer);
309 dma->flags |= IORESOURCE_DMA_MASTER;
310 switch (p->type) {
311 case ACPI_COMPATIBILITY:
312 dma->flags |= IORESOURCE_DMA_COMPATIBLE;
313 break;
314 case ACPI_TYPE_A:
315 dma->flags |= IORESOURCE_DMA_TYPEA;
316 break;
317 case ACPI_TYPE_B:
318 dma->flags |= IORESOURCE_DMA_TYPEB;
319 break;
320 case ACPI_TYPE_F:
321 dma->flags |= IORESOURCE_DMA_TYPEF;
322 break;
323 default:
324 /* Set a default value ? */
325 dma->flags |= IORESOURCE_DMA_COMPATIBLE;
326 pnp_err("Invalid DMA type");
327 }
328 switch (p->transfer) {
329 case ACPI_TRANSFER_8:
330 dma->flags |= IORESOURCE_DMA_8BIT;
331 break;
332 case ACPI_TRANSFER_8_16:
333 dma->flags |= IORESOURCE_DMA_8AND16BIT;
334 break;
335 case ACPI_TRANSFER_16:
336 dma->flags |= IORESOURCE_DMA_16BIT;
337 break;
338 default:
339 /* Set a default value ? */
340 dma->flags |= IORESOURCE_DMA_8AND16BIT;
341 pnp_err("Invalid DMA transfer type");
342 }
343 369
344 pnp_register_dma_resource(option, dma); 370 pnp_register_dma_resource(option, dma);
345 return; 371 return;
diff --git a/drivers/ps3/ps3av.c b/drivers/ps3/ps3av.c
index 1926b4d3e1f4..d21e04ccb021 100644
--- a/drivers/ps3/ps3av.c
+++ b/drivers/ps3/ps3av.c
@@ -24,6 +24,8 @@
24#include <linux/reboot.h> 24#include <linux/reboot.h>
25#include <linux/kernel.h> 25#include <linux/kernel.h>
26#include <linux/ioctl.h> 26#include <linux/ioctl.h>
27
28#include <asm/firmware.h>
27#include <asm/lv1call.h> 29#include <asm/lv1call.h>
28#include <asm/ps3av.h> 30#include <asm/ps3av.h>
29#include <asm/ps3.h> 31#include <asm/ps3.h>
@@ -947,7 +949,12 @@ static struct ps3_vuart_port_driver ps3av_driver = {
947 949
948static int ps3av_module_init(void) 950static int ps3av_module_init(void)
949{ 951{
950 int error = ps3_vuart_port_driver_register(&ps3av_driver); 952 int error;
953
954 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
955 return -ENODEV;
956
957 error = ps3_vuart_port_driver_register(&ps3av_driver);
951 if (error) { 958 if (error) {
952 printk(KERN_ERR 959 printk(KERN_ERR
953 "%s: ps3_vuart_port_driver_register failed %d\n", 960 "%s: ps3_vuart_port_driver_register failed %d\n",
diff --git a/drivers/ps3/sys-manager.c b/drivers/ps3/sys-manager.c
index 0fc30be8b81e..3aa2b0dcc369 100644
--- a/drivers/ps3/sys-manager.c
+++ b/drivers/ps3/sys-manager.c
@@ -22,7 +22,10 @@
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/workqueue.h> 23#include <linux/workqueue.h>
24#include <linux/reboot.h> 24#include <linux/reboot.h>
25
26#include <asm/firmware.h>
25#include <asm/ps3.h> 27#include <asm/ps3.h>
28
26#include "vuart.h" 29#include "vuart.h"
27 30
28MODULE_AUTHOR("Sony Corporation"); 31MODULE_AUTHOR("Sony Corporation");
@@ -598,6 +601,9 @@ static struct ps3_vuart_port_driver ps3_sys_manager = {
598 601
599static int __init ps3_sys_manager_init(void) 602static int __init ps3_sys_manager_init(void)
600{ 603{
604 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
605 return -ENODEV;
606
601 return ps3_vuart_port_driver_register(&ps3_sys_manager); 607 return ps3_vuart_port_driver_register(&ps3_sys_manager);
602} 608}
603 609
diff --git a/drivers/ps3/vuart.c b/drivers/ps3/vuart.c
index 746298107d6f..1adf186bfaf5 100644
--- a/drivers/ps3/vuart.c
+++ b/drivers/ps3/vuart.c
@@ -1031,7 +1031,7 @@ int __init ps3_vuart_bus_init(void)
1031 pr_debug("%s:%d:\n", __func__, __LINE__); 1031 pr_debug("%s:%d:\n", __func__, __LINE__);
1032 1032
1033 if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) 1033 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
1034 return 0; 1034 return -ENODEV;
1035 1035
1036 init_MUTEX(&vuart_bus_priv.probe_mutex); 1036 init_MUTEX(&vuart_bus_priv.probe_mutex);
1037 result = bus_register(&ps3_vuart_bus); 1037 result = bus_register(&ps3_vuart_bus);
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index d38a25f36ea5..31ae661e586a 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -332,9 +332,9 @@ static void acm_rx_tasklet(unsigned long _acm)
332 if (!ACM_READY(acm)) 332 if (!ACM_READY(acm))
333 return; 333 return;
334 334
335 spin_lock(&acm->throttle_lock); 335 spin_lock_irqsave(&acm->throttle_lock, flags);
336 throttled = acm->throttle; 336 throttled = acm->throttle;
337 spin_unlock(&acm->throttle_lock); 337 spin_unlock_irqrestore(&acm->throttle_lock, flags);
338 if (throttled) 338 if (throttled)
339 return; 339 return;
340 340
@@ -352,9 +352,9 @@ next_buffer:
352 dbg("acm_rx_tasklet: procesing buf 0x%p, size = %d", buf, buf->size); 352 dbg("acm_rx_tasklet: procesing buf 0x%p, size = %d", buf, buf->size);
353 353
354 tty_buffer_request_room(tty, buf->size); 354 tty_buffer_request_room(tty, buf->size);
355 spin_lock(&acm->throttle_lock); 355 spin_lock_irqsave(&acm->throttle_lock, flags);
356 throttled = acm->throttle; 356 throttled = acm->throttle;
357 spin_unlock(&acm->throttle_lock); 357 spin_unlock_irqrestore(&acm->throttle_lock, flags);
358 if (!throttled) 358 if (!throttled)
359 tty_insert_flip_string(tty, buf->base, buf->size); 359 tty_insert_flip_string(tty, buf->base, buf->size);
360 tty_flip_buffer_push(tty); 360 tty_flip_buffer_push(tty);
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 274f14f1633e..36e7a843bf91 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -912,7 +912,7 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
912 struct async *as; 912 struct async *as;
913 struct usb_ctrlrequest *dr = NULL; 913 struct usb_ctrlrequest *dr = NULL;
914 unsigned int u, totlen, isofrmlen; 914 unsigned int u, totlen, isofrmlen;
915 int ret, interval = 0, ifnum = -1; 915 int ret, ifnum = -1;
916 916
917 if (uurb->flags & ~(USBDEVFS_URB_ISO_ASAP|USBDEVFS_URB_SHORT_NOT_OK| 917 if (uurb->flags & ~(USBDEVFS_URB_ISO_ASAP|USBDEVFS_URB_SHORT_NOT_OK|
918 URB_NO_FSBR|URB_ZERO_PACKET)) 918 URB_NO_FSBR|URB_ZERO_PACKET))
@@ -992,7 +992,6 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
992 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) 992 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
993 != USB_ENDPOINT_XFER_ISOC) 993 != USB_ENDPOINT_XFER_ISOC)
994 return -EINVAL; 994 return -EINVAL;
995 interval = 1 << min (15, ep->desc.bInterval - 1);
996 isofrmlen = sizeof(struct usbdevfs_iso_packet_desc) * uurb->number_of_packets; 995 isofrmlen = sizeof(struct usbdevfs_iso_packet_desc) * uurb->number_of_packets;
997 if (!(isopkt = kmalloc(isofrmlen, GFP_KERNEL))) 996 if (!(isopkt = kmalloc(isofrmlen, GFP_KERNEL)))
998 return -ENOMEM; 997 return -ENOMEM;
@@ -1021,10 +1020,6 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
1021 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) 1020 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
1022 != USB_ENDPOINT_XFER_INT) 1021 != USB_ENDPOINT_XFER_INT)
1023 return -EINVAL; 1022 return -EINVAL;
1024 if (ps->dev->speed == USB_SPEED_HIGH)
1025 interval = 1 << min (15, ep->desc.bInterval - 1);
1026 else
1027 interval = ep->desc.bInterval;
1028 if (uurb->buffer_length > MAX_USBFS_BUFFER_SIZE) 1023 if (uurb->buffer_length > MAX_USBFS_BUFFER_SIZE)
1029 return -EINVAL; 1024 return -EINVAL;
1030 if (!access_ok((uurb->endpoint & USB_DIR_IN) ? VERIFY_WRITE : VERIFY_READ, uurb->buffer, uurb->buffer_length)) 1025 if (!access_ok((uurb->endpoint & USB_DIR_IN) ? VERIFY_WRITE : VERIFY_READ, uurb->buffer, uurb->buffer_length))
@@ -1053,7 +1048,11 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
1053 as->urb->setup_packet = (unsigned char*)dr; 1048 as->urb->setup_packet = (unsigned char*)dr;
1054 as->urb->start_frame = uurb->start_frame; 1049 as->urb->start_frame = uurb->start_frame;
1055 as->urb->number_of_packets = uurb->number_of_packets; 1050 as->urb->number_of_packets = uurb->number_of_packets;
1056 as->urb->interval = interval; 1051 if (uurb->type == USBDEVFS_URB_TYPE_ISO ||
1052 ps->dev->speed == USB_SPEED_HIGH)
1053 as->urb->interval = 1 << min(15, ep->desc.bInterval - 1);
1054 else
1055 as->urb->interval = ep->desc.bInterval;
1057 as->urb->context = as; 1056 as->urb->context = as;
1058 as->urb->complete = async_completed; 1057 as->urb->complete = async_completed;
1059 for (totlen = u = 0; u < uurb->number_of_packets; u++) { 1058 for (totlen = u = 0; u < uurb->number_of_packets; u++) {
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 41400743ce2c..b89a98e61323 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1281,12 +1281,6 @@ int usb_new_device(struct usb_device *udev)
1281{ 1281{
1282 int err; 1282 int err;
1283 1283
1284 /* Lock ourself into memory in order to keep a probe sequence
1285 * sleeping in a new thread from allowing us to be unloaded.
1286 */
1287 if (!try_module_get(THIS_MODULE))
1288 return -EINVAL;
1289
1290 /* Determine quirks */ 1284 /* Determine quirks */
1291 usb_detect_quirks(udev); 1285 usb_detect_quirks(udev);
1292 1286
@@ -1390,7 +1384,6 @@ int usb_new_device(struct usb_device *udev)
1390 usb_autoresume_device(udev->parent); 1384 usb_autoresume_device(udev->parent);
1391 1385
1392exit: 1386exit:
1393 module_put(THIS_MODULE);
1394 return err; 1387 return err;
1395 1388
1396fail: 1389fail:
@@ -2443,7 +2436,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
2443 2436
2444 if (portchange & USB_PORT_STAT_C_CONNECTION) { 2437 if (portchange & USB_PORT_STAT_C_CONNECTION) {
2445 status = hub_port_debounce(hub, port1); 2438 status = hub_port_debounce(hub, port1);
2446 if (status < 0) { 2439 if (status < 0 && printk_ratelimit()) {
2447 dev_err (hub_dev, 2440 dev_err (hub_dev,
2448 "connect-debounce failed, port %d disabled\n", 2441 "connect-debounce failed, port %d disabled\n",
2449 port1); 2442 port1);
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 2f17468b5c1e..217a3d6d0a06 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -221,10 +221,15 @@ int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
221 221
222 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == 222 if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
223 USB_ENDPOINT_XFER_INT) { 223 USB_ENDPOINT_XFER_INT) {
224 int interval;
225
226 if (usb_dev->speed == USB_SPEED_HIGH)
227 interval = 1 << min(15, ep->desc.bInterval - 1);
228 else
229 interval = ep->desc.bInterval;
224 pipe = (pipe & ~(3 << 30)) | (PIPE_INTERRUPT << 30); 230 pipe = (pipe & ~(3 << 30)) | (PIPE_INTERRUPT << 30);
225 usb_fill_int_urb(urb, usb_dev, pipe, data, len, 231 usb_fill_int_urb(urb, usb_dev, pipe, data, len,
226 usb_api_blocking_completion, NULL, 232 usb_api_blocking_completion, NULL, interval);
227 ep->desc.bInterval);
228 } else 233 } else
229 usb_fill_bulk_urb(urb, usb_dev, pipe, data, len, 234 usb_fill_bulk_urb(urb, usb_dev, pipe, data, len,
230 usb_api_blocking_completion, NULL); 235 usb_api_blocking_completion, NULL);
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index a4677802fb20..2a6e3163d944 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1835,7 +1835,7 @@ static int at91udc_resume(struct platform_device *pdev)
1835#define at91udc_resume NULL 1835#define at91udc_resume NULL
1836#endif 1836#endif
1837 1837
1838static struct platform_driver at91_udc = { 1838static struct platform_driver at91_udc_driver = {
1839 .remove = __exit_p(at91udc_remove), 1839 .remove = __exit_p(at91udc_remove),
1840 .shutdown = at91udc_shutdown, 1840 .shutdown = at91udc_shutdown,
1841 .suspend = at91udc_suspend, 1841 .suspend = at91udc_suspend,
@@ -1848,13 +1848,13 @@ static struct platform_driver at91_udc = {
1848 1848
1849static int __init udc_init_module(void) 1849static int __init udc_init_module(void)
1850{ 1850{
1851 return platform_driver_probe(&at91_udc, at91udc_probe); 1851 return platform_driver_probe(&at91_udc_driver, at91udc_probe);
1852} 1852}
1853module_init(udc_init_module); 1853module_init(udc_init_module);
1854 1854
1855static void __exit udc_exit_module(void) 1855static void __exit udc_exit_module(void)
1856{ 1856{
1857 platform_driver_unregister(&at91_udc); 1857 platform_driver_unregister(&at91_udc_driver);
1858} 1858}
1859module_exit(udc_exit_module); 1859module_exit(udc_exit_module);
1860 1860
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index 7b3a326b57ab..65c91d3735de 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -297,27 +297,6 @@ goku_free_request(struct usb_ep *_ep, struct usb_request *_req)
297 297
298/*-------------------------------------------------------------------------*/ 298/*-------------------------------------------------------------------------*/
299 299
300#undef USE_KMALLOC
301
302/* many common platforms have dma-coherent caches, which means that it's
303 * safe to use kmalloc() memory for all i/o buffers without using any
304 * cache flushing calls. (unless you're trying to share cache lines
305 * between dma and non-dma activities, which is a slow idea in any case.)
306 *
307 * other platforms need more care, with 2.6 having a moderately general
308 * solution except for the common "buffer is smaller than a page" case.
309 */
310#if defined(CONFIG_X86)
311#define USE_KMALLOC
312
313#elif defined(CONFIG_MIPS) && !defined(CONFIG_DMA_NONCOHERENT)
314#define USE_KMALLOC
315
316#elif defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE)
317#define USE_KMALLOC
318
319#endif
320
321/* allocating buffers this way eliminates dma mapping overhead, which 300/* allocating buffers this way eliminates dma mapping overhead, which
322 * on some platforms will mean eliminating a per-io buffer copy. with 301 * on some platforms will mean eliminating a per-io buffer copy. with
323 * some kinds of system caches, further tweaks may still be needed. 302 * some kinds of system caches, further tweaks may still be needed.
@@ -334,11 +313,6 @@ goku_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
334 return NULL; 313 return NULL;
335 *dma = DMA_ADDR_INVALID; 314 *dma = DMA_ADDR_INVALID;
336 315
337#if defined(USE_KMALLOC)
338 retval = kmalloc(bytes, gfp_flags);
339 if (retval)
340 *dma = virt_to_phys(retval);
341#else
342 if (ep->dma) { 316 if (ep->dma) {
343 /* the main problem with this call is that it wastes memory 317 /* the main problem with this call is that it wastes memory
344 * on typical 1/N page allocations: it allocates 1-N pages. 318 * on typical 1/N page allocations: it allocates 1-N pages.
@@ -348,7 +322,6 @@ goku_alloc_buffer(struct usb_ep *_ep, unsigned bytes,
348 bytes, dma, gfp_flags); 322 bytes, dma, gfp_flags);
349 } else 323 } else
350 retval = kmalloc(bytes, gfp_flags); 324 retval = kmalloc(bytes, gfp_flags);
351#endif
352 return retval; 325 return retval;
353} 326}
354 327
@@ -356,7 +329,6 @@ static void
356goku_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes) 329goku_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes)
357{ 330{
358 /* free memory into the right allocator */ 331 /* free memory into the right allocator */
359#ifndef USE_KMALLOC
360 if (dma != DMA_ADDR_INVALID) { 332 if (dma != DMA_ADDR_INVALID) {
361 struct goku_ep *ep; 333 struct goku_ep *ep;
362 334
@@ -365,7 +337,6 @@ goku_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes)
365 return; 337 return;
366 dma_free_coherent(&ep->dev->pdev->dev, bytes, buf, dma); 338 dma_free_coherent(&ep->dev->pdev->dev, bytes, buf, dma);
367 } else 339 } else
368#endif
369 kfree (buf); 340 kfree (buf);
370} 341}
371 342
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 9af529d22b3e..1813b7cac294 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -653,8 +653,7 @@ static int ehci_hub_control (
653 if (status & ~0xffff) /* only if wPortChange is interesting */ 653 if (status & ~0xffff) /* only if wPortChange is interesting */
654#endif 654#endif
655 dbg_port (ehci, "GetStatus", wIndex + 1, temp); 655 dbg_port (ehci, "GetStatus", wIndex + 1, temp);
656 // we "know" this alignment is good, caller used kmalloc()... 656 put_unaligned(cpu_to_le32 (status), (__le32 *) buf);
657 *((__le32 *) buf) = cpu_to_le32 (status);
658 break; 657 break;
659 case SetHubFeature: 658 case SetHubFeature:
660 switch (wValue) { 659 switch (wValue) {
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c
index bacc25c53ba3..8e4427aebb14 100644
--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -33,6 +33,9 @@ static __u8 root_hub_hub_des[] =
33/* status change bits: nonzero writes will clear */ 33/* status change bits: nonzero writes will clear */
34#define RWC_BITS (USBPORTSC_OCC | USBPORTSC_PEC | USBPORTSC_CSC) 34#define RWC_BITS (USBPORTSC_OCC | USBPORTSC_PEC | USBPORTSC_CSC)
35 35
36/* suspend/resume bits: port suspended or port resuming */
37#define SUSPEND_BITS (USBPORTSC_SUSP | USBPORTSC_RD)
38
36/* A port that either is connected or has a changed-bit set will prevent 39/* A port that either is connected or has a changed-bit set will prevent
37 * us from AUTO_STOPPING. 40 * us from AUTO_STOPPING.
38 */ 41 */
@@ -96,8 +99,8 @@ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port,
96 int status; 99 int status;
97 int i; 100 int i;
98 101
99 if (inw(port_addr) & (USBPORTSC_SUSP | USBPORTSC_RD)) { 102 if (inw(port_addr) & SUSPEND_BITS) {
100 CLR_RH_PORTSTAT(USBPORTSC_SUSP | USBPORTSC_RD); 103 CLR_RH_PORTSTAT(SUSPEND_BITS);
101 if (test_bit(port, &uhci->resuming_ports)) 104 if (test_bit(port, &uhci->resuming_ports))
102 set_bit(port, &uhci->port_c_suspend); 105 set_bit(port, &uhci->port_c_suspend);
103 106
@@ -107,7 +110,7 @@ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port,
107 * Experiments show that some controllers take longer, so 110 * Experiments show that some controllers take longer, so
108 * we'll poll for completion. */ 111 * we'll poll for completion. */
109 for (i = 0; i < 10; ++i) { 112 for (i = 0; i < 10; ++i) {
110 if (!(inw(port_addr) & USBPORTSC_RD)) 113 if (!(inw(port_addr) & SUSPEND_BITS))
111 break; 114 break;
112 udelay(1); 115 udelay(1);
113 } 116 }
@@ -289,7 +292,7 @@ static int uhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
289 wPortStatus |= USB_PORT_STAT_CONNECTION; 292 wPortStatus |= USB_PORT_STAT_CONNECTION;
290 if (status & USBPORTSC_PE) { 293 if (status & USBPORTSC_PE) {
291 wPortStatus |= USB_PORT_STAT_ENABLE; 294 wPortStatus |= USB_PORT_STAT_ENABLE;
292 if (status & (USBPORTSC_SUSP | USBPORTSC_RD)) 295 if (status & SUSPEND_BITS)
293 wPortStatus |= USB_PORT_STAT_SUSPEND; 296 wPortStatus |= USB_PORT_STAT_SUSPEND;
294 } 297 }
295 if (status & USBPORTSC_OC) 298 if (status & USBPORTSC_OC)
diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c
index 0c1d66ddb812..bc3327e3dd78 100644
--- a/drivers/usb/misc/ftdi-elan.c
+++ b/drivers/usb/misc/ftdi-elan.c
@@ -2905,17 +2905,31 @@ static int __init ftdi_elan_init(void)
2905{ 2905{
2906 int result; 2906 int result;
2907 printk(KERN_INFO "driver %s built at %s on %s\n", ftdi_elan_driver.name, 2907 printk(KERN_INFO "driver %s built at %s on %s\n", ftdi_elan_driver.name,
2908 __TIME__, __DATE__); 2908 __TIME__, __DATE__);
2909 init_MUTEX(&ftdi_module_lock); 2909 init_MUTEX(&ftdi_module_lock);
2910 INIT_LIST_HEAD(&ftdi_static_list); 2910 INIT_LIST_HEAD(&ftdi_static_list);
2911 status_queue = create_singlethread_workqueue("ftdi-status-control"); 2911 status_queue = create_singlethread_workqueue("ftdi-status-control");
2912 if (!status_queue)
2913 goto err1;
2912 command_queue = create_singlethread_workqueue("ftdi-command-engine"); 2914 command_queue = create_singlethread_workqueue("ftdi-command-engine");
2915 if (!command_queue)
2916 goto err2;
2913 respond_queue = create_singlethread_workqueue("ftdi-respond-engine"); 2917 respond_queue = create_singlethread_workqueue("ftdi-respond-engine");
2918 if (!respond_queue)
2919 goto err3;
2914 result = usb_register(&ftdi_elan_driver); 2920 result = usb_register(&ftdi_elan_driver);
2915 if (result) 2921 if (result)
2916 printk(KERN_ERR "usb_register failed. Error number %d\n", 2922 printk(KERN_ERR "usb_register failed. Error number %d\n",
2917 result); 2923 result);
2918 return result; 2924 return result;
2925
2926 err3:
2927 destroy_workqueue(command_queue);
2928 err2:
2929 destroy_workqueue(status_queue);
2930 err1:
2931 printk(KERN_ERR "%s couldn't create workqueue\n", ftdi_elan_driver.name);
2932 return -ENOMEM;
2919} 2933}
2920 2934
2921static void __exit ftdi_elan_exit(void) 2935static void __exit ftdi_elan_exit(void)
diff --git a/drivers/usb/net/dm9601.c b/drivers/usb/net/dm9601.c
index 4a932e1cd93b..c0bc52be5e10 100644
--- a/drivers/usb/net/dm9601.c
+++ b/drivers/usb/net/dm9601.c
@@ -571,6 +571,10 @@ static const struct driver_info dm9601_info = {
571 571
572static const struct usb_device_id products[] = { 572static const struct usb_device_id products[] = {
573 { 573 {
574 USB_DEVICE(0x07aa, 0x9601), /* Corega FEther USB-TXC */
575 .driver_info = (unsigned long)&dm9601_info,
576 },
577 {
574 USB_DEVICE(0x0a46, 0x9601), /* Davicom USB-100 */ 578 USB_DEVICE(0x0a46, 0x9601), /* Davicom USB-100 */
575 .driver_info = (unsigned long)&dm9601_info, 579 .driver_info = (unsigned long)&dm9601_info,
576 }, 580 },
diff --git a/drivers/usb/serial/airprime.c b/drivers/usb/serial/airprime.c
index 18816bf96a4d..310a8b5f5906 100644
--- a/drivers/usb/serial/airprime.c
+++ b/drivers/usb/serial/airprime.c
@@ -44,8 +44,43 @@ struct airprime_private {
44 int outstanding_urbs; 44 int outstanding_urbs;
45 int throttled; 45 int throttled;
46 struct urb *read_urbp[NUM_READ_URBS]; 46 struct urb *read_urbp[NUM_READ_URBS];
47
48 /* Settings for the port */
49 int rts_state; /* Handshaking pins (outputs) */
50 int dtr_state;
51 int cts_state; /* Handshaking pins (inputs) */
52 int dsr_state;
53 int dcd_state;
54 int ri_state;
47}; 55};
48 56
57static int airprime_send_setup(struct usb_serial_port *port)
58{
59 struct usb_serial *serial = port->serial;
60 struct airprime_private *priv;
61
62 dbg("%s", __FUNCTION__);
63
64 if (port->number != 0)
65 return 0;
66
67 priv = usb_get_serial_port_data(port);
68
69 if (port->tty) {
70 int val = 0;
71 if (priv->dtr_state)
72 val |= 0x01;
73 if (priv->rts_state)
74 val |= 0x02;
75
76 return usb_control_msg(serial->dev,
77 usb_rcvctrlpipe(serial->dev, 0),
78 0x22,0x21,val,0,NULL,0,USB_CTRL_SET_TIMEOUT);
79 }
80
81 return 0;
82}
83
49static void airprime_read_bulk_callback(struct urb *urb) 84static void airprime_read_bulk_callback(struct urb *urb)
50{ 85{
51 struct usb_serial_port *port = urb->context; 86 struct usb_serial_port *port = urb->context;
@@ -118,6 +153,10 @@ static int airprime_open(struct usb_serial_port *port, struct file *filp)
118 usb_set_serial_port_data(port, priv); 153 usb_set_serial_port_data(port, priv);
119 } 154 }
120 155
156 /* Set some sane defaults */
157 priv->rts_state = 1;
158 priv->dtr_state = 1;
159
121 for (i = 0; i < NUM_READ_URBS; ++i) { 160 for (i = 0; i < NUM_READ_URBS; ++i) {
122 buffer = kmalloc(buffer_size, GFP_KERNEL); 161 buffer = kmalloc(buffer_size, GFP_KERNEL);
123 if (!buffer) { 162 if (!buffer) {
@@ -151,6 +190,9 @@ static int airprime_open(struct usb_serial_port *port, struct file *filp)
151 /* remember this urb so we can kill it when the port is closed */ 190 /* remember this urb so we can kill it when the port is closed */
152 priv->read_urbp[i] = urb; 191 priv->read_urbp[i] = urb;
153 } 192 }
193
194 airprime_send_setup(port);
195
154 goto out; 196 goto out;
155 197
156 errout: 198 errout:
@@ -176,6 +218,11 @@ static void airprime_close(struct usb_serial_port *port, struct file * filp)
176 218
177 dbg("%s - port %d", __FUNCTION__, port->number); 219 dbg("%s - port %d", __FUNCTION__, port->number);
178 220
221 priv->rts_state = 0;
222 priv->dtr_state = 0;
223
224 airprime_send_setup(port);
225
179 for (i = 0; i < NUM_READ_URBS; ++i) { 226 for (i = 0; i < NUM_READ_URBS; ++i) {
180 usb_kill_urb (priv->read_urbp[i]); 227 usb_kill_urb (priv->read_urbp[i]);
181 kfree (priv->read_urbp[i]->transfer_buffer); 228 kfree (priv->read_urbp[i]->transfer_buffer);
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c
index db623e754899..d7d0ba986a80 100644
--- a/drivers/usb/serial/cp2101.c
+++ b/drivers/usb/serial/cp2101.c
@@ -63,6 +63,8 @@ static struct usb_device_id id_table [] = {
63 { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */ 63 { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
64 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */ 64 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
65 { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */ 65 { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */
66 { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
67 { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
66 { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ 68 { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
67 { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ 69 { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
68 { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ 70 { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index c525b42dadde..1633a0fd48e8 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -315,6 +315,7 @@ static struct usb_device_id id_table_combined [] = {
315 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, 315 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
316 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, 316 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
317 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, 317 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
318 { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) },
318 { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) }, 319 { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) },
319 { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) }, 320 { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) },
320 { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) }, 321 { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) },
@@ -420,6 +421,14 @@ static struct usb_device_id id_table_combined [] = {
420 { USB_DEVICE(FTDI_VID, FTDI_ELV_ALC8500_PID) }, 421 { USB_DEVICE(FTDI_VID, FTDI_ELV_ALC8500_PID) },
421 { USB_DEVICE(FTDI_VID, FTDI_PYRAMID_PID) }, 422 { USB_DEVICE(FTDI_VID, FTDI_PYRAMID_PID) },
422 { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1000PC_PID) }, 423 { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1000PC_PID) },
424 { USB_DEVICE(FTDI_VID, FTDI_IBS_US485_PID) },
425 { USB_DEVICE(FTDI_VID, FTDI_IBS_PICPRO_PID) },
426 { USB_DEVICE(FTDI_VID, FTDI_IBS_PCMCIA_PID) },
427 { USB_DEVICE(FTDI_VID, FTDI_IBS_PK1_PID) },
428 { USB_DEVICE(FTDI_VID, FTDI_IBS_RS232MON_PID) },
429 { USB_DEVICE(FTDI_VID, FTDI_IBS_APP70_PID) },
430 { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) },
431 { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) },
423 /* 432 /*
424 * These will probably use user-space drivers. Uncomment them if 433 * These will probably use user-space drivers. Uncomment them if
425 * you need them or use the user-specified vendor/product module 434 * you need them or use the user-specified vendor/product module
@@ -459,6 +468,7 @@ static struct usb_device_id id_table_combined [] = {
459 { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) }, 468 { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) },
460 { USB_DEVICE(FALCOM_VID, FALCOM_SAMBA_PID) }, 469 { USB_DEVICE(FALCOM_VID, FALCOM_SAMBA_PID) },
461 { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) }, 470 { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) },
471 { USB_DEVICE(TTI_VID, TTI_QL355P_PID) },
462 { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, 472 { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) },
463 { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, 473 { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) },
464 { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, 474 { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) },
@@ -533,6 +543,7 @@ static const char *ftdi_chip_name[] = {
533 [FT8U232AM] = "FT8U232AM", 543 [FT8U232AM] = "FT8U232AM",
534 [FT232BM] = "FT232BM", 544 [FT232BM] = "FT232BM",
535 [FT2232C] = "FT2232C", 545 [FT2232C] = "FT2232C",
546 [FT232RL] = "FT232RL",
536}; 547};
537 548
538 549
@@ -588,6 +599,8 @@ struct ftdi_private {
588static int ftdi_sio_probe (struct usb_serial *serial, const struct usb_device_id *id); 599static int ftdi_sio_probe (struct usb_serial *serial, const struct usb_device_id *id);
589static int ftdi_sio_attach (struct usb_serial *serial); 600static int ftdi_sio_attach (struct usb_serial *serial);
590static void ftdi_shutdown (struct usb_serial *serial); 601static void ftdi_shutdown (struct usb_serial *serial);
602static int ftdi_sio_port_probe (struct usb_serial_port *port);
603static int ftdi_sio_port_remove (struct usb_serial_port *port);
591static int ftdi_open (struct usb_serial_port *port, struct file *filp); 604static int ftdi_open (struct usb_serial_port *port, struct file *filp);
592static void ftdi_close (struct usb_serial_port *port, struct file *filp); 605static void ftdi_close (struct usb_serial_port *port, struct file *filp);
593static int ftdi_write (struct usb_serial_port *port, const unsigned char *buf, int count); 606static int ftdi_write (struct usb_serial_port *port, const unsigned char *buf, int count);
@@ -622,6 +635,8 @@ static struct usb_serial_driver ftdi_sio_device = {
622 .num_bulk_out = 1, 635 .num_bulk_out = 1,
623 .num_ports = 1, 636 .num_ports = 1,
624 .probe = ftdi_sio_probe, 637 .probe = ftdi_sio_probe,
638 .port_probe = ftdi_sio_port_probe,
639 .port_remove = ftdi_sio_port_remove,
625 .open = ftdi_open, 640 .open = ftdi_open,
626 .close = ftdi_close, 641 .close = ftdi_close,
627 .throttle = ftdi_throttle, 642 .throttle = ftdi_throttle,
@@ -1024,11 +1039,10 @@ static ssize_t show_latency_timer(struct device *dev, struct device_attribute *a
1024{ 1039{
1025 struct usb_serial_port *port = to_usb_serial_port(dev); 1040 struct usb_serial_port *port = to_usb_serial_port(dev);
1026 struct ftdi_private *priv = usb_get_serial_port_data(port); 1041 struct ftdi_private *priv = usb_get_serial_port_data(port);
1027 struct usb_device *udev; 1042 struct usb_device *udev = port->serial->dev;
1028 unsigned short latency = 0; 1043 unsigned short latency = 0;
1029 int rv = 0; 1044 int rv = 0;
1030 1045
1031 udev = to_usb_device(dev);
1032 1046
1033 dbg("%s",__FUNCTION__); 1047 dbg("%s",__FUNCTION__);
1034 1048
@@ -1052,13 +1066,11 @@ static ssize_t store_latency_timer(struct device *dev, struct device_attribute *
1052{ 1066{
1053 struct usb_serial_port *port = to_usb_serial_port(dev); 1067 struct usb_serial_port *port = to_usb_serial_port(dev);
1054 struct ftdi_private *priv = usb_get_serial_port_data(port); 1068 struct ftdi_private *priv = usb_get_serial_port_data(port);
1055 struct usb_device *udev; 1069 struct usb_device *udev = port->serial->dev;
1056 char buf[1]; 1070 char buf[1];
1057 int v = simple_strtoul(valbuf, NULL, 10); 1071 int v = simple_strtoul(valbuf, NULL, 10);
1058 int rv = 0; 1072 int rv = 0;
1059 1073
1060 udev = to_usb_device(dev);
1061
1062 dbg("%s: setting latency timer = %i", __FUNCTION__, v); 1074 dbg("%s: setting latency timer = %i", __FUNCTION__, v);
1063 1075
1064 rv = usb_control_msg(udev, 1076 rv = usb_control_msg(udev,
@@ -1083,13 +1095,11 @@ static ssize_t store_event_char(struct device *dev, struct device_attribute *att
1083{ 1095{
1084 struct usb_serial_port *port = to_usb_serial_port(dev); 1096 struct usb_serial_port *port = to_usb_serial_port(dev);
1085 struct ftdi_private *priv = usb_get_serial_port_data(port); 1097 struct ftdi_private *priv = usb_get_serial_port_data(port);
1086 struct usb_device *udev; 1098 struct usb_device *udev = port->serial->dev;
1087 char buf[1]; 1099 char buf[1];
1088 int v = simple_strtoul(valbuf, NULL, 10); 1100 int v = simple_strtoul(valbuf, NULL, 10);
1089 int rv = 0; 1101 int rv = 0;
1090 1102
1091 udev = to_usb_device(dev);
1092
1093 dbg("%s: setting event char = %i", __FUNCTION__, v); 1103 dbg("%s: setting event char = %i", __FUNCTION__, v);
1094 1104
1095 rv = usb_control_msg(udev, 1105 rv = usb_control_msg(udev,
@@ -1110,46 +1120,38 @@ static ssize_t store_event_char(struct device *dev, struct device_attribute *att
1110static DEVICE_ATTR(latency_timer, S_IWUSR | S_IRUGO, show_latency_timer, store_latency_timer); 1120static DEVICE_ATTR(latency_timer, S_IWUSR | S_IRUGO, show_latency_timer, store_latency_timer);
1111static DEVICE_ATTR(event_char, S_IWUSR, NULL, store_event_char); 1121static DEVICE_ATTR(event_char, S_IWUSR, NULL, store_event_char);
1112 1122
1113static int create_sysfs_attrs(struct usb_serial *serial) 1123static int create_sysfs_attrs(struct usb_serial_port *port)
1114{ 1124{
1115 struct ftdi_private *priv; 1125 struct ftdi_private *priv = usb_get_serial_port_data(port);
1116 struct usb_device *udev;
1117 int retval = 0; 1126 int retval = 0;
1118 1127
1119 dbg("%s",__FUNCTION__); 1128 dbg("%s",__FUNCTION__);
1120 1129
1121 priv = usb_get_serial_port_data(serial->port[0]);
1122 udev = serial->dev;
1123
1124 /* XXX I've no idea if the original SIO supports the event_char 1130 /* XXX I've no idea if the original SIO supports the event_char
1125 * sysfs parameter, so I'm playing it safe. */ 1131 * sysfs parameter, so I'm playing it safe. */
1126 if (priv->chip_type != SIO) { 1132 if (priv->chip_type != SIO) {
1127 dbg("sysfs attributes for %s", ftdi_chip_name[priv->chip_type]); 1133 dbg("sysfs attributes for %s", ftdi_chip_name[priv->chip_type]);
1128 retval = device_create_file(&udev->dev, &dev_attr_event_char); 1134 retval = device_create_file(&port->dev, &dev_attr_event_char);
1129 if ((!retval) && 1135 if ((!retval) &&
1130 (priv->chip_type == FT232BM || priv->chip_type == FT2232C)) { 1136 (priv->chip_type == FT232BM || priv->chip_type == FT2232C)) {
1131 retval = device_create_file(&udev->dev, 1137 retval = device_create_file(&port->dev,
1132 &dev_attr_latency_timer); 1138 &dev_attr_latency_timer);
1133 } 1139 }
1134 } 1140 }
1135 return retval; 1141 return retval;
1136} 1142}
1137 1143
1138static void remove_sysfs_attrs(struct usb_serial *serial) 1144static void remove_sysfs_attrs(struct usb_serial_port *port)
1139{ 1145{
1140 struct ftdi_private *priv; 1146 struct ftdi_private *priv = usb_get_serial_port_data(port);
1141 struct usb_device *udev;
1142 1147
1143 dbg("%s",__FUNCTION__); 1148 dbg("%s",__FUNCTION__);
1144 1149
1145 priv = usb_get_serial_port_data(serial->port[0]);
1146 udev = serial->dev;
1147
1148 /* XXX see create_sysfs_attrs */ 1150 /* XXX see create_sysfs_attrs */
1149 if (priv->chip_type != SIO) { 1151 if (priv->chip_type != SIO) {
1150 device_remove_file(&udev->dev, &dev_attr_event_char); 1152 device_remove_file(&port->dev, &dev_attr_event_char);
1151 if (priv->chip_type == FT232BM || priv->chip_type == FT2232C) { 1153 if (priv->chip_type == FT232BM || priv->chip_type == FT2232C) {
1152 device_remove_file(&udev->dev, &dev_attr_latency_timer); 1154 device_remove_file(&port->dev, &dev_attr_latency_timer);
1153 } 1155 }
1154 } 1156 }
1155 1157
@@ -1169,13 +1171,9 @@ static int ftdi_sio_probe (struct usb_serial *serial, const struct usb_device_id
1169 return (0); 1171 return (0);
1170} 1172}
1171 1173
1172/* attach subroutine */ 1174static int ftdi_sio_port_probe(struct usb_serial_port *port)
1173static int ftdi_sio_attach (struct usb_serial *serial)
1174{ 1175{
1175 struct usb_serial_port *port = serial->port[0];
1176 struct ftdi_private *priv; 1176 struct ftdi_private *priv;
1177 struct ftdi_sio_quirk *quirk;
1178 int retval;
1179 1177
1180 dbg("%s",__FUNCTION__); 1178 dbg("%s",__FUNCTION__);
1181 1179
@@ -1215,19 +1213,21 @@ static int ftdi_sio_attach (struct usb_serial *serial)
1215 kfree(port->bulk_out_buffer); 1213 kfree(port->bulk_out_buffer);
1216 port->bulk_out_buffer = NULL; 1214 port->bulk_out_buffer = NULL;
1217 1215
1218 usb_set_serial_port_data(serial->port[0], priv); 1216 usb_set_serial_port_data(port, priv);
1219 1217
1220 ftdi_determine_type (serial->port[0]); 1218 ftdi_determine_type (port);
1221 retval = create_sysfs_attrs(serial); 1219 create_sysfs_attrs(port);
1222 if (retval) 1220 return 0;
1223 dev_err(&serial->dev->dev, "Error creating sysfs files, " 1221}
1224 "continuing\n");
1225 1222
1223/* attach subroutine */
1224static int ftdi_sio_attach (struct usb_serial *serial)
1225{
1226 /* Check for device requiring special set up. */ 1226 /* Check for device requiring special set up. */
1227 quirk = (struct ftdi_sio_quirk *)usb_get_serial_data(serial); 1227 struct ftdi_sio_quirk *quirk = usb_get_serial_data(serial);
1228 if (quirk && quirk->setup) { 1228
1229 if (quirk && quirk->setup)
1229 quirk->setup(serial); 1230 quirk->setup(serial);
1230 }
1231 1231
1232 return 0; 1232 return 0;
1233} /* ftdi_sio_attach */ 1233} /* ftdi_sio_attach */
@@ -1271,17 +1271,18 @@ static void ftdi_HE_TIRA1_setup (struct usb_serial *serial)
1271 * calls __serial_close for each open of the port 1271 * calls __serial_close for each open of the port
1272 * shutdown is called then (ie ftdi_shutdown) 1272 * shutdown is called then (ie ftdi_shutdown)
1273 */ 1273 */
1274
1275
1276static void ftdi_shutdown (struct usb_serial *serial) 1274static void ftdi_shutdown (struct usb_serial *serial)
1277{ /* ftdi_shutdown */ 1275{
1276 dbg("%s", __FUNCTION__);
1277}
1278 1278
1279 struct usb_serial_port *port = serial->port[0]; 1279static int ftdi_sio_port_remove(struct usb_serial_port *port)
1280{
1280 struct ftdi_private *priv = usb_get_serial_port_data(port); 1281 struct ftdi_private *priv = usb_get_serial_port_data(port);
1281 1282
1282 dbg("%s", __FUNCTION__); 1283 dbg("%s", __FUNCTION__);
1283 1284
1284 remove_sysfs_attrs(serial); 1285 remove_sysfs_attrs(port);
1285 1286
1286 /* all open ports are closed at this point 1287 /* all open ports are closed at this point
1287 * (by usbserial.c:__serial_close, which calls ftdi_close) 1288 * (by usbserial.c:__serial_close, which calls ftdi_close)
@@ -1291,8 +1292,9 @@ static void ftdi_shutdown (struct usb_serial *serial)
1291 usb_set_serial_port_data(port, NULL); 1292 usb_set_serial_port_data(port, NULL);
1292 kfree(priv); 1293 kfree(priv);
1293 } 1294 }
1294} /* ftdi_shutdown */
1295 1295
1296 return 0;
1297}
1296 1298
1297static int ftdi_open (struct usb_serial_port *port, struct file *filp) 1299static int ftdi_open (struct usb_serial_port *port, struct file *filp)
1298{ /* ftdi_open */ 1300{ /* ftdi_open */
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 1bdda935f7d9..513cfe1b768b 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -27,6 +27,7 @@
27#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */ 27#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
28#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */ 28#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
29#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */ 29#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
30#define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
30#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */ 31#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
31#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */ 32#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
32#define FTDI_NF_RIC_PID 0x0001 /* Product Id */ 33#define FTDI_NF_RIC_PID 0x0001 /* Product Id */
@@ -339,6 +340,12 @@
339#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */ 340#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */
340 341
341/* 342/*
343 * TTi (Thurlby Thandar Instruments)
344 */
345#define TTI_VID 0x103E /* Vendor Id */
346#define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */
347
348/*
342 * Definitions for B&B Electronics products. 349 * Definitions for B&B Electronics products.
343 */ 350 */
344#define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */ 351#define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */
@@ -497,6 +504,19 @@
497#define TELLDUS_VID 0x1781 /* Vendor ID */ 504#define TELLDUS_VID 0x1781 /* Vendor ID */
498#define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */ 505#define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */
499 506
507/*
508 * IBS elektronik product ids
509 * Submitted by Thomas Schleusener
510 */
511#define FTDI_IBS_US485_PID 0xff38 /* IBS US485 (USB<-->RS422/485 interface) */
512#define FTDI_IBS_PICPRO_PID 0xff39 /* IBS PIC-Programmer */
513#define FTDI_IBS_PCMCIA_PID 0xff3a /* IBS Card reader for PCMCIA SRAM-cards */
514#define FTDI_IBS_PK1_PID 0xff3b /* IBS PK1 - Particel counter */
515#define FTDI_IBS_RS232MON_PID 0xff3c /* IBS RS232 - Monitor */
516#define FTDI_IBS_APP70_PID 0xff3d /* APP 70 (dust monitoring system) */
517#define FTDI_IBS_PEDO_PID 0xff3e /* IBS PEDO-Modem (RF modem 868.35 MHz) */
518#define FTDI_IBS_PROD_PID 0xff3f /* future device */
519
500/* Commands */ 520/* Commands */
501#define FTDI_SIO_RESET 0 /* Reset the port */ 521#define FTDI_SIO_RESET 0 /* Reset the port */
502#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */ 522#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
@@ -620,6 +640,7 @@ typedef enum {
620 FT8U232AM = 2, 640 FT8U232AM = 2,
621 FT232BM = 3, 641 FT232BM = 3,
622 FT2232C = 4, 642 FT2232C = 4,
643 FT232RL = 5,
623} ftdi_chip_type_t; 644} ftdi_chip_type_t;
624 645
625typedef enum { 646typedef enum {
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index a408184334ea..d16e2e1764ad 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -247,6 +247,8 @@ static struct usb_device_id ipaq_id_table [] = {
247 { USB_DEVICE(0x04AD, 0x0301) }, /* USB Sync 0301 */ 247 { USB_DEVICE(0x04AD, 0x0301) }, /* USB Sync 0301 */
248 { USB_DEVICE(0x04AD, 0x0302) }, /* USB Sync 0302 */ 248 { USB_DEVICE(0x04AD, 0x0302) }, /* USB Sync 0302 */
249 { USB_DEVICE(0x04AD, 0x0303) }, /* USB Sync 0303 */ 249 { USB_DEVICE(0x04AD, 0x0303) }, /* USB Sync 0303 */
250 { USB_DEVICE(0x04AD, 0x0306) }, /* GPS Pocket PC USB Sync */
251 { USB_DEVICE(0x04B7, 0x0531) }, /* MyGuide 7000 XL USB Sync */
250 { USB_DEVICE(0x04C5, 0x1058) }, /* FUJITSU USB Sync */ 252 { USB_DEVICE(0x04C5, 0x1058) }, /* FUJITSU USB Sync */
251 { USB_DEVICE(0x04C5, 0x1079) }, /* FUJITSU USB Sync */ 253 { USB_DEVICE(0x04C5, 0x1079) }, /* FUJITSU USB Sync */
252 { USB_DEVICE(0x04DA, 0x2500) }, /* Panasonic USB Sync */ 254 { USB_DEVICE(0x04DA, 0x2500) }, /* Panasonic USB Sync */
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 6bf22a28adb8..8511352251f3 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -99,9 +99,12 @@ static struct usb_serial *get_free_serial (struct usb_serial *serial, int num_po
99 continue; 99 continue;
100 100
101 *minor = i; 101 *minor = i;
102 j = 0;
102 dbg("%s - minor base = %d", __FUNCTION__, *minor); 103 dbg("%s - minor base = %d", __FUNCTION__, *minor);
103 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) 104 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) {
104 serial_table[i] = serial; 105 serial_table[i] = serial;
106 serial->port[j++]->number = i;
107 }
105 spin_unlock(&table_lock); 108 spin_unlock(&table_lock);
106 return serial; 109 return serial;
107 } 110 }
@@ -135,11 +138,6 @@ static void destroy_serial(struct kref *kref)
135 138
136 dbg("%s - %s", __FUNCTION__, serial->type->description); 139 dbg("%s - %s", __FUNCTION__, serial->type->description);
137 140
138 serial->type->shutdown(serial);
139
140 /* return the minor range that this device had */
141 return_serial(serial);
142
143 for (i = 0; i < serial->num_ports; ++i) 141 for (i = 0; i < serial->num_ports; ++i)
144 serial->port[i]->open_count = 0; 142 serial->port[i]->open_count = 0;
145 143
@@ -150,6 +148,12 @@ static void destroy_serial(struct kref *kref)
150 serial->port[i] = NULL; 148 serial->port[i] = NULL;
151 } 149 }
152 150
151 if (serial->type->shutdown)
152 serial->type->shutdown(serial);
153
154 /* return the minor range that this device had */
155 return_serial(serial);
156
153 /* If this is a "fake" port, we have to clean it up here, as it will 157 /* If this is a "fake" port, we have to clean it up here, as it will
154 * not get cleaned up in port_release() as it was never registered with 158 * not get cleaned up in port_release() as it was never registered with
155 * the driver core */ 159 * the driver core */
@@ -826,7 +830,6 @@ int usb_serial_probe(struct usb_interface *interface,
826 num_ports = type->num_ports; 830 num_ports = type->num_ports;
827 } 831 }
828 832
829 serial->minor = minor;
830 serial->num_ports = num_ports; 833 serial->num_ports = num_ports;
831 serial->num_bulk_in = num_bulk_in; 834 serial->num_bulk_in = num_bulk_in;
832 serial->num_bulk_out = num_bulk_out; 835 serial->num_bulk_out = num_bulk_out;
@@ -847,7 +850,6 @@ int usb_serial_probe(struct usb_interface *interface,
847 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL); 850 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL);
848 if (!port) 851 if (!port)
849 goto probe_error; 852 goto probe_error;
850 port->number = i + serial->minor;
851 port->serial = serial; 853 port->serial = serial;
852 spin_lock_init(&port->lock); 854 spin_lock_init(&port->lock);
853 mutex_init(&port->mutex); 855 mutex_init(&port->mutex);
@@ -980,6 +982,7 @@ int usb_serial_probe(struct usb_interface *interface,
980 dev_err(&interface->dev, "No more free serial devices\n"); 982 dev_err(&interface->dev, "No more free serial devices\n");
981 goto probe_error; 983 goto probe_error;
982 } 984 }
985 serial->minor = minor;
983 986
984 /* register all of the individual ports with the driver core */ 987 /* register all of the individual ports with the driver core */
985 for (i = 0; i < num_ports; ++i) { 988 for (i = 0; i < num_ports; ++i) {
@@ -1034,9 +1037,6 @@ probe_error:
1034 kfree(port->interrupt_out_buffer); 1037 kfree(port->interrupt_out_buffer);
1035 } 1038 }
1036 1039
1037 /* return the minor range that this device had */
1038 return_serial (serial);
1039
1040 /* free up any memory that we allocated */ 1040 /* free up any memory that we allocated */
1041 for (i = 0; i < serial->num_port_pointers; ++i) 1041 for (i = 0; i < serial->num_port_pointers; ++i)
1042 kfree(serial->port[i]); 1042 kfree(serial->port[i]);
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 9644a8ea4aa7..2dd31e3f5107 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -146,6 +146,13 @@ UNUSUAL_DEV( 0x0420, 0x0001, 0x0100, 0x0100,
146 US_SC_DEVICE, US_PR_DEVICE, NULL, 146 US_SC_DEVICE, US_PR_DEVICE, NULL,
147 US_FL_IGNORE_RESIDUE ), 147 US_FL_IGNORE_RESIDUE ),
148 148
149/* Reported by Andrew Nayenko <relan@bk.ru> */
150UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x0592,
151 "Nokia",
152 "Nokia 6288",
153 US_SC_DEVICE, US_PR_DEVICE, NULL,
154 US_FL_MAX_SECTORS_64 ),
155
149/* Reported by Mario Rettig <mariorettig@web.de> */ 156/* Reported by Mario Rettig <mariorettig@web.de> */
150UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100, 157UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100,
151 "Nokia", 158 "Nokia",
@@ -1395,16 +1402,6 @@ UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
1395 US_SC_DEVICE, US_PR_DEVICE, NULL, 1402 US_SC_DEVICE, US_PR_DEVICE, NULL,
1396 US_FL_IGNORE_RESIDUE ), 1403 US_FL_IGNORE_RESIDUE ),
1397 1404
1398/* Reported by Thomas Baechler <thomas@archlinux.org>
1399 * Fixes I/O errors with Teac HD-35PU devices
1400 */
1401
1402UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
1403 "Super Top",
1404 "USB 2.0 IDE DEVICE",
1405 US_SC_DEVICE, US_PR_DEVICE, NULL,
1406 US_FL_IGNORE_RESIDUE),
1407
1408/* patch submitted by Davide Perini <perini.davide@dpsoftware.org> 1405/* patch submitted by Davide Perini <perini.davide@dpsoftware.org>
1409 * and Renato Perini <rperini@email.it> 1406 * and Renato Perini <rperini@email.it>
1410 */ 1407 */
diff --git a/drivers/video/backlight/locomolcd.c b/drivers/video/backlight/locomolcd.c
index d1312477813e..6b488b8a7eee 100644
--- a/drivers/video/backlight/locomolcd.c
+++ b/drivers/video/backlight/locomolcd.c
@@ -199,8 +199,8 @@ static int locomolcd_remove(struct locomo_dev *dev)
199{ 199{
200 unsigned long flags; 200 unsigned long flags;
201 201
202 locomobl_data.brightness = 0; 202 locomolcd_bl_device->props.brightness = 0;
203 locomobl_data.power = 0; 203 locomolcd_bl_device->props.power = 0;
204 locomolcd_set_intensity(locomolcd_bl_device); 204 locomolcd_set_intensity(locomolcd_bl_device);
205 205
206 backlight_device_unregister(locomolcd_bl_device); 206 backlight_device_unregister(locomolcd_bl_device);
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c
index 9bb6257d6918..b0b2e40bbd9f 100644
--- a/drivers/video/bw2.c
+++ b/drivers/video/bw2.c
@@ -186,8 +186,7 @@ static int bw2_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
186 * Initialisation 186 * Initialisation
187 */ 187 */
188 188
189static void 189static void __devinit bw2_init_fix(struct fb_info *info, int linebytes)
190bw2_init_fix(struct fb_info *info, int linebytes)
191{ 190{
192 strlcpy(info->fix.id, "bwtwo", sizeof(info->fix.id)); 191 strlcpy(info->fix.id, "bwtwo", sizeof(info->fix.id));
193 192
@@ -199,43 +198,44 @@ bw2_init_fix(struct fb_info *info, int linebytes)
199 info->fix.accel = FB_ACCEL_SUN_BWTWO; 198 info->fix.accel = FB_ACCEL_SUN_BWTWO;
200} 199}
201 200
202static u8 bw2regs_1600[] __initdata = { 201static u8 bw2regs_1600[] __devinitdata = {
203 0x14, 0x8b, 0x15, 0x28, 0x16, 0x03, 0x17, 0x13, 202 0x14, 0x8b, 0x15, 0x28, 0x16, 0x03, 0x17, 0x13,
204 0x18, 0x7b, 0x19, 0x05, 0x1a, 0x34, 0x1b, 0x2e, 203 0x18, 0x7b, 0x19, 0x05, 0x1a, 0x34, 0x1b, 0x2e,
205 0x1c, 0x00, 0x1d, 0x0a, 0x1e, 0xff, 0x1f, 0x01, 204 0x1c, 0x00, 0x1d, 0x0a, 0x1e, 0xff, 0x1f, 0x01,
206 0x10, 0x21, 0 205 0x10, 0x21, 0
207}; 206};
208 207
209static u8 bw2regs_ecl[] __initdata = { 208static u8 bw2regs_ecl[] __devinitdata = {
210 0x14, 0x65, 0x15, 0x1e, 0x16, 0x04, 0x17, 0x0c, 209 0x14, 0x65, 0x15, 0x1e, 0x16, 0x04, 0x17, 0x0c,
211 0x18, 0x5e, 0x19, 0x03, 0x1a, 0xa7, 0x1b, 0x23, 210 0x18, 0x5e, 0x19, 0x03, 0x1a, 0xa7, 0x1b, 0x23,
212 0x1c, 0x00, 0x1d, 0x08, 0x1e, 0xff, 0x1f, 0x01, 211 0x1c, 0x00, 0x1d, 0x08, 0x1e, 0xff, 0x1f, 0x01,
213 0x10, 0x20, 0 212 0x10, 0x20, 0
214}; 213};
215 214
216static u8 bw2regs_analog[] __initdata = { 215static u8 bw2regs_analog[] __devinitdata = {
217 0x14, 0xbb, 0x15, 0x2b, 0x16, 0x03, 0x17, 0x13, 216 0x14, 0xbb, 0x15, 0x2b, 0x16, 0x03, 0x17, 0x13,
218 0x18, 0xb0, 0x19, 0x03, 0x1a, 0xa6, 0x1b, 0x22, 217 0x18, 0xb0, 0x19, 0x03, 0x1a, 0xa6, 0x1b, 0x22,
219 0x1c, 0x01, 0x1d, 0x05, 0x1e, 0xff, 0x1f, 0x01, 218 0x1c, 0x01, 0x1d, 0x05, 0x1e, 0xff, 0x1f, 0x01,
220 0x10, 0x20, 0 219 0x10, 0x20, 0
221}; 220};
222 221
223static u8 bw2regs_76hz[] __initdata = { 222static u8 bw2regs_76hz[] __devinitdata = {
224 0x14, 0xb7, 0x15, 0x27, 0x16, 0x03, 0x17, 0x0f, 223 0x14, 0xb7, 0x15, 0x27, 0x16, 0x03, 0x17, 0x0f,
225 0x18, 0xae, 0x19, 0x03, 0x1a, 0xae, 0x1b, 0x2a, 224 0x18, 0xae, 0x19, 0x03, 0x1a, 0xae, 0x1b, 0x2a,
226 0x1c, 0x01, 0x1d, 0x09, 0x1e, 0xff, 0x1f, 0x01, 225 0x1c, 0x01, 0x1d, 0x09, 0x1e, 0xff, 0x1f, 0x01,
227 0x10, 0x24, 0 226 0x10, 0x24, 0
228}; 227};
229 228
230static u8 bw2regs_66hz[] __initdata = { 229static u8 bw2regs_66hz[] __devinitdata = {
231 0x14, 0xbb, 0x15, 0x2b, 0x16, 0x04, 0x17, 0x14, 230 0x14, 0xbb, 0x15, 0x2b, 0x16, 0x04, 0x17, 0x14,
232 0x18, 0xae, 0x19, 0x03, 0x1a, 0xa8, 0x1b, 0x24, 231 0x18, 0xae, 0x19, 0x03, 0x1a, 0xa8, 0x1b, 0x24,
233 0x1c, 0x01, 0x1d, 0x05, 0x1e, 0xff, 0x1f, 0x01, 232 0x1c, 0x01, 0x1d, 0x05, 0x1e, 0xff, 0x1f, 0x01,
234 0x10, 0x20, 0 233 0x10, 0x20, 0
235}; 234};
236 235
237static void bw2_do_default_mode(struct bw2_par *par, struct fb_info *info, 236static void __devinit bw2_do_default_mode(struct bw2_par *par,
238 int *linebytes) 237 struct fb_info *info,
238 int *linebytes)
239{ 239{
240 u8 status, mon; 240 u8 status, mon;
241 u8 *p; 241 u8 *p;
diff --git a/drivers/video/cg14.c b/drivers/video/cg14.c
index ec6a51a5822d..b071bb632b97 100644
--- a/drivers/video/cg14.c
+++ b/drivers/video/cg14.c
@@ -354,7 +354,8 @@ static int cg14_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
354 * Initialisation 354 * Initialisation
355 */ 355 */
356 356
357static void cg14_init_fix(struct fb_info *info, int linebytes, struct device_node *dp) 357static void __devinit cg14_init_fix(struct fb_info *info, int linebytes,
358 struct device_node *dp)
358{ 359{
359 const char *name = dp->name; 360 const char *name = dp->name;
360 361
@@ -368,7 +369,7 @@ static void cg14_init_fix(struct fb_info *info, int linebytes, struct device_nod
368 info->fix.accel = FB_ACCEL_SUN_CG14; 369 info->fix.accel = FB_ACCEL_SUN_CG14;
369} 370}
370 371
371static struct sbus_mmap_map __cg14_mmap_map[CG14_MMAP_ENTRIES] __initdata = { 372static struct sbus_mmap_map __cg14_mmap_map[CG14_MMAP_ENTRIES] __devinitdata = {
372 { 373 {
373 .voff = CG14_REGS, 374 .voff = CG14_REGS,
374 .poff = 0x80000000, 375 .poff = 0x80000000,
diff --git a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
index 9444958bec1e..ed35e5c94f40 100644
--- a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
+++ b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
@@ -144,9 +144,9 @@
144#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000) 144#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)
145#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000) 145#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)
146#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000) 146#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)
147#define IXP4XX_NPEA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x6000) 147#define IXP4XX_NPEA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x6000)
148#define IXP4XX_NPEB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x7000) 148#define IXP4XX_NPEB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x7000)
149#define IXP4XX_NPEC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x8000) 149#define IXP4XX_NPEC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x8000)
150#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000) 150#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000)
151#define IXP4XX_EthC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000) 151#define IXP4XX_EthC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000)
152#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000) 152#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000)
diff --git a/include/asm-arm/arch-lh7a40x/entry-macro.S b/include/asm-arm/arch-lh7a40x/entry-macro.S
index 502700604e00..ffe397250f0c 100644
--- a/include/asm-arm/arch-lh7a40x/entry-macro.S
+++ b/include/asm-arm/arch-lh7a40x/entry-macro.S
@@ -86,6 +86,12 @@ branch_irq_lh7a400: b 1000f
86 .macro disable_fiq 86 .macro disable_fiq
87 .endm 87 .endm
88 88
89 .macro get_irqnr_preamble, base, tmp
90 .endm
91
92 .macro arch_ret_to_user, tmp1, tmp2
93 .endm
94
89 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp 95 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
90 mov \irqnr, #0 96 mov \irqnr, #0
91 mov \base, #io_p2v(0x80000000) @ APB registers 97 mov \base, #io_p2v(0x80000000) @ APB registers
@@ -105,6 +111,12 @@ branch_irq_lh7a400: b 1000f
105 .macro disable_fiq 111 .macro disable_fiq
106 .endm 112 .endm
107 113
114 .macro get_irqnr_preamble, base, tmp
115 .endm
116
117 .macro arch_ret_to_user, tmp1, tmp2
118 .endm
119
108 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp 120 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
109 mov \irqnr, #0 @ VIC1 irq base 121 mov \irqnr, #0 @ VIC1 irq base
110 mov \base, #io_p2v(0x80000000) @ APB registers 122 mov \base, #io_p2v(0x80000000) @ APB registers
diff --git a/include/asm-i386/vmi_time.h b/include/asm-i386/vmi_time.h
index 94d0a12a4114..c3a1fcf66c96 100644
--- a/include/asm-i386/vmi_time.h
+++ b/include/asm-i386/vmi_time.h
@@ -54,7 +54,7 @@ extern unsigned long vmi_cpu_khz(void);
54 54
55#ifdef CONFIG_X86_LOCAL_APIC 55#ifdef CONFIG_X86_LOCAL_APIC
56extern void __init vmi_timer_setup_boot_alarm(void); 56extern void __init vmi_timer_setup_boot_alarm(void);
57extern void __init vmi_timer_setup_secondary_alarm(void); 57extern void __devinit vmi_timer_setup_secondary_alarm(void);
58extern void apic_vmi_timer_interrupt(void); 58extern void apic_vmi_timer_interrupt(void);
59#endif 59#endif
60 60
diff --git a/include/asm-ia64/kexec.h b/include/asm-ia64/kexec.h
index f2ad469a6ddf..41299ddfee30 100644
--- a/include/asm-ia64/kexec.h
+++ b/include/asm-ia64/kexec.h
@@ -22,7 +22,6 @@
22 } while(0) 22 } while(0)
23 23
24extern struct kimage *ia64_kimage; 24extern struct kimage *ia64_kimage;
25DECLARE_PER_CPU(u64, ia64_mca_pal_base);
26extern const unsigned int relocate_new_kernel_size; 25extern const unsigned int relocate_new_kernel_size;
27extern void relocate_new_kernel(unsigned long, unsigned long, 26extern void relocate_new_kernel(unsigned long, unsigned long,
28 struct ia64_boot_param *, unsigned long); 27 struct ia64_boot_param *, unsigned long);
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h
index ee97f7c2d462..41098f459684 100644
--- a/include/asm-ia64/mca.h
+++ b/include/asm-ia64/mca.h
@@ -156,6 +156,8 @@ struct ia64_mca_notify_die {
156 int *monarch_cpu; 156 int *monarch_cpu;
157}; 157};
158 158
159DECLARE_PER_CPU(u64, ia64_mca_pal_base);
160
159#else /* __ASSEMBLY__ */ 161#else /* __ASSEMBLY__ */
160 162
161#define IA64_MCA_CORRECTED 0x0 /* Error has been corrected by OS_MCA */ 163#define IA64_MCA_CORRECTED 0x0 /* Error has been corrected by OS_MCA */
diff --git a/include/asm-ia64/pal.h b/include/asm-ia64/pal.h
index e43021a99a20..67656ce767c2 100644
--- a/include/asm-ia64/pal.h
+++ b/include/asm-ia64/pal.h
@@ -371,6 +371,7 @@ typedef u64 pal_mc_info_index_t;
371 * dependent 371 * dependent
372 */ 372 */
373 373
374#define PAL_TLB_CHECK_OP_PURGE 8
374 375
375typedef struct pal_process_state_info_s { 376typedef struct pal_process_state_info_s {
376 u64 reserved1 : 2, 377 u64 reserved1 : 2,
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h
index 5160233bbfac..5a5d1c2ce39d 100644
--- a/include/asm-ia64/pci.h
+++ b/include/asm-ia64/pci.h
@@ -9,6 +9,7 @@
9 9
10#include <asm/io.h> 10#include <asm/io.h>
11#include <asm/scatterlist.h> 11#include <asm/scatterlist.h>
12#include <asm/hw_irq.h>
12 13
13/* 14/*
14 * Can be used to override the logic in pci_scan_bus for skipping already-configured bus 15 * Can be used to override the logic in pci_scan_bus for skipping already-configured bus
@@ -170,7 +171,7 @@ pcibios_select_root(struct pci_dev *pdev, struct resource *res)
170#define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ 171#define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ
171static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) 172static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
172{ 173{
173 return channel ? 15 : 14; 174 return channel ? isa_irq_to_vector(15) : isa_irq_to_vector(14);
174} 175}
175 176
176#endif /* _ASM_IA64_PCI_H */ 177#endif /* _ASM_IA64_PCI_H */
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index d000689d9142..46cadf5aaac5 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -847,12 +847,13 @@ extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64,
847 */ 847 */
848struct sal_to_os_boot { 848struct sal_to_os_boot {
849 u64 rr[8]; /* Region Registers */ 849 u64 rr[8]; /* Region Registers */
850 u64 br[6]; /* br0: return addr into SAL boot rendez routine */ 850 u64 br[6]; /* br0:
851 * return addr into SAL boot rendez routine */
851 u64 gr1; /* SAL:GP */ 852 u64 gr1; /* SAL:GP */
852 u64 gr12; /* SAL:SP */ 853 u64 gr12; /* SAL:SP */
853 u64 gr13; /* SAL: Task Pointer */ 854 u64 gr13; /* SAL: Task Pointer */
854 u64 fpsr; 855 u64 fpsr;
855 u64 pfs; 856 u64 pfs;
856 u64 rnat; 857 u64 rnat;
857 u64 unat; 858 u64 unat;
858 u64 bspstore; 859 u64 bspstore;
diff --git a/include/asm-ia64/unwind.h b/include/asm-ia64/unwind.h
index 5df0276b0493..1af3875f1a57 100644
--- a/include/asm-ia64/unwind.h
+++ b/include/asm-ia64/unwind.h
@@ -81,7 +81,7 @@ struct unw_frame_info {
81 struct unw_ireg { 81 struct unw_ireg {
82 unsigned long *loc; 82 unsigned long *loc;
83 struct unw_ireg_nat { 83 struct unw_ireg_nat {
84 long type : 3; /* enum unw_nat_type */ 84 unsigned long type : 3; /* enum unw_nat_type */
85 signed long off : 61; /* NaT word is at loc+nat.off */ 85 signed long off : 61; /* NaT word is at loc+nat.off */
86 } nat; 86 } nat;
87 } r4, r5, r6, r7; 87 } r4, r5, r6, r7;
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h
index 0f9f2dd24a79..31d5054be20f 100644
--- a/include/asm-powerpc/spu.h
+++ b/include/asm-powerpc/spu.h
@@ -165,6 +165,13 @@ int spu_irq_class_0_bottom(struct spu *spu);
165int spu_irq_class_1_bottom(struct spu *spu); 165int spu_irq_class_1_bottom(struct spu *spu);
166void spu_irq_setaffinity(struct spu *spu, int cpu); 166void spu_irq_setaffinity(struct spu *spu, int cpu);
167 167
168extern void spu_invalidate_slbs(struct spu *spu);
169extern void spu_associate_mm(struct spu *spu, struct mm_struct *mm);
170
171/* Calls from the memory management to the SPU */
172struct mm_struct;
173extern void spu_flush_all_slbs(struct mm_struct *mm);
174
168/* system callbacks from the SPU */ 175/* system callbacks from the SPU */
169struct spu_syscall_block { 176struct spu_syscall_block {
170 u64 nr_ret; 177 u64 nr_ret;
diff --git a/include/asm-powerpc/spu_csa.h b/include/asm-powerpc/spu_csa.h
index bdbf906a767f..8aad0619eb8e 100644
--- a/include/asm-powerpc/spu_csa.h
+++ b/include/asm-powerpc/spu_csa.h
@@ -221,8 +221,6 @@ struct spu_priv2_collapsed {
221 * @spu_chnlcnt_RW: Array of saved channel counts. 221 * @spu_chnlcnt_RW: Array of saved channel counts.
222 * @spu_chnldata_RW: Array of saved channel data. 222 * @spu_chnldata_RW: Array of saved channel data.
223 * @suspend_time: Time stamp when decrementer disabled. 223 * @suspend_time: Time stamp when decrementer disabled.
224 * @slb_esid_RW: Array of saved SLB esid entries.
225 * @slb_vsid_RW: Array of saved SLB vsid entries.
226 * 224 *
227 * Structure representing the whole of the SPU 225 * Structure representing the whole of the SPU
228 * context save area (CSA). This struct contains 226 * context save area (CSA). This struct contains
@@ -245,8 +243,6 @@ struct spu_state {
245 u32 spu_mailbox_data[4]; 243 u32 spu_mailbox_data[4];
246 u32 pu_mailbox_data[1]; 244 u32 pu_mailbox_data[1];
247 unsigned long suspend_time; 245 unsigned long suspend_time;
248 u64 slb_esid_RW[8];
249 u64 slb_vsid_RW[8];
250 spinlock_t register_lock; 246 spinlock_t register_lock;
251}; 247};
252 248
diff --git a/include/asm-powerpc/systbl.h b/include/asm-powerpc/systbl.h
index 418e5c7e972c..8d853c554631 100644
--- a/include/asm-powerpc/systbl.h
+++ b/include/asm-powerpc/systbl.h
@@ -304,5 +304,6 @@ SYSCALL_SPU(fchmodat)
304SYSCALL_SPU(faccessat) 304SYSCALL_SPU(faccessat)
305COMPAT_SYS_SPU(get_robust_list) 305COMPAT_SYS_SPU(get_robust_list)
306COMPAT_SYS_SPU(set_robust_list) 306COMPAT_SYS_SPU(set_robust_list)
307COMPAT_SYS(move_pages) 307COMPAT_SYS_SPU(move_pages)
308SYSCALL_SPU(getcpu) 308SYSCALL_SPU(getcpu)
309COMPAT_SYS(epoll_pwait)
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h
index 0ae954e3d258..2baedbe54e13 100644
--- a/include/asm-powerpc/unistd.h
+++ b/include/asm-powerpc/unistd.h
@@ -324,10 +324,12 @@
324#define __NR_get_robust_list 299 324#define __NR_get_robust_list 299
325#define __NR_set_robust_list 300 325#define __NR_set_robust_list 300
326#define __NR_move_pages 301 326#define __NR_move_pages 301
327#define __NR_getcpu 302
328#define __NR_epoll_pwait 303
327 329
328#ifdef __KERNEL__ 330#ifdef __KERNEL__
329 331
330#define __NR_syscalls 302 332#define __NR_syscalls 304
331 333
332#define __NR__exit __NR_exit 334#define __NR__exit __NR_exit
333#define NR_syscalls __NR_syscalls 335#define NR_syscalls __NR_syscalls
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h
index d5b2f8053b3b..16098acfe300 100644
--- a/include/asm-sparc/unistd.h
+++ b/include/asm-sparc/unistd.h
@@ -345,7 +345,6 @@
345#define __ARCH_WANT_SYS_GETPGRP 345#define __ARCH_WANT_SYS_GETPGRP
346#define __ARCH_WANT_SYS_LLSEEK 346#define __ARCH_WANT_SYS_LLSEEK
347#define __ARCH_WANT_SYS_NICE 347#define __ARCH_WANT_SYS_NICE
348#define __ARCH_WANT_SYS_OLD_GETRLIMIT
349#define __ARCH_WANT_SYS_OLDUMOUNT 348#define __ARCH_WANT_SYS_OLDUMOUNT
350#define __ARCH_WANT_SYS_SIGPENDING 349#define __ARCH_WANT_SYS_SIGPENDING
351#define __ARCH_WANT_SYS_SIGPROCMASK 350#define __ARCH_WANT_SYS_SIGPROCMASK
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
index 47047536f261..a9f7bd9ca38c 100644
--- a/include/asm-sparc64/unistd.h
+++ b/include/asm-sparc64/unistd.h
@@ -359,7 +359,6 @@
359#define __ARCH_WANT_SYS_GETPGRP 359#define __ARCH_WANT_SYS_GETPGRP
360#define __ARCH_WANT_SYS_LLSEEK 360#define __ARCH_WANT_SYS_LLSEEK
361#define __ARCH_WANT_SYS_NICE 361#define __ARCH_WANT_SYS_NICE
362#define __ARCH_WANT_SYS_OLD_GETRLIMIT
363#define __ARCH_WANT_SYS_OLDUMOUNT 362#define __ARCH_WANT_SYS_OLDUMOUNT
364#define __ARCH_WANT_SYS_SIGPENDING 363#define __ARCH_WANT_SYS_SIGPENDING
365#define __ARCH_WANT_SYS_SIGPROCMASK 364#define __ARCH_WANT_SYS_SIGPROCMASK
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 74c8a2ecc9dd..e38fe6822cb4 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -17,7 +17,7 @@ struct msi_desc {
17 struct { 17 struct {
18 __u8 type : 5; /* {0: unused, 5h:MSI, 11h:MSI-X} */ 18 __u8 type : 5; /* {0: unused, 5h:MSI, 11h:MSI-X} */
19 __u8 maskbit : 1; /* mask-pending bit supported ? */ 19 __u8 maskbit : 1; /* mask-pending bit supported ? */
20 __u8 unused : 1; 20 __u8 masked : 1;
21 __u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */ 21 __u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
22 __u8 pos; /* Location of the msi capability */ 22 __u8 pos; /* Location of the msi capability */
23 __u16 entry_nr; /* specific enabled entry */ 23 __u16 entry_nr; /* specific enabled entry */
@@ -32,10 +32,8 @@ struct msi_desc {
32 void __iomem *mask_base; 32 void __iomem *mask_base;
33 struct pci_dev *dev; 33 struct pci_dev *dev;
34 34
35#ifdef CONFIG_PM 35 /* Last set MSI message */
36 /* PM save area for MSIX address/data */ 36 struct msi_msg msg;
37 struct msi_msg msg_save;
38#endif
39}; 37};
40 38
41/* 39/*
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 78417e421b4c..481ea0663f19 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -209,11 +209,6 @@ static inline void pci_add_saved_cap(struct pci_dev *pci_dev,
209 hlist_add_head(&new_cap->next, &pci_dev->saved_cap_space); 209 hlist_add_head(&new_cap->next, &pci_dev->saved_cap_space);
210} 210}
211 211
212static inline void pci_remove_saved_cap(struct pci_cap_saved_state *cap)
213{
214 hlist_del(&cap->next);
215}
216
217/* 212/*
218 * For PCI devices, the region numbers are assigned this way: 213 * For PCI devices, the region numbers are assigned this way:
219 * 214 *
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
index f09cce2357ff..495d368390e0 100644
--- a/include/linux/pci_regs.h
+++ b/include/linux/pci_regs.h
@@ -296,6 +296,7 @@
296#define PCI_MSIX_FLAGS 2 296#define PCI_MSIX_FLAGS 2
297#define PCI_MSIX_FLAGS_QSIZE 0x7FF 297#define PCI_MSIX_FLAGS_QSIZE 0x7FF
298#define PCI_MSIX_FLAGS_ENABLE (1 << 15) 298#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
299#define PCI_MSIX_FLAGS_MASKALL (1 << 14)
299#define PCI_MSIX_FLAGS_BIRMASK (7 << 0) 300#define PCI_MSIX_FLAGS_BIRMASK (7 << 0)
300#define PCI_MSIX_FLAGS_BITMASK (1 << 0) 301#define PCI_MSIX_FLAGS_BITMASK (1 << 0)
301 302
diff --git a/kernel/module.c b/kernel/module.c
index f77e893e4620..fbc51de6444e 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2419,12 +2419,6 @@ void module_remove_driver(struct device_driver *drv)
2419 kfree(driver_name); 2419 kfree(driver_name);
2420 } 2420 }
2421 } 2421 }
2422 /*
2423 * Undo the additional reference we added in module_add_driver()
2424 * via kset_find_obj()
2425 */
2426 if (drv->mod_name)
2427 kobject_put(&drv->kobj);
2428} 2422}
2429EXPORT_SYMBOL(module_remove_driver); 2423EXPORT_SYMBOL(module_remove_driver);
2430#endif 2424#endif
diff --git a/lib/kobject.c b/lib/kobject.c
index f4f6176dcd12..057921c5945a 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -385,9 +385,11 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
385 goto out; 385 goto out;
386 old_parent = kobj->parent; 386 old_parent = kobj->parent;
387 kobj->parent = new_parent; 387 kobj->parent = new_parent;
388 new_parent = NULL;
388 kobject_put(old_parent); 389 kobject_put(old_parent);
389 kobject_uevent_env(kobj, KOBJ_MOVE, envp); 390 kobject_uevent_env(kobj, KOBJ_MOVE, envp);
390out: 391out:
392 kobject_put(new_parent);
391 kobject_put(kobj); 393 kobject_put(kobj);
392 kfree(devpath_string); 394 kfree(devpath_string);
393 kfree(devpath); 395 kfree(devpath);
diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h
index e33a9edb4036..a0e7cd183a5d 100644
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -191,6 +191,7 @@ extern void dccp_send_sync(struct sock *sk, const u64 seq,
191 const enum dccp_pkt_type pkt_type); 191 const enum dccp_pkt_type pkt_type);
192 192
193extern void dccp_write_xmit(struct sock *sk, int block); 193extern void dccp_write_xmit(struct sock *sk, int block);
194extern void dccp_write_xmit_timer(unsigned long data);
194extern void dccp_write_space(struct sock *sk); 195extern void dccp_write_space(struct sock *sk);
195 196
196extern void dccp_init_xmit_timers(struct sock *sk); 197extern void dccp_init_xmit_timers(struct sock *sk);
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 3282f2f2291b..aa21cc4de37f 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -213,19 +213,6 @@ do_interrupted:
213 goto out; 213 goto out;
214} 214}
215 215
216static void dccp_write_xmit_timer(unsigned long data) {
217 struct sock *sk = (struct sock *)data;
218 struct dccp_sock *dp = dccp_sk(sk);
219
220 bh_lock_sock(sk);
221 if (sock_owned_by_user(sk))
222 sk_reset_timer(sk, &dp->dccps_xmit_timer, jiffies+1);
223 else
224 dccp_write_xmit(sk, 0);
225 bh_unlock_sock(sk);
226 sock_put(sk);
227}
228
229void dccp_write_xmit(struct sock *sk, int block) 216void dccp_write_xmit(struct sock *sk, int block)
230{ 217{
231 struct dccp_sock *dp = dccp_sk(sk); 218 struct dccp_sock *dp = dccp_sk(sk);
@@ -434,9 +421,6 @@ static inline void dccp_connect_init(struct sock *sk)
434 dp->dccps_gar = dp->dccps_iss; 421 dp->dccps_gar = dp->dccps_iss;
435 422
436 icsk->icsk_retransmits = 0; 423 icsk->icsk_retransmits = 0;
437 init_timer(&dp->dccps_xmit_timer);
438 dp->dccps_xmit_timer.data = (unsigned long)sk;
439 dp->dccps_xmit_timer.function = dccp_write_xmit_timer;
440} 424}
441 425
442int dccp_connect(struct sock *sk) 426int dccp_connect(struct sock *sk)
diff --git a/net/dccp/timer.c b/net/dccp/timer.c
index 41ea0f6594c4..b038a0a3ad40 100644
--- a/net/dccp/timer.c
+++ b/net/dccp/timer.c
@@ -261,8 +261,33 @@ out:
261 sock_put(sk); 261 sock_put(sk);
262} 262}
263 263
264/* Transmit-delay timer: used by the CCIDs to delay actual send time */
265void dccp_write_xmit_timer(unsigned long data)
266{
267 struct sock *sk = (struct sock *)data;
268 struct dccp_sock *dp = dccp_sk(sk);
269
270 bh_lock_sock(sk);
271 if (sock_owned_by_user(sk))
272 sk_reset_timer(sk, &dp->dccps_xmit_timer, jiffies+1);
273 else
274 dccp_write_xmit(sk, 0);
275 bh_unlock_sock(sk);
276 sock_put(sk);
277}
278
279static void dccp_init_write_xmit_timer(struct sock *sk)
280{
281 struct dccp_sock *dp = dccp_sk(sk);
282
283 init_timer(&dp->dccps_xmit_timer);
284 dp->dccps_xmit_timer.data = (unsigned long)sk;
285 dp->dccps_xmit_timer.function = dccp_write_xmit_timer;
286}
287
264void dccp_init_xmit_timers(struct sock *sk) 288void dccp_init_xmit_timers(struct sock *sk)
265{ 289{
290 dccp_init_write_xmit_timer(sk);
266 inet_csk_init_xmit_timers(sk, &dccp_write_timer, &dccp_delack_timer, 291 inet_csk_init_xmit_timers(sk, &dccp_write_timer, &dccp_delack_timer,
267 &dccp_keepalive_timer); 292 &dccp_keepalive_timer);
268} 293}
diff --git a/net/ipv4/cipso_ipv4.c b/net/ipv4/cipso_ipv4.c
index c976dd7e9758..2ce5b693a8bd 100644
--- a/net/ipv4/cipso_ipv4.c
+++ b/net/ipv4/cipso_ipv4.c
@@ -1933,6 +1933,11 @@ int cipso_v4_skbuff_getattr(const struct sk_buff *skb,
1933 &cipso_ptr[6], 1933 &cipso_ptr[6],
1934 secattr); 1934 secattr);
1935 break; 1935 break;
1936 case CIPSO_V4_TAG_RANGE:
1937 ret_val = cipso_v4_parsetag_rng(doi_def,
1938 &cipso_ptr[6],
1939 secattr);
1940 break;
1936 } 1941 }
1937 1942
1938skbuff_getattr_return: 1943skbuff_getattr_return:
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index e10794dc5f64..98a00d0edc76 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -502,8 +502,10 @@ static struct in_ifaddr *rtm_to_ifaddr(struct nlmsghdr *nlh)
502 goto errout; 502 goto errout;
503 503
504 ifm = nlmsg_data(nlh); 504 ifm = nlmsg_data(nlh);
505 if (ifm->ifa_prefixlen > 32 || tb[IFA_LOCAL] == NULL) 505 if (ifm->ifa_prefixlen > 32 || tb[IFA_LOCAL] == NULL) {
506 err = -EINVAL;
506 goto errout; 507 goto errout;
508 }
507 509
508 dev = __dev_get_by_index(ifm->ifa_index); 510 dev = __dev_get_by_index(ifm->ifa_index);
509 if (dev == NULL) { 511 if (dev == NULL) {
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 1c6a084b5fb7..8cedb2a2c9df 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1255,9 +1255,9 @@ out:
1255 */ 1255 */
1256void ip_mc_rejoin_group(struct ip_mc_list *im) 1256void ip_mc_rejoin_group(struct ip_mc_list *im)
1257{ 1257{
1258#ifdef CONFIG_IP_MULTICAST
1258 struct in_device *in_dev = im->interface; 1259 struct in_device *in_dev = im->interface;
1259 1260
1260#ifdef CONFIG_IP_MULTICAST
1261 if (im->multiaddr == IGMP_ALL_HOSTS) 1261 if (im->multiaddr == IGMP_ALL_HOSTS)
1262 return; 1262 return;
1263 1263
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index 4e0561a082d0..f5f9582a8d39 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -413,7 +413,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
413 } 413 }
414 414
415 /* routing header option needs extra check */ 415 /* routing header option needs extra check */
416 if (optname == IPV6_RTHDR && opt->srcrt) { 416 if (optname == IPV6_RTHDR && opt && opt->srcrt) {
417 struct ipv6_rt_hdr *rthdr = opt->srcrt; 417 struct ipv6_rt_hdr *rthdr = opt->srcrt;
418 switch (rthdr->type) { 418 switch (rthdr->type) {
419 case IPV6_SRCRT_TYPE_0: 419 case IPV6_SRCRT_TYPE_0:
@@ -804,7 +804,7 @@ static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt,
804 return 0; 804 return 0;
805 hdr = opt->hopopt; 805 hdr = opt->hopopt;
806 806
807 len = min_t(int, len, ipv6_optlen(hdr)); 807 len = min_t(unsigned int, len, ipv6_optlen(hdr));
808 if (copy_to_user(optval, hdr, ipv6_optlen(hdr))) 808 if (copy_to_user(optval, hdr, ipv6_optlen(hdr)))
809 return -EFAULT; 809 return -EFAULT;
810 return len; 810 return len;
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index 8c34f1ca6c8c..f92d5310847b 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -700,23 +700,7 @@ static int rose_connect(struct socket *sock, struct sockaddr *uaddr, int addr_le
700 unsigned char cause, diagnostic; 700 unsigned char cause, diagnostic;
701 struct net_device *dev; 701 struct net_device *dev;
702 ax25_uid_assoc *user; 702 ax25_uid_assoc *user;
703 int n; 703 int n, err = 0;
704
705 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) {
706 sock->state = SS_CONNECTED;
707 return 0; /* Connect completed during a ERESTARTSYS event */
708 }
709
710 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) {
711 sock->state = SS_UNCONNECTED;
712 return -ECONNREFUSED;
713 }
714
715 if (sk->sk_state == TCP_ESTABLISHED)
716 return -EISCONN; /* No reconnect on a seqpacket socket */
717
718 sk->sk_state = TCP_CLOSE;
719 sock->state = SS_UNCONNECTED;
720 704
721 if (addr_len != sizeof(struct sockaddr_rose) && addr_len != sizeof(struct full_sockaddr_rose)) 705 if (addr_len != sizeof(struct sockaddr_rose) && addr_len != sizeof(struct full_sockaddr_rose))
722 return -EINVAL; 706 return -EINVAL;
@@ -734,24 +718,53 @@ static int rose_connect(struct socket *sock, struct sockaddr *uaddr, int addr_le
734 if ((rose->source_ndigis + addr->srose_ndigis) > ROSE_MAX_DIGIS) 718 if ((rose->source_ndigis + addr->srose_ndigis) > ROSE_MAX_DIGIS)
735 return -EINVAL; 719 return -EINVAL;
736 720
721 lock_sock(sk);
722
723 if (sk->sk_state == TCP_ESTABLISHED && sock->state == SS_CONNECTING) {
724 /* Connect completed during a ERESTARTSYS event */
725 sock->state = SS_CONNECTED;
726 goto out_release;
727 }
728
729 if (sk->sk_state == TCP_CLOSE && sock->state == SS_CONNECTING) {
730 sock->state = SS_UNCONNECTED;
731 err = -ECONNREFUSED;
732 goto out_release;
733 }
734
735 if (sk->sk_state == TCP_ESTABLISHED) {
736 /* No reconnect on a seqpacket socket */
737 err = -EISCONN;
738 goto out_release;
739 }
740
741 sk->sk_state = TCP_CLOSE;
742 sock->state = SS_UNCONNECTED;
743
737 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, 744 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause,
738 &diagnostic); 745 &diagnostic);
739 if (!rose->neighbour) 746 if (!rose->neighbour)
740 return -ENETUNREACH; 747 return -ENETUNREACH;
741 748
742 rose->lci = rose_new_lci(rose->neighbour); 749 rose->lci = rose_new_lci(rose->neighbour);
743 if (!rose->lci) 750 if (!rose->lci) {
744 return -ENETUNREACH; 751 err = -ENETUNREACH;
752 goto out_release;
753 }
745 754
746 if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */ 755 if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */
747 sock_reset_flag(sk, SOCK_ZAPPED); 756 sock_reset_flag(sk, SOCK_ZAPPED);
748 757
749 if ((dev = rose_dev_first()) == NULL) 758 if ((dev = rose_dev_first()) == NULL) {
750 return -ENETUNREACH; 759 err = -ENETUNREACH;
760 goto out_release;
761 }
751 762
752 user = ax25_findbyuid(current->euid); 763 user = ax25_findbyuid(current->euid);
753 if (!user) 764 if (!user) {
754 return -EINVAL; 765 err = -EINVAL;
766 goto out_release;
767 }
755 768
756 memcpy(&rose->source_addr, dev->dev_addr, ROSE_ADDR_LEN); 769 memcpy(&rose->source_addr, dev->dev_addr, ROSE_ADDR_LEN);
757 rose->source_call = user->call; 770 rose->source_call = user->call;
@@ -789,8 +802,10 @@ rose_try_next_neigh:
789 rose_start_t1timer(sk); 802 rose_start_t1timer(sk);
790 803
791 /* Now the loop */ 804 /* Now the loop */
792 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) 805 if (sk->sk_state != TCP_ESTABLISHED && (flags & O_NONBLOCK)) {
793 return -EINPROGRESS; 806 err = -EINPROGRESS;
807 goto out_release;
808 }
794 809
795 /* 810 /*
796 * A Connect Ack with Choke or timeout or failed routing will go to 811 * A Connect Ack with Choke or timeout or failed routing will go to
@@ -805,8 +820,10 @@ rose_try_next_neigh:
805 set_current_state(TASK_INTERRUPTIBLE); 820 set_current_state(TASK_INTERRUPTIBLE);
806 if (sk->sk_state != TCP_SYN_SENT) 821 if (sk->sk_state != TCP_SYN_SENT)
807 break; 822 break;
823 release_sock(sk);
808 if (!signal_pending(tsk)) { 824 if (!signal_pending(tsk)) {
809 schedule(); 825 schedule();
826 lock_sock(sk);
810 continue; 827 continue;
811 } 828 }
812 current->state = TASK_RUNNING; 829 current->state = TASK_RUNNING;
@@ -822,14 +839,19 @@ rose_try_next_neigh:
822 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, &diagnostic); 839 rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, &diagnostic);
823 if (rose->neighbour) 840 if (rose->neighbour)
824 goto rose_try_next_neigh; 841 goto rose_try_next_neigh;
825 /* No more neighbour */ 842
843 /* No more neighbours */
826 sock->state = SS_UNCONNECTED; 844 sock->state = SS_UNCONNECTED;
827 return sock_error(sk); /* Always set at this point */ 845 err = sock_error(sk); /* Always set at this point */
846 goto out_release;
828 } 847 }
829 848
830 sock->state = SS_CONNECTED; 849 sock->state = SS_CONNECTED;
831 850
832 return 0; 851out_release:
852 release_sock(sk);
853
854 return err;
833} 855}
834 856
835static int rose_accept(struct socket *sock, struct socket *newsock, int flags) 857static int rose_accept(struct socket *sock, struct socket *newsock, int flags)
@@ -877,6 +899,8 @@ static int rose_accept(struct socket *sock, struct socket *newsock, int flags)
877 lock_sock(sk); 899 lock_sock(sk);
878 continue; 900 continue;
879 } 901 }
902 current->state = TASK_RUNNING;
903 remove_wait_queue(sk->sk_sleep, &wait);
880 return -ERESTARTSYS; 904 return -ERESTARTSYS;
881 } 905 }
882 current->state = TASK_RUNNING; 906 current->state = TASK_RUNNING;
diff --git a/net/wanrouter/af_wanpipe.c b/net/wanrouter/af_wanpipe.c
deleted file mode 100644
index 41d7e32be70d..000000000000
--- a/net/wanrouter/af_wanpipe.c
+++ /dev/null
@@ -1,2600 +0,0 @@
1/*****************************************************************************
2* af_wanpipe.c WANPIPE(tm) Secure Socket Layer.
3*
4* Author: Nenad Corbic <ncorbic@sangoma.com>
5*
6* Copyright: (c) 2000 Sangoma Technologies Inc.
7*
8* This program is free software; you can redistribute it and/or
9* modify it under the terms of the GNU General Public License
10* as published by the Free Software Foundation; either version
11* 2 of the License, or (at your option) any later version.
12* ============================================================================
13* Due Credit:
14* Wanpipe socket layer is based on Packet and
15* the X25 socket layers. The above sockets were
16* used for the specific use of Sangoma Technologies
17* API programs.
18* Packet socket Authors: Ross Biro, Fred N. van Kempen and
19* Alan Cox.
20* X25 socket Author: Jonathan Naylor.
21* ============================================================================
22* Mar 15, 2002 Arnaldo C. Melo o Use wp_sk()->num, as it isnt anymore in sock
23* Apr 25, 2000 Nenad Corbic o Added the ability to send zero length packets.
24* Mar 13, 2000 Nenad Corbic o Added a tx buffer check via ioctl call.
25* Mar 06, 2000 Nenad Corbic o Fixed the corrupt sock lcn problem.
26* Server and client application can run
27* simultaneously without conflicts.
28* Feb 29, 2000 Nenad Corbic o Added support for PVC protocols, such as
29* CHDLC, Frame Relay and HDLC API.
30* Jan 17, 2000 Nenad Corbic o Initial version, based on AF_PACKET socket.
31* X25API support only.
32*
33******************************************************************************/
34
35#include <linux/types.h>
36#include <linux/sched.h>
37#include <linux/mm.h>
38#include <linux/capability.h>
39#include <linux/fcntl.h>
40#include <linux/socket.h>
41#include <linux/in.h>
42#include <linux/inet.h>
43#include <linux/netdevice.h>
44#include <linux/poll.h>
45#include <linux/wireless.h>
46#include <linux/kmod.h>
47#include <net/ip.h>
48#include <net/protocol.h>
49#include <linux/skbuff.h>
50#include <net/sock.h>
51#include <linux/errno.h>
52#include <linux/timer.h>
53#include <asm/system.h>
54#include <asm/uaccess.h>
55#include <linux/module.h>
56#include <linux/init.h>
57#include <linux/if_wanpipe.h>
58#include <linux/pkt_sched.h>
59#include <linux/tcp_states.h>
60#include <linux/if_wanpipe_common.h>
61
62#ifdef CONFIG_INET
63#include <net/inet_common.h>
64#endif
65
66#define SLOW_BACKOFF 0.1*HZ
67#define FAST_BACKOFF 0.01*HZ
68
69//#define PRINT_DEBUG
70#ifdef PRINT_DEBUG
71 #define DBG_PRINTK(format, a...) printk(format, ## a)
72#else
73 #define DBG_PRINTK(format, a...)
74#endif
75
76
77/* SECURE SOCKET IMPLEMENTATION
78 *
79 * TRANSMIT:
80 *
81 * When the user sends a packet via send() system call
82 * the wanpipe_sendmsg() function is executed.
83 *
84 * Each packet is enqueud into sk->sk_write_queue transmit
85 * queue. When the packet is enqueued, a delayed transmit
86 * timer is triggerd which acts as a Bottom Half hander.
87 *
88 * wanpipe_delay_transmit() function (BH), dequeues packets
89 * from the sk->sk_write_queue transmit queue and sends it
90 * to the deriver via dev->hard_start_xmit(skb, dev) function.
91 * Note, this function is actual a function pointer of if_send()
92 * routine in the wanpipe driver.
93 *
94 * X25API GUARANTEED DELIVERY:
95 *
96 * In order to provide 100% guaranteed packet delivery,
97 * an atomic 'packet_sent' counter is implemented. Counter
98 * is incremented for each packet enqueued
99 * into sk->sk_write_queue. Counter is decremented each
100 * time wanpipe_delayed_transmit() function successfuly
101 * passes the packet to the driver. Before each send(), a poll
102 * routine checks the sock resources The maximum value of
103 * packet sent counter is 1, thus if one packet is queued, the
104 * application will block until that packet is passed to the
105 * driver.
106 *
107 * RECEIVE:
108 *
109 * Wanpipe device drivers call the socket bottom half
110 * function, wanpipe_rcv() to queue the incoming packets
111 * into an AF_WANPIPE socket queue. Based on wanpipe_rcv()
112 * return code, the driver knows whether the packet was
113 * successfully queued. If the socket queue is full,
114 * protocol flow control is used by the driver, if any,
115 * to slow down the traffic until the sock queue is free.
116 *
117 * Every time a packet arrives into a socket queue the
118 * socket wakes up processes which are waiting to receive
119 * data.
120 *
121 * If the socket queue is full, the driver sets a block
122 * bit which signals the socket to kick the wanpipe driver
123 * bottom half hander when the socket queue is partialy
124 * empty. wanpipe_recvmsg() function performs this action.
125 *
126 * In case of x25api, packets will never be dropped, since
127 * flow control is available.
128 *
129 * In case of streaming protocols like CHDLC, packets will
130 * be dropped but the statistics will be generated.
131 */
132
133
134/* The code below is used to test memory leaks. It prints out
135 * a message every time kmalloc and kfree system calls get executed.
136 * If the calls match there is no leak :)
137 */
138
139/***********FOR DEBUGGING PURPOSES*********************************************
140#define KMEM_SAFETYZONE 8
141
142static void * dbg_kmalloc(unsigned int size, int prio, int line) {
143 void * v = kmalloc(size,prio);
144 printk(KERN_INFO "line %d kmalloc(%d,%d) = %p\n",line,size,prio,v);
145 return v;
146}
147static void dbg_kfree(void * v, int line) {
148 printk(KERN_INFO "line %d kfree(%p)\n",line,v);
149 kfree(v);
150}
151
152#define kmalloc(x,y) dbg_kmalloc(x,y,__LINE__)
153#define kfree(x) dbg_kfree(x,__LINE__)
154******************************************************************************/
155
156
157/* List of all wanpipe sockets. */
158HLIST_HEAD(wanpipe_sklist);
159static DEFINE_RWLOCK(wanpipe_sklist_lock);
160
161atomic_t wanpipe_socks_nr;
162static unsigned long wanpipe_tx_critical;
163
164#if 0
165/* Private wanpipe socket structures. */
166struct wanpipe_opt
167{
168 void *mbox; /* Mail box */
169 void *card; /* Card bouded to */
170 struct net_device *dev; /* Bounded device */
171 unsigned short lcn; /* Binded LCN */
172 unsigned char svc; /* 0=pvc, 1=svc */
173 unsigned char timer; /* flag for delayed transmit*/
174 struct timer_list tx_timer;
175 unsigned poll_cnt;
176 unsigned char force; /* Used to force sock release */
177 atomic_t packet_sent;
178};
179#endif
180
181static int sk_count;
182extern const struct proto_ops wanpipe_ops;
183static unsigned long find_free_critical;
184
185static void wanpipe_unlink_driver(struct sock *sk);
186static void wanpipe_link_driver(struct net_device *dev, struct sock *sk);
187static void wanpipe_wakeup_driver(struct sock *sk);
188static int execute_command(struct sock *, unsigned char, unsigned int);
189static int check_dev(struct net_device *dev, sdla_t *card);
190struct net_device *wanpipe_find_free_dev(sdla_t *card);
191static void wanpipe_unlink_card (struct sock *);
192static int wanpipe_link_card (struct sock *);
193static struct sock *wanpipe_make_new(struct sock *);
194static struct sock *wanpipe_alloc_socket(void);
195static inline int get_atomic_device(struct net_device *dev);
196static int wanpipe_exec_cmd(struct sock *, int, unsigned int);
197static int get_ioctl_cmd (struct sock *, void *);
198static int set_ioctl_cmd (struct sock *, void *);
199static void release_device(struct net_device *dev);
200static void wanpipe_kill_sock_timer (unsigned long data);
201static void wanpipe_kill_sock_irq (struct sock *);
202static void wanpipe_kill_sock_accept (struct sock *);
203static int wanpipe_do_bind(struct sock *sk, struct net_device *dev,
204 int protocol);
205struct sock * get_newsk_from_skb (struct sk_buff *);
206static int wanpipe_debug (struct sock *, void *);
207static void wanpipe_delayed_transmit (unsigned long data);
208static void release_driver(struct sock *);
209static void start_cleanup_timer (struct sock *);
210static void check_write_queue(struct sock *);
211static int check_driver_busy (struct sock *);
212
213/*============================================================
214 * wanpipe_rcv
215 *
216 * Wanpipe socket bottom half handler. This function
217 * is called by the WANPIPE device drivers to queue a
218 * incoming packet into the socket receive queue.
219 * Once the packet is queued, all processes waiting to
220 * read are woken up.
221 *
222 * During socket bind, this function is bounded into
223 * WANPIPE driver private.
224 *===========================================================*/
225
226static int wanpipe_rcv(struct sk_buff *skb, struct net_device *dev,
227 struct sock *sk)
228{
229 struct wan_sockaddr_ll *sll = (struct wan_sockaddr_ll*)skb->cb;
230 wanpipe_common_t *chan = dev->priv;
231 /*
232 * When we registered the protocol we saved the socket in the data
233 * field for just this event.
234 */
235
236 skb->dev = dev;
237
238 sll->sll_family = AF_WANPIPE;
239 sll->sll_hatype = dev->type;
240 sll->sll_protocol = skb->protocol;
241 sll->sll_pkttype = skb->pkt_type;
242 sll->sll_ifindex = dev->ifindex;
243 sll->sll_halen = 0;
244
245 if (dev->hard_header_parse)
246 sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr);
247
248 /*
249 * WAN_PACKET_DATA : Data which should be passed up the receive queue.
250 * WAN_PACKET_ASYC : Asynchronous data like place call, which should
251 * be passed up the listening sock.
252 * WAN_PACKET_ERR : Asynchronous data like clear call or restart
253 * which should go into an error queue.
254 */
255 switch (skb->pkt_type){
256
257 case WAN_PACKET_DATA:
258 if (sock_queue_rcv_skb(sk,skb)<0){
259 return -ENOMEM;
260 }
261 break;
262 case WAN_PACKET_CMD:
263 sk->sk_state = chan->state;
264 /* Bug fix: update Mar6.
265 * Do not set the sock lcn number here, since
266 * cmd is not guaranteed to be executed on the
267 * board, thus Lcn could be wrong */
268 sk->sk_data_ready(sk, skb->len);
269 kfree_skb(skb);
270 break;
271 case WAN_PACKET_ERR:
272 sk->sk_state = chan->state;
273 if (sock_queue_err_skb(sk,skb)<0){
274 return -ENOMEM;
275 }
276 break;
277 default:
278 printk(KERN_INFO "wansock: BH Illegal Packet Type Dropping\n");
279 kfree_skb(skb);
280 break;
281 }
282
283//??????????????????????
284// if (sk->sk_state == WANSOCK_DISCONNECTED){
285// if (sk->sk_zapped) {
286// //printk(KERN_INFO "wansock: Disconnected, killing early\n");
287// wanpipe_unlink_driver(sk);
288// sk->sk_bound_dev_if = 0;
289// }
290// }
291
292 return 0;
293}
294
295/*============================================================
296 * wanpipe_listen_rcv
297 *
298 * Wanpipe LISTEN socket bottom half handler. This function
299 * is called by the WANPIPE device drivers to queue an
300 * incoming call into the socket listening queue.
301 * Once the packet is queued, the waiting accept() process
302 * is woken up.
303 *
304 * During socket bind, this function is bounded into
305 * WANPIPE driver private.
306 *
307 * IMPORTANT NOTE:
308 * The accept call() is waiting for an skb packet
309 * which contains a pointer to a device structure.
310 *
311 * When we do a bind to a device structre, we
312 * bind a newly created socket into "chan->sk". Thus,
313 * when accept receives the skb packet, it will know
314 * from which dev it came form, and in turn it will know
315 * the address of the new sock.
316 *
317 * NOTE: This function gets called from driver ISR.
318 *===========================================================*/
319
320static int wanpipe_listen_rcv (struct sk_buff *skb, struct sock *sk)
321{
322 wanpipe_opt *wp = wp_sk(sk), *newwp;
323 struct wan_sockaddr_ll *sll = (struct wan_sockaddr_ll*)skb->cb;
324 struct sock *newsk;
325 struct net_device *dev;
326 sdla_t *card;
327 mbox_cmd_t *mbox_ptr;
328 wanpipe_common_t *chan;
329
330 /* Find a free device, if none found, all svc's are busy
331 */
332
333 card = (sdla_t*)wp->card;
334 if (!card){
335 printk(KERN_INFO "wansock: LISTEN ERROR, No Card\n");
336 return -ENODEV;
337 }
338
339 dev = wanpipe_find_free_dev(card);
340 if (!dev){
341 printk(KERN_INFO "wansock: LISTEN ERROR, No Free Device\n");
342 return -ENODEV;
343 }
344
345 chan=dev->priv;
346 chan->state = WANSOCK_CONNECTING;
347
348 /* Allocate a new sock, which accept will bind
349 * and pass up to the user
350 */
351 if ((newsk = wanpipe_make_new(sk)) == NULL){
352 release_device(dev);
353 return -ENOMEM;
354 }
355
356
357 /* Initialize the new sock structure
358 */
359 newsk->sk_bound_dev_if = dev->ifindex;
360 newwp = wp_sk(newsk);
361 newwp->card = wp->card;
362
363 /* Insert the sock into the main wanpipe
364 * sock list.
365 */
366 atomic_inc(&wanpipe_socks_nr);
367
368 /* Allocate and fill in the new Mail Box. Then
369 * bind the mail box to the sock. It will be
370 * used by the ioctl call to read call information
371 * and to execute commands.
372 */
373 if ((mbox_ptr = kzalloc(sizeof(mbox_cmd_t), GFP_ATOMIC)) == NULL) {
374 wanpipe_kill_sock_irq (newsk);
375 release_device(dev);
376 return -ENOMEM;
377 }
378 memcpy(mbox_ptr,skb->data,skb->len);
379
380 /* Register the lcn on which incoming call came
381 * from. Thus, if we have to clear it, we know
382 * which lcn to clear
383 */
384
385 newwp->lcn = mbox_ptr->cmd.lcn;
386 newwp->mbox = (void *)mbox_ptr;
387
388 DBG_PRINTK(KERN_INFO "NEWSOCK : Device %s, bind to lcn %i\n",
389 dev->name,mbox_ptr->cmd.lcn);
390
391 chan->lcn = mbox_ptr->cmd.lcn;
392 card->u.x.svc_to_dev_map[(chan->lcn%MAX_X25_LCN)] = dev;
393
394 sock_reset_flag(newsk, SOCK_ZAPPED);
395 newwp->num = htons(X25_PROT);
396
397 if (wanpipe_do_bind(newsk, dev, newwp->num)) {
398 wanpipe_kill_sock_irq (newsk);
399 release_device(dev);
400 return -EINVAL;
401 }
402 newsk->sk_state = WANSOCK_CONNECTING;
403
404
405 /* Fill in the standard sock address info */
406
407 sll->sll_family = AF_WANPIPE;
408 sll->sll_hatype = dev->type;
409 sll->sll_protocol = skb->protocol;
410 sll->sll_pkttype = skb->pkt_type;
411 sll->sll_ifindex = dev->ifindex;
412 sll->sll_halen = 0;
413
414 skb->dev = dev;
415 sk->sk_ack_backlog++;
416
417 /* We must do this manually, since the sock_queue_rcv_skb()
418 * function sets the skb->dev to NULL. However, we use
419 * the dev field in the accept function.*/
420 if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
421 (unsigned)sk->sk_rcvbuf) {
422
423 wanpipe_unlink_driver(newsk);
424 wanpipe_kill_sock_irq (newsk);
425 --sk->sk_ack_backlog;
426 return -ENOMEM;
427 }
428
429 skb_set_owner_r(skb, sk);
430 skb_queue_tail(&sk->sk_receive_queue, skb);
431 sk->sk_data_ready(sk, skb->len);
432
433 return 0;
434}
435
436
437
438/*============================================================
439 * wanpipe_make_new
440 *
441 * Create a new sock, and allocate a wanpipe private
442 * structure to it. Also, copy the important data
443 * from the original sock to the new sock.
444 *
445 * This function is used by wanpipe_listen_rcv() listen
446 * bottom half handler. A copy of the listening sock
447 * is created using this function.
448 *
449 *===========================================================*/
450
451static struct sock *wanpipe_make_new(struct sock *osk)
452{
453 struct sock *sk;
454
455 if (osk->sk_type != SOCK_RAW)
456 return NULL;
457
458 if ((sk = wanpipe_alloc_socket()) == NULL)
459 return NULL;
460
461 sk->sk_type = osk->sk_type;
462 sk->sk_socket = osk->sk_socket;
463 sk->sk_priority = osk->sk_priority;
464 sk->sk_protocol = osk->sk_protocol;
465 wp_sk(sk)->num = wp_sk(osk)->num;
466 sk->sk_rcvbuf = osk->sk_rcvbuf;
467 sk->sk_sndbuf = osk->sk_sndbuf;
468 sk->sk_state = WANSOCK_CONNECTING;
469 sk->sk_sleep = osk->sk_sleep;
470
471 if (sock_flag(osk, SOCK_DBG))
472 sock_set_flag(sk, SOCK_DBG);
473
474 return sk;
475}
476
477/*
478 * FIXME: wanpipe_opt has to include a sock in its definition and stop using
479 * sk_protinfo, but this code is not even compilable now, so lets leave it for
480 * later.
481 */
482static struct proto wanpipe_proto = {
483 .name = "WANPIPE",
484 .owner = THIS_MODULE,
485 .obj_size = sizeof(struct sock),
486};
487
488/*============================================================
489 * wanpipe_make_new
490 *
491 * Allocate memory for the a new sock, and sock
492 * private data.
493 *
494 * Increment the module use count.
495 *
496 * This function is used by wanpipe_create() and
497 * wanpipe_make_new() functions.
498 *
499 *===========================================================*/
500
501static struct sock *wanpipe_alloc_socket(void)
502{
503 struct sock *sk;
504 struct wanpipe_opt *wan_opt;
505
506 if ((sk = sk_alloc(PF_WANPIPE, GFP_ATOMIC, &wanpipe_proto, 1)) == NULL)
507 return NULL;
508
509 if ((wan_opt = kzalloc(sizeof(struct wanpipe_opt), GFP_ATOMIC)) == NULL) {
510 sk_free(sk);
511 return NULL;
512 }
513
514 wp_sk(sk) = wan_opt;
515
516 /* Use timer to send data to the driver. This will act
517 * as a BH handler for sendmsg functions */
518 init_timer(&wan_opt->tx_timer);
519 wan_opt->tx_timer.data = (unsigned long)sk;
520 wan_opt->tx_timer.function = wanpipe_delayed_transmit;
521
522 sock_init_data(NULL, sk);
523 return sk;
524}
525
526
527/*============================================================
528 * wanpipe_sendmsg
529 *
530 * This function implements a sendto() system call,
531 * for AF_WANPIPE socket family.
532 * During socket bind() sk->sk_bound_dev_if is initialized
533 * to a correct network device. This number is used
534 * to find a network device to which the packet should
535 * be passed to.
536 *
537 * Each packet is queued into sk->sk_write_queue and
538 * delayed transmit bottom half handler is marked for
539 * execution.
540 *
541 * A socket must be in WANSOCK_CONNECTED state before
542 * a packet is queued into sk->sk_write_queue.
543 *===========================================================*/
544
545static int wanpipe_sendmsg(struct kiocb *iocb, struct socket *sock,
546 struct msghdr *msg, int len)
547{
548 wanpipe_opt *wp;
549 struct sock *sk = sock->sk;
550 struct wan_sockaddr_ll *saddr=(struct wan_sockaddr_ll *)msg->msg_name;
551 struct sk_buff *skb;
552 struct net_device *dev;
553 unsigned short proto;
554 unsigned char *addr;
555 int ifindex, err, reserve = 0;
556
557
558 if (!sock_flag(sk, SOCK_ZAPPED))
559 return -ENETDOWN;
560
561 if (sk->sk_state != WANSOCK_CONNECTED)
562 return -ENOTCONN;
563
564 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_CMSG_COMPAT))
565 return(-EINVAL);
566
567 /* it was <=, now one can send
568 * zero length packets */
569 if (len < sizeof(x25api_hdr_t))
570 return -EINVAL;
571
572 wp = wp_sk(sk);
573
574 if (saddr == NULL) {
575 ifindex = sk->sk_bound_dev_if;
576 proto = wp->num;
577 addr = NULL;
578
579 }else{
580 if (msg->msg_namelen < sizeof(struct wan_sockaddr_ll)){
581 return -EINVAL;
582 }
583
584 ifindex = sk->sk_bound_dev_if;
585 proto = saddr->sll_protocol;
586 addr = saddr->sll_addr;
587 }
588
589 dev = dev_get_by_index(ifindex);
590 if (dev == NULL){
591 printk(KERN_INFO "wansock: Send failed, dev index: %i\n",ifindex);
592 return -ENXIO;
593 }
594 dev_put(dev);
595
596 if (sock->type == SOCK_RAW)
597 reserve = dev->hard_header_len;
598
599 if (len > dev->mtu+reserve){
600 return -EMSGSIZE;
601 }
602
603 skb = sock_alloc_send_skb(sk, len + LL_RESERVED_SPACE(dev),
604 msg->msg_flags & MSG_DONTWAIT, &err);
605
606 if (skb==NULL){
607 goto out_unlock;
608 }
609
610 skb_reserve(skb, LL_RESERVED_SPACE(dev));
611 skb->nh.raw = skb->data;
612
613 /* Returns -EFAULT on error */
614 err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len);
615 if (err){
616 goto out_free;
617 }
618
619 if (dev->hard_header) {
620 int res;
621 err = -EINVAL;
622 res = dev->hard_header(skb, dev, ntohs(proto), addr, NULL, len);
623 if (res<0){
624 goto out_free;
625 }
626 }
627
628 skb->protocol = proto;
629 skb->dev = dev;
630 skb->priority = sk->sk_priority;
631 skb->pkt_type = WAN_PACKET_DATA;
632
633 err = -ENETDOWN;
634 if (!(dev->flags & IFF_UP))
635 goto out_free;
636
637 if (atomic_read(&sk->sk_wmem_alloc) + skb->truesize >
638 (unsigned int)sk->sk_sndbuf){
639 kfree_skb(skb);
640 return -ENOBUFS;
641 }
642
643 skb_queue_tail(&sk->sk_write_queue,skb);
644 atomic_inc(&wp->packet_sent);
645
646 if (!(test_and_set_bit(0, &wp->timer)))
647 mod_timer(&wp->tx_timer, jiffies + 1);
648
649 return(len);
650
651out_free:
652 kfree_skb(skb);
653out_unlock:
654 return err;
655}
656
657/*============================================================
658 * wanpipe_delayed_tarnsmit
659 *
660 * Transmit bottom half handler. It dequeues packets
661 * from sk->sk_write_queue and passes them to the
662 * driver. If the driver is busy, the packet is
663 * re-enqueued.
664 *
665 * Packet Sent counter is decremented on successful
666 * transmission.
667 *===========================================================*/
668
669
670static void wanpipe_delayed_transmit (unsigned long data)
671{
672 struct sock *sk=(struct sock *)data;
673 struct sk_buff *skb;
674 wanpipe_opt *wp = wp_sk(sk);
675 struct net_device *dev = wp->dev;
676 sdla_t *card = (sdla_t*)wp->card;
677
678 if (!card || !dev){
679 clear_bit(0, &wp->timer);
680 DBG_PRINTK(KERN_INFO "wansock: Transmit delay, no dev or card\n");
681 return;
682 }
683
684 if (sk->sk_state != WANSOCK_CONNECTED || !sock_flag(sk, SOCK_ZAPPED)) {
685 clear_bit(0, &wp->timer);
686 DBG_PRINTK(KERN_INFO "wansock: Tx Timer, State not CONNECTED\n");
687 return;
688 }
689
690 /* If driver is executing command, we must offload
691 * the board by not sending data. Otherwise a
692 * pending command will never get a free buffer
693 * to execute */
694 if (atomic_read(&card->u.x.command_busy)){
695 wp->tx_timer.expires = jiffies + SLOW_BACKOFF;
696 add_timer(&wp->tx_timer);
697 DBG_PRINTK(KERN_INFO "wansock: Tx Timer, command bys BACKOFF\n");
698 return;
699 }
700
701
702 if (test_and_set_bit(0,&wanpipe_tx_critical)){
703 printk(KERN_INFO "WanSock: Tx timer critical %s\n",dev->name);
704 wp->tx_timer.expires = jiffies + SLOW_BACKOFF;
705 add_timer(&wp->tx_timer);
706 return;
707 }
708
709 /* Check for a packet in the fifo and send */
710 if ((skb = skb_dequeue(&sk->sk_write_queue)) != NULL){
711
712 if (dev->hard_start_xmit(skb, dev) != 0){
713
714 /* Driver failed to transmit, re-enqueue
715 * the packet and retry again later */
716 skb_queue_head(&sk->sk_write_queue,skb);
717 clear_bit(0,&wanpipe_tx_critical);
718 return;
719 }else{
720
721 /* Packet Sent successful. Check for more packets
722 * if more packets, re-trigger the transmit routine
723 * other wise exit
724 */
725 atomic_dec(&wp->packet_sent);
726
727 if (skb_peek(&sk->sk_write_queue) == NULL) {
728 /* If there is nothing to send, kick
729 * the poll routine, which will trigger
730 * the application to send more data */
731 sk->sk_data_ready(sk, 0);
732 clear_bit(0, &wp->timer);
733 }else{
734 /* Reschedule as fast as possible */
735 wp->tx_timer.expires = jiffies + 1;
736 add_timer(&wp->tx_timer);
737 }
738 }
739 }
740 clear_bit(0,&wanpipe_tx_critical);
741}
742
743/*============================================================
744 * execute_command
745 *
746 * Execute x25api commands. The atomic variable
747 * chan->command is used to indicate to the driver that
748 * command is pending for execution. The acutal command
749 * structure is placed into a sock mbox structure
750 * (wp_sk(sk)->mbox).
751 *
752 * The sock private structure, mbox is
753 * used as shared memory between sock and the driver.
754 * Driver uses the sock mbox to execute the command
755 * and return the result.
756 *
757 * For all command except PLACE CALL, the function
758 * waits for the result. PLACE CALL can be ether
759 * blocking or nonblocking. The user sets this option
760 * via ioctl call.
761 *===========================================================*/
762
763
764static int execute_command(struct sock *sk, unsigned char cmd, unsigned int flags)
765{
766 wanpipe_opt *wp = wp_sk(sk);
767 struct net_device *dev;
768 wanpipe_common_t *chan=NULL;
769 int err=0;
770 DECLARE_WAITQUEUE(wait, current);
771
772 dev = dev_get_by_index(sk->sk_bound_dev_if);
773 if (dev == NULL){
774 printk(KERN_INFO "wansock: Exec failed no dev %i\n",
775 sk->sk_bound_dev_if);
776 return -ENODEV;
777 }
778 dev_put(dev);
779
780 if ((chan=dev->priv) == NULL){
781 printk(KERN_INFO "wansock: Exec cmd failed no priv area\n");
782 return -ENODEV;
783 }
784
785 if (atomic_read(&chan->command)){
786 printk(KERN_INFO "wansock: ERROR: Command already running %x, %s\n",
787 atomic_read(&chan->command),dev->name);
788 return -EINVAL;
789 }
790
791 if (!wp->mbox) {
792 printk(KERN_INFO "wansock: In execute without MBOX\n");
793 return -EINVAL;
794 }
795
796 ((mbox_cmd_t*)wp->mbox)->cmd.command = cmd;
797 ((mbox_cmd_t*)wp->mbox)->cmd.lcn = wp->lcn;
798 ((mbox_cmd_t*)wp->mbox)->cmd.result = 0x7F;
799
800
801 if (flags & O_NONBLOCK){
802 cmd |= 0x80;
803 atomic_set(&chan->command, cmd);
804 }else{
805 atomic_set(&chan->command, cmd);
806 }
807
808 add_wait_queue(sk->sk_sleep,&wait);
809 current->state = TASK_INTERRUPTIBLE;
810 for (;;){
811 if (((mbox_cmd_t*)wp->mbox)->cmd.result != 0x7F) {
812 err = 0;
813 break;
814 }
815 if (signal_pending(current)) {
816 err = -ERESTARTSYS;
817 break;
818 }
819 schedule();
820 }
821 current->state = TASK_RUNNING;
822 remove_wait_queue(sk->sk_sleep,&wait);
823
824 return err;
825}
826
827/*============================================================
828 * wanpipe_destroy_timer
829 *
830 * Used by wanpipe_release, to delay release of
831 * the socket.
832 *===========================================================*/
833
834static void wanpipe_destroy_timer(unsigned long data)
835{
836 struct sock *sk=(struct sock *)data;
837 wanpipe_opt *wp = wp_sk(sk);
838
839 if ((!atomic_read(&sk->sk_wmem_alloc) &&
840 !atomic_read(&sk->sk_rmem_alloc)) ||
841 (++wp->force == 5)) {
842
843 if (atomic_read(&sk->sk_wmem_alloc) ||
844 atomic_read(&sk->sk_rmem_alloc))
845 printk(KERN_INFO "wansock: Warning, Packet Discarded due to sock shutdown!\n");
846
847 kfree(wp);
848 wp_sk(sk) = NULL;
849
850 if (atomic_read(&sk->sk_refcnt) != 1) {
851 atomic_set(&sk->sk_refcnt, 1);
852 DBG_PRINTK(KERN_INFO "wansock: Error, wrong reference count: %i ! :delay.\n",
853 atomic_read(&sk->sk_refcnt));
854 }
855 sock_put(sk);
856 atomic_dec(&wanpipe_socks_nr);
857 return;
858 }
859
860 sk->sk_timer.expires = jiffies + 5 * HZ;
861 add_timer(&sk->sk_timer);
862 printk(KERN_INFO "wansock: packet sk destroy delayed\n");
863}
864
865/*============================================================
866 * wanpipe_unlink_driver
867 *
868 * When the socket is released, this function is
869 * used to remove links that bind the sock and the
870 * driver together.
871 *===========================================================*/
872static void wanpipe_unlink_driver (struct sock *sk)
873{
874 struct net_device *dev;
875 wanpipe_common_t *chan=NULL;
876
877 sock_reset_flag(sk, SOCK_ZAPPED);
878 sk->sk_state = WANSOCK_DISCONNECTED;
879 wp_sk(sk)->dev = NULL;
880
881 dev = dev_get_by_index(sk->sk_bound_dev_if);
882 if (!dev){
883 printk(KERN_INFO "wansock: No dev on release\n");
884 return;
885 }
886 dev_put(dev);
887
888 if ((chan = dev->priv) == NULL){
889 printk(KERN_INFO "wansock: No Priv Area on release\n");
890 return;
891 }
892
893 set_bit(0,&chan->common_critical);
894 chan->sk=NULL;
895 chan->func=NULL;
896 chan->mbox=NULL;
897 chan->tx_timer=NULL;
898 clear_bit(0,&chan->common_critical);
899 release_device(dev);
900
901 return;
902}
903
904/*============================================================
905 * wanpipe_link_driver
906 *
907 * Upon successful bind(), sock is linked to a driver
908 * by binding in the wanpipe_rcv() bottom half handler
909 * to the driver function pointer, as well as sock and
910 * sock mailbox addresses. This way driver can pass
911 * data up the socket.
912 *===========================================================*/
913
914static void wanpipe_link_driver(struct net_device *dev, struct sock *sk)
915{
916 wanpipe_opt *wp = wp_sk(sk);
917 wanpipe_common_t *chan = dev->priv;
918 if (!chan)
919 return;
920 set_bit(0,&chan->common_critical);
921 chan->sk=sk;
922 chan->func=wanpipe_rcv;
923 chan->mbox = wp->mbox;
924 chan->tx_timer = &wp->tx_timer;
925 wp->dev = dev;
926 sock_set_flag(sk, SOCK_ZAPPED);
927 clear_bit(0,&chan->common_critical);
928}
929
930
931/*============================================================
932 * release_device
933 *
934 * During sock release, clear a critical bit, which
935 * marks the device a being taken.
936 *===========================================================*/
937
938
939static void release_device(struct net_device *dev)
940{
941 wanpipe_common_t *chan=dev->priv;
942 clear_bit(0,(void*)&chan->rw_bind);
943}
944
945/*============================================================
946 * wanpipe_release
947 *
948 * Close a PACKET socket. This is fairly simple. We
949 * immediately go to 'closed' state and remove our
950 * protocol entry in the device list.
951 *===========================================================*/
952
953static int wanpipe_release(struct socket *sock)
954{
955 wanpipe_opt *wp;
956 struct sock *sk = sock->sk;
957
958 if (!sk)
959 return 0;
960
961 wp = wp_sk(sk);
962 check_write_queue(sk);
963
964 /* Kill the tx timer, if we don't kill it now, the timer
965 * will run after we kill the sock. Timer code will
966 * try to access the sock which has been killed and cause
967 * kernel panic */
968
969 del_timer(&wp->tx_timer);
970
971 /*
972 * Unhook packet receive handler.
973 */
974
975 if (wp->num == htons(X25_PROT) &&
976 sk->sk_state != WANSOCK_DISCONNECTED && sock_flag(sk, SOCK_ZAPPED)) {
977 struct net_device *dev = dev_get_by_index(sk->sk_bound_dev_if);
978 wanpipe_common_t *chan;
979 if (dev){
980 chan=dev->priv;
981 atomic_set(&chan->disconnect,1);
982 DBG_PRINTK(KERN_INFO "wansock: Sending Clear Indication %i\n",
983 sk->sk_state);
984 dev_put(dev);
985 }
986 }
987
988 set_bit(1,&wanpipe_tx_critical);
989 write_lock(&wanpipe_sklist_lock);
990 sk_del_node_init(sk);
991 write_unlock(&wanpipe_sklist_lock);
992 clear_bit(1,&wanpipe_tx_critical);
993
994
995
996 release_driver(sk);
997
998
999 /*
1000 * Now the socket is dead. No more input will appear.
1001 */
1002
1003 sk->sk_state_change(sk); /* It is useless. Just for sanity. */
1004
1005 sock->sk = NULL;
1006 sk->sk_socket = NULL;
1007 sock_set_flag(sk, SOCK_DEAD);
1008
1009 /* Purge queues */
1010 skb_queue_purge(&sk->sk_receive_queue);
1011 skb_queue_purge(&sk->sk_write_queue);
1012 skb_queue_purge(&sk->sk_error_queue);
1013
1014 if (atomic_read(&sk->sk_rmem_alloc) ||
1015 atomic_read(&sk->sk_wmem_alloc)) {
1016 del_timer(&sk->sk_timer);
1017 printk(KERN_INFO "wansock: Killing in Timer R %i , W %i\n",
1018 atomic_read(&sk->sk_rmem_alloc),
1019 atomic_read(&sk->sk_wmem_alloc));
1020 sk->sk_timer.data = (unsigned long)sk;
1021 sk->sk_timer.expires = jiffies + HZ;
1022 sk->sk_timer.function = wanpipe_destroy_timer;
1023 add_timer(&sk->sk_timer);
1024 return 0;
1025 }
1026
1027 kfree(wp);
1028 wp_sk(sk) = NULL;
1029
1030 if (atomic_read(&sk->sk_refcnt) != 1) {
1031 DBG_PRINTK(KERN_INFO "wansock: Error, wrong reference count: %i !:release.\n",
1032 atomic_read(&sk->sk_refcnt));
1033 atomic_set(&sk->sk_refcnt, 1);
1034 }
1035 sock_put(sk);
1036 atomic_dec(&wanpipe_socks_nr);
1037 return 0;
1038}
1039
1040/*============================================================
1041 * check_write_queue
1042 *
1043 * During sock shutdown, if the sock state is
1044 * WANSOCK_CONNECTED and there is transmit data
1045 * pending. Wait until data is released
1046 * before proceeding.
1047 *===========================================================*/
1048
1049static void check_write_queue(struct sock *sk)
1050{
1051
1052 if (sk->sk_state != WANSOCK_CONNECTED)
1053 return;
1054
1055 if (!atomic_read(&sk->sk_wmem_alloc))
1056 return;
1057
1058 printk(KERN_INFO "wansock: MAJOR ERROR, Data lost on sock release !!!\n");
1059
1060}
1061
1062/*============================================================
1063 * release_driver
1064 *
1065 * This function is called during sock shutdown, to
1066 * release any resources and links that bind the sock
1067 * to the driver. It also changes the state of the
1068 * sock to WANSOCK_DISCONNECTED
1069 *===========================================================*/
1070
1071static void release_driver(struct sock *sk)
1072{
1073 wanpipe_opt *wp;
1074 struct sk_buff *skb=NULL;
1075 struct sock *deadsk=NULL;
1076
1077 if (sk->sk_state == WANSOCK_LISTEN ||
1078 sk->sk_state == WANSOCK_BIND_LISTEN) {
1079 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) {
1080 if ((deadsk = get_newsk_from_skb(skb))){
1081 DBG_PRINTK (KERN_INFO "wansock: RELEASE: FOUND DEAD SOCK\n");
1082 sock_set_flag(deadsk, SOCK_DEAD);
1083 start_cleanup_timer(deadsk);
1084 }
1085 kfree_skb(skb);
1086 }
1087 if (sock_flag(sk, SOCK_ZAPPED))
1088 wanpipe_unlink_card(sk);
1089 }else{
1090 if (sock_flag(sk, SOCK_ZAPPED))
1091 wanpipe_unlink_driver(sk);
1092 }
1093 sk->sk_state = WANSOCK_DISCONNECTED;
1094 sk->sk_bound_dev_if = 0;
1095 sock_reset_flag(sk, SOCK_ZAPPED);
1096 wp = wp_sk(sk);
1097
1098 if (wp) {
1099 kfree(wp->mbox);
1100 wp->mbox = NULL;
1101 }
1102}
1103
1104/*============================================================
1105 * start_cleanup_timer
1106 *
1107 * If new incoming call's are pending but the socket
1108 * is being released, start the timer which will
1109 * envoke the kill routines for pending socks.
1110 *===========================================================*/
1111
1112
1113static void start_cleanup_timer (struct sock *sk)
1114{
1115 del_timer(&sk->sk_timer);
1116 sk->sk_timer.data = (unsigned long)sk;
1117 sk->sk_timer.expires = jiffies + HZ;
1118 sk->sk_timer.function = wanpipe_kill_sock_timer;
1119 add_timer(&sk->sk_timer);
1120}
1121
1122
1123/*============================================================
1124 * wanpipe_kill_sock
1125 *
1126 * This is a function which performs actual killing
1127 * of the sock. It releases socket resources,
1128 * and unlinks the sock from the driver.
1129 *===========================================================*/
1130
1131static void wanpipe_kill_sock_timer (unsigned long data)
1132{
1133
1134 struct sock *sk = (struct sock *)data;
1135 struct sock **skp;
1136
1137 if (!sk)
1138 return;
1139
1140 /* This function can be called from interrupt. We must use
1141 * appropriate locks */
1142
1143 if (test_bit(1,&wanpipe_tx_critical)){
1144 sk->sk_timer.expires = jiffies + 10;
1145 add_timer(&sk->sk_timer);
1146 return;
1147 }
1148
1149 write_lock(&wanpipe_sklist_lock);
1150 sk_del_node_init(sk);
1151 write_unlock(&wanpipe_sklist_lock);
1152
1153
1154 if (wp_sk(sk)->num == htons(X25_PROT) &&
1155 sk->sk_state != WANSOCK_DISCONNECTED) {
1156 struct net_device *dev = dev_get_by_index(sk->sk_bound_dev_if);
1157 wanpipe_common_t *chan;
1158 if (dev){
1159 chan=dev->priv;
1160 atomic_set(&chan->disconnect,1);
1161 dev_put(dev);
1162 }
1163 }
1164
1165 release_driver(sk);
1166
1167 sk->sk_socket = NULL;
1168
1169 /* Purge queues */
1170 skb_queue_purge(&sk->sk_receive_queue);
1171 skb_queue_purge(&sk->sk_write_queue);
1172 skb_queue_purge(&sk->sk_error_queue);
1173
1174 if (atomic_read(&sk->sk_rmem_alloc) ||
1175 atomic_read(&sk->sk_wmem_alloc)) {
1176 del_timer(&sk->sk_timer);
1177 printk(KERN_INFO "wansock: Killing SOCK in Timer\n");
1178 sk->sk_timer.data = (unsigned long)sk;
1179 sk->sk_timer.expires = jiffies + HZ;
1180 sk->sk_timer.function = wanpipe_destroy_timer;
1181 add_timer(&sk->sk_timer);
1182 return;
1183 }
1184
1185 kfree(wp_sk(sk));
1186 wp_sk(sk) = NULL;
1187
1188 if (atomic_read(&sk->sk_refcnt) != 1) {
1189 atomic_set(&sk->sk_refcnt, 1);
1190 DBG_PRINTK(KERN_INFO "wansock: Error, wrong reference count: %i ! :timer.\n",
1191 atomic_read(&sk->sk_refcnt));
1192 }
1193 sock_put(sk);
1194 atomic_dec(&wanpipe_socks_nr);
1195 return;
1196}
1197
1198static void wanpipe_kill_sock_accept (struct sock *sk)
1199{
1200
1201 struct sock **skp;
1202
1203 if (!sk)
1204 return;
1205
1206 /* This function can be called from interrupt. We must use
1207 * appropriate locks */
1208
1209 write_lock(&wanpipe_sklist_lock);
1210 sk_del_node_init(sk);
1211 write_unlock(&wanpipe_sklist_lock);
1212
1213 sk->sk_socket = NULL;
1214
1215
1216 kfree(wp_sk(sk));
1217 wp_sk(sk) = NULL;
1218
1219 if (atomic_read(&sk->sk_refcnt) != 1) {
1220 atomic_set(&sk->sk_refcnt, 1);
1221 DBG_PRINTK(KERN_INFO "wansock: Error, wrong reference count: %i ! :timer.\n",
1222 atomic_read(&sk->sk_refcnt));
1223 }
1224 sock_put(sk);
1225 atomic_dec(&wanpipe_socks_nr);
1226 return;
1227}
1228
1229
1230static void wanpipe_kill_sock_irq (struct sock *sk)
1231{
1232
1233 if (!sk)
1234 return;
1235
1236 sk->sk_socket = NULL;
1237
1238 kfree(wp_sk(sk));
1239 wp_sk(sk) = NULL;
1240
1241 if (atomic_read(&sk->sk_refcnt) != 1) {
1242 atomic_set(&sk->sk_refcnt, 1);
1243 DBG_PRINTK(KERN_INFO "wansock: Error, wrong reference count: %i !:listen.\n",
1244 atomic_read(&sk->sk_refcnt));
1245 }
1246 sock_put(sk);
1247 atomic_dec(&wanpipe_socks_nr);
1248}
1249
1250
1251/*============================================================
1252 * wanpipe_do_bind
1253 *
1254 * Bottom half of the binding system call.
1255 * Once the wanpipe_bind() function checks the
1256 * legality of the call, this function binds the
1257 * sock to the driver.
1258 *===========================================================*/
1259
1260static int wanpipe_do_bind(struct sock *sk, struct net_device *dev,
1261 int protocol)
1262{
1263 wanpipe_opt *wp = wp_sk(sk);
1264 wanpipe_common_t *chan=NULL;
1265 int err=0;
1266
1267 if (sock_flag(sk, SOCK_ZAPPED)) {
1268 err = -EALREADY;
1269 goto bind_unlock_exit;
1270 }
1271
1272 wp->num = protocol;
1273
1274 if (protocol == 0){
1275 release_device(dev);
1276 err = -EINVAL;
1277 goto bind_unlock_exit;
1278 }
1279
1280 if (dev) {
1281 if (dev->flags&IFF_UP) {
1282 chan=dev->priv;
1283 sk->sk_state = chan->state;
1284
1285 if (wp->num == htons(X25_PROT) &&
1286 sk->sk_state != WANSOCK_DISCONNECTED &&
1287 sk->sk_state != WANSOCK_CONNECTING) {
1288 DBG_PRINTK(KERN_INFO
1289 "wansock: Binding to Device not DISCONNECTED %i\n",
1290 sk->sk_state);
1291 release_device(dev);
1292 err = -EAGAIN;
1293 goto bind_unlock_exit;
1294 }
1295
1296 wanpipe_link_driver(dev,sk);
1297 sk->sk_bound_dev_if = dev->ifindex;
1298
1299 /* X25 Specific option */
1300 if (wp->num == htons(X25_PROT))
1301 wp_sk(sk)->svc = chan->svc;
1302
1303 } else {
1304 sk->sk_err = ENETDOWN;
1305 sk->sk_error_report(sk);
1306 release_device(dev);
1307 err = -EINVAL;
1308 }
1309 } else {
1310 err = -ENODEV;
1311 }
1312bind_unlock_exit:
1313 /* FIXME where is this lock */
1314
1315 return err;
1316}
1317
1318/*============================================================
1319 * wanpipe_bind
1320 *
1321 * BIND() System call, which is bound to the AF_WANPIPE
1322 * operations structure. It checks for correct wanpipe
1323 * card name, and cross references interface names with
1324 * the card names. Thus, interface name must belong to
1325 * the actual card.
1326 *===========================================================*/
1327
1328
1329static int wanpipe_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
1330{
1331 struct wan_sockaddr_ll *sll = (struct wan_sockaddr_ll*)uaddr;
1332 struct sock *sk=sock->sk;
1333 wanpipe_opt *wp = wp_sk(sk);
1334 struct net_device *dev = NULL;
1335 sdla_t *card=NULL;
1336 char name[15];
1337
1338 /*
1339 * Check legality
1340 */
1341
1342 if (addr_len < sizeof(struct wan_sockaddr_ll)){
1343 printk(KERN_INFO "wansock: Address length error\n");
1344 return -EINVAL;
1345 }
1346 if (sll->sll_family != AF_WANPIPE){
1347 printk(KERN_INFO "wansock: Illegal family name specified.\n");
1348 return -EINVAL;
1349 }
1350
1351 card = wanpipe_find_card (sll->sll_card);
1352 if (!card){
1353 printk(KERN_INFO "wansock: Wanpipe card not found: %s\n",sll->sll_card);
1354 return -ENODEV;
1355 }else{
1356 wp_sk(sk)->card = (void *)card;
1357 }
1358
1359 if (!strcmp(sll->sll_device,"svc_listen")){
1360
1361 /* Bind a sock to a card structure for listening
1362 */
1363 int err=0;
1364
1365 /* This is x25 specific area if protocol doesn't
1366 * match, return error */
1367 if (sll->sll_protocol != htons(X25_PROT))
1368 return -EINVAL;
1369
1370 err= wanpipe_link_card (sk);
1371 if (err < 0)
1372 return err;
1373
1374 if (sll->sll_protocol)
1375 wp->num = sll->sll_protocol;
1376 sk->sk_state = WANSOCK_BIND_LISTEN;
1377 return 0;
1378
1379 }else if (!strcmp(sll->sll_device,"svc_connect")){
1380
1381 /* This is x25 specific area if protocol doesn't
1382 * match, return error */
1383 if (sll->sll_protocol != htons(X25_PROT))
1384 return -EINVAL;
1385
1386 /* Find a free device
1387 */
1388 dev = wanpipe_find_free_dev(card);
1389 if (dev == NULL){
1390 DBG_PRINTK(KERN_INFO "wansock: No free network devices for card %s\n",
1391 card->devname);
1392 return -EINVAL;
1393 }
1394 }else{
1395 /* Bind a socket to a interface name
1396 * This is used by PVC mostly
1397 */
1398 strlcpy(name,sll->sll_device,sizeof(name));
1399 dev = dev_get_by_name(name);
1400 if (dev == NULL){
1401 printk(KERN_INFO "wansock: Failed to get Dev from name: %s,\n",
1402 name);
1403 return -ENODEV;
1404 }
1405
1406 dev_put(dev);
1407
1408 if (check_dev(dev, card)){
1409 printk(KERN_INFO "wansock: Device %s, doesn't belong to card %s\n",
1410 dev->name, card->devname);
1411 return -EINVAL;
1412 }
1413 if (get_atomic_device (dev))
1414 return -EINVAL;
1415 }
1416
1417 return wanpipe_do_bind(sk, dev, sll->sll_protocol ? : wp->num);
1418}
1419
1420/*============================================================
1421 * get_atomic_device
1422 *
1423 * Sets a bit atomically which indicates that
1424 * the interface is taken. This avoids race conditions.
1425 *===========================================================*/
1426
1427
1428static inline int get_atomic_device(struct net_device *dev)
1429{
1430 wanpipe_common_t *chan = dev->priv;
1431 if (!test_and_set_bit(0,(void *)&chan->rw_bind)){
1432 return 0;
1433 }
1434 return 1;
1435}
1436
1437/*============================================================
1438 * check_dev
1439 *
1440 * Check that device name belongs to a particular card.
1441 *===========================================================*/
1442
1443static int check_dev(struct net_device *dev, sdla_t *card)
1444{
1445 struct net_device* tmp_dev;
1446
1447 for (tmp_dev = card->wandev.dev; tmp_dev;
1448 tmp_dev = *((struct net_device **)tmp_dev->priv)) {
1449 if (tmp_dev->ifindex == dev->ifindex){
1450 return 0;
1451 }
1452 }
1453 return 1;
1454}
1455
1456/*============================================================
1457 * wanpipe_find_free_dev
1458 *
1459 * Find a free network interface. If found set atomic
1460 * bit indicating that the interface is taken.
1461 * X25API Specific.
1462 *===========================================================*/
1463
1464struct net_device *wanpipe_find_free_dev(sdla_t *card)
1465{
1466 struct net_device* dev;
1467 volatile wanpipe_common_t *chan;
1468
1469 if (test_and_set_bit(0,&find_free_critical)){
1470 printk(KERN_INFO "CRITICAL in Find Free\n");
1471 }
1472
1473 for (dev = card->wandev.dev; dev;
1474 dev = *((struct net_device **)dev->priv)) {
1475 chan = dev->priv;
1476 if (!chan)
1477 continue;
1478 if (chan->usedby == API && chan->svc){
1479 if (!get_atomic_device (dev)){
1480 if (chan->state != WANSOCK_DISCONNECTED){
1481 release_device(dev);
1482 }else{
1483 clear_bit(0,&find_free_critical);
1484 return dev;
1485 }
1486 }
1487 }
1488 }
1489 clear_bit(0,&find_free_critical);
1490 return NULL;
1491}
1492
1493/*============================================================
1494 * wanpipe_create
1495 *
1496 * SOCKET() System call. It allocates a sock structure
1497 * and adds the socket to the wanpipe_sk_list.
1498 * Crates AF_WANPIPE socket.
1499 *===========================================================*/
1500
1501static int wanpipe_create(struct socket *sock, int protocol)
1502{
1503 struct sock *sk;
1504
1505 //FIXME: This checks for root user, SECURITY ?
1506 //if (!capable(CAP_NET_RAW))
1507 // return -EPERM;
1508
1509 if (sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1510 return -ESOCKTNOSUPPORT;
1511
1512 sock->state = SS_UNCONNECTED;
1513
1514 if ((sk = wanpipe_alloc_socket()) == NULL)
1515 return -ENOBUFS;
1516
1517 sk->sk_reuse = 1;
1518 sock->ops = &wanpipe_ops;
1519 sock_init_data(sock,sk);
1520
1521 sock_reset_flag(sk, SOCK_ZAPPED);
1522 sk->sk_family = PF_WANPIPE;
1523 wp_sk(sk)->num = protocol;
1524 sk->sk_state = WANSOCK_DISCONNECTED;
1525 sk->sk_ack_backlog = 0;
1526 sk->sk_bound_dev_if = 0;
1527
1528 atomic_inc(&wanpipe_socks_nr);
1529
1530 /* We must disable interrupts because the ISR
1531 * can also change the list */
1532 set_bit(1,&wanpipe_tx_critical);
1533 write_lock(&wanpipe_sklist_lock);
1534 sk_add_node(sk, &wanpipe_sklist);
1535 write_unlock(&wanpipe_sklist_lock);
1536 clear_bit(1,&wanpipe_tx_critical);
1537
1538 return(0);
1539}
1540
1541
1542/*============================================================
1543 * wanpipe_recvmsg
1544 *
1545 * Pull a packet from our receive queue and hand it
1546 * to the user. If necessary we block.
1547 *===========================================================*/
1548
1549static int wanpipe_recvmsg(struct kiocb *iocb, struct socket *sock,
1550 struct msghdr *msg, int len, int flags)
1551{
1552 struct sock *sk = sock->sk;
1553 struct sk_buff *skb;
1554 int copied, err=-ENOBUFS;
1555
1556
1557 /*
1558 * If the address length field is there to be filled in, we fill
1559 * it in now.
1560 */
1561
1562 msg->msg_namelen = sizeof(struct wan_sockaddr_ll);
1563
1564 /*
1565 * Call the generic datagram receiver. This handles all sorts
1566 * of horrible races and re-entrancy so we can forget about it
1567 * in the protocol layers.
1568 *
1569 * Now it will return ENETDOWN, if device have just gone down,
1570 * but then it will block.
1571 */
1572
1573 if (flags & MSG_OOB){
1574 skb = skb_dequeue(&sk->sk_error_queue);
1575 }else{
1576 skb=skb_recv_datagram(sk,flags,1,&err);
1577 }
1578 /*
1579 * An error occurred so return it. Because skb_recv_datagram()
1580 * handles the blocking we don't see and worry about blocking
1581 * retries.
1582 */
1583
1584 if(skb==NULL)
1585 goto out;
1586
1587 /*
1588 * You lose any data beyond the buffer you gave. If it worries a
1589 * user program they can ask the device for its MTU anyway.
1590 */
1591
1592 copied = skb->len;
1593 if (copied > len)
1594 {
1595 copied=len;
1596 msg->msg_flags|=MSG_TRUNC;
1597 }
1598
1599 wanpipe_wakeup_driver(sk);
1600
1601 /* We can't use skb_copy_datagram here */
1602 err = memcpy_toiovec(msg->msg_iov, skb->data, copied);
1603 if (err)
1604 goto out_free;
1605
1606 sock_recv_timestamp(msg, sk, skb);
1607
1608 if (msg->msg_name)
1609 memcpy(msg->msg_name, skb->cb, msg->msg_namelen);
1610
1611 /*
1612 * Free or return the buffer as appropriate. Again this
1613 * hides all the races and re-entrancy issues from us.
1614 */
1615 err = (flags&MSG_TRUNC) ? skb->len : copied;
1616
1617out_free:
1618 skb_free_datagram(sk, skb);
1619out:
1620 return err;
1621}
1622
1623
1624/*============================================================
1625 * wanpipe_wakeup_driver
1626 *
1627 * If socket receive buffer is full and driver cannot
1628 * pass data up the sock, it sets a packet_block flag.
1629 * This function check that flag and if sock receive
1630 * queue has room it kicks the driver BH handler.
1631 *
1632 * This way, driver doesn't have to poll the sock
1633 * receive queue.
1634 *===========================================================*/
1635
1636static void wanpipe_wakeup_driver(struct sock *sk)
1637{
1638 struct net_device *dev = NULL;
1639 wanpipe_common_t *chan=NULL;
1640
1641 dev = dev_get_by_index(sk->sk_bound_dev_if);
1642 if (!dev)
1643 return;
1644
1645 dev_put(dev);
1646
1647 if ((chan = dev->priv) == NULL)
1648 return;
1649
1650 if (atomic_read(&chan->receive_block)){
1651 if (atomic_read(&sk->sk_rmem_alloc) <
1652 ((unsigned)sk->sk_rcvbuf * 0.9)) {
1653 printk(KERN_INFO "wansock: Queuing task for wanpipe\n");
1654 atomic_set(&chan->receive_block,0);
1655 wanpipe_queue_tq(&chan->wanpipe_task);
1656 wanpipe_mark_bh();
1657 }
1658 }
1659}
1660
1661/*============================================================
1662 * wanpipe_getname
1663 *
1664 * I don't know what to do with this yet.
1665 * User can use this function to get sock address
1666 * information. Not very useful for Sangoma's purposes.
1667 *===========================================================*/
1668
1669
1670static int wanpipe_getname(struct socket *sock, struct sockaddr *uaddr,
1671 int *uaddr_len, int peer)
1672{
1673 struct net_device *dev;
1674 struct sock *sk = sock->sk;
1675 struct wan_sockaddr_ll *sll = (struct wan_sockaddr_ll*)uaddr;
1676
1677 sll->sll_family = AF_WANPIPE;
1678 sll->sll_ifindex = sk->sk_bound_dev_if;
1679 sll->sll_protocol = wp_sk(sk)->num;
1680 dev = dev_get_by_index(sk->sk_bound_dev_if);
1681 if (dev) {
1682 sll->sll_hatype = dev->type;
1683 sll->sll_halen = dev->addr_len;
1684 memcpy(sll->sll_addr, dev->dev_addr, dev->addr_len);
1685 } else {
1686 sll->sll_hatype = 0; /* Bad: we have no ARPHRD_UNSPEC */
1687 sll->sll_halen = 0;
1688 }
1689 *uaddr_len = sizeof(*sll);
1690
1691 dev_put(dev);
1692
1693 return 0;
1694}
1695
1696/*============================================================
1697 * wanpipe_notifier
1698 *
1699 * If driver turns off network interface, this function
1700 * will be envoked. Currently I treate it as a
1701 * call disconnect. More thought should go into this
1702 * function.
1703 *
1704 * FIXME: More thought should go into this function.
1705 *
1706 *===========================================================*/
1707
1708static int wanpipe_notifier(struct notifier_block *this, unsigned long msg, void *data)
1709{
1710 struct sock *sk;
1711 hlist_node *node;
1712 struct net_device *dev = (struct net_device *)data;
1713
1714 sk_for_each(sk, node, &wanpipe_sklist) {
1715 struct wanpipe_opt *po = wp_sk(sk);
1716
1717 if (!po)
1718 continue;
1719 if (dev == NULL)
1720 continue;
1721
1722 switch (msg) {
1723 case NETDEV_DOWN:
1724 case NETDEV_UNREGISTER:
1725 if (dev->ifindex == sk->sk_bound_dev_if) {
1726 printk(KERN_INFO "wansock: Device down %s\n",dev->name);
1727 if (sock_flag(sk, SOCK_ZAPPED)) {
1728 wanpipe_unlink_driver(sk);
1729 sk->sk_err = ENETDOWN;
1730 sk->sk_error_report(sk);
1731 }
1732
1733 if (msg == NETDEV_UNREGISTER) {
1734 printk(KERN_INFO "wansock: Unregistering Device: %s\n",
1735 dev->name);
1736 wanpipe_unlink_driver(sk);
1737 sk->sk_bound_dev_if = 0;
1738 }
1739 }
1740 break;
1741 case NETDEV_UP:
1742 if (dev->ifindex == sk->sk_bound_dev_if &&
1743 po->num && !sock_flag(sk, SOCK_ZAPPED)) {
1744 printk(KERN_INFO "wansock: Registering Device: %s\n",
1745 dev->name);
1746 wanpipe_link_driver(dev,sk);
1747 }
1748 break;
1749 }
1750 }
1751 return NOTIFY_DONE;
1752}
1753
1754/*============================================================
1755 * wanpipe_ioctl
1756 *
1757 * Execute a user commands, and set socket options.
1758 *
1759 * FIXME: More thought should go into this function.
1760 *
1761 *===========================================================*/
1762
1763static int wanpipe_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
1764{
1765 struct sock *sk = sock->sk;
1766 int err;
1767
1768 switch(cmd)
1769 {
1770 case SIOCGSTAMP:
1771 return sock_get_timestamp(sk, (struct timeval __user *)arg);
1772
1773 case SIOC_WANPIPE_CHECK_TX:
1774
1775 return atomic_read(&sk->sk_wmem_alloc);
1776
1777 case SIOC_WANPIPE_SOCK_STATE:
1778
1779 if (sk->sk_state == WANSOCK_CONNECTED)
1780 return 0;
1781
1782 return 1;
1783
1784
1785 case SIOC_WANPIPE_GET_CALL_DATA:
1786
1787 return get_ioctl_cmd (sk,(void*)arg);
1788
1789 case SIOC_WANPIPE_SET_CALL_DATA:
1790
1791 return set_ioctl_cmd (sk,(void*)arg);
1792
1793 case SIOC_WANPIPE_ACCEPT_CALL:
1794 case SIOC_WANPIPE_CLEAR_CALL:
1795 case SIOC_WANPIPE_RESET_CALL:
1796
1797 if ((err=set_ioctl_cmd(sk,(void*)arg)) < 0)
1798 return err;
1799
1800 err=wanpipe_exec_cmd(sk,cmd,0);
1801 get_ioctl_cmd(sk,(void*)arg);
1802 return err;
1803
1804 case SIOC_WANPIPE_DEBUG:
1805
1806 return wanpipe_debug(sk,(void*)arg);
1807
1808 case SIOC_WANPIPE_SET_NONBLOCK:
1809
1810 if (sk->sk_state != WANSOCK_DISCONNECTED)
1811 return -EINVAL;
1812
1813 sock->file->f_flags |= O_NONBLOCK;
1814 return 0;
1815
1816#ifdef CONFIG_INET
1817 case SIOCADDRT:
1818 case SIOCDELRT:
1819 case SIOCDARP:
1820 case SIOCGARP:
1821 case SIOCSARP:
1822 case SIOCDRARP:
1823 case SIOCGRARP:
1824 case SIOCSRARP:
1825 case SIOCGIFADDR:
1826 case SIOCSIFADDR:
1827 case SIOCGIFBRDADDR:
1828 case SIOCSIFBRDADDR:
1829 case SIOCGIFNETMASK:
1830 case SIOCSIFNETMASK:
1831 case SIOCGIFDSTADDR:
1832 case SIOCSIFDSTADDR:
1833 case SIOCSIFFLAGS:
1834 return inet_dgram_ops.ioctl(sock, cmd, arg);
1835#endif
1836
1837 default:
1838 return -ENOIOCTLCMD;
1839 }
1840 /*NOTREACHED*/
1841}
1842
1843/*============================================================
1844 * wanpipe_debug
1845 *
1846 * This function will pass up information about all
1847 * active sockets.
1848 *
1849 * FIXME: More thought should go into this function.
1850 *
1851 *===========================================================*/
1852
1853static int wanpipe_debug (struct sock *origsk, void *arg)
1854{
1855 struct sock *sk;
1856 struct hlist_node *node;
1857 struct net_device *dev = NULL;
1858 wanpipe_common_t *chan=NULL;
1859 int cnt=0, err=0;
1860 wan_debug_t *dbg_data = (wan_debug_t *)arg;
1861
1862 sk_for_each(sk, node, &wanpipe_sklist) {
1863 wanpipe_opt *wp = wp_sk(sk);
1864
1865 if (sk == origsk){
1866 continue;
1867 }
1868
1869 if ((err=put_user(1, &dbg_data->debug[cnt].free)))
1870 return err;
1871 if ((err = put_user(sk->sk_state,
1872 &dbg_data->debug[cnt].state_sk)))
1873 return err;
1874 if ((err = put_user(sk->sk_rcvbuf,
1875 &dbg_data->debug[cnt].rcvbuf)))
1876 return err;
1877 if ((err = put_user(atomic_read(&sk->sk_rmem_alloc),
1878 &dbg_data->debug[cnt].rmem)))
1879 return err;
1880 if ((err = put_user(atomic_read(&sk->sk_wmem_alloc),
1881 &dbg_data->debug[cnt].wmem)))
1882 return err;
1883 if ((err = put_user(sk->sk_sndbuf,
1884 &dbg_data->debug[cnt].sndbuf)))
1885 return err;
1886 if ((err=put_user(sk_count, &dbg_data->debug[cnt].sk_count)))
1887 return err;
1888 if ((err=put_user(wp->poll_cnt, &dbg_data->debug[cnt].poll_cnt)))
1889 return err;
1890 if ((err = put_user(sk->sk_bound_dev_if,
1891 &dbg_data->debug[cnt].bound)))
1892 return err;
1893
1894 if (sk->sk_bound_dev_if) {
1895 dev = dev_get_by_index(sk->sk_bound_dev_if);
1896 if (!dev)
1897 continue;
1898
1899 chan=dev->priv;
1900 dev_put(dev);
1901
1902 if ((err=put_user(chan->state, &dbg_data->debug[cnt].d_state)))
1903 return err;
1904 if ((err=put_user(chan->svc, &dbg_data->debug[cnt].svc)))
1905 return err;
1906
1907 if ((err=put_user(atomic_read(&chan->command),
1908 &dbg_data->debug[cnt].command)))
1909 return err;
1910
1911
1912 if (wp){
1913 sdla_t *card = (sdla_t*)wp->card;
1914
1915 if (card){
1916 if ((err=put_user(atomic_read(&card->u.x.command_busy),
1917 &dbg_data->debug[cnt].cmd_busy)))
1918 return err;
1919 }
1920
1921 if ((err=put_user(wp->lcn,
1922 &dbg_data->debug[cnt].lcn)))
1923 return err;
1924
1925 if (wp->mbox) {
1926 if ((err=put_user(1, &dbg_data->debug[cnt].mbox)))
1927 return err;
1928 }
1929 }
1930
1931 if ((err=put_user(atomic_read(&chan->receive_block),
1932 &dbg_data->debug[cnt].rblock)))
1933 return err;
1934
1935 if (copy_to_user(dbg_data->debug[cnt].name, dev->name, strlen(dev->name)))
1936 return -EFAULT;
1937 }
1938
1939 if (++cnt == MAX_NUM_DEBUG)
1940 break;
1941 }
1942 return 0;
1943}
1944
1945/*============================================================
1946 * get_ioctl_cmd
1947 *
1948 * Pass up the contents of socket MBOX to the user.
1949 *===========================================================*/
1950
1951static int get_ioctl_cmd (struct sock *sk, void *arg)
1952{
1953 x25api_t *usr_data = (x25api_t *)arg;
1954 mbox_cmd_t *mbox_ptr;
1955 int err;
1956
1957 if (usr_data == NULL)
1958 return -EINVAL;
1959
1960 if (!wp_sk(sk)->mbox) {
1961 return -EINVAL;
1962 }
1963
1964 mbox_ptr = (mbox_cmd_t *)wp_sk(sk)->mbox;
1965
1966 if ((err=put_user(mbox_ptr->cmd.qdm, &usr_data->hdr.qdm)))
1967 return err;
1968 if ((err=put_user(mbox_ptr->cmd.cause, &usr_data->hdr.cause)))
1969 return err;
1970 if ((err=put_user(mbox_ptr->cmd.diagn, &usr_data->hdr.diagn)))
1971 return err;
1972 if ((err=put_user(mbox_ptr->cmd.length, &usr_data->hdr.length)))
1973 return err;
1974 if ((err=put_user(mbox_ptr->cmd.result, &usr_data->hdr.result)))
1975 return err;
1976 if ((err=put_user(mbox_ptr->cmd.lcn, &usr_data->hdr.lcn)))
1977 return err;
1978
1979 if (mbox_ptr->cmd.length > 0){
1980 if (mbox_ptr->cmd.length > X25_MAX_DATA)
1981 return -EINVAL;
1982
1983 if (copy_to_user(usr_data->data, mbox_ptr->data, mbox_ptr->cmd.length)){
1984 printk(KERN_INFO "wansock: Copy failed !!!\n");
1985 return -EFAULT;
1986 }
1987 }
1988 return 0;
1989}
1990
1991/*============================================================
1992 * set_ioctl_cmd
1993 *
1994 * Before command can be execute, socket MBOX must
1995 * be created, and initialized with user data.
1996 *===========================================================*/
1997
1998static int set_ioctl_cmd (struct sock *sk, void *arg)
1999{
2000 x25api_t *usr_data = (x25api_t *)arg;
2001 mbox_cmd_t *mbox_ptr;
2002 int err;
2003
2004 if (!wp_sk(sk)->mbox) {
2005 void *mbox_ptr;
2006 struct net_device *dev = dev_get_by_index(sk->sk_bound_dev_if);
2007 if (!dev)
2008 return -ENODEV;
2009
2010 dev_put(dev);
2011
2012 if ((mbox_ptr = kzalloc(sizeof(mbox_cmd_t), GFP_ATOMIC)) == NULL)
2013 return -ENOMEM;
2014
2015 wp_sk(sk)->mbox = mbox_ptr;
2016
2017 wanpipe_link_driver(dev,sk);
2018 }
2019
2020 mbox_ptr = (mbox_cmd_t*)wp_sk(sk)->mbox;
2021 memset(mbox_ptr, 0, sizeof(mbox_cmd_t));
2022
2023 if (usr_data == NULL){
2024 return 0;
2025 }
2026 if ((err=get_user(mbox_ptr->cmd.qdm, &usr_data->hdr.qdm)))
2027 return err;
2028 if ((err=get_user(mbox_ptr->cmd.cause, &usr_data->hdr.cause)))
2029 return err;
2030 if ((err=get_user(mbox_ptr->cmd.diagn, &usr_data->hdr.diagn)))
2031 return err;
2032 if ((err=get_user(mbox_ptr->cmd.length, &usr_data->hdr.length)))
2033 return err;
2034 if ((err=get_user(mbox_ptr->cmd.result, &usr_data->hdr.result)))
2035 return err;
2036
2037 if (mbox_ptr->cmd.length > 0){
2038 if (mbox_ptr->cmd.length > X25_MAX_DATA)
2039 return -EINVAL;
2040
2041 if (copy_from_user(mbox_ptr->data, usr_data->data, mbox_ptr->cmd.length)){
2042 printk(KERN_INFO "Copy failed\n");
2043 return -EFAULT;
2044 }
2045 }
2046 return 0;
2047}
2048
2049
2050/*======================================================================
2051 * wanpipe_poll
2052 *
2053 * Datagram poll: Again totally generic. This also handles
2054 * sequenced packet sockets providing the socket receive queue
2055 * is only ever holding data ready to receive.
2056 *
2057 * Note: when you _don't_ use this routine for this protocol,
2058 * and you use a different write policy from sock_writeable()
2059 * then please supply your own write_space callback.
2060 *=====================================================================*/
2061
2062unsigned int wanpipe_poll(struct file * file, struct socket *sock, poll_table *wait)
2063{
2064 struct sock *sk = sock->sk;
2065 unsigned int mask;
2066
2067 ++wp_sk(sk)->poll_cnt;
2068
2069 poll_wait(file, sk->sk_sleep, wait);
2070 mask = 0;
2071
2072 /* exceptional events? */
2073 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) {
2074 mask |= POLLPRI;
2075 return mask;
2076 }
2077 if (sk->sk_shutdown & RCV_SHUTDOWN)
2078 mask |= POLLHUP;
2079
2080 /* readable? */
2081 if (!skb_queue_empty(&sk->sk_receive_queue)) {
2082 mask |= POLLIN | POLLRDNORM;
2083 }
2084
2085 /* connection hasn't started yet */
2086 if (sk->sk_state == WANSOCK_CONNECTING) {
2087 return mask;
2088 }
2089
2090 if (sk->sk_state == WANSOCK_DISCONNECTED) {
2091 mask = POLLPRI;
2092 return mask;
2093 }
2094
2095 /* This check blocks the user process if there is
2096 * a packet already queued in the socket write queue.
2097 * This option is only for X25API protocol, for other
2098 * protocol like chdlc enable streaming mode,
2099 * where multiple packets can be pending in the socket
2100 * transmit queue */
2101
2102 if (wp_sk(sk)->num == htons(X25_PROT)) {
2103 if (atomic_read(&wp_sk(sk)->packet_sent))
2104 return mask;
2105 }
2106
2107 /* writable? */
2108 if (sock_writeable(sk)){
2109 mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
2110 }else{
2111 set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
2112 }
2113
2114 return mask;
2115}
2116
2117/*======================================================================
2118 * wanpipe_listen
2119 *
2120 * X25API Specific function. Set a socket into LISTENING MODE.
2121 *=====================================================================*/
2122
2123
2124static int wanpipe_listen(struct socket *sock, int backlog)
2125{
2126 struct sock *sk = sock->sk;
2127
2128 /* This is x25 specific area if protocol doesn't
2129 * match, return error */
2130 if (wp_sk(sk)->num != htons(X25_PROT))
2131 return -EINVAL;
2132
2133 if (sk->sk_state == WANSOCK_BIND_LISTEN) {
2134
2135 sk->sk_max_ack_backlog = backlog;
2136 sk->sk_state = WANSOCK_LISTEN;
2137 return 0;
2138 }else{
2139 printk(KERN_INFO "wansock: Listening sock was not binded\n");
2140 }
2141
2142 return -EINVAL;
2143}
2144
2145/*======================================================================
2146 * wanpipe_link_card
2147 *
2148 * Connects the listening socket to the driver
2149 *=====================================================================*/
2150
2151static int wanpipe_link_card (struct sock *sk)
2152{
2153 sdla_t *card = (sdla_t*)wp_sk(sk)->card;
2154
2155 if (!card)
2156 return -ENOMEM;
2157
2158 if ((card->sk != NULL) || (card->func != NULL)){
2159 printk(KERN_INFO "wansock: Listening queue is already established\n");
2160 return -EINVAL;
2161 }
2162
2163 card->sk=sk;
2164 card->func=wanpipe_listen_rcv;
2165 sock_set_flag(sk, SOCK_ZAPPED);
2166
2167 return 0;
2168}
2169
2170/*======================================================================
2171 * wanpipe_listen
2172 *
2173 * X25API Specific function. Disconnect listening socket from
2174 * the driver.
2175 *=====================================================================*/
2176
2177static void wanpipe_unlink_card (struct sock *sk)
2178{
2179 sdla_t *card = (sdla_t*)wp_sk(sk)->card;
2180
2181 if (card){
2182 card->sk=NULL;
2183 card->func=NULL;
2184 }
2185}
2186
2187/*======================================================================
2188 * wanpipe_exec_cmd
2189 *
2190 * Ioctl function calls this function to execute user command.
2191 * Connect() sytem call also calls this function to execute
2192 * place call. This function blocks until command is executed.
2193 *=====================================================================*/
2194
2195static int wanpipe_exec_cmd(struct sock *sk, int cmd, unsigned int flags)
2196{
2197 int err = -EINVAL;
2198 wanpipe_opt *wp = wp_sk(sk);
2199 mbox_cmd_t *mbox_ptr = (mbox_cmd_t*)wp->mbox;
2200
2201 if (!mbox_ptr){
2202 printk(KERN_INFO "NO MBOX PTR !!!!!\n");
2203 return -EINVAL;
2204 }
2205
2206 /* This is x25 specific area if protocol doesn't
2207 * match, return error */
2208 if (wp->num != htons(X25_PROT))
2209 return -EINVAL;
2210
2211
2212 switch (cmd){
2213
2214 case SIOC_WANPIPE_ACCEPT_CALL:
2215
2216 if (sk->sk_state != WANSOCK_CONNECTING) {
2217 err = -EHOSTDOWN;
2218 break;
2219 }
2220
2221 err = execute_command(sk,X25_ACCEPT_CALL,0);
2222 if (err < 0)
2223 break;
2224
2225 /* Update. Mar6 2000.
2226 * Do not set the sock lcn number here, since
2227 * it is done in wanpipe_listen_rcv().
2228 */
2229 if (sk->sk_state == WANSOCK_CONNECTED) {
2230 wp->lcn = ((mbox_cmd_t*)wp->mbox)->cmd.lcn;
2231 DBG_PRINTK(KERN_INFO "\nwansock: Accept OK %i\n",
2232 wp->lcn);
2233 err = 0;
2234
2235 }else{
2236 DBG_PRINTK (KERN_INFO "\nwansock: Accept Failed %i\n",
2237 wp->lcn);
2238 wp->lcn = 0;
2239 err = -ECONNREFUSED;
2240 }
2241 break;
2242
2243 case SIOC_WANPIPE_CLEAR_CALL:
2244
2245 if (sk->sk_state == WANSOCK_DISCONNECTED) {
2246 err = -EINVAL;
2247 break;
2248 }
2249
2250
2251 /* Check if data buffers are pending for transmission,
2252 * if so, check whether user wants to wait until data
2253 * is transmitted, or clear a call and drop packets */
2254
2255 if (atomic_read(&sk->sk_wmem_alloc) ||
2256 check_driver_busy(sk)) {
2257 mbox_cmd_t *mbox = wp->mbox;
2258 if (mbox->cmd.qdm & 0x80){
2259 mbox->cmd.result = 0x35;
2260 err = -EAGAIN;
2261 break;
2262 }
2263 }
2264
2265 sk->sk_state = WANSOCK_DISCONNECTING;
2266
2267 err = execute_command(sk,X25_CLEAR_CALL,0);
2268 if (err < 0)
2269 break;
2270
2271 err = -ECONNREFUSED;
2272 if (sk->sk_state == WANSOCK_DISCONNECTED) {
2273 DBG_PRINTK(KERN_INFO "\nwansock: CLEAR OK %i\n",
2274 wp->lcn);
2275 wp->lcn = 0;
2276 err = 0;
2277 }
2278 break;
2279
2280 case SIOC_WANPIPE_RESET_CALL:
2281
2282 if (sk->sk_state != WANSOCK_CONNECTED) {
2283 err = -EINVAL;
2284 break;
2285 }
2286
2287
2288 /* Check if data buffers are pending for transmission,
2289 * if so, check whether user wants to wait until data
2290 * is transmitted, or reset a call and drop packets */
2291
2292 if (atomic_read(&sk->sk_wmem_alloc) ||
2293 check_driver_busy(sk)) {
2294 mbox_cmd_t *mbox = wp->mbox;
2295 if (mbox->cmd.qdm & 0x80){
2296 mbox->cmd.result = 0x35;
2297 err = -EAGAIN;
2298 break;
2299 }
2300 }
2301
2302
2303 err = execute_command(sk, X25_RESET,0);
2304 if (err < 0)
2305 break;
2306
2307 err = mbox_ptr->cmd.result;
2308 break;
2309
2310
2311 case X25_PLACE_CALL:
2312
2313 err=execute_command(sk,X25_PLACE_CALL,flags);
2314 if (err < 0)
2315 break;
2316
2317 if (sk->sk_state == WANSOCK_CONNECTED) {
2318
2319 wp->lcn = ((mbox_cmd_t*)wp->mbox)->cmd.lcn;
2320
2321 DBG_PRINTK(KERN_INFO "\nwansock: PLACE CALL OK %i\n",
2322 wp->lcn);
2323 err = 0;
2324
2325 } else if (sk->sk_state == WANSOCK_CONNECTING &&
2326 (flags & O_NONBLOCK)) {
2327 wp->lcn = ((mbox_cmd_t*)wp->mbox)->cmd.lcn;
2328 DBG_PRINTK(KERN_INFO "\nwansock: Place Call OK: Waiting %i\n",
2329 wp->lcn);
2330
2331 err = 0;
2332
2333 }else{
2334 DBG_PRINTK(KERN_INFO "\nwansock: Place call Failed\n");
2335 err = -ECONNREFUSED;
2336 }
2337
2338 break;
2339
2340 default:
2341 return -EINVAL;
2342 }
2343
2344 return err;
2345}
2346
2347static int check_driver_busy (struct sock *sk)
2348{
2349 struct net_device *dev = dev_get_by_index(sk->sk_bound_dev_if);
2350 wanpipe_common_t *chan;
2351
2352 if (!dev)
2353 return 0;
2354
2355 dev_put(dev);
2356
2357 if ((chan=dev->priv) == NULL)
2358 return 0;
2359
2360 return atomic_read(&chan->driver_busy);
2361}
2362
2363
2364/*======================================================================
2365 * wanpipe_accept
2366 *
2367 * ACCEPT() System call. X25API Specific function.
2368 * For each incoming call, create a new socket and
2369 * return it to the user.
2370 *=====================================================================*/
2371
2372static int wanpipe_accept(struct socket *sock, struct socket *newsock, int flags)
2373{
2374 struct sock *sk;
2375 struct sock *newsk;
2376 struct sk_buff *skb;
2377 DECLARE_WAITQUEUE(wait, current);
2378 int err=0;
2379
2380 if (newsock->sk != NULL){
2381 wanpipe_kill_sock_accept(newsock->sk);
2382 newsock->sk=NULL;
2383 }
2384
2385 if ((sk = sock->sk) == NULL)
2386 return -EINVAL;
2387
2388 if (sk->sk_type != SOCK_RAW)
2389 return -EOPNOTSUPP;
2390
2391 if (sk->sk_state != WANSOCK_LISTEN)
2392 return -EINVAL;
2393
2394 if (wp_sk(sk)->num != htons(X25_PROT))
2395 return -EINVAL;
2396
2397 add_wait_queue(sk->sk_sleep,&wait);
2398 current->state = TASK_INTERRUPTIBLE;
2399 for (;;){
2400 skb = skb_dequeue(&sk->sk_receive_queue);
2401 if (skb){
2402 err=0;
2403 break;
2404 }
2405 if (signal_pending(current)) {
2406 err = -ERESTARTSYS;
2407 break;
2408 }
2409 schedule();
2410 }
2411 current->state = TASK_RUNNING;
2412 remove_wait_queue(sk->sk_sleep,&wait);
2413
2414 if (err != 0)
2415 return err;
2416
2417 newsk = get_newsk_from_skb(skb);
2418 if (!newsk){
2419 return -EINVAL;
2420 }
2421
2422 set_bit(1,&wanpipe_tx_critical);
2423 write_lock(&wanpipe_sklist_lock);
2424 sk_add_node(newsk, &wanpipe_sklist);
2425 write_unlock(&wanpipe_sklist_lock);
2426 clear_bit(1,&wanpipe_tx_critical);
2427
2428 newsk->sk_socket = newsock;
2429 newsk->sk_sleep = &newsock->wait;
2430
2431 /* Now attach up the new socket */
2432 sk->sk_ack_backlog--;
2433 newsock->sk = newsk;
2434
2435 kfree_skb(skb);
2436
2437 DBG_PRINTK(KERN_INFO "\nwansock: ACCEPT Got LCN %i\n",
2438 wp_sk(newsk)->lcn);
2439 return 0;
2440}
2441
2442/*======================================================================
2443 * get_newsk_from_skb
2444 *
2445 * Accept() uses this function to get the address of the new
2446 * socket structure.
2447 *=====================================================================*/
2448
2449struct sock * get_newsk_from_skb (struct sk_buff *skb)
2450{
2451 struct net_device *dev = skb->dev;
2452 wanpipe_common_t *chan;
2453
2454 if (!dev){
2455 return NULL;
2456 }
2457
2458 if ((chan = dev->priv) == NULL){
2459 return NULL;
2460 }
2461
2462 if (!chan->sk){
2463 return NULL;
2464 }
2465 return (struct sock *)chan->sk;
2466}
2467
2468/*======================================================================
2469 * wanpipe_connect
2470 *
2471 * CONNECT() System Call. X25API specific function
2472 * Check the state of the sock, and execute PLACE_CALL command.
2473 * Connect can ether block or return without waiting for connection,
2474 * if specified by user.
2475 *=====================================================================*/
2476
2477static int wanpipe_connect(struct socket *sock, struct sockaddr *uaddr, int addr_len, int flags)
2478{
2479 struct sock *sk = sock->sk;
2480 struct wan_sockaddr_ll *addr = (struct wan_sockaddr_ll*)uaddr;
2481 struct net_device *dev;
2482 int err;
2483
2484 if (wp_sk(sk)->num != htons(X25_PROT))
2485 return -EINVAL;
2486
2487 if (sk->sk_state == WANSOCK_CONNECTED)
2488 return -EISCONN; /* No reconnect on a seqpacket socket */
2489
2490 if (sk->sk_state != WAN_DISCONNECTED) {
2491 printk(KERN_INFO "wansock: Trying to connect on channel NON DISCONNECT\n");
2492 return -ECONNREFUSED;
2493 }
2494
2495 sk->sk_state = WANSOCK_DISCONNECTED;
2496 sock->state = SS_UNCONNECTED;
2497
2498 if (addr_len != sizeof(struct wan_sockaddr_ll))
2499 return -EINVAL;
2500
2501 if (addr->sll_family != AF_WANPIPE)
2502 return -EINVAL;
2503
2504 if ((dev = dev_get_by_index(sk->sk_bound_dev_if)) == NULL)
2505 return -ENETUNREACH;
2506
2507 dev_put(dev);
2508
2509 if (!sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */
2510 return -EINVAL;
2511
2512 sock->state = SS_CONNECTING;
2513 sk->sk_state = WANSOCK_CONNECTING;
2514
2515 if (!wp_sk(sk)->mbox) {
2516 if (wp_sk (sk)->svc)
2517 return -EINVAL;
2518 else {
2519 int err;
2520 if ((err=set_ioctl_cmd(sk,NULL)) < 0)
2521 return err;
2522 }
2523 }
2524
2525 if ((err=wanpipe_exec_cmd(sk, X25_PLACE_CALL,flags)) != 0){
2526 sock->state = SS_UNCONNECTED;
2527 sk->sk_state = WANSOCK_CONNECTED;
2528 return err;
2529 }
2530
2531 if (sk->sk_state != WANSOCK_CONNECTED && (flags & O_NONBLOCK)) {
2532 return 0;
2533 }
2534
2535 if (sk->sk_state != WANSOCK_CONNECTED) {
2536 sock->state = SS_UNCONNECTED;
2537 return -ECONNREFUSED;
2538 }
2539
2540 sock->state = SS_CONNECTED;
2541 return 0;
2542}
2543
2544const struct proto_ops wanpipe_ops = {
2545 .family = PF_WANPIPE,
2546 .owner = THIS_MODULE,
2547 .release = wanpipe_release,
2548 .bind = wanpipe_bind,
2549 .connect = wanpipe_connect,
2550 .socketpair = sock_no_socketpair,
2551 .accept = wanpipe_accept,
2552 .getname = wanpipe_getname,
2553 .poll = wanpipe_poll,
2554 .ioctl = wanpipe_ioctl,
2555 .listen = wanpipe_listen,
2556 .shutdown = sock_no_shutdown,
2557 .setsockopt = sock_no_setsockopt,
2558 .getsockopt = sock_no_getsockopt,
2559 .sendmsg = wanpipe_sendmsg,
2560 .recvmsg = wanpipe_recvmsg
2561};
2562
2563static struct net_proto_family wanpipe_family_ops = {
2564 .family = PF_WANPIPE,
2565 .create = wanpipe_create,
2566 .owner = THIS_MODULE,
2567};
2568
2569struct notifier_block wanpipe_netdev_notifier = {
2570 .notifier_call = wanpipe_notifier,
2571};
2572
2573
2574#ifdef MODULE
2575void cleanup_module(void)
2576{
2577 printk(KERN_INFO "wansock: Cleaning up \n");
2578 unregister_netdevice_notifier(&wanpipe_netdev_notifier);
2579 sock_unregister(PF_WANPIPE);
2580 proto_unregister(&wanpipe_proto);
2581}
2582
2583int init_module(void)
2584{
2585 int rc;
2586
2587 printk(KERN_INFO "wansock: Registering Socket \n");
2588
2589 rc = proto_register(&wanpipe_proto, 0);
2590 if (rc != 0)
2591 goto out;
2592
2593 sock_register(&wanpipe_family_ops);
2594 register_netdevice_notifier(&wanpipe_netdev_notifier);
2595out:
2596 return rc;
2597}
2598#endif
2599MODULE_LICENSE("GPL");
2600MODULE_ALIAS_NETPROTO(PF_WANPIPE);
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index a35f9e4ede26..5c5f6dcab974 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -704,7 +704,8 @@ static struct xfrm_state *__find_acq_core(unsigned short family, u8 mode, u32 re
704 x->props.mode != mode || 704 x->props.mode != mode ||
705 x->props.family != family || 705 x->props.family != family ||
706 x->km.state != XFRM_STATE_ACQ || 706 x->km.state != XFRM_STATE_ACQ ||
707 x->id.spi != 0) 707 x->id.spi != 0 ||
708 x->id.proto != proto)
708 continue; 709 continue;
709 710
710 switch (family) { 711 switch (family) {
@@ -801,7 +802,8 @@ int xfrm_state_add(struct xfrm_state *x)
801 802
802 if (use_spi && x->km.seq) { 803 if (use_spi && x->km.seq) {
803 x1 = __xfrm_find_acq_byseq(x->km.seq); 804 x1 = __xfrm_find_acq_byseq(x->km.seq);
804 if (x1 && xfrm_addr_cmp(&x1->id.daddr, &x->id.daddr, family)) { 805 if (x1 && ((x1->id.proto != x->id.proto) ||
806 xfrm_addr_cmp(&x1->id.daddr, &x->id.daddr, family))) {
805 xfrm_state_put(x1); 807 xfrm_state_put(x1);
806 x1 = NULL; 808 x1 = NULL;
807 } 809 }