aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--Makefile2
-rw-r--r--arch/i386/Kconfig3
-rw-r--r--arch/i386/kernel/acpi/boot.c3
-rw-r--r--arch/i386/kernel/microcode.c15
-rw-r--r--arch/i386/mach-voyager/voyager_basic.c14
-rw-r--r--arch/ia64/Kconfig1
-rw-r--r--arch/ia64/configs/bigsur_defconfig161
-rw-r--r--arch/ia64/configs/gensparse_defconfig161
-rw-r--r--arch/ia64/configs/sim_defconfig371
-rw-r--r--arch/ia64/configs/sn2_defconfig58
-rw-r--r--arch/ia64/configs/tiger_defconfig57
-rw-r--r--arch/ia64/configs/zx1_defconfig192
-rw-r--r--arch/ia64/defconfig177
-rw-r--r--arch/ia64/kernel/fsys.S7
-rw-r--r--arch/ia64/kernel/ivt.S1
-rw-r--r--arch/ia64/kernel/unaligned.c33
-rw-r--r--arch/ia64/pci/pci.c2
-rw-r--r--arch/ia64/sn/kernel/io_init.c1
-rw-r--r--arch/mips/kernel/linux32.c54
-rw-r--r--arch/mips/kernel/scall64-n32.S2
-rw-r--r--arch/mips/kernel/scall64-o32.S4
-rw-r--r--arch/mips/kernel/setup.c3
-rw-r--r--arch/mips/kernel/smp.c2
-rw-r--r--arch/mips/kernel/smp_mt.c13
-rw-r--r--arch/mips/kernel/time.c5
-rw-r--r--arch/mips/lib/iomap.c2
-rw-r--r--arch/mips/mm/c-r4k.c16
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c24
-rw-r--r--arch/mips/sgi-ip27/ip27-smp.c7
-rw-r--r--arch/mips/sibyte/cfe/smp.c10
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/kernel/vdso.c4
-rw-r--r--arch/powerpc/kernel/vdso64/gettimeofday.S4
-rw-r--r--arch/powerpc/mm/hash_utils_64.c2
-rw-r--r--arch/powerpc/platforms/pseries/eeh.c14
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c2
-rw-r--r--arch/powerpc/platforms/pseries/pci_dlpar.c36
-rw-r--r--arch/sparc64/Kconfig1
-rw-r--r--arch/sparc64/kernel/setup.c2
-rw-r--r--arch/sparc64/kernel/smp.c28
-rw-r--r--arch/x86_64/Kconfig1
-rw-r--r--arch/x86_64/kernel/apic.c9
-rw-r--r--arch/x86_64/kernel/setup.c2
-rw-r--r--block/cfq-iosched.c151
-rw-r--r--drivers/char/pcmcia/cm4000_cs.c24
-rw-r--r--drivers/char/pcmcia/cm4040_cs.c23
-rw-r--r--drivers/char/sx.c10
-rw-r--r--drivers/char/synclink_gt.c2
-rw-r--r--drivers/char/tty_io.c2
-rw-r--r--drivers/ide/legacy/ide-cs.c1
-rw-r--r--drivers/ieee1394/video1394.c2
-rw-r--r--drivers/mtd/redboot.c28
-rw-r--r--drivers/net/8139cp.c37
-rw-r--r--drivers/net/e1000/e1000.h3
-rw-r--r--drivers/net/e1000/e1000_main.c119
-rw-r--r--drivers/net/pcmcia/axnet_cs.c1
-rw-r--r--drivers/net/sis900.c4
-rw-r--r--drivers/net/sky2.c77
-rw-r--r--drivers/net/sky2.h1
-rw-r--r--drivers/net/tg3.c9
-rw-r--r--drivers/net/via-velocity.c3
-rw-r--r--drivers/net/wireless/hostap/hostap_cs.c5
-rw-r--r--drivers/pcmcia/ds.c40
-rw-r--r--drivers/pnp/card.c12
-rw-r--r--drivers/scsi/aha152x.c85
-rw-r--r--drivers/scsi/aha152x.h2
-rw-r--r--drivers/scsi/jazz_esp.c21
-rw-r--r--drivers/scsi/libata-core.c4
-rw-r--r--drivers/scsi/libata-scsi.c2
-rw-r--r--drivers/scsi/libata.h1
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c29
-rw-r--r--drivers/scsi/pcmcia/aha152x_stub.c4
-rw-r--r--drivers/scsi/sata_sil.c52
-rw-r--r--drivers/scsi/scsi_error.c4
-rw-r--r--drivers/scsi/scsi_lib.c2
-rw-r--r--drivers/scsi/scsi_scan.c16
-rw-r--r--drivers/scsi/scsi_transport_fc.c3
-rw-r--r--drivers/scsi/sg.c2
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_hipd.c2
-rw-r--r--drivers/serial/sunsu.c3
-rw-r--r--drivers/sn/Kconfig4
-rw-r--r--drivers/sn/ioc3.c11
-rw-r--r--drivers/usb/gadget/lh7a40x_udc.c6
-rw-r--r--drivers/usb/gadget/rndis.c11
-rw-r--r--drivers/usb/host/pci-quirks.c11
-rw-r--r--drivers/usb/input/hid-core.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.c6
-rw-r--r--drivers/usb/serial/ftdi_sio.h10
-rw-r--r--drivers/usb/serial/visor.c3
-rw-r--r--drivers/usb/serial/visor.h3
-rw-r--r--drivers/usb/storage/unusual_devs.h7
-rw-r--r--fs/9p/fid.c145
-rw-r--r--fs/9p/fid.h6
-rw-r--r--fs/9p/v9fs.c1
-rw-r--r--fs/9p/v9fs_vfs.h1
-rw-r--r--fs/9p/vfs_dentry.c45
-rw-r--r--fs/9p/vfs_file.c106
-rw-r--r--fs/9p/vfs_inode.c478
-rw-r--r--fs/9p/vfs_super.c11
-rw-r--r--fs/exec.c6
-rw-r--r--fs/fuse/dir.c10
-rw-r--r--fs/ocfs2/cluster/masklog.c1
-rw-r--r--fs/ocfs2/cluster/masklog.h2
-rw-r--r--fs/ocfs2/cluster/nodemanager.c4
-rw-r--r--fs/ocfs2/cluster/tcp.c14
-rw-r--r--fs/ocfs2/cluster/tcp.h5
-rw-r--r--fs/ocfs2/dlm/dlmcommon.h8
-rw-r--r--fs/ocfs2/dlm/dlmdebug.c12
-rw-r--r--fs/ocfs2/dlm/dlmdomain.c39
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c4
-rw-r--r--fs/ocfs2/dlm/dlmrecovery.c23
-rw-r--r--fs/ocfs2/extent_map.c38
-rw-r--r--fs/ocfs2/file.c51
-rw-r--r--fs/ocfs2/heartbeat.c1
-rw-r--r--fs/ocfs2/inode.c46
-rw-r--r--fs/ocfs2/journal.c124
-rw-r--r--fs/ocfs2/ocfs2.h7
-rw-r--r--fs/ocfs2/ocfs2_fs.h1
-rw-r--r--fs/ocfs2/super.c11
-rw-r--r--fs/reiserfs/file.c14
-rw-r--r--fs/reiserfs/inode.c8
-rw-r--r--fs/reiserfs/journal.c3
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c2
-rw-r--r--fs/xfs/quota/xfs_qm.c11
-rw-r--r--fs/xfs/xfs_rtalloc.c29
-rw-r--r--include/asm-ia64/sn/arch.h3
-rw-r--r--include/asm-mips/atomic.h12
-rw-r--r--include/asm-mips/io.h18
-rw-r--r--include/asm-mips/smp.h11
-rw-r--r--include/asm-mips/system.h8
-rw-r--r--include/asm-powerpc/eeh.h8
-rw-r--r--include/asm-sparc64/futex.h88
-rw-r--r--include/asm-sparc64/smp.h6
-rw-r--r--include/asm-x86_64/acpi.h14
-rw-r--r--include/linux/netfilter_bridge/ebt_log.h1
-rw-r--r--include/linux/netfilter_ipv4/ipt_LOG.h3
-rw-r--r--include/linux/netfilter_ipv6/ip6t_LOG.h3
-rw-r--r--include/linux/sched.h5
-rw-r--r--include/linux/sysctl.h1
-rw-r--r--include/net/xfrm.h1
-rw-r--r--include/pcmcia/device_id.h9
-rw-r--r--kernel/sysctl.c14
-rw-r--r--kernel/timer.c4
-rw-r--r--mm/mempolicy.c6
-rw-r--r--mm/nommu.c8
-rw-r--r--mm/oom_kill.c5
-rw-r--r--mm/rmap.c18
-rw-r--r--net/bridge/netfilter/ebt_log.c7
-rw-r--r--net/core/request_sock.c1
-rw-r--r--net/ieee80211/ieee80211_rx.c16
-rw-r--r--net/ipv4/esp4.c185
-rw-r--r--net/ipv4/netfilter/ipt_LOG.c7
-rw-r--r--net/ipv6/netfilter/ip6t_LOG.c7
-rw-r--r--net/netfilter/nf_queue.c42
-rw-r--r--net/xfrm/xfrm_policy.c7
156 files changed, 2419 insertions, 1736 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index b874771385cd..75205391b335 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1034,6 +1034,8 @@ running once the system is up.
1034 1034
1035 nomce [IA-32] Machine Check Exception 1035 nomce [IA-32] Machine Check Exception
1036 1036
1037 nomca [IA-64] Disable machine check abort handling
1038
1037 noresidual [PPC] Don't use residual data on PReP machines. 1039 noresidual [PPC] Don't use residual data on PReP machines.
1038 1040
1039 noresume [SWSUSP] Disables resume and restores original swap 1041 noresume [SWSUSP] Disables resume and restores original swap
diff --git a/Makefile b/Makefile
index 77a448c8e776..46eea76bc570 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 16 3SUBLEVEL = 16
4EXTRAVERSION =-rc4 4EXTRAVERSION =-rc5
5NAME=Sliding Snow Leopard 5NAME=Sliding Snow Leopard
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 0afec8566e7b..5b1a7d46d1d9 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -733,7 +733,7 @@ config PHYSICAL_START
733 733
734config HOTPLUG_CPU 734config HOTPLUG_CPU
735 bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" 735 bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
736 depends on SMP && HOTPLUG && EXPERIMENTAL 736 depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
737 ---help--- 737 ---help---
738 Say Y here to experiment with turning CPUs off and on. CPUs 738 Say Y here to experiment with turning CPUs off and on. CPUs
739 can be controlled through /sys/devices/system/cpu. 739 can be controlled through /sys/devices/system/cpu.
@@ -1060,6 +1060,7 @@ source "arch/i386/oprofile/Kconfig"
1060 1060
1061config KPROBES 1061config KPROBES
1062 bool "Kprobes (EXPERIMENTAL)" 1062 bool "Kprobes (EXPERIMENTAL)"
1063 depends on EXPERIMENTAL && MODULES
1063 help 1064 help
1064 Kprobes allows you to trap at almost any kernel address and 1065 Kprobes allows you to trap at almost any kernel address and
1065 execute a callback function. register_kprobe() establishes 1066 execute a callback function. register_kprobe() establishes
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 8309a7b2cd63..79577f0ace98 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -44,6 +44,9 @@ extern void __init clustered_apic_check(void);
44extern int gsi_irq_sharing(int gsi); 44extern int gsi_irq_sharing(int gsi);
45#include <asm/proto.h> 45#include <asm/proto.h>
46 46
47static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return 0; }
48
49
47#else /* X86 */ 50#else /* X86 */
48 51
49#ifdef CONFIG_X86_LOCAL_APIC 52#ifdef CONFIG_X86_LOCAL_APIC
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c
index d3fdf0057d82..5390b521aca0 100644
--- a/arch/i386/kernel/microcode.c
+++ b/arch/i386/kernel/microcode.c
@@ -74,6 +74,7 @@
74#include <linux/kernel.h> 74#include <linux/kernel.h>
75#include <linux/init.h> 75#include <linux/init.h>
76#include <linux/sched.h> 76#include <linux/sched.h>
77#include <linux/cpumask.h>
77#include <linux/module.h> 78#include <linux/module.h>
78#include <linux/slab.h> 79#include <linux/slab.h>
79#include <linux/vmalloc.h> 80#include <linux/vmalloc.h>
@@ -250,8 +251,8 @@ static int find_matching_ucodes (void)
250 error = -EINVAL; 251 error = -EINVAL;
251 goto out; 252 goto out;
252 } 253 }
253 254
254 for (cpu_num = 0; cpu_num < num_online_cpus(); cpu_num++) { 255 for_each_online_cpu(cpu_num) {
255 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num; 256 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
256 if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/ 257 if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/
257 continue; 258 continue;
@@ -293,7 +294,7 @@ static int find_matching_ucodes (void)
293 error = -EFAULT; 294 error = -EFAULT;
294 goto out; 295 goto out;
295 } 296 }
296 for (cpu_num = 0; cpu_num < num_online_cpus(); cpu_num++) { 297 for_each_online_cpu(cpu_num) {
297 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num; 298 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
298 if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/ 299 if (uci->err != MC_NOTFOUND) /* already found a match or not an online cpu*/
299 continue; 300 continue;
@@ -304,7 +305,9 @@ static int find_matching_ucodes (void)
304 } 305 }
305 } 306 }
306 /* now check if any cpu has matched */ 307 /* now check if any cpu has matched */
307 for (cpu_num = 0, allocated_flag = 0, sum = 0; cpu_num < num_online_cpus(); cpu_num++) { 308 allocated_flag = 0;
309 sum = 0;
310 for_each_online_cpu(cpu_num) {
308 if (ucode_cpu_info[cpu_num].err == MC_MARKED) { 311 if (ucode_cpu_info[cpu_num].err == MC_MARKED) {
309 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num; 312 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
310 if (!allocated_flag) { 313 if (!allocated_flag) {
@@ -415,12 +418,12 @@ static int do_microcode_update (void)
415 } 418 }
416 419
417out_free: 420out_free:
418 for (i = 0; i < num_online_cpus(); i++) { 421 for_each_online_cpu(i) {
419 if (ucode_cpu_info[i].mc) { 422 if (ucode_cpu_info[i].mc) {
420 int j; 423 int j;
421 void *tmp = ucode_cpu_info[i].mc; 424 void *tmp = ucode_cpu_info[i].mc;
422 vfree(tmp); 425 vfree(tmp);
423 for (j = i; j < num_online_cpus(); j++) { 426 for_each_online_cpu(j) {
424 if (ucode_cpu_info[j].mc == tmp) 427 if (ucode_cpu_info[j].mc == tmp)
425 ucode_cpu_info[j].mc = NULL; 428 ucode_cpu_info[j].mc = NULL;
426 } 429 }
diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c
index 6761d294f260..b584060ec004 100644
--- a/arch/i386/mach-voyager/voyager_basic.c
+++ b/arch/i386/mach-voyager/voyager_basic.c
@@ -25,7 +25,6 @@
25#include <linux/sysrq.h> 25#include <linux/sysrq.h>
26#include <linux/smp.h> 26#include <linux/smp.h>
27#include <linux/nodemask.h> 27#include <linux/nodemask.h>
28#include <asm/cpu.h>
29#include <asm/io.h> 28#include <asm/io.h>
30#include <asm/voyager.h> 29#include <asm/voyager.h>
31#include <asm/vic.h> 30#include <asm/vic.h>
@@ -331,16 +330,3 @@ void machine_power_off(void)
331 if (pm_power_off) 330 if (pm_power_off)
332 pm_power_off(); 331 pm_power_off();
333} 332}
334
335static struct i386_cpu cpu_devices[NR_CPUS];
336
337static int __init topology_init(void)
338{
339 int i;
340
341 for_each_present_cpu(i)
342 register_cpu(&cpu_devices[i].cpu, i, NULL);
343 return 0;
344}
345
346subsys_initcall(topology_init);
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 845cd0902a50..a85ea9d37f05 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -453,6 +453,7 @@ source "arch/ia64/oprofile/Kconfig"
453 453
454config KPROBES 454config KPROBES
455 bool "Kprobes (EXPERIMENTAL)" 455 bool "Kprobes (EXPERIMENTAL)"
456 depends on EXPERIMENTAL && MODULES
456 help 457 help
457 Kprobes allows you to trap at almost any kernel address and 458 Kprobes allows you to trap at almost any kernel address and
458 execute a callback function. register_kprobe() establishes 459 execute a callback function. register_kprobe() establishes
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig
index b40672bb3ab0..90e9c2e61bf4 100644
--- a/arch/ia64/configs/bigsur_defconfig
+++ b/arch/ia64/configs/bigsur_defconfig
@@ -1,14 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc1 3# Linux kernel version: 2.6.16-rc5
4# Wed Sep 14 15:18:49 2005 4# Mon Feb 27 16:10:42 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
14 13
@@ -23,17 +22,18 @@ CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28# CONFIG_IKCONFIG is not set 25# CONFIG_IKCONFIG is not set
29# CONFIG_CPUSETS is not set 26# CONFIG_CPUSETS is not set
30CONFIG_INITRAMFS_SOURCE="" 27CONFIG_INITRAMFS_SOURCE=""
28CONFIG_CC_OPTIMIZE_FOR_SIZE=y
31# CONFIG_EMBEDDED is not set 29# CONFIG_EMBEDDED is not set
32CONFIG_KALLSYMS=y 30CONFIG_KALLSYMS=y
33# CONFIG_KALLSYMS_ALL is not set 31# CONFIG_KALLSYMS_ALL is not set
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 32# CONFIG_KALLSYMS_EXTRA_PASS is not set
33CONFIG_HOTPLUG=y
35CONFIG_PRINTK=y 34CONFIG_PRINTK=y
36CONFIG_BUG=y 35CONFIG_BUG=y
36CONFIG_ELF_CORE=y
37CONFIG_BASE_FULL=y 37CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y 38CONFIG_FUTEX=y
39CONFIG_EPOLL=y 39CONFIG_EPOLL=y
@@ -42,8 +42,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
42CONFIG_CC_ALIGN_LABELS=0 42CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_SLAB=y
45# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0 47CONFIG_BASE_SMALL=0
48# CONFIG_SLOB is not set
47 49
48# 50#
49# Loadable module support 51# Loadable module support
@@ -58,17 +60,36 @@ CONFIG_KMOD=y
58CONFIG_STOP_MACHINE=y 60CONFIG_STOP_MACHINE=y
59 61
60# 62#
63# Block layer
64#
65
66#
67# IO Schedulers
68#
69CONFIG_IOSCHED_NOOP=y
70CONFIG_IOSCHED_AS=y
71CONFIG_IOSCHED_DEADLINE=y
72CONFIG_IOSCHED_CFQ=y
73CONFIG_DEFAULT_AS=y
74# CONFIG_DEFAULT_DEADLINE is not set
75# CONFIG_DEFAULT_CFQ is not set
76# CONFIG_DEFAULT_NOOP is not set
77CONFIG_DEFAULT_IOSCHED="anticipatory"
78
79#
61# Processor type and features 80# Processor type and features
62# 81#
63CONFIG_IA64=y 82CONFIG_IA64=y
64CONFIG_64BIT=y 83CONFIG_64BIT=y
65CONFIG_MMU=y 84CONFIG_MMU=y
85CONFIG_SWIOTLB=y
66CONFIG_RWSEM_XCHGADD_ALGORITHM=y 86CONFIG_RWSEM_XCHGADD_ALGORITHM=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 87CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_TIME_INTERPOLATION=y 88CONFIG_TIME_INTERPOLATION=y
69CONFIG_EFI=y 89CONFIG_EFI=y
70CONFIG_GENERIC_IOMAP=y 90CONFIG_GENERIC_IOMAP=y
71CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 91CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
92CONFIG_DMA_IS_DMA32=y
72# CONFIG_IA64_GENERIC is not set 93# CONFIG_IA64_GENERIC is not set
73CONFIG_IA64_DIG=y 94CONFIG_IA64_DIG=y
74# CONFIG_IA64_HP_ZX1 is not set 95# CONFIG_IA64_HP_ZX1 is not set
@@ -81,18 +102,17 @@ CONFIG_ITANIUM=y
81# CONFIG_IA64_PAGE_SIZE_8KB is not set 102# CONFIG_IA64_PAGE_SIZE_8KB is not set
82CONFIG_IA64_PAGE_SIZE_16KB=y 103CONFIG_IA64_PAGE_SIZE_16KB=y
83# CONFIG_IA64_PAGE_SIZE_64KB is not set 104# CONFIG_IA64_PAGE_SIZE_64KB is not set
105CONFIG_PGTABLE_3=y
106# CONFIG_PGTABLE_4 is not set
84# CONFIG_HZ_100 is not set 107# CONFIG_HZ_100 is not set
85CONFIG_HZ_250=y 108CONFIG_HZ_250=y
86# CONFIG_HZ_1000 is not set 109# CONFIG_HZ_1000 is not set
87CONFIG_HZ=250 110CONFIG_HZ=250
88CONFIG_IA64_BRL_EMU=y 111CONFIG_IA64_BRL_EMU=y
89CONFIG_IA64_L1_CACHE_SHIFT=6 112CONFIG_IA64_L1_CACHE_SHIFT=6
90# CONFIG_NUMA is not set
91# CONFIG_VIRTUAL_MEM_MAP is not set
92# CONFIG_IA64_CYCLONE is not set 113# CONFIG_IA64_CYCLONE is not set
93CONFIG_IOSAPIC=y 114CONFIG_IOSAPIC=y
94# CONFIG_IA64_SGI_SN_XP is not set 115CONFIG_FORCE_MAX_ZONEORDER=17
95CONFIG_FORCE_MAX_ZONEORDER=18
96CONFIG_SMP=y 116CONFIG_SMP=y
97CONFIG_NR_CPUS=2 117CONFIG_NR_CPUS=2
98# CONFIG_HOTPLUG_CPU is not set 118# CONFIG_HOTPLUG_CPU is not set
@@ -105,7 +125,12 @@ CONFIG_FLATMEM_MANUAL=y
105CONFIG_FLATMEM=y 125CONFIG_FLATMEM=y
106CONFIG_FLAT_NODE_MEM_MAP=y 126CONFIG_FLAT_NODE_MEM_MAP=y
107# CONFIG_SPARSEMEM_STATIC is not set 127# CONFIG_SPARSEMEM_STATIC is not set
108CONFIG_HAVE_DEC_LOCK=y 128CONFIG_SPLIT_PTLOCK_CPUS=4
129CONFIG_ARCH_SELECT_MEMORY_MODEL=y
130CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
131CONFIG_ARCH_FLATMEM_ENABLE=y
132CONFIG_ARCH_SPARSEMEM_ENABLE=y
133# CONFIG_VIRTUAL_MEM_MAP is not set
109CONFIG_IA32_SUPPORT=y 134CONFIG_IA32_SUPPORT=y
110CONFIG_COMPAT=y 135CONFIG_COMPAT=y
111# CONFIG_IA64_MCA_RECOVERY is not set 136# CONFIG_IA64_MCA_RECOVERY is not set
@@ -117,7 +142,6 @@ CONFIG_IA64_PALINFO=y
117# 142#
118CONFIG_EFI_VARS=y 143CONFIG_EFI_VARS=y
119CONFIG_EFI_PCDP=y 144CONFIG_EFI_PCDP=y
120# CONFIG_DELL_RBU is not set
121CONFIG_BINFMT_ELF=y 145CONFIG_BINFMT_ELF=y
122CONFIG_BINFMT_MISC=m 146CONFIG_BINFMT_MISC=m
123 147
@@ -125,6 +149,7 @@ CONFIG_BINFMT_MISC=m
125# Power management and ACPI 149# Power management and ACPI
126# 150#
127CONFIG_PM=y 151CONFIG_PM=y
152CONFIG_PM_LEGACY=y
128# CONFIG_PM_DEBUG is not set 153# CONFIG_PM_DEBUG is not set
129 154
130# 155#
@@ -137,6 +162,7 @@ CONFIG_ACPI_PROCESSOR=m
137CONFIG_ACPI_THERMAL=m 162CONFIG_ACPI_THERMAL=m
138CONFIG_ACPI_BLACKLIST_YEAR=0 163CONFIG_ACPI_BLACKLIST_YEAR=0
139# CONFIG_ACPI_DEBUG is not set 164# CONFIG_ACPI_DEBUG is not set
165CONFIG_ACPI_EC=y
140CONFIG_ACPI_POWER=y 166CONFIG_ACPI_POWER=y
141CONFIG_ACPI_SYSTEM=y 167CONFIG_ACPI_SYSTEM=y
142# CONFIG_ACPI_CONTAINER is not set 168# CONFIG_ACPI_CONTAINER is not set
@@ -173,6 +199,7 @@ CONFIG_NET=y
173# 199#
174# Networking options 200# Networking options
175# 201#
202# CONFIG_NETDEBUG is not set
176CONFIG_PACKET=y 203CONFIG_PACKET=y
177CONFIG_PACKET_MMAP=y 204CONFIG_PACKET_MMAP=y
178CONFIG_UNIX=y 205CONFIG_UNIX=y
@@ -206,6 +233,11 @@ CONFIG_TCP_CONG_BIC=y
206# SCTP Configuration (EXPERIMENTAL) 233# SCTP Configuration (EXPERIMENTAL)
207# 234#
208# CONFIG_IP_SCTP is not set 235# CONFIG_IP_SCTP is not set
236
237#
238# TIPC Configuration (EXPERIMENTAL)
239#
240# CONFIG_TIPC is not set
209# CONFIG_ATM is not set 241# CONFIG_ATM is not set
210# CONFIG_BRIDGE is not set 242# CONFIG_BRIDGE is not set
211# CONFIG_VLAN_8021Q is not set 243# CONFIG_VLAN_8021Q is not set
@@ -218,14 +250,16 @@ CONFIG_TCP_CONG_BIC=y
218# CONFIG_NET_DIVERT is not set 250# CONFIG_NET_DIVERT is not set
219# CONFIG_ECONET is not set 251# CONFIG_ECONET is not set
220# CONFIG_WAN_ROUTER is not set 252# CONFIG_WAN_ROUTER is not set
253
254#
255# QoS and/or fair queueing
256#
221# CONFIG_NET_SCHED is not set 257# CONFIG_NET_SCHED is not set
222# CONFIG_NET_CLS_ROUTE is not set
223 258
224# 259#
225# Network testing 260# Network testing
226# 261#
227# CONFIG_NET_PKTGEN is not set 262# CONFIG_NET_PKTGEN is not set
228# CONFIG_NETFILTER_NETLINK is not set
229# CONFIG_HAMRADIO is not set 263# CONFIG_HAMRADIO is not set
230# CONFIG_IRDA is not set 264# CONFIG_IRDA is not set
231# CONFIG_BT is not set 265# CONFIG_BT is not set
@@ -286,20 +320,13 @@ CONFIG_BLK_DEV_RAM=m
286CONFIG_BLK_DEV_RAM_COUNT=16 320CONFIG_BLK_DEV_RAM_COUNT=16
287CONFIG_BLK_DEV_RAM_SIZE=4096 321CONFIG_BLK_DEV_RAM_SIZE=4096
288# CONFIG_CDROM_PKTCDVD is not set 322# CONFIG_CDROM_PKTCDVD is not set
289
290#
291# IO Schedulers
292#
293CONFIG_IOSCHED_NOOP=y
294CONFIG_IOSCHED_AS=y
295CONFIG_IOSCHED_DEADLINE=y
296CONFIG_IOSCHED_CFQ=y
297# CONFIG_ATA_OVER_ETH is not set 323# CONFIG_ATA_OVER_ETH is not set
298 324
299# 325#
300# ATA/ATAPI/MFM/RLL support 326# ATA/ATAPI/MFM/RLL support
301# 327#
302CONFIG_IDE=m 328CONFIG_IDE=m
329CONFIG_IDE_MAX_HWIFS=4
303CONFIG_BLK_DEV_IDE=m 330CONFIG_BLK_DEV_IDE=m
304 331
305# 332#
@@ -390,6 +417,7 @@ CONFIG_SCSI_SPI_ATTRS=m
390# 417#
391# SCSI low-level drivers 418# SCSI low-level drivers
392# 419#
420# CONFIG_ISCSI_TCP is not set
393# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 421# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
394# CONFIG_SCSI_3W_9XXX is not set 422# CONFIG_SCSI_3W_9XXX is not set
395# CONFIG_SCSI_ACARD is not set 423# CONFIG_SCSI_ACARD is not set
@@ -399,6 +427,7 @@ CONFIG_SCSI_SPI_ATTRS=m
399# CONFIG_SCSI_AIC79XX is not set 427# CONFIG_SCSI_AIC79XX is not set
400# CONFIG_MEGARAID_NEWGEN is not set 428# CONFIG_MEGARAID_NEWGEN is not set
401# CONFIG_MEGARAID_LEGACY is not set 429# CONFIG_MEGARAID_LEGACY is not set
430# CONFIG_MEGARAID_SAS is not set
402# CONFIG_SCSI_SATA is not set 431# CONFIG_SCSI_SATA is not set
403# CONFIG_SCSI_DMX3191D is not set 432# CONFIG_SCSI_DMX3191D is not set
404# CONFIG_SCSI_FUTURE_DOMAIN is not set 433# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -409,14 +438,7 @@ CONFIG_SCSI_SPI_ATTRS=m
409# CONFIG_SCSI_IPR is not set 438# CONFIG_SCSI_IPR is not set
410# CONFIG_SCSI_QLOGIC_FC is not set 439# CONFIG_SCSI_QLOGIC_FC is not set
411CONFIG_SCSI_QLOGIC_1280=y 440CONFIG_SCSI_QLOGIC_1280=y
412# CONFIG_SCSI_QLOGIC_1280_1040 is not set 441# CONFIG_SCSI_QLA_FC is not set
413CONFIG_SCSI_QLA2XXX=y
414# CONFIG_SCSI_QLA21XX is not set
415# CONFIG_SCSI_QLA22XX is not set
416# CONFIG_SCSI_QLA2300 is not set
417# CONFIG_SCSI_QLA2322 is not set
418# CONFIG_SCSI_QLA6312 is not set
419# CONFIG_SCSI_QLA24XX is not set
420# CONFIG_SCSI_LPFC is not set 442# CONFIG_SCSI_LPFC is not set
421# CONFIG_SCSI_DC395x is not set 443# CONFIG_SCSI_DC395x is not set
422# CONFIG_SCSI_DC390T is not set 444# CONFIG_SCSI_DC390T is not set
@@ -448,6 +470,7 @@ CONFIG_DM_ZERO=m
448# CONFIG_FUSION is not set 470# CONFIG_FUSION is not set
449# CONFIG_FUSION_SPI is not set 471# CONFIG_FUSION_SPI is not set
450# CONFIG_FUSION_FC is not set 472# CONFIG_FUSION_FC is not set
473# CONFIG_FUSION_SAS is not set
451 474
452# 475#
453# IEEE 1394 (FireWire) support 476# IEEE 1394 (FireWire) support
@@ -486,6 +509,7 @@ CONFIG_NET_ETHERNET=y
486CONFIG_MII=y 509CONFIG_MII=y
487# CONFIG_HAPPYMEAL is not set 510# CONFIG_HAPPYMEAL is not set
488# CONFIG_SUNGEM is not set 511# CONFIG_SUNGEM is not set
512# CONFIG_CASSINI is not set
489# CONFIG_NET_VENDOR_3COM is not set 513# CONFIG_NET_VENDOR_3COM is not set
490 514
491# 515#
@@ -524,6 +548,7 @@ CONFIG_EEPRO100=y
524# CONFIG_R8169 is not set 548# CONFIG_R8169 is not set
525# CONFIG_SIS190 is not set 549# CONFIG_SIS190 is not set
526# CONFIG_SKGE is not set 550# CONFIG_SKGE is not set
551# CONFIG_SKY2 is not set
527# CONFIG_SK98LIN is not set 552# CONFIG_SK98LIN is not set
528# CONFIG_VIA_VELOCITY is not set 553# CONFIG_VIA_VELOCITY is not set
529# CONFIG_TIGON3 is not set 554# CONFIG_TIGON3 is not set
@@ -630,6 +655,7 @@ CONFIG_SERIAL_8250=y
630CONFIG_SERIAL_8250_CONSOLE=y 655CONFIG_SERIAL_8250_CONSOLE=y
631CONFIG_SERIAL_8250_ACPI=y 656CONFIG_SERIAL_8250_ACPI=y
632CONFIG_SERIAL_8250_NR_UARTS=4 657CONFIG_SERIAL_8250_NR_UARTS=4
658CONFIG_SERIAL_8250_RUNTIME_UARTS=4
633CONFIG_SERIAL_8250_EXTENDED=y 659CONFIG_SERIAL_8250_EXTENDED=y
634CONFIG_SERIAL_8250_SHARE_IRQ=y 660CONFIG_SERIAL_8250_SHARE_IRQ=y
635# CONFIG_SERIAL_8250_DETECT_IRQ is not set 661# CONFIG_SERIAL_8250_DETECT_IRQ is not set
@@ -681,6 +707,7 @@ CONFIG_DRM_R128=m
681# TPM devices 707# TPM devices
682# 708#
683# CONFIG_TCG_TPM is not set 709# CONFIG_TCG_TPM is not set
710# CONFIG_TELCLOCK is not set
684 711
685# 712#
686# I2C support 713# I2C support
@@ -731,12 +758,19 @@ CONFIG_I2C_ALGOBIT=y
731# CONFIG_SENSORS_PCF8591 is not set 758# CONFIG_SENSORS_PCF8591 is not set
732# CONFIG_SENSORS_RTC8564 is not set 759# CONFIG_SENSORS_RTC8564 is not set
733# CONFIG_SENSORS_MAX6875 is not set 760# CONFIG_SENSORS_MAX6875 is not set
761# CONFIG_RTC_X1205_I2C is not set
734# CONFIG_I2C_DEBUG_CORE is not set 762# CONFIG_I2C_DEBUG_CORE is not set
735# CONFIG_I2C_DEBUG_ALGO is not set 763# CONFIG_I2C_DEBUG_ALGO is not set
736# CONFIG_I2C_DEBUG_BUS is not set 764# CONFIG_I2C_DEBUG_BUS is not set
737# CONFIG_I2C_DEBUG_CHIP is not set 765# CONFIG_I2C_DEBUG_CHIP is not set
738 766
739# 767#
768# SPI support
769#
770# CONFIG_SPI is not set
771# CONFIG_SPI_MASTER is not set
772
773#
740# Dallas's 1-wire bus 774# Dallas's 1-wire bus
741# 775#
742# CONFIG_W1 is not set 776# CONFIG_W1 is not set
@@ -754,6 +788,7 @@ CONFIG_HWMON=y
754# CONFIG_SENSORS_ASB100 is not set 788# CONFIG_SENSORS_ASB100 is not set
755# CONFIG_SENSORS_ATXP1 is not set 789# CONFIG_SENSORS_ATXP1 is not set
756# CONFIG_SENSORS_DS1621 is not set 790# CONFIG_SENSORS_DS1621 is not set
791# CONFIG_SENSORS_F71805F is not set
757# CONFIG_SENSORS_FSCHER is not set 792# CONFIG_SENSORS_FSCHER is not set
758# CONFIG_SENSORS_FSCPOS is not set 793# CONFIG_SENSORS_FSCPOS is not set
759# CONFIG_SENSORS_GL518SM is not set 794# CONFIG_SENSORS_GL518SM is not set
@@ -775,6 +810,7 @@ CONFIG_HWMON=y
775# CONFIG_SENSORS_SMSC47M1 is not set 810# CONFIG_SENSORS_SMSC47M1 is not set
776# CONFIG_SENSORS_SMSC47B397 is not set 811# CONFIG_SENSORS_SMSC47B397 is not set
777# CONFIG_SENSORS_VIA686A is not set 812# CONFIG_SENSORS_VIA686A is not set
813# CONFIG_SENSORS_VT8231 is not set
778# CONFIG_SENSORS_W83781D is not set 814# CONFIG_SENSORS_W83781D is not set
779# CONFIG_SENSORS_W83792D is not set 815# CONFIG_SENSORS_W83792D is not set
780# CONFIG_SENSORS_W83L785TS is not set 816# CONFIG_SENSORS_W83L785TS is not set
@@ -830,6 +866,8 @@ CONFIG_SND_OSSEMUL=y
830CONFIG_SND_MIXER_OSS=m 866CONFIG_SND_MIXER_OSS=m
831CONFIG_SND_PCM_OSS=m 867CONFIG_SND_PCM_OSS=m
832# CONFIG_SND_SEQUENCER_OSS is not set 868# CONFIG_SND_SEQUENCER_OSS is not set
869# CONFIG_SND_DYNAMIC_MINORS is not set
870CONFIG_SND_SUPPORT_OLD_API=y
833# CONFIG_SND_VERBOSE_PRINTK is not set 871# CONFIG_SND_VERBOSE_PRINTK is not set
834# CONFIG_SND_DEBUG is not set 872# CONFIG_SND_DEBUG is not set
835 873
@@ -837,17 +875,18 @@ CONFIG_SND_PCM_OSS=m
837# Generic devices 875# Generic devices
838# 876#
839CONFIG_SND_OPL3_LIB=m 877CONFIG_SND_OPL3_LIB=m
878CONFIG_SND_AC97_CODEC=m
879CONFIG_SND_AC97_BUS=m
840# CONFIG_SND_DUMMY is not set 880# CONFIG_SND_DUMMY is not set
841# CONFIG_SND_VIRMIDI is not set 881# CONFIG_SND_VIRMIDI is not set
842# CONFIG_SND_MTPAV is not set 882# CONFIG_SND_MTPAV is not set
843# CONFIG_SND_SERIAL_U16550 is not set 883# CONFIG_SND_SERIAL_U16550 is not set
844# CONFIG_SND_MPU401 is not set 884# CONFIG_SND_MPU401 is not set
845CONFIG_SND_AC97_CODEC=m
846CONFIG_SND_AC97_BUS=m
847 885
848# 886#
849# PCI devices 887# PCI devices
850# 888#
889# CONFIG_SND_AD1889 is not set
851# CONFIG_SND_ALI5451 is not set 890# CONFIG_SND_ALI5451 is not set
852# CONFIG_SND_ATIIXP is not set 891# CONFIG_SND_ATIIXP is not set
853# CONFIG_SND_ATIIXP_MODEM is not set 892# CONFIG_SND_ATIIXP_MODEM is not set
@@ -856,38 +895,38 @@ CONFIG_SND_AC97_BUS=m
856# CONFIG_SND_AU8830 is not set 895# CONFIG_SND_AU8830 is not set
857# CONFIG_SND_AZT3328 is not set 896# CONFIG_SND_AZT3328 is not set
858# CONFIG_SND_BT87X is not set 897# CONFIG_SND_BT87X is not set
859# CONFIG_SND_CS46XX is not set 898# CONFIG_SND_CA0106 is not set
899# CONFIG_SND_CMIPCI is not set
860CONFIG_SND_CS4281=m 900CONFIG_SND_CS4281=m
901# CONFIG_SND_CS46XX is not set
861# CONFIG_SND_EMU10K1 is not set 902# CONFIG_SND_EMU10K1 is not set
862# CONFIG_SND_EMU10K1X is not set 903# CONFIG_SND_EMU10K1X is not set
863# CONFIG_SND_CA0106 is not set
864# CONFIG_SND_KORG1212 is not set
865# CONFIG_SND_MIXART is not set
866# CONFIG_SND_NM256 is not set
867# CONFIG_SND_RME32 is not set
868# CONFIG_SND_RME96 is not set
869# CONFIG_SND_RME9652 is not set
870# CONFIG_SND_HDSP is not set
871# CONFIG_SND_HDSPM is not set
872# CONFIG_SND_TRIDENT is not set
873# CONFIG_SND_YMFPCI is not set
874# CONFIG_SND_AD1889 is not set
875# CONFIG_SND_CMIPCI is not set
876# CONFIG_SND_ENS1370 is not set 904# CONFIG_SND_ENS1370 is not set
877# CONFIG_SND_ENS1371 is not set 905# CONFIG_SND_ENS1371 is not set
878# CONFIG_SND_ES1938 is not set 906# CONFIG_SND_ES1938 is not set
879# CONFIG_SND_ES1968 is not set 907# CONFIG_SND_ES1968 is not set
880# CONFIG_SND_MAESTRO3 is not set
881# CONFIG_SND_FM801 is not set 908# CONFIG_SND_FM801 is not set
909# CONFIG_SND_HDA_INTEL is not set
910# CONFIG_SND_HDSP is not set
911# CONFIG_SND_HDSPM is not set
882# CONFIG_SND_ICE1712 is not set 912# CONFIG_SND_ICE1712 is not set
883# CONFIG_SND_ICE1724 is not set 913# CONFIG_SND_ICE1724 is not set
884# CONFIG_SND_INTEL8X0 is not set 914# CONFIG_SND_INTEL8X0 is not set
885# CONFIG_SND_INTEL8X0M is not set 915# CONFIG_SND_INTEL8X0M is not set
916# CONFIG_SND_KORG1212 is not set
917# CONFIG_SND_MAESTRO3 is not set
918# CONFIG_SND_MIXART is not set
919# CONFIG_SND_NM256 is not set
920# CONFIG_SND_PCXHR is not set
921# CONFIG_SND_RME32 is not set
922# CONFIG_SND_RME96 is not set
923# CONFIG_SND_RME9652 is not set
886# CONFIG_SND_SONICVIBES is not set 924# CONFIG_SND_SONICVIBES is not set
925# CONFIG_SND_TRIDENT is not set
887# CONFIG_SND_VIA82XX is not set 926# CONFIG_SND_VIA82XX is not set
888# CONFIG_SND_VIA82XX_MODEM is not set 927# CONFIG_SND_VIA82XX_MODEM is not set
889# CONFIG_SND_VX222 is not set 928# CONFIG_SND_VX222 is not set
890# CONFIG_SND_HDA_INTEL is not set 929# CONFIG_SND_YMFPCI is not set
891 930
892# 931#
893# USB devices 932# USB devices
@@ -929,12 +968,15 @@ CONFIG_USB_UHCI_HCD=m
929# USB Device Class drivers 968# USB Device Class drivers
930# 969#
931# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set 970# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
932CONFIG_USB_BLUETOOTH_TTY=m
933CONFIG_USB_ACM=m 971CONFIG_USB_ACM=m
934CONFIG_USB_PRINTER=m 972CONFIG_USB_PRINTER=m
935 973
936# 974#
937# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 975# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
976#
977
978#
979# may also be needed; see USB_STORAGE Help for more information
938# 980#
939CONFIG_USB_STORAGE=m 981CONFIG_USB_STORAGE=m
940# CONFIG_USB_STORAGE_DEBUG is not set 982# CONFIG_USB_STORAGE_DEBUG is not set
@@ -946,13 +988,15 @@ CONFIG_USB_STORAGE=m
946# CONFIG_USB_STORAGE_SDDR09 is not set 988# CONFIG_USB_STORAGE_SDDR09 is not set
947# CONFIG_USB_STORAGE_SDDR55 is not set 989# CONFIG_USB_STORAGE_SDDR55 is not set
948# CONFIG_USB_STORAGE_JUMPSHOT is not set 990# CONFIG_USB_STORAGE_JUMPSHOT is not set
949# CONFIG_USB_STORAGE_ONETOUCH is not set 991# CONFIG_USB_STORAGE_ALAUDA is not set
992# CONFIG_USB_LIBUSUAL is not set
950 993
951# 994#
952# USB Input Devices 995# USB Input Devices
953# 996#
954CONFIG_USB_HID=m 997CONFIG_USB_HID=m
955CONFIG_USB_HIDINPUT=y 998CONFIG_USB_HIDINPUT=y
999# CONFIG_USB_HIDINPUT_POWERBOOK is not set
956# CONFIG_HID_FF is not set 1000# CONFIG_HID_FF is not set
957CONFIG_USB_HIDDEV=y 1001CONFIG_USB_HIDDEV=y
958 1002
@@ -972,6 +1016,7 @@ CONFIG_USB_HIDDEV=y
972# CONFIG_USB_YEALINK is not set 1016# CONFIG_USB_YEALINK is not set
973# CONFIG_USB_XPAD is not set 1017# CONFIG_USB_XPAD is not set
974# CONFIG_USB_ATI_REMOTE is not set 1018# CONFIG_USB_ATI_REMOTE is not set
1019# CONFIG_USB_ATI_REMOTE2 is not set
975# CONFIG_USB_KEYSPAN_REMOTE is not set 1020# CONFIG_USB_KEYSPAN_REMOTE is not set
976# CONFIG_USB_APPLETOUCH is not set 1021# CONFIG_USB_APPLETOUCH is not set
977 1022
@@ -1046,7 +1091,7 @@ CONFIG_USB_MON=y
1046# CONFIG_INFINIBAND is not set 1091# CONFIG_INFINIBAND is not set
1047 1092
1048# 1093#
1049# SN Devices 1094# EDAC - error detection and reporting (RAS)
1050# 1095#
1051 1096
1052# 1097#
@@ -1071,6 +1116,7 @@ CONFIG_XFS_QUOTA=y
1071CONFIG_XFS_SECURITY=y 1116CONFIG_XFS_SECURITY=y
1072CONFIG_XFS_POSIX_ACL=y 1117CONFIG_XFS_POSIX_ACL=y
1073# CONFIG_XFS_RT is not set 1118# CONFIG_XFS_RT is not set
1119# CONFIG_OCFS2_FS is not set
1074# CONFIG_MINIX_FS is not set 1120# CONFIG_MINIX_FS is not set
1075# CONFIG_ROMFS_FS is not set 1121# CONFIG_ROMFS_FS is not set
1076CONFIG_INOTIFY=y 1122CONFIG_INOTIFY=y
@@ -1111,6 +1157,7 @@ CONFIG_HUGETLBFS=y
1111CONFIG_HUGETLB_PAGE=y 1157CONFIG_HUGETLB_PAGE=y
1112CONFIG_RAMFS=y 1158CONFIG_RAMFS=y
1113# CONFIG_RELAYFS_FS is not set 1159# CONFIG_RELAYFS_FS is not set
1160# CONFIG_CONFIGFS_FS is not set
1114 1161
1115# 1162#
1116# Miscellaneous filesystems 1163# Miscellaneous filesystems
@@ -1153,6 +1200,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
1153# CONFIG_SMB_FS is not set 1200# CONFIG_SMB_FS is not set
1154CONFIG_CIFS=m 1201CONFIG_CIFS=m
1155CONFIG_CIFS_STATS=y 1202CONFIG_CIFS_STATS=y
1203# CONFIG_CIFS_STATS2 is not set
1156CONFIG_CIFS_XATTR=y 1204CONFIG_CIFS_XATTR=y
1157CONFIG_CIFS_POSIX=y 1205CONFIG_CIFS_POSIX=y
1158# CONFIG_CIFS_EXPERIMENTAL is not set 1206# CONFIG_CIFS_EXPERIMENTAL is not set
@@ -1179,6 +1227,7 @@ CONFIG_MSDOS_PARTITION=y
1179CONFIG_SGI_PARTITION=y 1227CONFIG_SGI_PARTITION=y
1180# CONFIG_ULTRIX_PARTITION is not set 1228# CONFIG_ULTRIX_PARTITION is not set
1181# CONFIG_SUN_PARTITION is not set 1229# CONFIG_SUN_PARTITION is not set
1230# CONFIG_KARMA_PARTITION is not set
1182CONFIG_EFI_PARTITION=y 1231CONFIG_EFI_PARTITION=y
1183 1232
1184# 1233#
@@ -1237,28 +1286,32 @@ CONFIG_GENERIC_IRQ_PROBE=y
1237CONFIG_GENERIC_PENDING_IRQ=y 1286CONFIG_GENERIC_PENDING_IRQ=y
1238 1287
1239# 1288#
1240# Profiling support 1289# Instrumentation Support
1241# 1290#
1242CONFIG_PROFILING=y 1291CONFIG_PROFILING=y
1243CONFIG_OPROFILE=y 1292CONFIG_OPROFILE=y
1293# CONFIG_KPROBES is not set
1244 1294
1245# 1295#
1246# Kernel hacking 1296# Kernel hacking
1247# 1297#
1248# CONFIG_PRINTK_TIME is not set 1298# CONFIG_PRINTK_TIME is not set
1249CONFIG_DEBUG_KERNEL=y
1250CONFIG_MAGIC_SYSRQ=y 1299CONFIG_MAGIC_SYSRQ=y
1300CONFIG_DEBUG_KERNEL=y
1251CONFIG_LOG_BUF_SHIFT=16 1301CONFIG_LOG_BUF_SHIFT=16
1252CONFIG_DETECT_SOFTLOCKUP=y 1302CONFIG_DETECT_SOFTLOCKUP=y
1253# CONFIG_SCHEDSTATS is not set 1303# CONFIG_SCHEDSTATS is not set
1254# CONFIG_DEBUG_SLAB is not set 1304# CONFIG_DEBUG_SLAB is not set
1255CONFIG_DEBUG_PREEMPT=y 1305CONFIG_DEBUG_PREEMPT=y
1306CONFIG_DEBUG_MUTEXES=y
1256# CONFIG_DEBUG_SPINLOCK is not set 1307# CONFIG_DEBUG_SPINLOCK is not set
1257# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1308# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1258# CONFIG_DEBUG_KOBJECT is not set 1309# CONFIG_DEBUG_KOBJECT is not set
1259# CONFIG_DEBUG_INFO is not set 1310# CONFIG_DEBUG_INFO is not set
1260# CONFIG_DEBUG_FS is not set 1311# CONFIG_DEBUG_FS is not set
1261# CONFIG_KPROBES is not set 1312# CONFIG_DEBUG_VM is not set
1313CONFIG_FORCED_INLINING=y
1314# CONFIG_RCU_TORTURE_TEST is not set
1262# CONFIG_IA64_GRANULE_16MB is not set 1315# CONFIG_IA64_GRANULE_16MB is not set
1263CONFIG_IA64_GRANULE_64MB=y 1316CONFIG_IA64_GRANULE_64MB=y
1264# CONFIG_IA64_PRINT_HAZARDS is not set 1317# CONFIG_IA64_PRINT_HAZARDS is not set
diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig
index 991c07b57c24..184678fe7832 100644
--- a/arch/ia64/configs/gensparse_defconfig
+++ b/arch/ia64/configs/gensparse_defconfig
@@ -1,14 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc2 3# Linux kernel version: 2.6.16-rc5
4# Wed Sep 28 08:27:29 2005 4# Mon Feb 27 16:15:43 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
14 13
@@ -23,18 +22,19 @@ CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28CONFIG_IKCONFIG=y 25CONFIG_IKCONFIG=y
29CONFIG_IKCONFIG_PROC=y 26CONFIG_IKCONFIG_PROC=y
30# CONFIG_CPUSETS is not set 27# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE="" 28CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y
32# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
33CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
34CONFIG_KALLSYMS_ALL=y 32CONFIG_KALLSYMS_ALL=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_HOTPLUG=y
36CONFIG_PRINTK=y 35CONFIG_PRINTK=y
37CONFIG_BUG=y 36CONFIG_BUG=y
37CONFIG_ELF_CORE=y
38CONFIG_BASE_FULL=y 38CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 39CONFIG_FUTEX=y
40CONFIG_EPOLL=y 40CONFIG_EPOLL=y
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y
46# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set
48 50
49# 51#
50# Loadable module support 52# Loadable module support
@@ -59,17 +61,36 @@ CONFIG_KMOD=y
59CONFIG_STOP_MACHINE=y 61CONFIG_STOP_MACHINE=y
60 62
61# 63#
64# Block layer
65#
66
67#
68# IO Schedulers
69#
70CONFIG_IOSCHED_NOOP=y
71CONFIG_IOSCHED_AS=y
72CONFIG_IOSCHED_DEADLINE=y
73CONFIG_IOSCHED_CFQ=y
74CONFIG_DEFAULT_AS=y
75# CONFIG_DEFAULT_DEADLINE is not set
76# CONFIG_DEFAULT_CFQ is not set
77# CONFIG_DEFAULT_NOOP is not set
78CONFIG_DEFAULT_IOSCHED="anticipatory"
79
80#
62# Processor type and features 81# Processor type and features
63# 82#
64CONFIG_IA64=y 83CONFIG_IA64=y
65CONFIG_64BIT=y 84CONFIG_64BIT=y
66CONFIG_MMU=y 85CONFIG_MMU=y
86CONFIG_SWIOTLB=y
67CONFIG_RWSEM_XCHGADD_ALGORITHM=y 87CONFIG_RWSEM_XCHGADD_ALGORITHM=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 88CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_TIME_INTERPOLATION=y 89CONFIG_TIME_INTERPOLATION=y
70CONFIG_EFI=y 90CONFIG_EFI=y
71CONFIG_GENERIC_IOMAP=y 91CONFIG_GENERIC_IOMAP=y
72CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
93CONFIG_DMA_IS_DMA32=y
73CONFIG_IA64_GENERIC=y 94CONFIG_IA64_GENERIC=y
74# CONFIG_IA64_DIG is not set 95# CONFIG_IA64_DIG is not set
75# CONFIG_IA64_HP_ZX1 is not set 96# CONFIG_IA64_HP_ZX1 is not set
@@ -82,6 +103,8 @@ CONFIG_MCKINLEY=y
82# CONFIG_IA64_PAGE_SIZE_8KB is not set 103# CONFIG_IA64_PAGE_SIZE_8KB is not set
83CONFIG_IA64_PAGE_SIZE_16KB=y 104CONFIG_IA64_PAGE_SIZE_16KB=y
84# CONFIG_IA64_PAGE_SIZE_64KB is not set 105# CONFIG_IA64_PAGE_SIZE_64KB is not set
106CONFIG_PGTABLE_3=y
107# CONFIG_PGTABLE_4 is not set
85# CONFIG_HZ_100 is not set 108# CONFIG_HZ_100 is not set
86CONFIG_HZ_250=y 109CONFIG_HZ_250=y
87# CONFIG_HZ_1000 is not set 110# CONFIG_HZ_1000 is not set
@@ -105,6 +128,9 @@ CONFIG_NEED_MULTIPLE_NODES=y
105CONFIG_HAVE_MEMORY_PRESENT=y 128CONFIG_HAVE_MEMORY_PRESENT=y
106# CONFIG_SPARSEMEM_STATIC is not set 129# CONFIG_SPARSEMEM_STATIC is not set
107CONFIG_SPARSEMEM_EXTREME=y 130CONFIG_SPARSEMEM_EXTREME=y
131# CONFIG_MEMORY_HOTPLUG is not set
132CONFIG_SPLIT_PTLOCK_CPUS=4
133CONFIG_MIGRATION=y
108CONFIG_ARCH_SELECT_MEMORY_MODEL=y 134CONFIG_ARCH_SELECT_MEMORY_MODEL=y
109CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 135CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
110CONFIG_ARCH_FLATMEM_ENABLE=y 136CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -117,13 +143,13 @@ CONFIG_COMPAT=y
117CONFIG_IA64_MCA_RECOVERY=y 143CONFIG_IA64_MCA_RECOVERY=y
118CONFIG_PERFMON=y 144CONFIG_PERFMON=y
119CONFIG_IA64_PALINFO=y 145CONFIG_IA64_PALINFO=y
146CONFIG_SGI_SN=y
120 147
121# 148#
122# Firmware Drivers 149# Firmware Drivers
123# 150#
124CONFIG_EFI_VARS=y 151CONFIG_EFI_VARS=y
125CONFIG_EFI_PCDP=y 152CONFIG_EFI_PCDP=y
126# CONFIG_DELL_RBU is not set
127CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
128CONFIG_BINFMT_MISC=m 154CONFIG_BINFMT_MISC=m
129 155
@@ -131,6 +157,7 @@ CONFIG_BINFMT_MISC=m
131# Power management and ACPI 157# Power management and ACPI
132# 158#
133CONFIG_PM=y 159CONFIG_PM=y
160CONFIG_PM_LEGACY=y
134# CONFIG_PM_DEBUG is not set 161# CONFIG_PM_DEBUG is not set
135 162
136# 163#
@@ -145,6 +172,7 @@ CONFIG_ACPI_THERMAL=m
145CONFIG_ACPI_NUMA=y 172CONFIG_ACPI_NUMA=y
146CONFIG_ACPI_BLACKLIST_YEAR=0 173CONFIG_ACPI_BLACKLIST_YEAR=0
147# CONFIG_ACPI_DEBUG is not set 174# CONFIG_ACPI_DEBUG is not set
175CONFIG_ACPI_EC=y
148CONFIG_ACPI_POWER=y 176CONFIG_ACPI_POWER=y
149CONFIG_ACPI_SYSTEM=y 177CONFIG_ACPI_SYSTEM=y
150CONFIG_ACPI_CONTAINER=m 178CONFIG_ACPI_CONTAINER=m
@@ -187,6 +215,7 @@ CONFIG_NET=y
187# 215#
188# Networking options 216# Networking options
189# 217#
218# CONFIG_NETDEBUG is not set
190CONFIG_PACKET=y 219CONFIG_PACKET=y
191# CONFIG_PACKET_MMAP is not set 220# CONFIG_PACKET_MMAP is not set
192CONFIG_UNIX=y 221CONFIG_UNIX=y
@@ -221,6 +250,11 @@ CONFIG_TCP_CONG_BIC=y
221# SCTP Configuration (EXPERIMENTAL) 250# SCTP Configuration (EXPERIMENTAL)
222# 251#
223# CONFIG_IP_SCTP is not set 252# CONFIG_IP_SCTP is not set
253
254#
255# TIPC Configuration (EXPERIMENTAL)
256#
257# CONFIG_TIPC is not set
224# CONFIG_ATM is not set 258# CONFIG_ATM is not set
225# CONFIG_BRIDGE is not set 259# CONFIG_BRIDGE is not set
226# CONFIG_VLAN_8021Q is not set 260# CONFIG_VLAN_8021Q is not set
@@ -233,8 +267,11 @@ CONFIG_TCP_CONG_BIC=y
233# CONFIG_NET_DIVERT is not set 267# CONFIG_NET_DIVERT is not set
234# CONFIG_ECONET is not set 268# CONFIG_ECONET is not set
235# CONFIG_WAN_ROUTER is not set 269# CONFIG_WAN_ROUTER is not set
270
271#
272# QoS and/or fair queueing
273#
236# CONFIG_NET_SCHED is not set 274# CONFIG_NET_SCHED is not set
237# CONFIG_NET_CLS_ROUTE is not set
238 275
239# 276#
240# Network testing 277# Network testing
@@ -295,20 +332,13 @@ CONFIG_BLK_DEV_RAM_COUNT=16
295CONFIG_BLK_DEV_RAM_SIZE=4096 332CONFIG_BLK_DEV_RAM_SIZE=4096
296CONFIG_BLK_DEV_INITRD=y 333CONFIG_BLK_DEV_INITRD=y
297# CONFIG_CDROM_PKTCDVD is not set 334# CONFIG_CDROM_PKTCDVD is not set
298
299#
300# IO Schedulers
301#
302CONFIG_IOSCHED_NOOP=y
303CONFIG_IOSCHED_AS=y
304CONFIG_IOSCHED_DEADLINE=y
305CONFIG_IOSCHED_CFQ=y
306# CONFIG_ATA_OVER_ETH is not set 335# CONFIG_ATA_OVER_ETH is not set
307 336
308# 337#
309# ATA/ATAPI/MFM/RLL support 338# ATA/ATAPI/MFM/RLL support
310# 339#
311CONFIG_IDE=y 340CONFIG_IDE=y
341CONFIG_IDE_MAX_HWIFS=4
312CONFIG_BLK_DEV_IDE=y 342CONFIG_BLK_DEV_IDE=y
313 343
314# 344#
@@ -400,6 +430,7 @@ CONFIG_SCSI_FC_ATTRS=y
400# 430#
401# SCSI low-level drivers 431# SCSI low-level drivers
402# 432#
433# CONFIG_ISCSI_TCP is not set
403# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 434# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
404# CONFIG_SCSI_3W_9XXX is not set 435# CONFIG_SCSI_3W_9XXX is not set
405# CONFIG_SCSI_ACARD is not set 436# CONFIG_SCSI_ACARD is not set
@@ -409,16 +440,19 @@ CONFIG_SCSI_FC_ATTRS=y
409# CONFIG_SCSI_AIC79XX is not set 440# CONFIG_SCSI_AIC79XX is not set
410# CONFIG_MEGARAID_NEWGEN is not set 441# CONFIG_MEGARAID_NEWGEN is not set
411# CONFIG_MEGARAID_LEGACY is not set 442# CONFIG_MEGARAID_LEGACY is not set
443# CONFIG_MEGARAID_SAS is not set
412CONFIG_SCSI_SATA=y 444CONFIG_SCSI_SATA=y
413# CONFIG_SCSI_SATA_AHCI is not set 445# CONFIG_SCSI_SATA_AHCI is not set
414# CONFIG_SCSI_SATA_SVW is not set 446# CONFIG_SCSI_SATA_SVW is not set
415# CONFIG_SCSI_ATA_PIIX is not set 447# CONFIG_SCSI_ATA_PIIX is not set
416# CONFIG_SCSI_SATA_MV is not set 448# CONFIG_SCSI_SATA_MV is not set
417# CONFIG_SCSI_SATA_NV is not set 449# CONFIG_SCSI_SATA_NV is not set
418# CONFIG_SCSI_SATA_PROMISE is not set 450# CONFIG_SCSI_PDC_ADMA is not set
419# CONFIG_SCSI_SATA_QSTOR is not set 451# CONFIG_SCSI_SATA_QSTOR is not set
452# CONFIG_SCSI_SATA_PROMISE is not set
420# CONFIG_SCSI_SATA_SX4 is not set 453# CONFIG_SCSI_SATA_SX4 is not set
421# CONFIG_SCSI_SATA_SIL is not set 454# CONFIG_SCSI_SATA_SIL is not set
455# CONFIG_SCSI_SATA_SIL24 is not set
422# CONFIG_SCSI_SATA_SIS is not set 456# CONFIG_SCSI_SATA_SIS is not set
423# CONFIG_SCSI_SATA_ULI is not set 457# CONFIG_SCSI_SATA_ULI is not set
424# CONFIG_SCSI_SATA_VIA is not set 458# CONFIG_SCSI_SATA_VIA is not set
@@ -436,14 +470,7 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
436# CONFIG_SCSI_IPR is not set 470# CONFIG_SCSI_IPR is not set
437# CONFIG_SCSI_QLOGIC_FC is not set 471# CONFIG_SCSI_QLOGIC_FC is not set
438CONFIG_SCSI_QLOGIC_1280=y 472CONFIG_SCSI_QLOGIC_1280=y
439# CONFIG_SCSI_QLOGIC_1280_1040 is not set 473# CONFIG_SCSI_QLA_FC is not set
440CONFIG_SCSI_QLA2XXX=y
441CONFIG_SCSI_QLA21XX=m
442CONFIG_SCSI_QLA22XX=m
443CONFIG_SCSI_QLA2300=m
444CONFIG_SCSI_QLA2322=m
445# CONFIG_SCSI_QLA6312 is not set
446# CONFIG_SCSI_QLA24XX is not set
447# CONFIG_SCSI_LPFC is not set 474# CONFIG_SCSI_LPFC is not set
448# CONFIG_SCSI_DC395x is not set 475# CONFIG_SCSI_DC395x is not set
449# CONFIG_SCSI_DC390T is not set 476# CONFIG_SCSI_DC390T is not set
@@ -476,6 +503,7 @@ CONFIG_DM_MULTIPATH=m
476CONFIG_FUSION=y 503CONFIG_FUSION=y
477CONFIG_FUSION_SPI=y 504CONFIG_FUSION_SPI=y
478CONFIG_FUSION_FC=m 505CONFIG_FUSION_FC=m
506# CONFIG_FUSION_SAS is not set
479CONFIG_FUSION_MAX_SGE=128 507CONFIG_FUSION_MAX_SGE=128
480# CONFIG_FUSION_CTL is not set 508# CONFIG_FUSION_CTL is not set
481 509
@@ -515,6 +543,7 @@ CONFIG_NET_ETHERNET=y
515CONFIG_MII=m 543CONFIG_MII=m
516# CONFIG_HAPPYMEAL is not set 544# CONFIG_HAPPYMEAL is not set
517# CONFIG_SUNGEM is not set 545# CONFIG_SUNGEM is not set
546# CONFIG_CASSINI is not set
518# CONFIG_NET_VENDOR_3COM is not set 547# CONFIG_NET_VENDOR_3COM is not set
519 548
520# 549#
@@ -564,6 +593,7 @@ CONFIG_E1000=y
564# CONFIG_R8169 is not set 593# CONFIG_R8169 is not set
565# CONFIG_SIS190 is not set 594# CONFIG_SIS190 is not set
566# CONFIG_SKGE is not set 595# CONFIG_SKGE is not set
596# CONFIG_SKY2 is not set
567# CONFIG_SK98LIN is not set 597# CONFIG_SK98LIN is not set
568# CONFIG_VIA_VELOCITY is not set 598# CONFIG_VIA_VELOCITY is not set
569CONFIG_TIGON3=y 599CONFIG_TIGON3=y
@@ -668,12 +698,15 @@ CONFIG_VT=y
668CONFIG_VT_CONSOLE=y 698CONFIG_VT_CONSOLE=y
669CONFIG_HW_CONSOLE=y 699CONFIG_HW_CONSOLE=y
670CONFIG_SERIAL_NONSTANDARD=y 700CONFIG_SERIAL_NONSTANDARD=y
701# CONFIG_COMPUTONE is not set
671# CONFIG_ROCKETPORT is not set 702# CONFIG_ROCKETPORT is not set
672# CONFIG_CYCLADES is not set 703# CONFIG_CYCLADES is not set
673# CONFIG_DIGIEPCA is not set 704# CONFIG_DIGIEPCA is not set
705# CONFIG_MOXA_INTELLIO is not set
674# CONFIG_MOXA_SMARTIO is not set 706# CONFIG_MOXA_SMARTIO is not set
675# CONFIG_ISI is not set 707# CONFIG_ISI is not set
676# CONFIG_SYNCLINKMP is not set 708# CONFIG_SYNCLINKMP is not set
709# CONFIG_SYNCLINK_GT is not set
677# CONFIG_N_HDLC is not set 710# CONFIG_N_HDLC is not set
678# CONFIG_SPECIALIX is not set 711# CONFIG_SPECIALIX is not set
679# CONFIG_SX is not set 712# CONFIG_SX is not set
@@ -689,6 +722,7 @@ CONFIG_SERIAL_8250=y
689CONFIG_SERIAL_8250_CONSOLE=y 722CONFIG_SERIAL_8250_CONSOLE=y
690CONFIG_SERIAL_8250_ACPI=y 723CONFIG_SERIAL_8250_ACPI=y
691CONFIG_SERIAL_8250_NR_UARTS=6 724CONFIG_SERIAL_8250_NR_UARTS=6
725CONFIG_SERIAL_8250_RUNTIME_UARTS=4
692CONFIG_SERIAL_8250_EXTENDED=y 726CONFIG_SERIAL_8250_EXTENDED=y
693CONFIG_SERIAL_8250_SHARE_IRQ=y 727CONFIG_SERIAL_8250_SHARE_IRQ=y
694# CONFIG_SERIAL_8250_DETECT_IRQ is not set 728# CONFIG_SERIAL_8250_DETECT_IRQ is not set
@@ -738,10 +772,10 @@ CONFIG_DRM_SIS=m
738# CONFIG_DRM_VIA is not set 772# CONFIG_DRM_VIA is not set
739# CONFIG_DRM_SAVAGE is not set 773# CONFIG_DRM_SAVAGE is not set
740CONFIG_RAW_DRIVER=m 774CONFIG_RAW_DRIVER=m
775CONFIG_MAX_RAW_DEVS=256
741CONFIG_HPET=y 776CONFIG_HPET=y
742# CONFIG_HPET_RTC_IRQ is not set 777# CONFIG_HPET_RTC_IRQ is not set
743CONFIG_HPET_MMAP=y 778CONFIG_HPET_MMAP=y
744CONFIG_MAX_RAW_DEVS=256
745# CONFIG_HANGCHECK_TIMER is not set 779# CONFIG_HANGCHECK_TIMER is not set
746CONFIG_MMTIMER=y 780CONFIG_MMTIMER=y
747 781
@@ -749,6 +783,7 @@ CONFIG_MMTIMER=y
749# TPM devices 783# TPM devices
750# 784#
751# CONFIG_TCG_TPM is not set 785# CONFIG_TCG_TPM is not set
786# CONFIG_TELCLOCK is not set
752 787
753# 788#
754# I2C support 789# I2C support
@@ -756,6 +791,12 @@ CONFIG_MMTIMER=y
756# CONFIG_I2C is not set 791# CONFIG_I2C is not set
757 792
758# 793#
794# SPI support
795#
796# CONFIG_SPI is not set
797# CONFIG_SPI_MASTER is not set
798
799#
759# Dallas's 1-wire bus 800# Dallas's 1-wire bus
760# 801#
761# CONFIG_W1 is not set 802# CONFIG_W1 is not set
@@ -765,6 +806,7 @@ CONFIG_MMTIMER=y
765# 806#
766CONFIG_HWMON=y 807CONFIG_HWMON=y
767# CONFIG_HWMON_VID is not set 808# CONFIG_HWMON_VID is not set
809# CONFIG_SENSORS_F71805F is not set
768# CONFIG_HWMON_DEBUG_CHIP is not set 810# CONFIG_HWMON_DEBUG_CHIP is not set
769 811
770# 812#
@@ -815,26 +857,28 @@ CONFIG_SND_OSSEMUL=y
815CONFIG_SND_MIXER_OSS=m 857CONFIG_SND_MIXER_OSS=m
816CONFIG_SND_PCM_OSS=m 858CONFIG_SND_PCM_OSS=m
817CONFIG_SND_SEQUENCER_OSS=y 859CONFIG_SND_SEQUENCER_OSS=y
860# CONFIG_SND_DYNAMIC_MINORS is not set
861CONFIG_SND_SUPPORT_OLD_API=y
818CONFIG_SND_VERBOSE_PRINTK=y 862CONFIG_SND_VERBOSE_PRINTK=y
819# CONFIG_SND_DEBUG is not set 863# CONFIG_SND_DEBUG is not set
820CONFIG_SND_GENERIC_DRIVER=y
821 864
822# 865#
823# Generic devices 866# Generic devices
824# 867#
825CONFIG_SND_MPU401_UART=m 868CONFIG_SND_MPU401_UART=m
826CONFIG_SND_OPL3_LIB=m 869CONFIG_SND_OPL3_LIB=m
870CONFIG_SND_AC97_CODEC=m
871CONFIG_SND_AC97_BUS=m
827CONFIG_SND_DUMMY=m 872CONFIG_SND_DUMMY=m
828CONFIG_SND_VIRMIDI=m 873CONFIG_SND_VIRMIDI=m
829CONFIG_SND_MTPAV=m 874CONFIG_SND_MTPAV=m
830CONFIG_SND_SERIAL_U16550=m 875CONFIG_SND_SERIAL_U16550=m
831CONFIG_SND_MPU401=m 876CONFIG_SND_MPU401=m
832CONFIG_SND_AC97_CODEC=m
833CONFIG_SND_AC97_BUS=m
834 877
835# 878#
836# PCI devices 879# PCI devices
837# 880#
881# CONFIG_SND_AD1889 is not set
838# CONFIG_SND_ALI5451 is not set 882# CONFIG_SND_ALI5451 is not set
839# CONFIG_SND_ATIIXP is not set 883# CONFIG_SND_ATIIXP is not set
840# CONFIG_SND_ATIIXP_MODEM is not set 884# CONFIG_SND_ATIIXP_MODEM is not set
@@ -843,40 +887,40 @@ CONFIG_SND_AC97_BUS=m
843# CONFIG_SND_AU8830 is not set 887# CONFIG_SND_AU8830 is not set
844# CONFIG_SND_AZT3328 is not set 888# CONFIG_SND_AZT3328 is not set
845# CONFIG_SND_BT87X is not set 889# CONFIG_SND_BT87X is not set
890# CONFIG_SND_CA0106 is not set
891# CONFIG_SND_CMIPCI is not set
892CONFIG_SND_CS4281=m
846CONFIG_SND_CS46XX=m 893CONFIG_SND_CS46XX=m
847CONFIG_SND_CS46XX_NEW_DSP=y 894CONFIG_SND_CS46XX_NEW_DSP=y
848CONFIG_SND_CS4281=m
849CONFIG_SND_EMU10K1=m 895CONFIG_SND_EMU10K1=m
850# CONFIG_SND_EMU10K1X is not set 896# CONFIG_SND_EMU10K1X is not set
851# CONFIG_SND_CA0106 is not set
852# CONFIG_SND_KORG1212 is not set
853# CONFIG_SND_MIXART is not set
854# CONFIG_SND_NM256 is not set
855# CONFIG_SND_RME32 is not set
856# CONFIG_SND_RME96 is not set
857# CONFIG_SND_RME9652 is not set
858# CONFIG_SND_HDSP is not set
859# CONFIG_SND_HDSPM is not set
860# CONFIG_SND_TRIDENT is not set
861# CONFIG_SND_YMFPCI is not set
862# CONFIG_SND_AD1889 is not set
863# CONFIG_SND_CMIPCI is not set
864# CONFIG_SND_ENS1370 is not set 897# CONFIG_SND_ENS1370 is not set
865# CONFIG_SND_ENS1371 is not set 898# CONFIG_SND_ENS1371 is not set
866# CONFIG_SND_ES1938 is not set 899# CONFIG_SND_ES1938 is not set
867# CONFIG_SND_ES1968 is not set 900# CONFIG_SND_ES1968 is not set
868# CONFIG_SND_MAESTRO3 is not set
869CONFIG_SND_FM801=m 901CONFIG_SND_FM801=m
870# CONFIG_SND_FM801_TEA575X is not set 902# CONFIG_SND_FM801_TEA575X is not set
903# CONFIG_SND_HDA_INTEL is not set
904# CONFIG_SND_HDSP is not set
905# CONFIG_SND_HDSPM is not set
871# CONFIG_SND_ICE1712 is not set 906# CONFIG_SND_ICE1712 is not set
872# CONFIG_SND_ICE1724 is not set 907# CONFIG_SND_ICE1724 is not set
873# CONFIG_SND_INTEL8X0 is not set 908# CONFIG_SND_INTEL8X0 is not set
874# CONFIG_SND_INTEL8X0M is not set 909# CONFIG_SND_INTEL8X0M is not set
910# CONFIG_SND_KORG1212 is not set
911# CONFIG_SND_MAESTRO3 is not set
912# CONFIG_SND_MIXART is not set
913# CONFIG_SND_NM256 is not set
914# CONFIG_SND_PCXHR is not set
915# CONFIG_SND_RME32 is not set
916# CONFIG_SND_RME96 is not set
917# CONFIG_SND_RME9652 is not set
875# CONFIG_SND_SONICVIBES is not set 918# CONFIG_SND_SONICVIBES is not set
919# CONFIG_SND_TRIDENT is not set
876# CONFIG_SND_VIA82XX is not set 920# CONFIG_SND_VIA82XX is not set
877# CONFIG_SND_VIA82XX_MODEM is not set 921# CONFIG_SND_VIA82XX_MODEM is not set
878# CONFIG_SND_VX222 is not set 922# CONFIG_SND_VX222 is not set
879# CONFIG_SND_HDA_INTEL is not set 923# CONFIG_SND_YMFPCI is not set
880 924
881# 925#
882# USB devices 926# USB devices
@@ -922,12 +966,15 @@ CONFIG_USB_UHCI_HCD=m
922# USB Device Class drivers 966# USB Device Class drivers
923# 967#
924# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set 968# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
925# CONFIG_USB_BLUETOOTH_TTY is not set
926# CONFIG_USB_ACM is not set 969# CONFIG_USB_ACM is not set
927# CONFIG_USB_PRINTER is not set 970# CONFIG_USB_PRINTER is not set
928 971
929# 972#
930# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 973# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
974#
975
976#
977# may also be needed; see USB_STORAGE Help for more information
931# 978#
932CONFIG_USB_STORAGE=m 979CONFIG_USB_STORAGE=m
933# CONFIG_USB_STORAGE_DEBUG is not set 980# CONFIG_USB_STORAGE_DEBUG is not set
@@ -939,12 +986,15 @@ CONFIG_USB_STORAGE=m
939# CONFIG_USB_STORAGE_SDDR09 is not set 986# CONFIG_USB_STORAGE_SDDR09 is not set
940# CONFIG_USB_STORAGE_SDDR55 is not set 987# CONFIG_USB_STORAGE_SDDR55 is not set
941# CONFIG_USB_STORAGE_JUMPSHOT is not set 988# CONFIG_USB_STORAGE_JUMPSHOT is not set
989# CONFIG_USB_STORAGE_ALAUDA is not set
990# CONFIG_USB_LIBUSUAL is not set
942 991
943# 992#
944# USB Input Devices 993# USB Input Devices
945# 994#
946CONFIG_USB_HID=m 995CONFIG_USB_HID=m
947CONFIG_USB_HIDINPUT=y 996CONFIG_USB_HIDINPUT=y
997# CONFIG_USB_HIDINPUT_POWERBOOK is not set
948# CONFIG_HID_FF is not set 998# CONFIG_HID_FF is not set
949# CONFIG_USB_HIDDEV is not set 999# CONFIG_USB_HIDDEV is not set
950 1000
@@ -964,6 +1014,7 @@ CONFIG_USB_HIDINPUT=y
964# CONFIG_USB_YEALINK is not set 1014# CONFIG_USB_YEALINK is not set
965# CONFIG_USB_XPAD is not set 1015# CONFIG_USB_XPAD is not set
966# CONFIG_USB_ATI_REMOTE is not set 1016# CONFIG_USB_ATI_REMOTE is not set
1017# CONFIG_USB_ATI_REMOTE2 is not set
967# CONFIG_USB_KEYSPAN_REMOTE is not set 1018# CONFIG_USB_KEYSPAN_REMOTE is not set
968# CONFIG_USB_APPLETOUCH is not set 1019# CONFIG_USB_APPLETOUCH is not set
969 1020
@@ -1043,6 +1094,7 @@ CONFIG_INFINIBAND_MTHCA=m
1043# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 1094# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
1044CONFIG_INFINIBAND_IPOIB=m 1095CONFIG_INFINIBAND_IPOIB=m
1045# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 1096# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
1097# CONFIG_INFINIBAND_SRP is not set
1046 1098
1047# 1099#
1048# SN Devices 1100# SN Devices
@@ -1051,6 +1103,10 @@ CONFIG_SGI_IOC4=y
1051CONFIG_SGI_IOC3=y 1103CONFIG_SGI_IOC3=y
1052 1104
1053# 1105#
1106# EDAC - error detection and reporting (RAS)
1107#
1108
1109#
1054# File systems 1110# File systems
1055# 1111#
1056CONFIG_EXT2_FS=y 1112CONFIG_EXT2_FS=y
@@ -1079,6 +1135,7 @@ CONFIG_XFS_EXPORT=y
1079# CONFIG_XFS_SECURITY is not set 1135# CONFIG_XFS_SECURITY is not set
1080# CONFIG_XFS_POSIX_ACL is not set 1136# CONFIG_XFS_POSIX_ACL is not set
1081# CONFIG_XFS_RT is not set 1137# CONFIG_XFS_RT is not set
1138# CONFIG_OCFS2_FS is not set
1082# CONFIG_MINIX_FS is not set 1139# CONFIG_MINIX_FS is not set
1083# CONFIG_ROMFS_FS is not set 1140# CONFIG_ROMFS_FS is not set
1084CONFIG_INOTIFY=y 1141CONFIG_INOTIFY=y
@@ -1120,6 +1177,7 @@ CONFIG_HUGETLBFS=y
1120CONFIG_HUGETLB_PAGE=y 1177CONFIG_HUGETLB_PAGE=y
1121CONFIG_RAMFS=y 1178CONFIG_RAMFS=y
1122# CONFIG_RELAYFS_FS is not set 1179# CONFIG_RELAYFS_FS is not set
1180# CONFIG_CONFIGFS_FS is not set
1123 1181
1124# 1182#
1125# Miscellaneous filesystems 1183# Miscellaneous filesystems
@@ -1189,6 +1247,7 @@ CONFIG_MSDOS_PARTITION=y
1189CONFIG_SGI_PARTITION=y 1247CONFIG_SGI_PARTITION=y
1190# CONFIG_ULTRIX_PARTITION is not set 1248# CONFIG_ULTRIX_PARTITION is not set
1191# CONFIG_SUN_PARTITION is not set 1249# CONFIG_SUN_PARTITION is not set
1250# CONFIG_KARMA_PARTITION is not set
1192CONFIG_EFI_PARTITION=y 1251CONFIG_EFI_PARTITION=y
1193 1252
1194# 1253#
@@ -1254,26 +1313,30 @@ CONFIG_GENERIC_PENDING_IRQ=y
1254# CONFIG_HP_SIMSCSI is not set 1313# CONFIG_HP_SIMSCSI is not set
1255 1314
1256# 1315#
1257# Profiling support 1316# Instrumentation Support
1258# 1317#
1259# CONFIG_PROFILING is not set 1318# CONFIG_PROFILING is not set
1319# CONFIG_KPROBES is not set
1260 1320
1261# 1321#
1262# Kernel hacking 1322# Kernel hacking
1263# 1323#
1264# CONFIG_PRINTK_TIME is not set 1324# CONFIG_PRINTK_TIME is not set
1265CONFIG_DEBUG_KERNEL=y
1266CONFIG_MAGIC_SYSRQ=y 1325CONFIG_MAGIC_SYSRQ=y
1326CONFIG_DEBUG_KERNEL=y
1267CONFIG_LOG_BUF_SHIFT=20 1327CONFIG_LOG_BUF_SHIFT=20
1268CONFIG_DETECT_SOFTLOCKUP=y 1328CONFIG_DETECT_SOFTLOCKUP=y
1269# CONFIG_SCHEDSTATS is not set 1329# CONFIG_SCHEDSTATS is not set
1270# CONFIG_DEBUG_SLAB is not set 1330# CONFIG_DEBUG_SLAB is not set
1331CONFIG_DEBUG_MUTEXES=y
1271# CONFIG_DEBUG_SPINLOCK is not set 1332# CONFIG_DEBUG_SPINLOCK is not set
1272# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1333# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1273# CONFIG_DEBUG_KOBJECT is not set 1334# CONFIG_DEBUG_KOBJECT is not set
1274# CONFIG_DEBUG_INFO is not set 1335# CONFIG_DEBUG_INFO is not set
1275# CONFIG_DEBUG_FS is not set 1336# CONFIG_DEBUG_FS is not set
1276# CONFIG_KPROBES is not set 1337# CONFIG_DEBUG_VM is not set
1338CONFIG_FORCED_INLINING=y
1339# CONFIG_RCU_TORTURE_TEST is not set
1277CONFIG_IA64_GRANULE_16MB=y 1340CONFIG_IA64_GRANULE_16MB=y
1278# CONFIG_IA64_GRANULE_64MB is not set 1341# CONFIG_IA64_GRANULE_64MB is not set
1279# CONFIG_IA64_PRINT_HAZARDS is not set 1342# CONFIG_IA64_PRINT_HAZARDS is not set
diff --git a/arch/ia64/configs/sim_defconfig b/arch/ia64/configs/sim_defconfig
index a26781cfe8bf..d9146c31ea13 100644
--- a/arch/ia64/configs/sim_defconfig
+++ b/arch/ia64/configs/sim_defconfig
@@ -1,39 +1,52 @@
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
4# Mon Feb 27 16:13:41 2006
3# 5#
4 6
5# 7#
6# Code maturity level options 8# Code maturity level options
7# 9#
8CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
9# CONFIG_CLEAN_COMPILE is not set 11CONFIG_LOCK_KERNEL=y
10# CONFIG_STANDALONE is not set 12CONFIG_INIT_ENV_ARG_LIMIT=32
11CONFIG_BROKEN=y
12CONFIG_BROKEN_ON_SMP=y
13 13
14# 14#
15# General setup 15# General setup
16# 16#
17CONFIG_LOCALVERSION=""
18CONFIG_LOCALVERSION_AUTO=y
17CONFIG_SWAP=y 19CONFIG_SWAP=y
18CONFIG_SYSVIPC=y 20CONFIG_SYSVIPC=y
19# CONFIG_POSIX_MQUEUE is not set 21# CONFIG_POSIX_MQUEUE is not set
20# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
21CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
22# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
23CONFIG_LOG_BUF_SHIFT=16
24# CONFIG_HOTPLUG is not set
25CONFIG_IKCONFIG=y 25CONFIG_IKCONFIG=y
26CONFIG_IKCONFIG_PROC=y 26CONFIG_IKCONFIG_PROC=y
27# CONFIG_CPUSETS is not set
28CONFIG_INITRAMFS_SOURCE=""
29# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
27# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
28CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
29# CONFIG_KALLSYMS_ALL is not set 32# CONFIG_KALLSYMS_ALL is not set
33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_HOTPLUG=y
35CONFIG_PRINTK=y
36CONFIG_BUG=y
37CONFIG_ELF_CORE=y
38CONFIG_BASE_FULL=y
30CONFIG_FUTEX=y 39CONFIG_FUTEX=y
31CONFIG_EPOLL=y 40CONFIG_EPOLL=y
32CONFIG_IOSCHED_NOOP=y 41CONFIG_SHMEM=y
33CONFIG_IOSCHED_AS=y 42CONFIG_CC_ALIGN_FUNCTIONS=0
34CONFIG_IOSCHED_DEADLINE=y 43CONFIG_CC_ALIGN_LABELS=0
35CONFIG_IOSCHED_CFQ=y 44CONFIG_CC_ALIGN_LOOPS=0
36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y
47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set
37 50
38# 51#
39# Loadable module support 52# Loadable module support
@@ -43,21 +56,45 @@ CONFIG_MODULE_UNLOAD=y
43CONFIG_MODULE_FORCE_UNLOAD=y 56CONFIG_MODULE_FORCE_UNLOAD=y
44CONFIG_OBSOLETE_MODPARM=y 57CONFIG_OBSOLETE_MODPARM=y
45CONFIG_MODVERSIONS=y 58CONFIG_MODVERSIONS=y
59# CONFIG_MODULE_SRCVERSION_ALL is not set
46CONFIG_KMOD=y 60CONFIG_KMOD=y
47CONFIG_STOP_MACHINE=y 61CONFIG_STOP_MACHINE=y
48 62
49# 63#
64# Block layer
65#
66
67#
68# IO Schedulers
69#
70CONFIG_IOSCHED_NOOP=y
71CONFIG_IOSCHED_AS=y
72CONFIG_IOSCHED_DEADLINE=y
73CONFIG_IOSCHED_CFQ=y
74CONFIG_DEFAULT_AS=y
75# CONFIG_DEFAULT_DEADLINE is not set
76# CONFIG_DEFAULT_CFQ is not set
77# CONFIG_DEFAULT_NOOP is not set
78CONFIG_DEFAULT_IOSCHED="anticipatory"
79
80#
50# Processor type and features 81# Processor type and features
51# 82#
52CONFIG_IA64=y 83CONFIG_IA64=y
53CONFIG_64BIT=y 84CONFIG_64BIT=y
54CONFIG_MMU=y 85CONFIG_MMU=y
86CONFIG_SWIOTLB=y
55CONFIG_RWSEM_XCHGADD_ALGORITHM=y 87CONFIG_RWSEM_XCHGADD_ALGORITHM=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y
56CONFIG_TIME_INTERPOLATION=y 89CONFIG_TIME_INTERPOLATION=y
57CONFIG_EFI=y 90CONFIG_EFI=y
91CONFIG_GENERIC_IOMAP=y
92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
93CONFIG_DMA_IS_DMA32=y
58# CONFIG_IA64_GENERIC is not set 94# CONFIG_IA64_GENERIC is not set
59# CONFIG_IA64_DIG is not set 95# CONFIG_IA64_DIG is not set
60# CONFIG_IA64_HP_ZX1 is not set 96# CONFIG_IA64_HP_ZX1 is not set
97# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
61# CONFIG_IA64_SGI_SN2 is not set 98# CONFIG_IA64_SGI_SN2 is not set
62CONFIG_IA64_HP_SIM=y 99CONFIG_IA64_HP_SIM=y
63# CONFIG_ITANIUM is not set 100# CONFIG_ITANIUM is not set
@@ -66,17 +103,36 @@ CONFIG_MCKINLEY=y
66# CONFIG_IA64_PAGE_SIZE_8KB is not set 103# CONFIG_IA64_PAGE_SIZE_8KB is not set
67# CONFIG_IA64_PAGE_SIZE_16KB is not set 104# CONFIG_IA64_PAGE_SIZE_16KB is not set
68CONFIG_IA64_PAGE_SIZE_64KB=y 105CONFIG_IA64_PAGE_SIZE_64KB=y
106CONFIG_PGTABLE_3=y
107# CONFIG_PGTABLE_4 is not set
108# CONFIG_HZ_100 is not set
109CONFIG_HZ_250=y
110# CONFIG_HZ_1000 is not set
111CONFIG_HZ=250
69CONFIG_IA64_L1_CACHE_SHIFT=7 112CONFIG_IA64_L1_CACHE_SHIFT=7
70# CONFIG_MCKINLEY_ASTEP_SPECIFIC is not set
71# CONFIG_VIRTUAL_MEM_MAP is not set
72# CONFIG_IA64_CYCLONE is not set 113# CONFIG_IA64_CYCLONE is not set
73CONFIG_FORCE_MAX_ZONEORDER=18 114CONFIG_FORCE_MAX_ZONEORDER=17
74CONFIG_SMP=y 115CONFIG_SMP=y
75CONFIG_NR_CPUS=64 116CONFIG_NR_CPUS=64
117# CONFIG_HOTPLUG_CPU is not set
118# CONFIG_SCHED_SMT is not set
76CONFIG_PREEMPT=y 119CONFIG_PREEMPT=y
77CONFIG_HAVE_DEC_LOCK=y 120CONFIG_SELECT_MEMORY_MODEL=y
121CONFIG_FLATMEM_MANUAL=y
122# CONFIG_DISCONTIGMEM_MANUAL is not set
123# CONFIG_SPARSEMEM_MANUAL is not set
124CONFIG_FLATMEM=y
125CONFIG_FLAT_NODE_MEM_MAP=y
126# CONFIG_SPARSEMEM_STATIC is not set
127CONFIG_SPLIT_PTLOCK_CPUS=4
128CONFIG_ARCH_SELECT_MEMORY_MODEL=y
129CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
130CONFIG_ARCH_FLATMEM_ENABLE=y
131CONFIG_ARCH_SPARSEMEM_ENABLE=y
132# CONFIG_VIRTUAL_MEM_MAP is not set
78CONFIG_IA32_SUPPORT=y 133CONFIG_IA32_SUPPORT=y
79CONFIG_COMPAT=y 134CONFIG_COMPAT=y
135# CONFIG_IA64_MCA_RECOVERY is not set
80# CONFIG_PERFMON is not set 136# CONFIG_PERFMON is not set
81CONFIG_IA64_PALINFO=m 137CONFIG_IA64_PALINFO=m
82 138
@@ -84,7 +140,6 @@ CONFIG_IA64_PALINFO=m
84# Firmware Drivers 140# Firmware Drivers
85# 141#
86CONFIG_EFI_VARS=y 142CONFIG_EFI_VARS=y
87# CONFIG_SMBIOS is not set
88CONFIG_BINFMT_ELF=y 143CONFIG_BINFMT_ELF=y
89CONFIG_BINFMT_MISC=y 144CONFIG_BINFMT_MISC=y
90 145
@@ -93,15 +148,98 @@ CONFIG_BINFMT_MISC=y
93# 148#
94 149
95# 150#
151# Networking
152#
153CONFIG_NET=y
154
155#
156# Networking options
157#
158# CONFIG_NETDEBUG is not set
159CONFIG_PACKET=y
160# CONFIG_PACKET_MMAP is not set
161# CONFIG_UNIX is not set
162# CONFIG_NET_KEY is not set
163CONFIG_INET=y
164CONFIG_IP_MULTICAST=y
165# CONFIG_IP_ADVANCED_ROUTER is not set
166CONFIG_IP_FIB_HASH=y
167# CONFIG_IP_PNP is not set
168# CONFIG_NET_IPIP is not set
169# CONFIG_NET_IPGRE is not set
170# CONFIG_IP_MROUTE is not set
171# CONFIG_ARPD is not set
172# CONFIG_SYN_COOKIES is not set
173# CONFIG_INET_AH is not set
174# CONFIG_INET_ESP is not set
175# CONFIG_INET_IPCOMP is not set
176# CONFIG_INET_TUNNEL is not set
177CONFIG_INET_DIAG=y
178CONFIG_INET_TCP_DIAG=y
179# CONFIG_TCP_CONG_ADVANCED is not set
180CONFIG_TCP_CONG_BIC=y
181# CONFIG_IPV6 is not set
182# CONFIG_NETFILTER is not set
183
184#
185# DCCP Configuration (EXPERIMENTAL)
186#
187# CONFIG_IP_DCCP is not set
188
189#
190# SCTP Configuration (EXPERIMENTAL)
191#
192# CONFIG_IP_SCTP is not set
193
194#
195# TIPC Configuration (EXPERIMENTAL)
196#
197# CONFIG_TIPC is not set
198# CONFIG_ATM is not set
199# CONFIG_BRIDGE is not set
200# CONFIG_VLAN_8021Q is not set
201# CONFIG_DECNET is not set
202# CONFIG_LLC2 is not set
203# CONFIG_IPX is not set
204# CONFIG_ATALK is not set
205# CONFIG_X25 is not set
206# CONFIG_LAPB is not set
207# CONFIG_NET_DIVERT is not set
208# CONFIG_ECONET is not set
209# CONFIG_WAN_ROUTER is not set
210
211#
212# QoS and/or fair queueing
213#
214# CONFIG_NET_SCHED is not set
215
216#
217# Network testing
218#
219# CONFIG_NET_PKTGEN is not set
220# CONFIG_HAMRADIO is not set
221# CONFIG_IRDA is not set
222# CONFIG_BT is not set
223# CONFIG_IEEE80211 is not set
224
225#
96# Device Drivers 226# Device Drivers
97# 227#
98 228
99# 229#
100# Generic Driver Options 230# Generic Driver Options
101# 231#
232# CONFIG_STANDALONE is not set
233CONFIG_PREVENT_FIRMWARE_BUILD=y
234# CONFIG_FW_LOADER is not set
102# CONFIG_DEBUG_DRIVER is not set 235# CONFIG_DEBUG_DRIVER is not set
103 236
104# 237#
238# Connector - unified userspace <-> kernelspace linker
239#
240# CONFIG_CONNECTOR is not set
241
242#
105# Memory Technology Devices (MTD) 243# Memory Technology Devices (MTD)
106# 244#
107# CONFIG_MTD is not set 245# CONFIG_MTD is not set
@@ -118,12 +256,16 @@ CONFIG_BINFMT_MISC=y
118# 256#
119# Block devices 257# Block devices
120# 258#
259# CONFIG_BLK_DEV_COW_COMMON is not set
121CONFIG_BLK_DEV_LOOP=y 260CONFIG_BLK_DEV_LOOP=y
122# CONFIG_BLK_DEV_CRYPTOLOOP is not set 261# CONFIG_BLK_DEV_CRYPTOLOOP is not set
123# CONFIG_BLK_DEV_NBD is not set 262# CONFIG_BLK_DEV_NBD is not set
124CONFIG_BLK_DEV_RAM=y 263CONFIG_BLK_DEV_RAM=y
264CONFIG_BLK_DEV_RAM_COUNT=16
125CONFIG_BLK_DEV_RAM_SIZE=4096 265CONFIG_BLK_DEV_RAM_SIZE=4096
126# CONFIG_BLK_DEV_INITRD is not set 266# CONFIG_BLK_DEV_INITRD is not set
267# CONFIG_CDROM_PKTCDVD is not set
268# CONFIG_ATA_OVER_ETH is not set
127 269
128# 270#
129# ATA/ATAPI/MFM/RLL support 271# ATA/ATAPI/MFM/RLL support
@@ -133,6 +275,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
133# 275#
134# SCSI device support 276# SCSI device support
135# 277#
278# CONFIG_RAID_ATTRS is not set
136CONFIG_SCSI=y 279CONFIG_SCSI=y
137CONFIG_SCSI_PROC_FS=y 280CONFIG_SCSI_PROC_FS=y
138 281
@@ -144,6 +287,7 @@ CONFIG_BLK_DEV_SD=y
144# CONFIG_CHR_DEV_OSST is not set 287# CONFIG_CHR_DEV_OSST is not set
145# CONFIG_BLK_DEV_SR is not set 288# CONFIG_BLK_DEV_SR is not set
146# CONFIG_CHR_DEV_SG is not set 289# CONFIG_CHR_DEV_SG is not set
290# CONFIG_CHR_DEV_SCH is not set
147 291
148# 292#
149# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 293# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -157,13 +301,14 @@ CONFIG_SCSI_LOGGING=y
157# 301#
158CONFIG_SCSI_SPI_ATTRS=y 302CONFIG_SCSI_SPI_ATTRS=y
159# CONFIG_SCSI_FC_ATTRS is not set 303# CONFIG_SCSI_FC_ATTRS is not set
304# CONFIG_SCSI_ISCSI_ATTRS is not set
305# CONFIG_SCSI_SAS_ATTRS is not set
160 306
161# 307#
162# SCSI low-level drivers 308# SCSI low-level drivers
163# 309#
164# CONFIG_SCSI_AIC7XXX_OLD is not set 310# CONFIG_ISCSI_TCP is not set
165# CONFIG_SCSI_SATA is not set 311# CONFIG_SCSI_SATA is not set
166# CONFIG_SCSI_EATA_PIO is not set
167# CONFIG_SCSI_DEBUG is not set 312# CONFIG_SCSI_DEBUG is not set
168 313
169# 314#
@@ -174,77 +319,47 @@ CONFIG_SCSI_SPI_ATTRS=y
174# 319#
175# Fusion MPT device support 320# Fusion MPT device support
176# 321#
322# CONFIG_FUSION is not set
177 323
178# 324#
179# IEEE 1394 (FireWire) support 325# IEEE 1394 (FireWire) support
180# 326#
181# CONFIG_IEEE1394 is not set
182 327
183# 328#
184# I2O device support 329# I2O device support
185# 330#
186 331
187# 332#
188# Networking support 333# Network device support
189# 334#
190CONFIG_NET=y 335# CONFIG_NETDEVICES is not set
336# CONFIG_DUMMY is not set
337# CONFIG_BONDING is not set
338# CONFIG_EQUALIZER is not set
339# CONFIG_TUN is not set
191 340
192# 341#
193# Networking options 342# PHY device support
194# 343#
195CONFIG_PACKET=y
196# CONFIG_PACKET_MMAP is not set
197# CONFIG_NETLINK_DEV is not set
198# CONFIG_UNIX is not set
199# CONFIG_NET_KEY is not set
200CONFIG_INET=y
201CONFIG_IP_MULTICAST=y
202# CONFIG_IP_ADVANCED_ROUTER is not set
203# CONFIG_IP_PNP is not set
204# CONFIG_NET_IPIP is not set
205# CONFIG_NET_IPGRE is not set
206# CONFIG_IP_MROUTE is not set
207# CONFIG_ARPD is not set
208# CONFIG_SYN_COOKIES is not set
209# CONFIG_INET_AH is not set
210# CONFIG_INET_ESP is not set
211# CONFIG_INET_IPCOMP is not set
212# CONFIG_IPV6 is not set
213# CONFIG_NETFILTER is not set
214 344
215# 345#
216# SCTP Configuration (EXPERIMENTAL) 346# Ethernet (10 or 100Mbit)
217# 347#
218# CONFIG_IP_SCTP is not set 348# CONFIG_NET_ETHERNET is not set
219# CONFIG_ATM is not set
220# CONFIG_BRIDGE is not set
221# CONFIG_VLAN_8021Q is not set
222# CONFIG_DECNET is not set
223# CONFIG_LLC2 is not set
224# CONFIG_IPX is not set
225# CONFIG_ATALK is not set
226# CONFIG_X25 is not set
227# CONFIG_LAPB is not set
228# CONFIG_NET_DIVERT is not set
229# CONFIG_ECONET is not set
230# CONFIG_WAN_ROUTER is not set
231# CONFIG_NET_HW_FLOWCONTROL is not set
232 349
233# 350#
234# QoS and/or fair queueing 351# Ethernet (1000 Mbit)
235# 352#
236# CONFIG_NET_SCHED is not set
237 353
238# 354#
239# Network testing 355# Ethernet (10000 Mbit)
240# 356#
241# CONFIG_NET_PKTGEN is not set 357# CONFIG_PPP is not set
358# CONFIG_SLIP is not set
359# CONFIG_SHAPER is not set
360# CONFIG_NETCONSOLE is not set
242# CONFIG_NETPOLL is not set 361# CONFIG_NETPOLL is not set
243# CONFIG_NET_POLL_CONTROLLER is not set 362# CONFIG_NET_POLL_CONTROLLER is not set
244# CONFIG_HAMRADIO is not set
245# CONFIG_IRDA is not set
246# CONFIG_BT is not set
247# CONFIG_NETDEVICES is not set
248 363
249# 364#
250# ISDN subsystem 365# ISDN subsystem
@@ -274,16 +389,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
274# CONFIG_INPUT_EVBUG is not set 389# CONFIG_INPUT_EVBUG is not set
275 390
276# 391#
277# Input I/O drivers
278#
279# CONFIG_GAMEPORT is not set
280CONFIG_SOUND_GAMEPORT=y
281CONFIG_SERIO=y
282# CONFIG_SERIO_I8042 is not set
283CONFIG_SERIO_SERPORT=y
284# CONFIG_SERIO_CT82C710 is not set
285
286#
287# Input Device Drivers 392# Input Device Drivers
288# 393#
289# CONFIG_INPUT_KEYBOARD is not set 394# CONFIG_INPUT_KEYBOARD is not set
@@ -293,6 +398,15 @@ CONFIG_SERIO_SERPORT=y
293# CONFIG_INPUT_MISC is not set 398# CONFIG_INPUT_MISC is not set
294 399
295# 400#
401# Hardware I/O ports
402#
403CONFIG_SERIO=y
404# CONFIG_SERIO_I8042 is not set
405CONFIG_SERIO_SERPORT=y
406# CONFIG_SERIO_RAW is not set
407# CONFIG_GAMEPORT is not set
408
409#
296# Character devices 410# Character devices
297# 411#
298CONFIG_VT=y 412CONFIG_VT=y
@@ -310,7 +424,6 @@ CONFIG_HW_CONSOLE=y
310# 424#
311CONFIG_UNIX98_PTYS=y 425CONFIG_UNIX98_PTYS=y
312# CONFIG_LEGACY_PTYS is not set 426# CONFIG_LEGACY_PTYS is not set
313# CONFIG_QIC02_TAPE is not set
314 427
315# 428#
316# IPMI 429# IPMI
@@ -324,15 +437,19 @@ CONFIG_UNIX98_PTYS=y
324CONFIG_EFI_RTC=y 437CONFIG_EFI_RTC=y
325# CONFIG_DTLK is not set 438# CONFIG_DTLK is not set
326# CONFIG_R3964 is not set 439# CONFIG_R3964 is not set
327# CONFIG_APPLICOM is not set
328 440
329# 441#
330# Ftape, the floppy tape device driver 442# Ftape, the floppy tape device driver
331# 443#
332# CONFIG_FTAPE is not set
333# CONFIG_AGP is not set 444# CONFIG_AGP is not set
334# CONFIG_DRM is not set
335# CONFIG_RAW_DRIVER is not set 445# CONFIG_RAW_DRIVER is not set
446# CONFIG_HANGCHECK_TIMER is not set
447
448#
449# TPM devices
450#
451# CONFIG_TCG_TPM is not set
452# CONFIG_TELCLOCK is not set
336 453
337# 454#
338# I2C support 455# I2C support
@@ -340,10 +457,33 @@ CONFIG_EFI_RTC=y
340# CONFIG_I2C is not set 457# CONFIG_I2C is not set
341 458
342# 459#
460# SPI support
461#
462# CONFIG_SPI is not set
463# CONFIG_SPI_MASTER is not set
464
465#
466# Dallas's 1-wire bus
467#
468# CONFIG_W1 is not set
469
470#
471# Hardware Monitoring support
472#
473CONFIG_HWMON=y
474# CONFIG_HWMON_VID is not set
475# CONFIG_SENSORS_F71805F is not set
476# CONFIG_HWMON_DEBUG_CHIP is not set
477
478#
343# Misc devices 479# Misc devices
344# 480#
345 481
346# 482#
483# Multimedia Capabilities Port drivers
484#
485
486#
347# Multimedia devices 487# Multimedia devices
348# 488#
349# CONFIG_VIDEO_DEV is not set 489# CONFIG_VIDEO_DEV is not set
@@ -362,7 +502,6 @@ CONFIG_EFI_RTC=y
362# Console display driver support 502# Console display driver support
363# 503#
364# CONFIG_VGA_CONSOLE is not set 504# CONFIG_VGA_CONSOLE is not set
365# CONFIG_MDA_CONSOLE is not set
366CONFIG_DUMMY_CONSOLE=y 505CONFIG_DUMMY_CONSOLE=y
367 506
368# 507#
@@ -373,6 +512,12 @@ CONFIG_DUMMY_CONSOLE=y
373# 512#
374# USB support 513# USB support
375# 514#
515# CONFIG_USB_ARCH_HAS_HCD is not set
516# CONFIG_USB_ARCH_HAS_OHCI is not set
517
518#
519# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
520#
376 521
377# 522#
378# USB Gadget Support 523# USB Gadget Support
@@ -380,22 +525,41 @@ CONFIG_DUMMY_CONSOLE=y
380# CONFIG_USB_GADGET is not set 525# CONFIG_USB_GADGET is not set
381 526
382# 527#
528# MMC/SD Card support
529#
530# CONFIG_MMC is not set
531
532#
533# InfiniBand support
534#
535
536#
537# EDAC - error detection and reporting (RAS)
538#
539
540#
383# File systems 541# File systems
384# 542#
385CONFIG_EXT2_FS=y 543CONFIG_EXT2_FS=y
386# CONFIG_EXT2_FS_XATTR is not set 544# CONFIG_EXT2_FS_XATTR is not set
545# CONFIG_EXT2_FS_XIP is not set
387CONFIG_EXT3_FS=y 546CONFIG_EXT3_FS=y
388# CONFIG_EXT3_FS_XATTR is not set 547# CONFIG_EXT3_FS_XATTR is not set
389CONFIG_JBD=y 548CONFIG_JBD=y
390# CONFIG_JBD_DEBUG is not set 549# CONFIG_JBD_DEBUG is not set
391# CONFIG_REISERFS_FS is not set 550# CONFIG_REISERFS_FS is not set
392# CONFIG_JFS_FS is not set 551# CONFIG_JFS_FS is not set
552# CONFIG_FS_POSIX_ACL is not set
393# CONFIG_XFS_FS is not set 553# CONFIG_XFS_FS is not set
554# CONFIG_OCFS2_FS is not set
394# CONFIG_MINIX_FS is not set 555# CONFIG_MINIX_FS is not set
395# CONFIG_ROMFS_FS is not set 556# CONFIG_ROMFS_FS is not set
557CONFIG_INOTIFY=y
396# CONFIG_QUOTA is not set 558# CONFIG_QUOTA is not set
559CONFIG_DNOTIFY=y
397# CONFIG_AUTOFS_FS is not set 560# CONFIG_AUTOFS_FS is not set
398# CONFIG_AUTOFS4_FS is not set 561# CONFIG_AUTOFS4_FS is not set
562# CONFIG_FUSE_FS is not set
399 563
400# 564#
401# CD-ROM/DVD Filesystems 565# CD-ROM/DVD Filesystems
@@ -406,7 +570,8 @@ CONFIG_JBD=y
406# 570#
407# DOS/FAT/NT Filesystems 571# DOS/FAT/NT Filesystems
408# 572#
409# CONFIG_FAT_FS is not set 573# CONFIG_MSDOS_FS is not set
574# CONFIG_VFAT_FS is not set
410# CONFIG_NTFS_FS is not set 575# CONFIG_NTFS_FS is not set
411 576
412# 577#
@@ -415,12 +580,12 @@ CONFIG_JBD=y
415CONFIG_PROC_FS=y 580CONFIG_PROC_FS=y
416CONFIG_PROC_KCORE=y 581CONFIG_PROC_KCORE=y
417CONFIG_SYSFS=y 582CONFIG_SYSFS=y
418# CONFIG_DEVFS_FS is not set
419# CONFIG_DEVPTS_FS_XATTR is not set
420# CONFIG_TMPFS is not set 583# CONFIG_TMPFS is not set
421CONFIG_HUGETLBFS=y 584CONFIG_HUGETLBFS=y
422CONFIG_HUGETLB_PAGE=y 585CONFIG_HUGETLB_PAGE=y
423CONFIG_RAMFS=y 586CONFIG_RAMFS=y
587# CONFIG_RELAYFS_FS is not set
588# CONFIG_CONFIGFS_FS is not set
424 589
425# 590#
426# Miscellaneous filesystems 591# Miscellaneous filesystems
@@ -448,18 +613,22 @@ CONFIG_NFS_FS=y
448CONFIG_NFS_DIRECTIO=y 613CONFIG_NFS_DIRECTIO=y
449CONFIG_NFSD=y 614CONFIG_NFSD=y
450CONFIG_NFSD_V3=y 615CONFIG_NFSD_V3=y
616# CONFIG_NFSD_V3_ACL is not set
451# CONFIG_NFSD_V4 is not set 617# CONFIG_NFSD_V4 is not set
452# CONFIG_NFSD_TCP is not set 618# CONFIG_NFSD_TCP is not set
453CONFIG_LOCKD=y 619CONFIG_LOCKD=y
454CONFIG_LOCKD_V4=y 620CONFIG_LOCKD_V4=y
455CONFIG_EXPORTFS=y 621CONFIG_EXPORTFS=y
622CONFIG_NFS_COMMON=y
456CONFIG_SUNRPC=y 623CONFIG_SUNRPC=y
457# CONFIG_RPCSEC_GSS_KRB5 is not set 624# CONFIG_RPCSEC_GSS_KRB5 is not set
625# CONFIG_RPCSEC_GSS_SPKM3 is not set
458# CONFIG_SMB_FS is not set 626# CONFIG_SMB_FS is not set
459# CONFIG_CIFS is not set 627# CONFIG_CIFS is not set
460# CONFIG_NCP_FS is not set 628# CONFIG_NCP_FS is not set
461# CONFIG_CODA_FS is not set 629# CONFIG_CODA_FS is not set
462# CONFIG_AFS_FS is not set 630# CONFIG_AFS_FS is not set
631# CONFIG_9P_FS is not set
463 632
464# 633#
465# Partition Types 634# Partition Types
@@ -476,10 +645,10 @@ CONFIG_MSDOS_PARTITION=y
476# CONFIG_SOLARIS_X86_PARTITION is not set 645# CONFIG_SOLARIS_X86_PARTITION is not set
477# CONFIG_UNIXWARE_DISKLABEL is not set 646# CONFIG_UNIXWARE_DISKLABEL is not set
478# CONFIG_LDM_PARTITION is not set 647# CONFIG_LDM_PARTITION is not set
479# CONFIG_NEC98_PARTITION is not set
480# CONFIG_SGI_PARTITION is not set 648# CONFIG_SGI_PARTITION is not set
481# CONFIG_ULTRIX_PARTITION is not set 649# CONFIG_ULTRIX_PARTITION is not set
482# CONFIG_SUN_PARTITION is not set 650# CONFIG_SUN_PARTITION is not set
651# CONFIG_KARMA_PARTITION is not set
483CONFIG_EFI_PARTITION=y 652CONFIG_EFI_PARTITION=y
484 653
485# 654#
@@ -490,8 +659,13 @@ CONFIG_EFI_PARTITION=y
490# 659#
491# Library routines 660# Library routines
492# 661#
662# CONFIG_CRC_CCITT is not set
663# CONFIG_CRC16 is not set
493CONFIG_CRC32=y 664CONFIG_CRC32=y
494# CONFIG_LIBCRC32C is not set 665# CONFIG_LIBCRC32C is not set
666CONFIG_GENERIC_HARDIRQS=y
667CONFIG_GENERIC_IRQ_PROBE=y
668CONFIG_GENERIC_PENDING_IRQ=y
495 669
496# 670#
497# HP Simulator drivers 671# HP Simulator drivers
@@ -502,33 +676,50 @@ CONFIG_HP_SIMSERIAL_CONSOLE=y
502CONFIG_HP_SIMSCSI=y 676CONFIG_HP_SIMSCSI=y
503 677
504# 678#
505# Profiling support 679# Instrumentation Support
506# 680#
507# CONFIG_PROFILING is not set 681# CONFIG_PROFILING is not set
682# CONFIG_KPROBES is not set
508 683
509# 684#
510# Kernel hacking 685# Kernel hacking
511# 686#
512# CONFIG_IA64_GRANULE_16MB is not set 687# CONFIG_PRINTK_TIME is not set
513CONFIG_IA64_GRANULE_64MB=y
514CONFIG_DEBUG_KERNEL=y
515# CONFIG_IA64_PRINT_HAZARDS is not set
516# CONFIG_DISABLE_VHPT is not set
517# CONFIG_MAGIC_SYSRQ is not set 688# CONFIG_MAGIC_SYSRQ is not set
689CONFIG_DEBUG_KERNEL=y
690CONFIG_LOG_BUF_SHIFT=16
691CONFIG_DETECT_SOFTLOCKUP=y
692# CONFIG_SCHEDSTATS is not set
518# CONFIG_DEBUG_SLAB is not set 693# CONFIG_DEBUG_SLAB is not set
694CONFIG_DEBUG_PREEMPT=y
695CONFIG_DEBUG_MUTEXES=y
519# CONFIG_DEBUG_SPINLOCK is not set 696# CONFIG_DEBUG_SPINLOCK is not set
520# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 697# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
698# CONFIG_DEBUG_KOBJECT is not set
699CONFIG_DEBUG_INFO=y
700# CONFIG_DEBUG_FS is not set
701# CONFIG_DEBUG_VM is not set
702CONFIG_FORCED_INLINING=y
703# CONFIG_RCU_TORTURE_TEST is not set
704# CONFIG_IA64_GRANULE_16MB is not set
705CONFIG_IA64_GRANULE_64MB=y
706# CONFIG_IA64_PRINT_HAZARDS is not set
707# CONFIG_DISABLE_VHPT is not set
521# CONFIG_IA64_DEBUG_CMPXCHG is not set 708# CONFIG_IA64_DEBUG_CMPXCHG is not set
522# CONFIG_IA64_DEBUG_IRQ is not set 709# CONFIG_IA64_DEBUG_IRQ is not set
523CONFIG_DEBUG_INFO=y
524CONFIG_SYSVIPC_COMPAT=y 710CONFIG_SYSVIPC_COMPAT=y
525 711
526# 712#
527# Security options 713# Security options
528# 714#
715# CONFIG_KEYS is not set
529# CONFIG_SECURITY is not set 716# CONFIG_SECURITY is not set
530 717
531# 718#
532# Cryptographic options 719# Cryptographic options
533# 720#
534# CONFIG_CRYPTO is not set 721# CONFIG_CRYPTO is not set
722
723#
724# Hardware crypto devices
725#
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index 3cb503b659e6..8206752161bb 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,14 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc4 3# Linux kernel version: 2.6.16-rc5
4# Fri Dec 2 10:33:48 2005 4# Mon Feb 27 16:06:38 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
14 13
@@ -23,17 +22,18 @@ CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28# CONFIG_IKCONFIG is not set 25# CONFIG_IKCONFIG is not set
29CONFIG_CPUSETS=y 26CONFIG_CPUSETS=y
30CONFIG_INITRAMFS_SOURCE="" 27CONFIG_INITRAMFS_SOURCE=""
28CONFIG_CC_OPTIMIZE_FOR_SIZE=y
31# CONFIG_EMBEDDED is not set 29# CONFIG_EMBEDDED is not set
32CONFIG_KALLSYMS=y 30CONFIG_KALLSYMS=y
33CONFIG_KALLSYMS_ALL=y 31CONFIG_KALLSYMS_ALL=y
34# CONFIG_KALLSYMS_EXTRA_PASS is not set 32# CONFIG_KALLSYMS_EXTRA_PASS is not set
33CONFIG_HOTPLUG=y
35CONFIG_PRINTK=y 34CONFIG_PRINTK=y
36CONFIG_BUG=y 35CONFIG_BUG=y
36CONFIG_ELF_CORE=y
37CONFIG_BASE_FULL=y 37CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y 38CONFIG_FUTEX=y
39CONFIG_EPOLL=y 39CONFIG_EPOLL=y
@@ -42,8 +42,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
42CONFIG_CC_ALIGN_LABELS=0 42CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_SLAB=y
45# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
46CONFIG_BASE_SMALL=0 47CONFIG_BASE_SMALL=0
48# CONFIG_SLOB is not set
47 49
48# 50#
49# Loadable module support 51# Loadable module support
@@ -88,7 +90,7 @@ CONFIG_EFI=y
88CONFIG_GENERIC_IOMAP=y 90CONFIG_GENERIC_IOMAP=y
89CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 91CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
90CONFIG_IA64_UNCACHED_ALLOCATOR=y 92CONFIG_IA64_UNCACHED_ALLOCATOR=y
91CONFIG_ZONE_DMA_IS_DMA32=y 93CONFIG_DMA_IS_DMA32=y
92# CONFIG_IA64_GENERIC is not set 94# CONFIG_IA64_GENERIC is not set
93# CONFIG_IA64_DIG is not set 95# CONFIG_IA64_DIG is not set
94# CONFIG_IA64_HP_ZX1 is not set 96# CONFIG_IA64_HP_ZX1 is not set
@@ -126,6 +128,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
126CONFIG_NEED_MULTIPLE_NODES=y 128CONFIG_NEED_MULTIPLE_NODES=y
127# CONFIG_SPARSEMEM_STATIC is not set 129# CONFIG_SPARSEMEM_STATIC is not set
128CONFIG_SPLIT_PTLOCK_CPUS=4 130CONFIG_SPLIT_PTLOCK_CPUS=4
131CONFIG_MIGRATION=y
129CONFIG_ARCH_SELECT_MEMORY_MODEL=y 132CONFIG_ARCH_SELECT_MEMORY_MODEL=y
130CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 133CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
131CONFIG_ARCH_FLATMEM_ENABLE=y 134CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -140,6 +143,7 @@ CONFIG_COMPAT=y
140CONFIG_IA64_MCA_RECOVERY=y 143CONFIG_IA64_MCA_RECOVERY=y
141CONFIG_PERFMON=y 144CONFIG_PERFMON=y
142CONFIG_IA64_PALINFO=y 145CONFIG_IA64_PALINFO=y
146CONFIG_SGI_SN=y
143 147
144# 148#
145# Firmware Drivers 149# Firmware Drivers
@@ -166,6 +170,7 @@ CONFIG_ACPI=y
166CONFIG_ACPI_NUMA=y 170CONFIG_ACPI_NUMA=y
167CONFIG_ACPI_BLACKLIST_YEAR=0 171CONFIG_ACPI_BLACKLIST_YEAR=0
168# CONFIG_ACPI_DEBUG is not set 172# CONFIG_ACPI_DEBUG is not set
173CONFIG_ACPI_EC=y
169CONFIG_ACPI_POWER=y 174CONFIG_ACPI_POWER=y
170CONFIG_ACPI_SYSTEM=y 175CONFIG_ACPI_SYSTEM=y
171# CONFIG_ACPI_CONTAINER is not set 176# CONFIG_ACPI_CONTAINER is not set
@@ -207,6 +212,7 @@ CONFIG_NET=y
207# 212#
208# Networking options 213# Networking options
209# 214#
215# CONFIG_NETDEBUG is not set
210CONFIG_PACKET=y 216CONFIG_PACKET=y
211CONFIG_PACKET_MMAP=y 217CONFIG_PACKET_MMAP=y
212CONFIG_UNIX=y 218CONFIG_UNIX=y
@@ -247,6 +253,11 @@ CONFIG_IPV6=m
247# SCTP Configuration (EXPERIMENTAL) 253# SCTP Configuration (EXPERIMENTAL)
248# 254#
249# CONFIG_IP_SCTP is not set 255# CONFIG_IP_SCTP is not set
256
257#
258# TIPC Configuration (EXPERIMENTAL)
259#
260# CONFIG_TIPC is not set
250# CONFIG_ATM is not set 261# CONFIG_ATM is not set
251# CONFIG_BRIDGE is not set 262# CONFIG_BRIDGE is not set
252# CONFIG_VLAN_8021Q is not set 263# CONFIG_VLAN_8021Q is not set
@@ -330,6 +341,7 @@ CONFIG_ATA_OVER_ETH=m
330# ATA/ATAPI/MFM/RLL support 341# ATA/ATAPI/MFM/RLL support
331# 342#
332CONFIG_IDE=y 343CONFIG_IDE=y
344CONFIG_IDE_MAX_HWIFS=4
333CONFIG_BLK_DEV_IDE=y 345CONFIG_BLK_DEV_IDE=y
334 346
335# 347#
@@ -457,13 +469,7 @@ CONFIG_SCSI_SATA_VITESSE=y
457# CONFIG_SCSI_IPR is not set 469# CONFIG_SCSI_IPR is not set
458# CONFIG_SCSI_QLOGIC_FC is not set 470# CONFIG_SCSI_QLOGIC_FC is not set
459CONFIG_SCSI_QLOGIC_1280=y 471CONFIG_SCSI_QLOGIC_1280=y
460CONFIG_SCSI_QLA2XXX=y 472# CONFIG_SCSI_QLA_FC is not set
461# CONFIG_SCSI_QLA21XX is not set
462CONFIG_SCSI_QLA22XX=y
463CONFIG_SCSI_QLA2300=y
464CONFIG_SCSI_QLA2322=y
465# CONFIG_SCSI_QLA6312 is not set
466# CONFIG_SCSI_QLA24XX is not set
467# CONFIG_SCSI_LPFC is not set 473# CONFIG_SCSI_LPFC is not set
468# CONFIG_SCSI_DC395x is not set 474# CONFIG_SCSI_DC395x is not set
469# CONFIG_SCSI_DC390T is not set 475# CONFIG_SCSI_DC390T is not set
@@ -545,6 +551,7 @@ CONFIG_NETDEVICES=y
545# CONFIG_R8169 is not set 551# CONFIG_R8169 is not set
546# CONFIG_SIS190 is not set 552# CONFIG_SIS190 is not set
547# CONFIG_SKGE is not set 553# CONFIG_SKGE is not set
554# CONFIG_SKY2 is not set
548# CONFIG_SK98LIN is not set 555# CONFIG_SK98LIN is not set
549CONFIG_TIGON3=y 556CONFIG_TIGON3=y
550# CONFIG_BNX2 is not set 557# CONFIG_BNX2 is not set
@@ -632,12 +639,15 @@ CONFIG_VT=y
632CONFIG_VT_CONSOLE=y 639CONFIG_VT_CONSOLE=y
633CONFIG_HW_CONSOLE=y 640CONFIG_HW_CONSOLE=y
634CONFIG_SERIAL_NONSTANDARD=y 641CONFIG_SERIAL_NONSTANDARD=y
642# CONFIG_COMPUTONE is not set
635# CONFIG_ROCKETPORT is not set 643# CONFIG_ROCKETPORT is not set
636# CONFIG_CYCLADES is not set 644# CONFIG_CYCLADES is not set
637# CONFIG_DIGIEPCA is not set 645# CONFIG_DIGIEPCA is not set
646# CONFIG_MOXA_INTELLIO is not set
638# CONFIG_MOXA_SMARTIO is not set 647# CONFIG_MOXA_SMARTIO is not set
639# CONFIG_ISI is not set 648# CONFIG_ISI is not set
640# CONFIG_SYNCLINKMP is not set 649# CONFIG_SYNCLINKMP is not set
650# CONFIG_SYNCLINK_GT is not set
641# CONFIG_N_HDLC is not set 651# CONFIG_N_HDLC is not set
642# CONFIG_SPECIALIX is not set 652# CONFIG_SPECIALIX is not set
643# CONFIG_SX is not set 653# CONFIG_SX is not set
@@ -686,8 +696,8 @@ CONFIG_AGP=y
686CONFIG_AGP_SGI_TIOCA=y 696CONFIG_AGP_SGI_TIOCA=y
687# CONFIG_DRM is not set 697# CONFIG_DRM is not set
688CONFIG_RAW_DRIVER=m 698CONFIG_RAW_DRIVER=m
689# CONFIG_HPET is not set
690CONFIG_MAX_RAW_DEVS=256 699CONFIG_MAX_RAW_DEVS=256
700# CONFIG_HPET is not set
691# CONFIG_HANGCHECK_TIMER is not set 701# CONFIG_HANGCHECK_TIMER is not set
692CONFIG_MMTIMER=y 702CONFIG_MMTIMER=y
693 703
@@ -703,6 +713,12 @@ CONFIG_MMTIMER=y
703# CONFIG_I2C is not set 713# CONFIG_I2C is not set
704 714
705# 715#
716# SPI support
717#
718# CONFIG_SPI is not set
719# CONFIG_SPI_MASTER is not set
720
721#
706# Dallas's 1-wire bus 722# Dallas's 1-wire bus
707# 723#
708# CONFIG_W1 is not set 724# CONFIG_W1 is not set
@@ -791,12 +807,14 @@ CONFIG_USB_UHCI_HCD=m
791# may also be needed; see USB_STORAGE Help for more information 807# may also be needed; see USB_STORAGE Help for more information
792# 808#
793# CONFIG_USB_STORAGE is not set 809# CONFIG_USB_STORAGE is not set
810# CONFIG_USB_LIBUSUAL is not set
794 811
795# 812#
796# USB Input Devices 813# USB Input Devices
797# 814#
798CONFIG_USB_HID=m 815CONFIG_USB_HID=m
799CONFIG_USB_HIDINPUT=y 816CONFIG_USB_HIDINPUT=y
817# CONFIG_USB_HIDINPUT_POWERBOOK is not set
800# CONFIG_HID_FF is not set 818# CONFIG_HID_FF is not set
801# CONFIG_USB_HIDDEV is not set 819# CONFIG_USB_HIDDEV is not set
802 820
@@ -816,6 +834,7 @@ CONFIG_USB_HIDINPUT=y
816# CONFIG_USB_YEALINK is not set 834# CONFIG_USB_YEALINK is not set
817# CONFIG_USB_XPAD is not set 835# CONFIG_USB_XPAD is not set
818# CONFIG_USB_ATI_REMOTE is not set 836# CONFIG_USB_ATI_REMOTE is not set
837# CONFIG_USB_ATI_REMOTE2 is not set
819# CONFIG_USB_KEYSPAN_REMOTE is not set 838# CONFIG_USB_KEYSPAN_REMOTE is not set
820# CONFIG_USB_APPLETOUCH is not set 839# CONFIG_USB_APPLETOUCH is not set
821 840
@@ -903,6 +922,10 @@ CONFIG_SGI_IOC4=y
903CONFIG_SGI_IOC3=y 922CONFIG_SGI_IOC3=y
904 923
905# 924#
925# EDAC - error detection and reporting (RAS)
926#
927
928#
906# File systems 929# File systems
907# 930#
908CONFIG_EXT2_FS=y 931CONFIG_EXT2_FS=y
@@ -931,6 +954,7 @@ CONFIG_XFS_QUOTA=y
931# CONFIG_XFS_SECURITY is not set 954# CONFIG_XFS_SECURITY is not set
932CONFIG_XFS_POSIX_ACL=y 955CONFIG_XFS_POSIX_ACL=y
933CONFIG_XFS_RT=y 956CONFIG_XFS_RT=y
957# CONFIG_OCFS2_FS is not set
934# CONFIG_MINIX_FS is not set 958# CONFIG_MINIX_FS is not set
935# CONFIG_ROMFS_FS is not set 959# CONFIG_ROMFS_FS is not set
936CONFIG_INOTIFY=y 960CONFIG_INOTIFY=y
@@ -973,6 +997,7 @@ CONFIG_HUGETLBFS=y
973CONFIG_HUGETLB_PAGE=y 997CONFIG_HUGETLB_PAGE=y
974CONFIG_RAMFS=y 998CONFIG_RAMFS=y
975CONFIG_RELAYFS_FS=m 999CONFIG_RELAYFS_FS=m
1000# CONFIG_CONFIGFS_FS is not set
976 1001
977# 1002#
978# Miscellaneous filesystems 1003# Miscellaneous filesystems
@@ -1041,6 +1066,7 @@ CONFIG_MSDOS_PARTITION=y
1041CONFIG_SGI_PARTITION=y 1066CONFIG_SGI_PARTITION=y
1042# CONFIG_ULTRIX_PARTITION is not set 1067# CONFIG_ULTRIX_PARTITION is not set
1043# CONFIG_SUN_PARTITION is not set 1068# CONFIG_SUN_PARTITION is not set
1069# CONFIG_KARMA_PARTITION is not set
1044CONFIG_EFI_PARTITION=y 1070CONFIG_EFI_PARTITION=y
1045 1071
1046# 1072#
@@ -1111,19 +1137,21 @@ CONFIG_GENERIC_PENDING_IRQ=y
1111# Kernel hacking 1137# Kernel hacking
1112# 1138#
1113# CONFIG_PRINTK_TIME is not set 1139# CONFIG_PRINTK_TIME is not set
1114CONFIG_DEBUG_KERNEL=y
1115CONFIG_MAGIC_SYSRQ=y 1140CONFIG_MAGIC_SYSRQ=y
1141CONFIG_DEBUG_KERNEL=y
1116CONFIG_LOG_BUF_SHIFT=20 1142CONFIG_LOG_BUF_SHIFT=20
1117CONFIG_DETECT_SOFTLOCKUP=y 1143CONFIG_DETECT_SOFTLOCKUP=y
1118# CONFIG_SCHEDSTATS is not set 1144# CONFIG_SCHEDSTATS is not set
1119# CONFIG_DEBUG_SLAB is not set 1145# CONFIG_DEBUG_SLAB is not set
1120CONFIG_DEBUG_PREEMPT=y 1146CONFIG_DEBUG_PREEMPT=y
1147CONFIG_DEBUG_MUTEXES=y
1121# CONFIG_DEBUG_SPINLOCK is not set 1148# CONFIG_DEBUG_SPINLOCK is not set
1122# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1149# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1123# CONFIG_DEBUG_KOBJECT is not set 1150# CONFIG_DEBUG_KOBJECT is not set
1124CONFIG_DEBUG_INFO=y 1151CONFIG_DEBUG_INFO=y
1125# CONFIG_DEBUG_FS is not set 1152# CONFIG_DEBUG_FS is not set
1126# CONFIG_DEBUG_VM is not set 1153# CONFIG_DEBUG_VM is not set
1154CONFIG_FORCED_INLINING=y
1127# CONFIG_RCU_TORTURE_TEST is not set 1155# CONFIG_RCU_TORTURE_TEST is not set
1128CONFIG_IA64_GRANULE_16MB=y 1156CONFIG_IA64_GRANULE_16MB=y
1129# CONFIG_IA64_GRANULE_64MB is not set 1157# CONFIG_IA64_GRANULE_64MB is not set
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index 6859119bc9dd..125568118b84 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_defconfig
@@ -1,14 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc4 3# Linux kernel version: 2.6.16-rc5
4# Fri Dec 2 16:06:32 2005 4# Mon Feb 27 15:49:18 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
14 13
@@ -23,18 +22,19 @@ CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28CONFIG_IKCONFIG=y 25CONFIG_IKCONFIG=y
29CONFIG_IKCONFIG_PROC=y 26CONFIG_IKCONFIG_PROC=y
30# CONFIG_CPUSETS is not set 27# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE="" 28CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y
32# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
33CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
34CONFIG_KALLSYMS_ALL=y 32CONFIG_KALLSYMS_ALL=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_HOTPLUG=y
36CONFIG_PRINTK=y 35CONFIG_PRINTK=y
37CONFIG_BUG=y 36CONFIG_BUG=y
37CONFIG_ELF_CORE=y
38CONFIG_BASE_FULL=y 38CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 39CONFIG_FUTEX=y
40CONFIG_EPOLL=y 40CONFIG_EPOLL=y
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y
46# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set
48 50
49# 51#
50# Loadable module support 52# Loadable module support
@@ -88,7 +90,7 @@ CONFIG_TIME_INTERPOLATION=y
88CONFIG_EFI=y 90CONFIG_EFI=y
89CONFIG_GENERIC_IOMAP=y 91CONFIG_GENERIC_IOMAP=y
90CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
91CONFIG_ZONE_DMA_IS_DMA32=y 93CONFIG_DMA_IS_DMA32=y
92# CONFIG_IA64_GENERIC is not set 94# CONFIG_IA64_GENERIC is not set
93CONFIG_IA64_DIG=y 95CONFIG_IA64_DIG=y
94# CONFIG_IA64_HP_ZX1 is not set 96# CONFIG_IA64_HP_ZX1 is not set
@@ -162,6 +164,7 @@ CONFIG_ACPI_HOTPLUG_CPU=y
162CONFIG_ACPI_THERMAL=m 164CONFIG_ACPI_THERMAL=m
163CONFIG_ACPI_BLACKLIST_YEAR=0 165CONFIG_ACPI_BLACKLIST_YEAR=0
164# CONFIG_ACPI_DEBUG is not set 166# CONFIG_ACPI_DEBUG is not set
167CONFIG_ACPI_EC=y
165CONFIG_ACPI_POWER=y 168CONFIG_ACPI_POWER=y
166CONFIG_ACPI_SYSTEM=y 169CONFIG_ACPI_SYSTEM=y
167CONFIG_ACPI_CONTAINER=m 170CONFIG_ACPI_CONTAINER=m
@@ -203,6 +206,7 @@ CONFIG_NET=y
203# 206#
204# Networking options 207# Networking options
205# 208#
209# CONFIG_NETDEBUG is not set
206CONFIG_PACKET=y 210CONFIG_PACKET=y
207# CONFIG_PACKET_MMAP is not set 211# CONFIG_PACKET_MMAP is not set
208CONFIG_UNIX=y 212CONFIG_UNIX=y
@@ -237,6 +241,11 @@ CONFIG_TCP_CONG_BIC=y
237# SCTP Configuration (EXPERIMENTAL) 241# SCTP Configuration (EXPERIMENTAL)
238# 242#
239# CONFIG_IP_SCTP is not set 243# CONFIG_IP_SCTP is not set
244
245#
246# TIPC Configuration (EXPERIMENTAL)
247#
248# CONFIG_TIPC is not set
240# CONFIG_ATM is not set 249# CONFIG_ATM is not set
241# CONFIG_BRIDGE is not set 250# CONFIG_BRIDGE is not set
242# CONFIG_VLAN_8021Q is not set 251# CONFIG_VLAN_8021Q is not set
@@ -326,6 +335,7 @@ CONFIG_BLK_DEV_INITRD=y
326# ATA/ATAPI/MFM/RLL support 335# ATA/ATAPI/MFM/RLL support
327# 336#
328CONFIG_IDE=y 337CONFIG_IDE=y
338CONFIG_IDE_MAX_HWIFS=4
329CONFIG_BLK_DEV_IDE=y 339CONFIG_BLK_DEV_IDE=y
330 340
331# 341#
@@ -443,13 +453,7 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
443CONFIG_SCSI_QLOGIC_FC=y 453CONFIG_SCSI_QLOGIC_FC=y
444# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set 454# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
445CONFIG_SCSI_QLOGIC_1280=y 455CONFIG_SCSI_QLOGIC_1280=y
446CONFIG_SCSI_QLA2XXX=y 456# CONFIG_SCSI_QLA_FC is not set
447CONFIG_SCSI_QLA21XX=m
448CONFIG_SCSI_QLA22XX=m
449CONFIG_SCSI_QLA2300=m
450CONFIG_SCSI_QLA2322=m
451# CONFIG_SCSI_QLA6312 is not set
452# CONFIG_SCSI_QLA24XX is not set
453# CONFIG_SCSI_LPFC is not set 457# CONFIG_SCSI_LPFC is not set
454# CONFIG_SCSI_DC395x is not set 458# CONFIG_SCSI_DC395x is not set
455# CONFIG_SCSI_DC390T is not set 459# CONFIG_SCSI_DC390T is not set
@@ -572,6 +576,7 @@ CONFIG_E1000=y
572# CONFIG_R8169 is not set 576# CONFIG_R8169 is not set
573# CONFIG_SIS190 is not set 577# CONFIG_SIS190 is not set
574# CONFIG_SKGE is not set 578# CONFIG_SKGE is not set
579# CONFIG_SKY2 is not set
575# CONFIG_SK98LIN is not set 580# CONFIG_SK98LIN is not set
576# CONFIG_VIA_VELOCITY is not set 581# CONFIG_VIA_VELOCITY is not set
577CONFIG_TIGON3=y 582CONFIG_TIGON3=y
@@ -676,12 +681,15 @@ CONFIG_VT=y
676CONFIG_VT_CONSOLE=y 681CONFIG_VT_CONSOLE=y
677CONFIG_HW_CONSOLE=y 682CONFIG_HW_CONSOLE=y
678CONFIG_SERIAL_NONSTANDARD=y 683CONFIG_SERIAL_NONSTANDARD=y
684# CONFIG_COMPUTONE is not set
679# CONFIG_ROCKETPORT is not set 685# CONFIG_ROCKETPORT is not set
680# CONFIG_CYCLADES is not set 686# CONFIG_CYCLADES is not set
681# CONFIG_DIGIEPCA is not set 687# CONFIG_DIGIEPCA is not set
688# CONFIG_MOXA_INTELLIO is not set
682# CONFIG_MOXA_SMARTIO is not set 689# CONFIG_MOXA_SMARTIO is not set
683# CONFIG_ISI is not set 690# CONFIG_ISI is not set
684# CONFIG_SYNCLINKMP is not set 691# CONFIG_SYNCLINKMP is not set
692# CONFIG_SYNCLINK_GT is not set
685# CONFIG_N_HDLC is not set 693# CONFIG_N_HDLC is not set
686# CONFIG_SPECIALIX is not set 694# CONFIG_SPECIALIX is not set
687# CONFIG_SX is not set 695# CONFIG_SX is not set
@@ -694,6 +702,7 @@ CONFIG_SERIAL_8250=y
694CONFIG_SERIAL_8250_CONSOLE=y 702CONFIG_SERIAL_8250_CONSOLE=y
695CONFIG_SERIAL_8250_ACPI=y 703CONFIG_SERIAL_8250_ACPI=y
696CONFIG_SERIAL_8250_NR_UARTS=6 704CONFIG_SERIAL_8250_NR_UARTS=6
705CONFIG_SERIAL_8250_RUNTIME_UARTS=4
697CONFIG_SERIAL_8250_EXTENDED=y 706CONFIG_SERIAL_8250_EXTENDED=y
698CONFIG_SERIAL_8250_SHARE_IRQ=y 707CONFIG_SERIAL_8250_SHARE_IRQ=y
699# CONFIG_SERIAL_8250_DETECT_IRQ is not set 708# CONFIG_SERIAL_8250_DETECT_IRQ is not set
@@ -738,10 +747,10 @@ CONFIG_DRM_SIS=m
738# CONFIG_DRM_VIA is not set 747# CONFIG_DRM_VIA is not set
739# CONFIG_DRM_SAVAGE is not set 748# CONFIG_DRM_SAVAGE is not set
740CONFIG_RAW_DRIVER=m 749CONFIG_RAW_DRIVER=m
750CONFIG_MAX_RAW_DEVS=256
741CONFIG_HPET=y 751CONFIG_HPET=y
742# CONFIG_HPET_RTC_IRQ is not set 752# CONFIG_HPET_RTC_IRQ is not set
743CONFIG_HPET_MMAP=y 753CONFIG_HPET_MMAP=y
744CONFIG_MAX_RAW_DEVS=256
745# CONFIG_HANGCHECK_TIMER is not set 754# CONFIG_HANGCHECK_TIMER is not set
746 755
747# 756#
@@ -756,6 +765,12 @@ CONFIG_MAX_RAW_DEVS=256
756# CONFIG_I2C is not set 765# CONFIG_I2C is not set
757 766
758# 767#
768# SPI support
769#
770# CONFIG_SPI is not set
771# CONFIG_SPI_MASTER is not set
772
773#
759# Dallas's 1-wire bus 774# Dallas's 1-wire bus
760# 775#
761# CONFIG_W1 is not set 776# CONFIG_W1 is not set
@@ -765,6 +780,7 @@ CONFIG_MAX_RAW_DEVS=256
765# 780#
766CONFIG_HWMON=y 781CONFIG_HWMON=y
767# CONFIG_HWMON_VID is not set 782# CONFIG_HWMON_VID is not set
783# CONFIG_SENSORS_F71805F is not set
768# CONFIG_HWMON_DEBUG_CHIP is not set 784# CONFIG_HWMON_DEBUG_CHIP is not set
769 785
770# 786#
@@ -854,12 +870,15 @@ CONFIG_USB_STORAGE=m
854# CONFIG_USB_STORAGE_SDDR09 is not set 870# CONFIG_USB_STORAGE_SDDR09 is not set
855# CONFIG_USB_STORAGE_SDDR55 is not set 871# CONFIG_USB_STORAGE_SDDR55 is not set
856# CONFIG_USB_STORAGE_JUMPSHOT is not set 872# CONFIG_USB_STORAGE_JUMPSHOT is not set
873# CONFIG_USB_STORAGE_ALAUDA is not set
874# CONFIG_USB_LIBUSUAL is not set
857 875
858# 876#
859# USB Input Devices 877# USB Input Devices
860# 878#
861CONFIG_USB_HID=y 879CONFIG_USB_HID=y
862CONFIG_USB_HIDINPUT=y 880CONFIG_USB_HIDINPUT=y
881# CONFIG_USB_HIDINPUT_POWERBOOK is not set
863# CONFIG_HID_FF is not set 882# CONFIG_HID_FF is not set
864# CONFIG_USB_HIDDEV is not set 883# CONFIG_USB_HIDDEV is not set
865# CONFIG_USB_AIPTEK is not set 884# CONFIG_USB_AIPTEK is not set
@@ -873,6 +892,7 @@ CONFIG_USB_HIDINPUT=y
873# CONFIG_USB_YEALINK is not set 892# CONFIG_USB_YEALINK is not set
874# CONFIG_USB_XPAD is not set 893# CONFIG_USB_XPAD is not set
875# CONFIG_USB_ATI_REMOTE is not set 894# CONFIG_USB_ATI_REMOTE is not set
895# CONFIG_USB_ATI_REMOTE2 is not set
876# CONFIG_USB_KEYSPAN_REMOTE is not set 896# CONFIG_USB_KEYSPAN_REMOTE is not set
877# CONFIG_USB_APPLETOUCH is not set 897# CONFIG_USB_APPLETOUCH is not set
878 898
@@ -948,7 +968,7 @@ CONFIG_USB_HIDINPUT=y
948# CONFIG_INFINIBAND is not set 968# CONFIG_INFINIBAND is not set
949 969
950# 970#
951# SN Devices 971# EDAC - error detection and reporting (RAS)
952# 972#
953 973
954# 974#
@@ -980,6 +1000,7 @@ CONFIG_XFS_EXPORT=y
980# CONFIG_XFS_SECURITY is not set 1000# CONFIG_XFS_SECURITY is not set
981# CONFIG_XFS_POSIX_ACL is not set 1001# CONFIG_XFS_POSIX_ACL is not set
982# CONFIG_XFS_RT is not set 1002# CONFIG_XFS_RT is not set
1003# CONFIG_OCFS2_FS is not set
983# CONFIG_MINIX_FS is not set 1004# CONFIG_MINIX_FS is not set
984# CONFIG_ROMFS_FS is not set 1005# CONFIG_ROMFS_FS is not set
985CONFIG_INOTIFY=y 1006CONFIG_INOTIFY=y
@@ -1021,6 +1042,7 @@ CONFIG_HUGETLBFS=y
1021CONFIG_HUGETLB_PAGE=y 1042CONFIG_HUGETLB_PAGE=y
1022CONFIG_RAMFS=y 1043CONFIG_RAMFS=y
1023# CONFIG_RELAYFS_FS is not set 1044# CONFIG_RELAYFS_FS is not set
1045# CONFIG_CONFIGFS_FS is not set
1024 1046
1025# 1047#
1026# Miscellaneous filesystems 1048# Miscellaneous filesystems
@@ -1090,6 +1112,7 @@ CONFIG_MSDOS_PARTITION=y
1090CONFIG_SGI_PARTITION=y 1112CONFIG_SGI_PARTITION=y
1091# CONFIG_ULTRIX_PARTITION is not set 1113# CONFIG_ULTRIX_PARTITION is not set
1092# CONFIG_SUN_PARTITION is not set 1114# CONFIG_SUN_PARTITION is not set
1115# CONFIG_KARMA_PARTITION is not set
1093CONFIG_EFI_PARTITION=y 1116CONFIG_EFI_PARTITION=y
1094 1117
1095# 1118#
@@ -1157,18 +1180,20 @@ CONFIG_GENERIC_PENDING_IRQ=y
1157# Kernel hacking 1180# Kernel hacking
1158# 1181#
1159# CONFIG_PRINTK_TIME is not set 1182# CONFIG_PRINTK_TIME is not set
1160CONFIG_DEBUG_KERNEL=y
1161CONFIG_MAGIC_SYSRQ=y 1183CONFIG_MAGIC_SYSRQ=y
1184CONFIG_DEBUG_KERNEL=y
1162CONFIG_LOG_BUF_SHIFT=20 1185CONFIG_LOG_BUF_SHIFT=20
1163CONFIG_DETECT_SOFTLOCKUP=y 1186CONFIG_DETECT_SOFTLOCKUP=y
1164# CONFIG_SCHEDSTATS is not set 1187# CONFIG_SCHEDSTATS is not set
1165# CONFIG_DEBUG_SLAB is not set 1188# CONFIG_DEBUG_SLAB is not set
1189CONFIG_DEBUG_MUTEXES=y
1166# CONFIG_DEBUG_SPINLOCK is not set 1190# CONFIG_DEBUG_SPINLOCK is not set
1167# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1191# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1168# CONFIG_DEBUG_KOBJECT is not set 1192# CONFIG_DEBUG_KOBJECT is not set
1169# CONFIG_DEBUG_INFO is not set 1193# CONFIG_DEBUG_INFO is not set
1170# CONFIG_DEBUG_FS is not set 1194# CONFIG_DEBUG_FS is not set
1171# CONFIG_DEBUG_VM is not set 1195# CONFIG_DEBUG_VM is not set
1196CONFIG_FORCED_INLINING=y
1172# CONFIG_RCU_TORTURE_TEST is not set 1197# CONFIG_RCU_TORTURE_TEST is not set
1173CONFIG_IA64_GRANULE_16MB=y 1198CONFIG_IA64_GRANULE_16MB=y
1174# CONFIG_IA64_GRANULE_64MB is not set 1199# CONFIG_IA64_GRANULE_64MB is not set
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig
index 53899dc8eb53..949dc4670a0c 100644
--- a/arch/ia64/configs/zx1_defconfig
+++ b/arch/ia64/configs/zx1_defconfig
@@ -1,16 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc1 3# Linux kernel version: 2.6.16-rc5
4# Wed Sep 14 15:15:01 2005 4# Mon Feb 27 15:55:36 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11# CONFIG_CLEAN_COMPILE is not set
12CONFIG_BROKEN=y
13CONFIG_BROKEN_ON_SMP=y
14CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
15CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
16 13
@@ -26,17 +23,18 @@ CONFIG_BSD_PROCESS_ACCT=y
26# CONFIG_BSD_PROCESS_ACCT_V3 is not set 23# CONFIG_BSD_PROCESS_ACCT_V3 is not set
27CONFIG_SYSCTL=y 24CONFIG_SYSCTL=y
28# CONFIG_AUDIT is not set 25# CONFIG_AUDIT is not set
29CONFIG_HOTPLUG=y
30CONFIG_KOBJECT_UEVENT=y
31# CONFIG_IKCONFIG is not set 26# CONFIG_IKCONFIG is not set
32# CONFIG_CPUSETS is not set 27# CONFIG_CPUSETS is not set
33CONFIG_INITRAMFS_SOURCE="" 28CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y
34# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
35CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
36# CONFIG_KALLSYMS_ALL is not set 32# CONFIG_KALLSYMS_ALL is not set
37# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 35CONFIG_PRINTK=y
39CONFIG_BUG=y 36CONFIG_BUG=y
37CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 38CONFIG_BASE_FULL=y
41CONFIG_FUTEX=y 39CONFIG_FUTEX=y
42CONFIG_EPOLL=y 40CONFIG_EPOLL=y
@@ -45,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
45CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
46CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
47CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y
48# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
49CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set
50 50
51# 51#
52# Loadable module support 52# Loadable module support
@@ -59,17 +59,36 @@ CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_KMOD is not set 59# CONFIG_KMOD is not set
60 60
61# 61#
62# Block layer
63#
64
65#
66# IO Schedulers
67#
68CONFIG_IOSCHED_NOOP=y
69CONFIG_IOSCHED_AS=y
70CONFIG_IOSCHED_DEADLINE=y
71CONFIG_IOSCHED_CFQ=y
72CONFIG_DEFAULT_AS=y
73# CONFIG_DEFAULT_DEADLINE is not set
74# CONFIG_DEFAULT_CFQ is not set
75# CONFIG_DEFAULT_NOOP is not set
76CONFIG_DEFAULT_IOSCHED="anticipatory"
77
78#
62# Processor type and features 79# Processor type and features
63# 80#
64CONFIG_IA64=y 81CONFIG_IA64=y
65CONFIG_64BIT=y 82CONFIG_64BIT=y
66CONFIG_MMU=y 83CONFIG_MMU=y
84CONFIG_SWIOTLB=y
67CONFIG_RWSEM_XCHGADD_ALGORITHM=y 85CONFIG_RWSEM_XCHGADD_ALGORITHM=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 86CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_TIME_INTERPOLATION=y 87CONFIG_TIME_INTERPOLATION=y
70CONFIG_EFI=y 88CONFIG_EFI=y
71CONFIG_GENERIC_IOMAP=y 89CONFIG_GENERIC_IOMAP=y
72CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 90CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
91CONFIG_DMA_IS_DMA32=y
73# CONFIG_IA64_GENERIC is not set 92# CONFIG_IA64_GENERIC is not set
74# CONFIG_IA64_DIG is not set 93# CONFIG_IA64_DIG is not set
75CONFIG_IA64_HP_ZX1=y 94CONFIG_IA64_HP_ZX1=y
@@ -82,18 +101,16 @@ CONFIG_MCKINLEY=y
82# CONFIG_IA64_PAGE_SIZE_8KB is not set 101# CONFIG_IA64_PAGE_SIZE_8KB is not set
83CONFIG_IA64_PAGE_SIZE_16KB=y 102CONFIG_IA64_PAGE_SIZE_16KB=y
84# CONFIG_IA64_PAGE_SIZE_64KB is not set 103# CONFIG_IA64_PAGE_SIZE_64KB is not set
104CONFIG_PGTABLE_3=y
105# CONFIG_PGTABLE_4 is not set
85# CONFIG_HZ_100 is not set 106# CONFIG_HZ_100 is not set
86CONFIG_HZ_250=y 107CONFIG_HZ_250=y
87# CONFIG_HZ_1000 is not set 108# CONFIG_HZ_1000 is not set
88CONFIG_HZ=250 109CONFIG_HZ=250
89CONFIG_IA64_L1_CACHE_SHIFT=7 110CONFIG_IA64_L1_CACHE_SHIFT=7
90# CONFIG_NUMA is not set
91CONFIG_VIRTUAL_MEM_MAP=y
92CONFIG_HOLES_IN_ZONE=y
93# CONFIG_IA64_CYCLONE is not set 111# CONFIG_IA64_CYCLONE is not set
94CONFIG_IOSAPIC=y 112CONFIG_IOSAPIC=y
95# CONFIG_IA64_SGI_SN_XP is not set 113CONFIG_FORCE_MAX_ZONEORDER=17
96CONFIG_FORCE_MAX_ZONEORDER=18
97CONFIG_SMP=y 114CONFIG_SMP=y
98CONFIG_NR_CPUS=16 115CONFIG_NR_CPUS=16
99# CONFIG_HOTPLUG_CPU is not set 116# CONFIG_HOTPLUG_CPU is not set
@@ -106,7 +123,14 @@ CONFIG_FLATMEM_MANUAL=y
106CONFIG_FLATMEM=y 123CONFIG_FLATMEM=y
107CONFIG_FLAT_NODE_MEM_MAP=y 124CONFIG_FLAT_NODE_MEM_MAP=y
108# CONFIG_SPARSEMEM_STATIC is not set 125# CONFIG_SPARSEMEM_STATIC is not set
109CONFIG_HAVE_DEC_LOCK=y 126CONFIG_SPLIT_PTLOCK_CPUS=4
127CONFIG_ARCH_SELECT_MEMORY_MODEL=y
128CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
129CONFIG_ARCH_FLATMEM_ENABLE=y
130CONFIG_ARCH_SPARSEMEM_ENABLE=y
131CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
132CONFIG_VIRTUAL_MEM_MAP=y
133CONFIG_HOLES_IN_ZONE=y
110CONFIG_IA32_SUPPORT=y 134CONFIG_IA32_SUPPORT=y
111CONFIG_COMPAT=y 135CONFIG_COMPAT=y
112CONFIG_IA64_MCA_RECOVERY=y 136CONFIG_IA64_MCA_RECOVERY=y
@@ -118,7 +142,6 @@ CONFIG_IA64_PALINFO=y
118# 142#
119CONFIG_EFI_VARS=y 143CONFIG_EFI_VARS=y
120CONFIG_EFI_PCDP=y 144CONFIG_EFI_PCDP=y
121# CONFIG_DELL_RBU is not set
122CONFIG_BINFMT_ELF=y 145CONFIG_BINFMT_ELF=y
123CONFIG_BINFMT_MISC=y 146CONFIG_BINFMT_MISC=y
124 147
@@ -126,6 +149,7 @@ CONFIG_BINFMT_MISC=y
126# Power management and ACPI 149# Power management and ACPI
127# 150#
128CONFIG_PM=y 151CONFIG_PM=y
152CONFIG_PM_LEGACY=y
129# CONFIG_PM_DEBUG is not set 153# CONFIG_PM_DEBUG is not set
130 154
131# 155#
@@ -138,6 +162,7 @@ CONFIG_ACPI_PROCESSOR=y
138CONFIG_ACPI_THERMAL=y 162CONFIG_ACPI_THERMAL=y
139CONFIG_ACPI_BLACKLIST_YEAR=0 163CONFIG_ACPI_BLACKLIST_YEAR=0
140# CONFIG_ACPI_DEBUG is not set 164# CONFIG_ACPI_DEBUG is not set
165CONFIG_ACPI_EC=y
141CONFIG_ACPI_POWER=y 166CONFIG_ACPI_POWER=y
142CONFIG_ACPI_SYSTEM=y 167CONFIG_ACPI_SYSTEM=y
143# CONFIG_ACPI_CONTAINER is not set 168# CONFIG_ACPI_CONTAINER is not set
@@ -179,6 +204,7 @@ CONFIG_NET=y
179# 204#
180# Networking options 205# Networking options
181# 206#
207# CONFIG_NETDEBUG is not set
182CONFIG_PACKET=y 208CONFIG_PACKET=y
183# CONFIG_PACKET_MMAP is not set 209# CONFIG_PACKET_MMAP is not set
184CONFIG_UNIX=y 210CONFIG_UNIX=y
@@ -211,14 +237,17 @@ CONFIG_NETFILTER=y
211# CONFIG_NETFILTER_DEBUG is not set 237# CONFIG_NETFILTER_DEBUG is not set
212 238
213# 239#
240# Core Netfilter Configuration
241#
242# CONFIG_NETFILTER_NETLINK is not set
243# CONFIG_NF_CONNTRACK is not set
244# CONFIG_NETFILTER_XTABLES is not set
245
246#
214# IP: Netfilter Configuration 247# IP: Netfilter Configuration
215# 248#
216# CONFIG_IP_NF_CONNTRACK is not set 249# CONFIG_IP_NF_CONNTRACK is not set
217# CONFIG_IP_NF_QUEUE is not set 250# CONFIG_IP_NF_QUEUE is not set
218# CONFIG_IP_NF_IPTABLES is not set
219CONFIG_IP_NF_ARPTABLES=y
220# CONFIG_IP_NF_ARPFILTER is not set
221# CONFIG_IP_NF_ARP_MANGLE is not set
222 251
223# 252#
224# DCCP Configuration (EXPERIMENTAL) 253# DCCP Configuration (EXPERIMENTAL)
@@ -229,6 +258,11 @@ CONFIG_IP_NF_ARPTABLES=y
229# SCTP Configuration (EXPERIMENTAL) 258# SCTP Configuration (EXPERIMENTAL)
230# 259#
231# CONFIG_IP_SCTP is not set 260# CONFIG_IP_SCTP is not set
261
262#
263# TIPC Configuration (EXPERIMENTAL)
264#
265# CONFIG_TIPC is not set
232# CONFIG_ATM is not set 266# CONFIG_ATM is not set
233# CONFIG_BRIDGE is not set 267# CONFIG_BRIDGE is not set
234# CONFIG_VLAN_8021Q is not set 268# CONFIG_VLAN_8021Q is not set
@@ -241,14 +275,16 @@ CONFIG_IP_NF_ARPTABLES=y
241# CONFIG_NET_DIVERT is not set 275# CONFIG_NET_DIVERT is not set
242# CONFIG_ECONET is not set 276# CONFIG_ECONET is not set
243# CONFIG_WAN_ROUTER is not set 277# CONFIG_WAN_ROUTER is not set
278
279#
280# QoS and/or fair queueing
281#
244# CONFIG_NET_SCHED is not set 282# CONFIG_NET_SCHED is not set
245# CONFIG_NET_CLS_ROUTE is not set
246 283
247# 284#
248# Network testing 285# Network testing
249# 286#
250# CONFIG_NET_PKTGEN is not set 287# CONFIG_NET_PKTGEN is not set
251# CONFIG_NETFILTER_NETLINK is not set
252# CONFIG_HAMRADIO is not set 288# CONFIG_HAMRADIO is not set
253# CONFIG_IRDA is not set 289# CONFIG_IRDA is not set
254# CONFIG_BT is not set 290# CONFIG_BT is not set
@@ -310,20 +346,13 @@ CONFIG_BLK_DEV_RAM_COUNT=16
310CONFIG_BLK_DEV_RAM_SIZE=4096 346CONFIG_BLK_DEV_RAM_SIZE=4096
311CONFIG_BLK_DEV_INITRD=y 347CONFIG_BLK_DEV_INITRD=y
312# CONFIG_CDROM_PKTCDVD is not set 348# CONFIG_CDROM_PKTCDVD is not set
313
314#
315# IO Schedulers
316#
317CONFIG_IOSCHED_NOOP=y
318CONFIG_IOSCHED_AS=y
319CONFIG_IOSCHED_DEADLINE=y
320CONFIG_IOSCHED_CFQ=y
321# CONFIG_ATA_OVER_ETH is not set 349# CONFIG_ATA_OVER_ETH is not set
322 350
323# 351#
324# ATA/ATAPI/MFM/RLL support 352# ATA/ATAPI/MFM/RLL support
325# 353#
326CONFIG_IDE=y 354CONFIG_IDE=y
355CONFIG_IDE_MAX_HWIFS=4
327CONFIG_BLK_DEV_IDE=y 356CONFIG_BLK_DEV_IDE=y
328 357
329# 358#
@@ -407,13 +436,14 @@ CONFIG_SCSI_LOGGING=y
407# SCSI Transport Attributes 436# SCSI Transport Attributes
408# 437#
409CONFIG_SCSI_SPI_ATTRS=y 438CONFIG_SCSI_SPI_ATTRS=y
410# CONFIG_SCSI_FC_ATTRS is not set 439CONFIG_SCSI_FC_ATTRS=y
411# CONFIG_SCSI_ISCSI_ATTRS is not set 440# CONFIG_SCSI_ISCSI_ATTRS is not set
412# CONFIG_SCSI_SAS_ATTRS is not set 441# CONFIG_SCSI_SAS_ATTRS is not set
413 442
414# 443#
415# SCSI low-level drivers 444# SCSI low-level drivers
416# 445#
446# CONFIG_ISCSI_TCP is not set
417# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 447# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
418# CONFIG_SCSI_3W_9XXX is not set 448# CONFIG_SCSI_3W_9XXX is not set
419# CONFIG_SCSI_ACARD is not set 449# CONFIG_SCSI_ACARD is not set
@@ -421,13 +451,11 @@ CONFIG_SCSI_SPI_ATTRS=y
421# CONFIG_SCSI_AIC7XXX is not set 451# CONFIG_SCSI_AIC7XXX is not set
422# CONFIG_SCSI_AIC7XXX_OLD is not set 452# CONFIG_SCSI_AIC7XXX_OLD is not set
423# CONFIG_SCSI_AIC79XX is not set 453# CONFIG_SCSI_AIC79XX is not set
424# CONFIG_SCSI_ADVANSYS is not set
425# CONFIG_MEGARAID_NEWGEN is not set 454# CONFIG_MEGARAID_NEWGEN is not set
426# CONFIG_MEGARAID_LEGACY is not set 455# CONFIG_MEGARAID_LEGACY is not set
456# CONFIG_MEGARAID_SAS is not set
427# CONFIG_SCSI_SATA is not set 457# CONFIG_SCSI_SATA is not set
428# CONFIG_SCSI_CPQFCTS is not set
429# CONFIG_SCSI_DMX3191D is not set 458# CONFIG_SCSI_DMX3191D is not set
430# CONFIG_SCSI_EATA_PIO is not set
431# CONFIG_SCSI_FUTURE_DOMAIN is not set 459# CONFIG_SCSI_FUTURE_DOMAIN is not set
432# CONFIG_SCSI_IPS is not set 460# CONFIG_SCSI_IPS is not set
433# CONFIG_SCSI_INITIO is not set 461# CONFIG_SCSI_INITIO is not set
@@ -438,17 +466,9 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
438CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 466CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
439# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 467# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
440# CONFIG_SCSI_IPR is not set 468# CONFIG_SCSI_IPR is not set
441# CONFIG_SCSI_QLOGIC_ISP is not set
442# CONFIG_SCSI_QLOGIC_FC is not set 469# CONFIG_SCSI_QLOGIC_FC is not set
443CONFIG_SCSI_QLOGIC_1280=y 470CONFIG_SCSI_QLOGIC_1280=y
444# CONFIG_SCSI_QLOGIC_1280_1040 is not set 471# CONFIG_SCSI_QLA_FC is not set
445CONFIG_SCSI_QLA2XXX=y
446# CONFIG_SCSI_QLA21XX is not set
447# CONFIG_SCSI_QLA22XX is not set
448# CONFIG_SCSI_QLA2300 is not set
449# CONFIG_SCSI_QLA2322 is not set
450# CONFIG_SCSI_QLA6312 is not set
451# CONFIG_SCSI_QLA24XX is not set
452# CONFIG_SCSI_LPFC is not set 472# CONFIG_SCSI_LPFC is not set
453# CONFIG_SCSI_DC395x is not set 473# CONFIG_SCSI_DC395x is not set
454# CONFIG_SCSI_DC390T is not set 474# CONFIG_SCSI_DC390T is not set
@@ -465,6 +485,7 @@ CONFIG_SCSI_QLA2XXX=y
465CONFIG_FUSION=y 485CONFIG_FUSION=y
466CONFIG_FUSION_SPI=y 486CONFIG_FUSION_SPI=y
467CONFIG_FUSION_FC=y 487CONFIG_FUSION_FC=y
488# CONFIG_FUSION_SAS is not set
468CONFIG_FUSION_MAX_SGE=128 489CONFIG_FUSION_MAX_SGE=128
469CONFIG_FUSION_CTL=m 490CONFIG_FUSION_CTL=m
470 491
@@ -505,6 +526,7 @@ CONFIG_NET_ETHERNET=y
505CONFIG_MII=y 526CONFIG_MII=y
506# CONFIG_HAPPYMEAL is not set 527# CONFIG_HAPPYMEAL is not set
507# CONFIG_SUNGEM is not set 528# CONFIG_SUNGEM is not set
529# CONFIG_CASSINI is not set
508# CONFIG_NET_VENDOR_3COM is not set 530# CONFIG_NET_VENDOR_3COM is not set
509 531
510# 532#
@@ -555,6 +577,7 @@ CONFIG_E1000=y
555# CONFIG_R8169 is not set 577# CONFIG_R8169 is not set
556# CONFIG_SIS190 is not set 578# CONFIG_SIS190 is not set
557# CONFIG_SKGE is not set 579# CONFIG_SKGE is not set
580# CONFIG_SKY2 is not set
558# CONFIG_SK98LIN is not set 581# CONFIG_SK98LIN is not set
559# CONFIG_VIA_VELOCITY is not set 582# CONFIG_VIA_VELOCITY is not set
560CONFIG_TIGON3=y 583CONFIG_TIGON3=y
@@ -652,6 +675,7 @@ CONFIG_SERIAL_8250=y
652CONFIG_SERIAL_8250_CONSOLE=y 675CONFIG_SERIAL_8250_CONSOLE=y
653CONFIG_SERIAL_8250_ACPI=y 676CONFIG_SERIAL_8250_ACPI=y
654CONFIG_SERIAL_8250_NR_UARTS=8 677CONFIG_SERIAL_8250_NR_UARTS=8
678CONFIG_SERIAL_8250_RUNTIME_UARTS=4
655CONFIG_SERIAL_8250_EXTENDED=y 679CONFIG_SERIAL_8250_EXTENDED=y
656CONFIG_SERIAL_8250_SHARE_IRQ=y 680CONFIG_SERIAL_8250_SHARE_IRQ=y
657# CONFIG_SERIAL_8250_DETECT_IRQ is not set 681# CONFIG_SERIAL_8250_DETECT_IRQ is not set
@@ -703,6 +727,7 @@ CONFIG_DRM_RADEON=y
703# TPM devices 727# TPM devices
704# 728#
705# CONFIG_TCG_TPM is not set 729# CONFIG_TCG_TPM is not set
730# CONFIG_TELCLOCK is not set
706 731
707# 732#
708# I2C support 733# I2C support
@@ -753,12 +778,19 @@ CONFIG_I2C_ALGOPCF=y
753# CONFIG_SENSORS_PCF8591 is not set 778# CONFIG_SENSORS_PCF8591 is not set
754# CONFIG_SENSORS_RTC8564 is not set 779# CONFIG_SENSORS_RTC8564 is not set
755# CONFIG_SENSORS_MAX6875 is not set 780# CONFIG_SENSORS_MAX6875 is not set
781# CONFIG_RTC_X1205_I2C is not set
756# CONFIG_I2C_DEBUG_CORE is not set 782# CONFIG_I2C_DEBUG_CORE is not set
757# CONFIG_I2C_DEBUG_ALGO is not set 783# CONFIG_I2C_DEBUG_ALGO is not set
758# CONFIG_I2C_DEBUG_BUS is not set 784# CONFIG_I2C_DEBUG_BUS is not set
759# CONFIG_I2C_DEBUG_CHIP is not set 785# CONFIG_I2C_DEBUG_CHIP is not set
760 786
761# 787#
788# SPI support
789#
790# CONFIG_SPI is not set
791# CONFIG_SPI_MASTER is not set
792
793#
762# Dallas's 1-wire bus 794# Dallas's 1-wire bus
763# 795#
764# CONFIG_W1 is not set 796# CONFIG_W1 is not set
@@ -789,6 +821,7 @@ CONFIG_VIDEO_DEV=y
789# 821#
790# Video Adapters 822# Video Adapters
791# 823#
824# CONFIG_VIDEO_ADV_DEBUG is not set
792# CONFIG_VIDEO_BT848 is not set 825# CONFIG_VIDEO_BT848 is not set
793# CONFIG_VIDEO_CPIA is not set 826# CONFIG_VIDEO_CPIA is not set
794# CONFIG_VIDEO_SAA5246A is not set 827# CONFIG_VIDEO_SAA5246A is not set
@@ -796,14 +829,16 @@ CONFIG_VIDEO_DEV=y
796# CONFIG_TUNER_3036 is not set 829# CONFIG_TUNER_3036 is not set
797# CONFIG_VIDEO_STRADIS is not set 830# CONFIG_VIDEO_STRADIS is not set
798# CONFIG_VIDEO_ZORAN is not set 831# CONFIG_VIDEO_ZORAN is not set
799# CONFIG_VIDEO_ZR36120 is not set
800# CONFIG_VIDEO_SAA7134 is not set 832# CONFIG_VIDEO_SAA7134 is not set
801# CONFIG_VIDEO_MXB is not set 833# CONFIG_VIDEO_MXB is not set
802# CONFIG_VIDEO_DPC is not set 834# CONFIG_VIDEO_DPC is not set
803# CONFIG_VIDEO_HEXIUM_ORION is not set 835# CONFIG_VIDEO_HEXIUM_ORION is not set
804# CONFIG_VIDEO_HEXIUM_GEMINI is not set 836# CONFIG_VIDEO_HEXIUM_GEMINI is not set
805# CONFIG_VIDEO_CX88 is not set 837# CONFIG_VIDEO_CX88 is not set
838# CONFIG_VIDEO_EM28XX is not set
806# CONFIG_VIDEO_OVCAMCHIP is not set 839# CONFIG_VIDEO_OVCAMCHIP is not set
840# CONFIG_VIDEO_AUDIO_DECODER is not set
841# CONFIG_VIDEO_DECODER is not set
807 842
808# 843#
809# Radio Adapters 844# Radio Adapters
@@ -824,7 +859,6 @@ CONFIG_FB=y
824CONFIG_FB_CFB_FILLRECT=y 859CONFIG_FB_CFB_FILLRECT=y
825CONFIG_FB_CFB_COPYAREA=y 860CONFIG_FB_CFB_COPYAREA=y
826CONFIG_FB_CFB_IMAGEBLIT=y 861CONFIG_FB_CFB_IMAGEBLIT=y
827CONFIG_FB_SOFT_CURSOR=y
828# CONFIG_FB_MACMODES is not set 862# CONFIG_FB_MACMODES is not set
829CONFIG_FB_MODE_HELPERS=y 863CONFIG_FB_MODE_HELPERS=y
830# CONFIG_FB_TILEBLITTING is not set 864# CONFIG_FB_TILEBLITTING is not set
@@ -833,6 +867,7 @@ CONFIG_FB_MODE_HELPERS=y
833# CONFIG_FB_CYBER2000 is not set 867# CONFIG_FB_CYBER2000 is not set
834# CONFIG_FB_ASILIANT is not set 868# CONFIG_FB_ASILIANT is not set
835# CONFIG_FB_IMSTT is not set 869# CONFIG_FB_IMSTT is not set
870# CONFIG_FB_S1D13XXX is not set
836# CONFIG_FB_NVIDIA is not set 871# CONFIG_FB_NVIDIA is not set
837# CONFIG_FB_RIVA is not set 872# CONFIG_FB_RIVA is not set
838# CONFIG_FB_MATROX is not set 873# CONFIG_FB_MATROX is not set
@@ -848,10 +883,7 @@ CONFIG_FB_RADEON_DEBUG=y
848# CONFIG_FB_KYRO is not set 883# CONFIG_FB_KYRO is not set
849# CONFIG_FB_3DFX is not set 884# CONFIG_FB_3DFX is not set
850# CONFIG_FB_VOODOO1 is not set 885# CONFIG_FB_VOODOO1 is not set
851# CONFIG_FB_CYBLA is not set
852# CONFIG_FB_TRIDENT is not set 886# CONFIG_FB_TRIDENT is not set
853# CONFIG_FB_PM3 is not set
854# CONFIG_FB_S1D13XXX is not set
855# CONFIG_FB_VIRTUAL is not set 887# CONFIG_FB_VIRTUAL is not set
856 888
857# 889#
@@ -860,6 +892,7 @@ CONFIG_FB_RADEON_DEBUG=y
860CONFIG_VGA_CONSOLE=y 892CONFIG_VGA_CONSOLE=y
861CONFIG_DUMMY_CONSOLE=y 893CONFIG_DUMMY_CONSOLE=y
862CONFIG_FRAMEBUFFER_CONSOLE=y 894CONFIG_FRAMEBUFFER_CONSOLE=y
895# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
863# CONFIG_FONTS is not set 896# CONFIG_FONTS is not set
864CONFIG_FONT_8x8=y 897CONFIG_FONT_8x8=y
865CONFIG_FONT_8x16=y 898CONFIG_FONT_8x16=y
@@ -892,6 +925,8 @@ CONFIG_SND_OSSEMUL=y
892CONFIG_SND_MIXER_OSS=y 925CONFIG_SND_MIXER_OSS=y
893CONFIG_SND_PCM_OSS=y 926CONFIG_SND_PCM_OSS=y
894CONFIG_SND_SEQUENCER_OSS=y 927CONFIG_SND_SEQUENCER_OSS=y
928# CONFIG_SND_DYNAMIC_MINORS is not set
929CONFIG_SND_SUPPORT_OLD_API=y
895# CONFIG_SND_VERBOSE_PRINTK is not set 930# CONFIG_SND_VERBOSE_PRINTK is not set
896# CONFIG_SND_DEBUG is not set 931# CONFIG_SND_DEBUG is not set
897 932
@@ -900,17 +935,18 @@ CONFIG_SND_SEQUENCER_OSS=y
900# 935#
901CONFIG_SND_MPU401_UART=y 936CONFIG_SND_MPU401_UART=y
902CONFIG_SND_OPL3_LIB=y 937CONFIG_SND_OPL3_LIB=y
938CONFIG_SND_AC97_CODEC=y
939CONFIG_SND_AC97_BUS=y
903# CONFIG_SND_DUMMY is not set 940# CONFIG_SND_DUMMY is not set
904# CONFIG_SND_VIRMIDI is not set 941# CONFIG_SND_VIRMIDI is not set
905# CONFIG_SND_MTPAV is not set 942# CONFIG_SND_MTPAV is not set
906# CONFIG_SND_SERIAL_U16550 is not set 943# CONFIG_SND_SERIAL_U16550 is not set
907# CONFIG_SND_MPU401 is not set 944# CONFIG_SND_MPU401 is not set
908CONFIG_SND_AC97_CODEC=y
909CONFIG_SND_AC97_BUS=y
910 945
911# 946#
912# PCI devices 947# PCI devices
913# 948#
949# CONFIG_SND_AD1889 is not set
914# CONFIG_SND_ALI5451 is not set 950# CONFIG_SND_ALI5451 is not set
915# CONFIG_SND_ATIIXP is not set 951# CONFIG_SND_ATIIXP is not set
916# CONFIG_SND_ATIIXP_MODEM is not set 952# CONFIG_SND_ATIIXP_MODEM is not set
@@ -919,39 +955,39 @@ CONFIG_SND_AC97_BUS=y
919# CONFIG_SND_AU8830 is not set 955# CONFIG_SND_AU8830 is not set
920# CONFIG_SND_AZT3328 is not set 956# CONFIG_SND_AZT3328 is not set
921# CONFIG_SND_BT87X is not set 957# CONFIG_SND_BT87X is not set
922# CONFIG_SND_CS46XX is not set 958# CONFIG_SND_CA0106 is not set
959# CONFIG_SND_CMIPCI is not set
923# CONFIG_SND_CS4281 is not set 960# CONFIG_SND_CS4281 is not set
961# CONFIG_SND_CS46XX is not set
924# CONFIG_SND_EMU10K1 is not set 962# CONFIG_SND_EMU10K1 is not set
925# CONFIG_SND_EMU10K1X is not set 963# CONFIG_SND_EMU10K1X is not set
926# CONFIG_SND_CA0106 is not set
927# CONFIG_SND_KORG1212 is not set
928# CONFIG_SND_MIXART is not set
929# CONFIG_SND_NM256 is not set
930# CONFIG_SND_RME32 is not set
931# CONFIG_SND_RME96 is not set
932# CONFIG_SND_RME9652 is not set
933# CONFIG_SND_HDSP is not set
934# CONFIG_SND_HDSPM is not set
935# CONFIG_SND_TRIDENT is not set
936# CONFIG_SND_YMFPCI is not set
937# CONFIG_SND_AD1889 is not set
938# CONFIG_SND_CMIPCI is not set
939# CONFIG_SND_ENS1370 is not set 964# CONFIG_SND_ENS1370 is not set
940# CONFIG_SND_ENS1371 is not set 965# CONFIG_SND_ENS1371 is not set
941# CONFIG_SND_ES1938 is not set 966# CONFIG_SND_ES1938 is not set
942# CONFIG_SND_ES1968 is not set 967# CONFIG_SND_ES1968 is not set
943# CONFIG_SND_MAESTRO3 is not set
944CONFIG_SND_FM801=y 968CONFIG_SND_FM801=y
945CONFIG_SND_FM801_TEA575X=y 969CONFIG_SND_FM801_TEA575X=y
970# CONFIG_SND_HDA_INTEL is not set
971# CONFIG_SND_HDSP is not set
972# CONFIG_SND_HDSPM is not set
946# CONFIG_SND_ICE1712 is not set 973# CONFIG_SND_ICE1712 is not set
947# CONFIG_SND_ICE1724 is not set 974# CONFIG_SND_ICE1724 is not set
948# CONFIG_SND_INTEL8X0 is not set 975# CONFIG_SND_INTEL8X0 is not set
949# CONFIG_SND_INTEL8X0M is not set 976# CONFIG_SND_INTEL8X0M is not set
977# CONFIG_SND_KORG1212 is not set
978# CONFIG_SND_MAESTRO3 is not set
979# CONFIG_SND_MIXART is not set
980# CONFIG_SND_NM256 is not set
981# CONFIG_SND_PCXHR is not set
982# CONFIG_SND_RME32 is not set
983# CONFIG_SND_RME96 is not set
984# CONFIG_SND_RME9652 is not set
950# CONFIG_SND_SONICVIBES is not set 985# CONFIG_SND_SONICVIBES is not set
986# CONFIG_SND_TRIDENT is not set
951# CONFIG_SND_VIA82XX is not set 987# CONFIG_SND_VIA82XX is not set
952# CONFIG_SND_VIA82XX_MODEM is not set 988# CONFIG_SND_VIA82XX_MODEM is not set
953# CONFIG_SND_VX222 is not set 989# CONFIG_SND_VX222 is not set
954# CONFIG_SND_HDA_INTEL is not set 990# CONFIG_SND_YMFPCI is not set
955 991
956# 992#
957# USB devices 993# USB devices
@@ -997,12 +1033,15 @@ CONFIG_USB_UHCI_HCD=y
997# USB Device Class drivers 1033# USB Device Class drivers
998# 1034#
999# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set 1035# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
1000# CONFIG_USB_BLUETOOTH_TTY is not set
1001# CONFIG_USB_ACM is not set 1036# CONFIG_USB_ACM is not set
1002# CONFIG_USB_PRINTER is not set 1037# CONFIG_USB_PRINTER is not set
1003 1038
1004# 1039#
1005# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 1040# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
1041#
1042
1043#
1044# may also be needed; see USB_STORAGE Help for more information
1006# 1045#
1007CONFIG_USB_STORAGE=y 1046CONFIG_USB_STORAGE=y
1008# CONFIG_USB_STORAGE_DEBUG is not set 1047# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1014,13 +1053,15 @@ CONFIG_USB_STORAGE=y
1014# CONFIG_USB_STORAGE_SDDR09 is not set 1053# CONFIG_USB_STORAGE_SDDR09 is not set
1015# CONFIG_USB_STORAGE_SDDR55 is not set 1054# CONFIG_USB_STORAGE_SDDR55 is not set
1016# CONFIG_USB_STORAGE_JUMPSHOT is not set 1055# CONFIG_USB_STORAGE_JUMPSHOT is not set
1017# CONFIG_USB_STORAGE_ONETOUCH is not set 1056# CONFIG_USB_STORAGE_ALAUDA is not set
1057# CONFIG_USB_LIBUSUAL is not set
1018 1058
1019# 1059#
1020# USB Input Devices 1060# USB Input Devices
1021# 1061#
1022CONFIG_USB_HID=y 1062CONFIG_USB_HID=y
1023CONFIG_USB_HIDINPUT=y 1063CONFIG_USB_HIDINPUT=y
1064# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1024# CONFIG_HID_FF is not set 1065# CONFIG_HID_FF is not set
1025CONFIG_USB_HIDDEV=y 1066CONFIG_USB_HIDDEV=y
1026# CONFIG_USB_AIPTEK is not set 1067# CONFIG_USB_AIPTEK is not set
@@ -1034,6 +1075,7 @@ CONFIG_USB_HIDDEV=y
1034# CONFIG_USB_YEALINK is not set 1075# CONFIG_USB_YEALINK is not set
1035# CONFIG_USB_XPAD is not set 1076# CONFIG_USB_XPAD is not set
1036# CONFIG_USB_ATI_REMOTE is not set 1077# CONFIG_USB_ATI_REMOTE is not set
1078# CONFIG_USB_ATI_REMOTE2 is not set
1037# CONFIG_USB_KEYSPAN_REMOTE is not set 1079# CONFIG_USB_KEYSPAN_REMOTE is not set
1038# CONFIG_USB_APPLETOUCH is not set 1080# CONFIG_USB_APPLETOUCH is not set
1039 1081
@@ -1049,6 +1091,7 @@ CONFIG_USB_HIDDEV=y
1049# CONFIG_USB_DABUSB is not set 1091# CONFIG_USB_DABUSB is not set
1050# CONFIG_USB_VICAM is not set 1092# CONFIG_USB_VICAM is not set
1051# CONFIG_USB_DSBR is not set 1093# CONFIG_USB_DSBR is not set
1094# CONFIG_USB_ET61X251 is not set
1052# CONFIG_USB_IBMCAM is not set 1095# CONFIG_USB_IBMCAM is not set
1053# CONFIG_USB_KONICAWC is not set 1096# CONFIG_USB_KONICAWC is not set
1054# CONFIG_USB_OV511 is not set 1097# CONFIG_USB_OV511 is not set
@@ -1113,7 +1156,7 @@ CONFIG_USB_MON=y
1113# CONFIG_INFINIBAND is not set 1156# CONFIG_INFINIBAND is not set
1114 1157
1115# 1158#
1116# SN Devices 1159# EDAC - error detection and reporting (RAS)
1117# 1160#
1118 1161
1119# 1162#
@@ -1135,6 +1178,7 @@ CONFIG_FS_MBCACHE=y
1135# CONFIG_JFS_FS is not set 1178# CONFIG_JFS_FS is not set
1136# CONFIG_FS_POSIX_ACL is not set 1179# CONFIG_FS_POSIX_ACL is not set
1137# CONFIG_XFS_FS is not set 1180# CONFIG_XFS_FS is not set
1181# CONFIG_OCFS2_FS is not set
1138# CONFIG_MINIX_FS is not set 1182# CONFIG_MINIX_FS is not set
1139# CONFIG_ROMFS_FS is not set 1183# CONFIG_ROMFS_FS is not set
1140# CONFIG_INOTIFY is not set 1184# CONFIG_INOTIFY is not set
@@ -1174,6 +1218,7 @@ CONFIG_HUGETLBFS=y
1174CONFIG_HUGETLB_PAGE=y 1218CONFIG_HUGETLB_PAGE=y
1175CONFIG_RAMFS=y 1219CONFIG_RAMFS=y
1176# CONFIG_RELAYFS_FS is not set 1220# CONFIG_RELAYFS_FS is not set
1221# CONFIG_CONFIGFS_FS is not set
1177 1222
1178# 1223#
1179# Miscellaneous filesystems 1224# Miscellaneous filesystems
@@ -1238,6 +1283,7 @@ CONFIG_MSDOS_PARTITION=y
1238# CONFIG_SGI_PARTITION is not set 1283# CONFIG_SGI_PARTITION is not set
1239# CONFIG_ULTRIX_PARTITION is not set 1284# CONFIG_ULTRIX_PARTITION is not set
1240# CONFIG_SUN_PARTITION is not set 1285# CONFIG_SUN_PARTITION is not set
1286# CONFIG_KARMA_PARTITION is not set
1241CONFIG_EFI_PARTITION=y 1287CONFIG_EFI_PARTITION=y
1242 1288
1243# 1289#
@@ -1296,26 +1342,30 @@ CONFIG_GENERIC_IRQ_PROBE=y
1296CONFIG_GENERIC_PENDING_IRQ=y 1342CONFIG_GENERIC_PENDING_IRQ=y
1297 1343
1298# 1344#
1299# Profiling support 1345# Instrumentation Support
1300# 1346#
1301# CONFIG_PROFILING is not set 1347# CONFIG_PROFILING is not set
1348CONFIG_KPROBES=y
1302 1349
1303# 1350#
1304# Kernel hacking 1351# Kernel hacking
1305# 1352#
1306# CONFIG_PRINTK_TIME is not set 1353# CONFIG_PRINTK_TIME is not set
1307CONFIG_DEBUG_KERNEL=y
1308CONFIG_MAGIC_SYSRQ=y 1354CONFIG_MAGIC_SYSRQ=y
1355CONFIG_DEBUG_KERNEL=y
1309CONFIG_LOG_BUF_SHIFT=17 1356CONFIG_LOG_BUF_SHIFT=17
1310CONFIG_DETECT_SOFTLOCKUP=y 1357CONFIG_DETECT_SOFTLOCKUP=y
1311# CONFIG_SCHEDSTATS is not set 1358# CONFIG_SCHEDSTATS is not set
1312# CONFIG_DEBUG_SLAB is not set 1359# CONFIG_DEBUG_SLAB is not set
1360CONFIG_DEBUG_MUTEXES=y
1313# CONFIG_DEBUG_SPINLOCK is not set 1361# CONFIG_DEBUG_SPINLOCK is not set
1314# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1362# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1315# CONFIG_DEBUG_KOBJECT is not set 1363# CONFIG_DEBUG_KOBJECT is not set
1316# CONFIG_DEBUG_INFO is not set 1364# CONFIG_DEBUG_INFO is not set
1317# CONFIG_DEBUG_FS is not set 1365# CONFIG_DEBUG_FS is not set
1318CONFIG_KPROBES=y 1366# CONFIG_DEBUG_VM is not set
1367CONFIG_FORCED_INLINING=y
1368# CONFIG_RCU_TORTURE_TEST is not set
1319CONFIG_IA64_GRANULE_16MB=y 1369CONFIG_IA64_GRANULE_16MB=y
1320# CONFIG_IA64_GRANULE_64MB is not set 1370# CONFIG_IA64_GRANULE_64MB is not set
1321CONFIG_IA64_PRINT_HAZARDS=y 1371CONFIG_IA64_PRINT_HAZARDS=y
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig
index dcbc78a4cfa4..3e767288a745 100644
--- a/arch/ia64/defconfig
+++ b/arch/ia64/defconfig
@@ -1,14 +1,13 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc1 3# Linux kernel version: 2.6.16-rc5
4# Wed Sep 14 15:13:03 2005 4# Mon Feb 27 16:02:28 2006
5# 5#
6 6
7# 7#
8# Code maturity level options 8# Code maturity level options
9# 9#
10CONFIG_EXPERIMENTAL=y 10CONFIG_EXPERIMENTAL=y
11CONFIG_CLEAN_COMPILE=y
12CONFIG_LOCK_KERNEL=y 11CONFIG_LOCK_KERNEL=y
13CONFIG_INIT_ENV_ARG_LIMIT=32 12CONFIG_INIT_ENV_ARG_LIMIT=32
14 13
@@ -23,18 +22,19 @@ CONFIG_POSIX_MQUEUE=y
23# CONFIG_BSD_PROCESS_ACCT is not set 22# CONFIG_BSD_PROCESS_ACCT is not set
24CONFIG_SYSCTL=y 23CONFIG_SYSCTL=y
25# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
26CONFIG_HOTPLUG=y
27CONFIG_KOBJECT_UEVENT=y
28CONFIG_IKCONFIG=y 25CONFIG_IKCONFIG=y
29CONFIG_IKCONFIG_PROC=y 26CONFIG_IKCONFIG_PROC=y
30# CONFIG_CPUSETS is not set 27# CONFIG_CPUSETS is not set
31CONFIG_INITRAMFS_SOURCE="" 28CONFIG_INITRAMFS_SOURCE=""
29CONFIG_CC_OPTIMIZE_FOR_SIZE=y
32# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
33CONFIG_KALLSYMS=y 31CONFIG_KALLSYMS=y
34CONFIG_KALLSYMS_ALL=y 32CONFIG_KALLSYMS_ALL=y
35# CONFIG_KALLSYMS_EXTRA_PASS is not set 33# CONFIG_KALLSYMS_EXTRA_PASS is not set
34CONFIG_HOTPLUG=y
36CONFIG_PRINTK=y 35CONFIG_PRINTK=y
37CONFIG_BUG=y 36CONFIG_BUG=y
37CONFIG_ELF_CORE=y
38CONFIG_BASE_FULL=y 38CONFIG_BASE_FULL=y
39CONFIG_FUTEX=y 39CONFIG_FUTEX=y
40CONFIG_EPOLL=y 40CONFIG_EPOLL=y
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y
46# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set
48 50
49# 51#
50# Loadable module support 52# Loadable module support
@@ -59,17 +61,36 @@ CONFIG_KMOD=y
59CONFIG_STOP_MACHINE=y 61CONFIG_STOP_MACHINE=y
60 62
61# 63#
64# Block layer
65#
66
67#
68# IO Schedulers
69#
70CONFIG_IOSCHED_NOOP=y
71CONFIG_IOSCHED_AS=y
72CONFIG_IOSCHED_DEADLINE=y
73CONFIG_IOSCHED_CFQ=y
74CONFIG_DEFAULT_AS=y
75# CONFIG_DEFAULT_DEADLINE is not set
76# CONFIG_DEFAULT_CFQ is not set
77# CONFIG_DEFAULT_NOOP is not set
78CONFIG_DEFAULT_IOSCHED="anticipatory"
79
80#
62# Processor type and features 81# Processor type and features
63# 82#
64CONFIG_IA64=y 83CONFIG_IA64=y
65CONFIG_64BIT=y 84CONFIG_64BIT=y
66CONFIG_MMU=y 85CONFIG_MMU=y
86CONFIG_SWIOTLB=y
67CONFIG_RWSEM_XCHGADD_ALGORITHM=y 87CONFIG_RWSEM_XCHGADD_ALGORITHM=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 88CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_TIME_INTERPOLATION=y 89CONFIG_TIME_INTERPOLATION=y
70CONFIG_EFI=y 90CONFIG_EFI=y
71CONFIG_GENERIC_IOMAP=y 91CONFIG_GENERIC_IOMAP=y
72CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 92CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
93CONFIG_DMA_IS_DMA32=y
73CONFIG_IA64_GENERIC=y 94CONFIG_IA64_GENERIC=y
74# CONFIG_IA64_DIG is not set 95# CONFIG_IA64_DIG is not set
75# CONFIG_IA64_HP_ZX1 is not set 96# CONFIG_IA64_HP_ZX1 is not set
@@ -89,14 +110,10 @@ CONFIG_HZ_250=y
89# CONFIG_HZ_1000 is not set 110# CONFIG_HZ_1000 is not set
90CONFIG_HZ=250 111CONFIG_HZ=250
91CONFIG_IA64_L1_CACHE_SHIFT=7 112CONFIG_IA64_L1_CACHE_SHIFT=7
92CONFIG_NUMA=y
93CONFIG_VIRTUAL_MEM_MAP=y
94CONFIG_HOLES_IN_ZONE=y
95CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
96CONFIG_IA64_CYCLONE=y 113CONFIG_IA64_CYCLONE=y
97CONFIG_IOSAPIC=y 114CONFIG_IOSAPIC=y
98# CONFIG_IA64_SGI_SN_XP is not set 115# CONFIG_IA64_SGI_SN_XP is not set
99CONFIG_FORCE_MAX_ZONEORDER=18 116CONFIG_FORCE_MAX_ZONEORDER=17
100CONFIG_SMP=y 117CONFIG_SMP=y
101CONFIG_NR_CPUS=512 118CONFIG_NR_CPUS=512
102CONFIG_HOTPLUG_CPU=y 119CONFIG_HOTPLUG_CPU=y
@@ -110,19 +127,29 @@ CONFIG_DISCONTIGMEM=y
110CONFIG_FLAT_NODE_MEM_MAP=y 127CONFIG_FLAT_NODE_MEM_MAP=y
111CONFIG_NEED_MULTIPLE_NODES=y 128CONFIG_NEED_MULTIPLE_NODES=y
112# CONFIG_SPARSEMEM_STATIC is not set 129# CONFIG_SPARSEMEM_STATIC is not set
113CONFIG_HAVE_DEC_LOCK=y 130CONFIG_SPLIT_PTLOCK_CPUS=4
131CONFIG_MIGRATION=y
132CONFIG_ARCH_SELECT_MEMORY_MODEL=y
133CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
134CONFIG_ARCH_FLATMEM_ENABLE=y
135CONFIG_ARCH_SPARSEMEM_ENABLE=y
136CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
137CONFIG_NUMA=y
138CONFIG_VIRTUAL_MEM_MAP=y
139CONFIG_HOLES_IN_ZONE=y
140CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
114CONFIG_IA32_SUPPORT=y 141CONFIG_IA32_SUPPORT=y
115CONFIG_COMPAT=y 142CONFIG_COMPAT=y
116CONFIG_IA64_MCA_RECOVERY=y 143CONFIG_IA64_MCA_RECOVERY=y
117CONFIG_PERFMON=y 144CONFIG_PERFMON=y
118CONFIG_IA64_PALINFO=y 145CONFIG_IA64_PALINFO=y
146CONFIG_SGI_SN=y
119 147
120# 148#
121# Firmware Drivers 149# Firmware Drivers
122# 150#
123CONFIG_EFI_VARS=y 151CONFIG_EFI_VARS=y
124CONFIG_EFI_PCDP=y 152CONFIG_EFI_PCDP=y
125# CONFIG_DELL_RBU is not set
126CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
127CONFIG_BINFMT_MISC=m 154CONFIG_BINFMT_MISC=m
128 155
@@ -130,6 +157,7 @@ CONFIG_BINFMT_MISC=m
130# Power management and ACPI 157# Power management and ACPI
131# 158#
132CONFIG_PM=y 159CONFIG_PM=y
160CONFIG_PM_LEGACY=y
133# CONFIG_PM_DEBUG is not set 161# CONFIG_PM_DEBUG is not set
134 162
135# 163#
@@ -144,6 +172,7 @@ CONFIG_ACPI_THERMAL=m
144CONFIG_ACPI_NUMA=y 172CONFIG_ACPI_NUMA=y
145CONFIG_ACPI_BLACKLIST_YEAR=0 173CONFIG_ACPI_BLACKLIST_YEAR=0
146# CONFIG_ACPI_DEBUG is not set 174# CONFIG_ACPI_DEBUG is not set
175CONFIG_ACPI_EC=y
147CONFIG_ACPI_POWER=y 176CONFIG_ACPI_POWER=y
148CONFIG_ACPI_SYSTEM=y 177CONFIG_ACPI_SYSTEM=y
149CONFIG_ACPI_CONTAINER=m 178CONFIG_ACPI_CONTAINER=m
@@ -186,6 +215,7 @@ CONFIG_NET=y
186# 215#
187# Networking options 216# Networking options
188# 217#
218# CONFIG_NETDEBUG is not set
189CONFIG_PACKET=y 219CONFIG_PACKET=y
190# CONFIG_PACKET_MMAP is not set 220# CONFIG_PACKET_MMAP is not set
191CONFIG_UNIX=y 221CONFIG_UNIX=y
@@ -220,6 +250,11 @@ CONFIG_TCP_CONG_BIC=y
220# SCTP Configuration (EXPERIMENTAL) 250# SCTP Configuration (EXPERIMENTAL)
221# 251#
222# CONFIG_IP_SCTP is not set 252# CONFIG_IP_SCTP is not set
253
254#
255# TIPC Configuration (EXPERIMENTAL)
256#
257# CONFIG_TIPC is not set
223# CONFIG_ATM is not set 258# CONFIG_ATM is not set
224# CONFIG_BRIDGE is not set 259# CONFIG_BRIDGE is not set
225# CONFIG_VLAN_8021Q is not set 260# CONFIG_VLAN_8021Q is not set
@@ -232,14 +267,16 @@ CONFIG_TCP_CONG_BIC=y
232# CONFIG_NET_DIVERT is not set 267# CONFIG_NET_DIVERT is not set
233# CONFIG_ECONET is not set 268# CONFIG_ECONET is not set
234# CONFIG_WAN_ROUTER is not set 269# CONFIG_WAN_ROUTER is not set
270
271#
272# QoS and/or fair queueing
273#
235# CONFIG_NET_SCHED is not set 274# CONFIG_NET_SCHED is not set
236# CONFIG_NET_CLS_ROUTE is not set
237 275
238# 276#
239# Network testing 277# Network testing
240# 278#
241# CONFIG_NET_PKTGEN is not set 279# CONFIG_NET_PKTGEN is not set
242# CONFIG_NETFILTER_NETLINK is not set
243# CONFIG_HAMRADIO is not set 280# CONFIG_HAMRADIO is not set
244# CONFIG_IRDA is not set 281# CONFIG_IRDA is not set
245# CONFIG_BT is not set 282# CONFIG_BT is not set
@@ -301,20 +338,13 @@ CONFIG_BLK_DEV_RAM_COUNT=16
301CONFIG_BLK_DEV_RAM_SIZE=4096 338CONFIG_BLK_DEV_RAM_SIZE=4096
302CONFIG_BLK_DEV_INITRD=y 339CONFIG_BLK_DEV_INITRD=y
303# CONFIG_CDROM_PKTCDVD is not set 340# CONFIG_CDROM_PKTCDVD is not set
304
305#
306# IO Schedulers
307#
308CONFIG_IOSCHED_NOOP=y
309CONFIG_IOSCHED_AS=y
310CONFIG_IOSCHED_DEADLINE=y
311CONFIG_IOSCHED_CFQ=y
312# CONFIG_ATA_OVER_ETH is not set 341# CONFIG_ATA_OVER_ETH is not set
313 342
314# 343#
315# ATA/ATAPI/MFM/RLL support 344# ATA/ATAPI/MFM/RLL support
316# 345#
317CONFIG_IDE=y 346CONFIG_IDE=y
347CONFIG_IDE_MAX_HWIFS=4
318CONFIG_BLK_DEV_IDE=y 348CONFIG_BLK_DEV_IDE=y
319 349
320# 350#
@@ -407,6 +437,7 @@ CONFIG_SCSI_FC_ATTRS=y
407# 437#
408# SCSI low-level drivers 438# SCSI low-level drivers
409# 439#
440# CONFIG_ISCSI_TCP is not set
410# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 441# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
411# CONFIG_SCSI_3W_9XXX is not set 442# CONFIG_SCSI_3W_9XXX is not set
412# CONFIG_SCSI_ACARD is not set 443# CONFIG_SCSI_ACARD is not set
@@ -416,16 +447,19 @@ CONFIG_SCSI_FC_ATTRS=y
416# CONFIG_SCSI_AIC79XX is not set 447# CONFIG_SCSI_AIC79XX is not set
417# CONFIG_MEGARAID_NEWGEN is not set 448# CONFIG_MEGARAID_NEWGEN is not set
418# CONFIG_MEGARAID_LEGACY is not set 449# CONFIG_MEGARAID_LEGACY is not set
450# CONFIG_MEGARAID_SAS is not set
419CONFIG_SCSI_SATA=y 451CONFIG_SCSI_SATA=y
420# CONFIG_SCSI_SATA_AHCI is not set 452# CONFIG_SCSI_SATA_AHCI is not set
421# CONFIG_SCSI_SATA_SVW is not set 453# CONFIG_SCSI_SATA_SVW is not set
422# CONFIG_SCSI_ATA_PIIX is not set 454# CONFIG_SCSI_ATA_PIIX is not set
423# CONFIG_SCSI_SATA_MV is not set 455# CONFIG_SCSI_SATA_MV is not set
424# CONFIG_SCSI_SATA_NV is not set 456# CONFIG_SCSI_SATA_NV is not set
425# CONFIG_SCSI_SATA_PROMISE is not set 457# CONFIG_SCSI_PDC_ADMA is not set
426# CONFIG_SCSI_SATA_QSTOR is not set 458# CONFIG_SCSI_SATA_QSTOR is not set
459# CONFIG_SCSI_SATA_PROMISE is not set
427# CONFIG_SCSI_SATA_SX4 is not set 460# CONFIG_SCSI_SATA_SX4 is not set
428# CONFIG_SCSI_SATA_SIL is not set 461# CONFIG_SCSI_SATA_SIL is not set
462# CONFIG_SCSI_SATA_SIL24 is not set
429# CONFIG_SCSI_SATA_SIS is not set 463# CONFIG_SCSI_SATA_SIS is not set
430# CONFIG_SCSI_SATA_ULI is not set 464# CONFIG_SCSI_SATA_ULI is not set
431# CONFIG_SCSI_SATA_VIA is not set 465# CONFIG_SCSI_SATA_VIA is not set
@@ -443,14 +477,7 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
443# CONFIG_SCSI_IPR is not set 477# CONFIG_SCSI_IPR is not set
444# CONFIG_SCSI_QLOGIC_FC is not set 478# CONFIG_SCSI_QLOGIC_FC is not set
445CONFIG_SCSI_QLOGIC_1280=y 479CONFIG_SCSI_QLOGIC_1280=y
446# CONFIG_SCSI_QLOGIC_1280_1040 is not set 480# CONFIG_SCSI_QLA_FC is not set
447CONFIG_SCSI_QLA2XXX=y
448CONFIG_SCSI_QLA21XX=m
449CONFIG_SCSI_QLA22XX=m
450CONFIG_SCSI_QLA2300=m
451CONFIG_SCSI_QLA2322=m
452# CONFIG_SCSI_QLA6312 is not set
453# CONFIG_SCSI_QLA24XX is not set
454# CONFIG_SCSI_LPFC is not set 481# CONFIG_SCSI_LPFC is not set
455# CONFIG_SCSI_DC395x is not set 482# CONFIG_SCSI_DC395x is not set
456# CONFIG_SCSI_DC390T is not set 483# CONFIG_SCSI_DC390T is not set
@@ -483,6 +510,7 @@ CONFIG_DM_MULTIPATH=m
483CONFIG_FUSION=y 510CONFIG_FUSION=y
484CONFIG_FUSION_SPI=y 511CONFIG_FUSION_SPI=y
485CONFIG_FUSION_FC=m 512CONFIG_FUSION_FC=m
513# CONFIG_FUSION_SAS is not set
486CONFIG_FUSION_MAX_SGE=128 514CONFIG_FUSION_MAX_SGE=128
487# CONFIG_FUSION_CTL is not set 515# CONFIG_FUSION_CTL is not set
488 516
@@ -523,6 +551,7 @@ CONFIG_NET_ETHERNET=y
523CONFIG_MII=m 551CONFIG_MII=m
524# CONFIG_HAPPYMEAL is not set 552# CONFIG_HAPPYMEAL is not set
525# CONFIG_SUNGEM is not set 553# CONFIG_SUNGEM is not set
554# CONFIG_CASSINI is not set
526# CONFIG_NET_VENDOR_3COM is not set 555# CONFIG_NET_VENDOR_3COM is not set
527 556
528# 557#
@@ -572,6 +601,7 @@ CONFIG_E1000=y
572# CONFIG_R8169 is not set 601# CONFIG_R8169 is not set
573# CONFIG_SIS190 is not set 602# CONFIG_SIS190 is not set
574# CONFIG_SKGE is not set 603# CONFIG_SKGE is not set
604# CONFIG_SKY2 is not set
575# CONFIG_SK98LIN is not set 605# CONFIG_SK98LIN is not set
576# CONFIG_VIA_VELOCITY is not set 606# CONFIG_VIA_VELOCITY is not set
577CONFIG_TIGON3=y 607CONFIG_TIGON3=y
@@ -676,12 +706,15 @@ CONFIG_VT=y
676CONFIG_VT_CONSOLE=y 706CONFIG_VT_CONSOLE=y
677CONFIG_HW_CONSOLE=y 707CONFIG_HW_CONSOLE=y
678CONFIG_SERIAL_NONSTANDARD=y 708CONFIG_SERIAL_NONSTANDARD=y
709# CONFIG_COMPUTONE is not set
679# CONFIG_ROCKETPORT is not set 710# CONFIG_ROCKETPORT is not set
680# CONFIG_CYCLADES is not set 711# CONFIG_CYCLADES is not set
681# CONFIG_DIGIEPCA is not set 712# CONFIG_DIGIEPCA is not set
713# CONFIG_MOXA_INTELLIO is not set
682# CONFIG_MOXA_SMARTIO is not set 714# CONFIG_MOXA_SMARTIO is not set
683# CONFIG_ISI is not set 715# CONFIG_ISI is not set
684# CONFIG_SYNCLINKMP is not set 716# CONFIG_SYNCLINKMP is not set
717# CONFIG_SYNCLINK_GT is not set
685# CONFIG_N_HDLC is not set 718# CONFIG_N_HDLC is not set
686# CONFIG_SPECIALIX is not set 719# CONFIG_SPECIALIX is not set
687# CONFIG_SX is not set 720# CONFIG_SX is not set
@@ -697,6 +730,7 @@ CONFIG_SERIAL_8250=y
697CONFIG_SERIAL_8250_CONSOLE=y 730CONFIG_SERIAL_8250_CONSOLE=y
698CONFIG_SERIAL_8250_ACPI=y 731CONFIG_SERIAL_8250_ACPI=y
699CONFIG_SERIAL_8250_NR_UARTS=6 732CONFIG_SERIAL_8250_NR_UARTS=6
733CONFIG_SERIAL_8250_RUNTIME_UARTS=4
700CONFIG_SERIAL_8250_EXTENDED=y 734CONFIG_SERIAL_8250_EXTENDED=y
701CONFIG_SERIAL_8250_SHARE_IRQ=y 735CONFIG_SERIAL_8250_SHARE_IRQ=y
702# CONFIG_SERIAL_8250_DETECT_IRQ is not set 736# CONFIG_SERIAL_8250_DETECT_IRQ is not set
@@ -710,6 +744,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
710CONFIG_SERIAL_SGI_L1_CONSOLE=y 744CONFIG_SERIAL_SGI_L1_CONSOLE=y
711# CONFIG_SERIAL_JSM is not set 745# CONFIG_SERIAL_JSM is not set
712CONFIG_SERIAL_SGI_IOC4=y 746CONFIG_SERIAL_SGI_IOC4=y
747# CONFIG_SERIAL_SGI_IOC3 is not set
713CONFIG_UNIX98_PTYS=y 748CONFIG_UNIX98_PTYS=y
714CONFIG_LEGACY_PTYS=y 749CONFIG_LEGACY_PTYS=y
715CONFIG_LEGACY_PTY_COUNT=256 750CONFIG_LEGACY_PTY_COUNT=256
@@ -745,10 +780,10 @@ CONFIG_DRM_SIS=m
745# CONFIG_DRM_VIA is not set 780# CONFIG_DRM_VIA is not set
746# CONFIG_DRM_SAVAGE is not set 781# CONFIG_DRM_SAVAGE is not set
747CONFIG_RAW_DRIVER=m 782CONFIG_RAW_DRIVER=m
783CONFIG_MAX_RAW_DEVS=256
748CONFIG_HPET=y 784CONFIG_HPET=y
749# CONFIG_HPET_RTC_IRQ is not set 785# CONFIG_HPET_RTC_IRQ is not set
750CONFIG_HPET_MMAP=y 786CONFIG_HPET_MMAP=y
751CONFIG_MAX_RAW_DEVS=256
752# CONFIG_HANGCHECK_TIMER is not set 787# CONFIG_HANGCHECK_TIMER is not set
753CONFIG_MMTIMER=y 788CONFIG_MMTIMER=y
754 789
@@ -756,6 +791,7 @@ CONFIG_MMTIMER=y
756# TPM devices 791# TPM devices
757# 792#
758# CONFIG_TCG_TPM is not set 793# CONFIG_TCG_TPM is not set
794# CONFIG_TELCLOCK is not set
759 795
760# 796#
761# I2C support 797# I2C support
@@ -763,6 +799,12 @@ CONFIG_MMTIMER=y
763# CONFIG_I2C is not set 799# CONFIG_I2C is not set
764 800
765# 801#
802# SPI support
803#
804# CONFIG_SPI is not set
805# CONFIG_SPI_MASTER is not set
806
807#
766# Dallas's 1-wire bus 808# Dallas's 1-wire bus
767# 809#
768# CONFIG_W1 is not set 810# CONFIG_W1 is not set
@@ -772,6 +814,7 @@ CONFIG_MMTIMER=y
772# 814#
773CONFIG_HWMON=y 815CONFIG_HWMON=y
774# CONFIG_HWMON_VID is not set 816# CONFIG_HWMON_VID is not set
817# CONFIG_SENSORS_F71805F is not set
775# CONFIG_HWMON_DEBUG_CHIP is not set 818# CONFIG_HWMON_DEBUG_CHIP is not set
776 819
777# 820#
@@ -822,26 +865,28 @@ CONFIG_SND_OSSEMUL=y
822CONFIG_SND_MIXER_OSS=m 865CONFIG_SND_MIXER_OSS=m
823CONFIG_SND_PCM_OSS=m 866CONFIG_SND_PCM_OSS=m
824CONFIG_SND_SEQUENCER_OSS=y 867CONFIG_SND_SEQUENCER_OSS=y
868# CONFIG_SND_DYNAMIC_MINORS is not set
869CONFIG_SND_SUPPORT_OLD_API=y
825CONFIG_SND_VERBOSE_PRINTK=y 870CONFIG_SND_VERBOSE_PRINTK=y
826# CONFIG_SND_DEBUG is not set 871# CONFIG_SND_DEBUG is not set
827CONFIG_SND_GENERIC_DRIVER=y
828 872
829# 873#
830# Generic devices 874# Generic devices
831# 875#
832CONFIG_SND_MPU401_UART=m 876CONFIG_SND_MPU401_UART=m
833CONFIG_SND_OPL3_LIB=m 877CONFIG_SND_OPL3_LIB=m
878CONFIG_SND_AC97_CODEC=m
879CONFIG_SND_AC97_BUS=m
834CONFIG_SND_DUMMY=m 880CONFIG_SND_DUMMY=m
835CONFIG_SND_VIRMIDI=m 881CONFIG_SND_VIRMIDI=m
836CONFIG_SND_MTPAV=m 882CONFIG_SND_MTPAV=m
837CONFIG_SND_SERIAL_U16550=m 883CONFIG_SND_SERIAL_U16550=m
838CONFIG_SND_MPU401=m 884CONFIG_SND_MPU401=m
839CONFIG_SND_AC97_CODEC=m
840CONFIG_SND_AC97_BUS=m
841 885
842# 886#
843# PCI devices 887# PCI devices
844# 888#
889# CONFIG_SND_AD1889 is not set
845# CONFIG_SND_ALI5451 is not set 890# CONFIG_SND_ALI5451 is not set
846# CONFIG_SND_ATIIXP is not set 891# CONFIG_SND_ATIIXP is not set
847# CONFIG_SND_ATIIXP_MODEM is not set 892# CONFIG_SND_ATIIXP_MODEM is not set
@@ -850,40 +895,40 @@ CONFIG_SND_AC97_BUS=m
850# CONFIG_SND_AU8830 is not set 895# CONFIG_SND_AU8830 is not set
851# CONFIG_SND_AZT3328 is not set 896# CONFIG_SND_AZT3328 is not set
852# CONFIG_SND_BT87X is not set 897# CONFIG_SND_BT87X is not set
898# CONFIG_SND_CA0106 is not set
899# CONFIG_SND_CMIPCI is not set
900CONFIG_SND_CS4281=m
853CONFIG_SND_CS46XX=m 901CONFIG_SND_CS46XX=m
854CONFIG_SND_CS46XX_NEW_DSP=y 902CONFIG_SND_CS46XX_NEW_DSP=y
855CONFIG_SND_CS4281=m
856CONFIG_SND_EMU10K1=m 903CONFIG_SND_EMU10K1=m
857# CONFIG_SND_EMU10K1X is not set 904# CONFIG_SND_EMU10K1X is not set
858# CONFIG_SND_CA0106 is not set
859# CONFIG_SND_KORG1212 is not set
860# CONFIG_SND_MIXART is not set
861# CONFIG_SND_NM256 is not set
862# CONFIG_SND_RME32 is not set
863# CONFIG_SND_RME96 is not set
864# CONFIG_SND_RME9652 is not set
865# CONFIG_SND_HDSP is not set
866# CONFIG_SND_HDSPM is not set
867# CONFIG_SND_TRIDENT is not set
868# CONFIG_SND_YMFPCI is not set
869# CONFIG_SND_AD1889 is not set
870# CONFIG_SND_CMIPCI is not set
871# CONFIG_SND_ENS1370 is not set 905# CONFIG_SND_ENS1370 is not set
872# CONFIG_SND_ENS1371 is not set 906# CONFIG_SND_ENS1371 is not set
873# CONFIG_SND_ES1938 is not set 907# CONFIG_SND_ES1938 is not set
874# CONFIG_SND_ES1968 is not set 908# CONFIG_SND_ES1968 is not set
875# CONFIG_SND_MAESTRO3 is not set
876CONFIG_SND_FM801=m 909CONFIG_SND_FM801=m
877# CONFIG_SND_FM801_TEA575X is not set 910# CONFIG_SND_FM801_TEA575X is not set
911# CONFIG_SND_HDA_INTEL is not set
912# CONFIG_SND_HDSP is not set
913# CONFIG_SND_HDSPM is not set
878# CONFIG_SND_ICE1712 is not set 914# CONFIG_SND_ICE1712 is not set
879# CONFIG_SND_ICE1724 is not set 915# CONFIG_SND_ICE1724 is not set
880# CONFIG_SND_INTEL8X0 is not set 916# CONFIG_SND_INTEL8X0 is not set
881# CONFIG_SND_INTEL8X0M is not set 917# CONFIG_SND_INTEL8X0M is not set
918# CONFIG_SND_KORG1212 is not set
919# CONFIG_SND_MAESTRO3 is not set
920# CONFIG_SND_MIXART is not set
921# CONFIG_SND_NM256 is not set
922# CONFIG_SND_PCXHR is not set
923# CONFIG_SND_RME32 is not set
924# CONFIG_SND_RME96 is not set
925# CONFIG_SND_RME9652 is not set
882# CONFIG_SND_SONICVIBES is not set 926# CONFIG_SND_SONICVIBES is not set
927# CONFIG_SND_TRIDENT is not set
883# CONFIG_SND_VIA82XX is not set 928# CONFIG_SND_VIA82XX is not set
884# CONFIG_SND_VIA82XX_MODEM is not set 929# CONFIG_SND_VIA82XX_MODEM is not set
885# CONFIG_SND_VX222 is not set 930# CONFIG_SND_VX222 is not set
886# CONFIG_SND_HDA_INTEL is not set 931# CONFIG_SND_YMFPCI is not set
887 932
888# 933#
889# USB devices 934# USB devices
@@ -929,12 +974,15 @@ CONFIG_USB_UHCI_HCD=m
929# USB Device Class drivers 974# USB Device Class drivers
930# 975#
931# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set 976# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
932# CONFIG_USB_BLUETOOTH_TTY is not set
933# CONFIG_USB_ACM is not set 977# CONFIG_USB_ACM is not set
934# CONFIG_USB_PRINTER is not set 978# CONFIG_USB_PRINTER is not set
935 979
936# 980#
937# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 981# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
982#
983
984#
985# may also be needed; see USB_STORAGE Help for more information
938# 986#
939CONFIG_USB_STORAGE=m 987CONFIG_USB_STORAGE=m
940# CONFIG_USB_STORAGE_DEBUG is not set 988# CONFIG_USB_STORAGE_DEBUG is not set
@@ -946,12 +994,15 @@ CONFIG_USB_STORAGE=m
946# CONFIG_USB_STORAGE_SDDR09 is not set 994# CONFIG_USB_STORAGE_SDDR09 is not set
947# CONFIG_USB_STORAGE_SDDR55 is not set 995# CONFIG_USB_STORAGE_SDDR55 is not set
948# CONFIG_USB_STORAGE_JUMPSHOT is not set 996# CONFIG_USB_STORAGE_JUMPSHOT is not set
997# CONFIG_USB_STORAGE_ALAUDA is not set
998# CONFIG_USB_LIBUSUAL is not set
949 999
950# 1000#
951# USB Input Devices 1001# USB Input Devices
952# 1002#
953CONFIG_USB_HID=m 1003CONFIG_USB_HID=m
954CONFIG_USB_HIDINPUT=y 1004CONFIG_USB_HIDINPUT=y
1005# CONFIG_USB_HIDINPUT_POWERBOOK is not set
955# CONFIG_HID_FF is not set 1006# CONFIG_HID_FF is not set
956# CONFIG_USB_HIDDEV is not set 1007# CONFIG_USB_HIDDEV is not set
957 1008
@@ -971,6 +1022,7 @@ CONFIG_USB_HIDINPUT=y
971# CONFIG_USB_YEALINK is not set 1022# CONFIG_USB_YEALINK is not set
972# CONFIG_USB_XPAD is not set 1023# CONFIG_USB_XPAD is not set
973# CONFIG_USB_ATI_REMOTE is not set 1024# CONFIG_USB_ATI_REMOTE is not set
1025# CONFIG_USB_ATI_REMOTE2 is not set
974# CONFIG_USB_KEYSPAN_REMOTE is not set 1026# CONFIG_USB_KEYSPAN_REMOTE is not set
975# CONFIG_USB_APPLETOUCH is not set 1027# CONFIG_USB_APPLETOUCH is not set
976 1028
@@ -1050,11 +1102,17 @@ CONFIG_INFINIBAND_MTHCA=m
1050# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 1102# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
1051CONFIG_INFINIBAND_IPOIB=m 1103CONFIG_INFINIBAND_IPOIB=m
1052# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 1104# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
1105# CONFIG_INFINIBAND_SRP is not set
1053 1106
1054# 1107#
1055# SN Devices 1108# SN Devices
1056# 1109#
1057CONFIG_SGI_IOC4=y 1110CONFIG_SGI_IOC4=y
1111CONFIG_SGI_IOC3=m
1112
1113#
1114# EDAC - error detection and reporting (RAS)
1115#
1058 1116
1059# 1117#
1060# File systems 1118# File systems
@@ -1085,6 +1143,7 @@ CONFIG_XFS_EXPORT=y
1085# CONFIG_XFS_SECURITY is not set 1143# CONFIG_XFS_SECURITY is not set
1086# CONFIG_XFS_POSIX_ACL is not set 1144# CONFIG_XFS_POSIX_ACL is not set
1087# CONFIG_XFS_RT is not set 1145# CONFIG_XFS_RT is not set
1146# CONFIG_OCFS2_FS is not set
1088# CONFIG_MINIX_FS is not set 1147# CONFIG_MINIX_FS is not set
1089# CONFIG_ROMFS_FS is not set 1148# CONFIG_ROMFS_FS is not set
1090CONFIG_INOTIFY=y 1149CONFIG_INOTIFY=y
@@ -1126,6 +1185,7 @@ CONFIG_HUGETLBFS=y
1126CONFIG_HUGETLB_PAGE=y 1185CONFIG_HUGETLB_PAGE=y
1127CONFIG_RAMFS=y 1186CONFIG_RAMFS=y
1128# CONFIG_RELAYFS_FS is not set 1187# CONFIG_RELAYFS_FS is not set
1188# CONFIG_CONFIGFS_FS is not set
1129 1189
1130# 1190#
1131# Miscellaneous filesystems 1191# Miscellaneous filesystems
@@ -1195,6 +1255,7 @@ CONFIG_MSDOS_PARTITION=y
1195CONFIG_SGI_PARTITION=y 1255CONFIG_SGI_PARTITION=y
1196# CONFIG_ULTRIX_PARTITION is not set 1256# CONFIG_ULTRIX_PARTITION is not set
1197# CONFIG_SUN_PARTITION is not set 1257# CONFIG_SUN_PARTITION is not set
1258# CONFIG_KARMA_PARTITION is not set
1198CONFIG_EFI_PARTITION=y 1259CONFIG_EFI_PARTITION=y
1199 1260
1200# 1261#
@@ -1260,26 +1321,30 @@ CONFIG_GENERIC_PENDING_IRQ=y
1260# CONFIG_HP_SIMSCSI is not set 1321# CONFIG_HP_SIMSCSI is not set
1261 1322
1262# 1323#
1263# Profiling support 1324# Instrumentation Support
1264# 1325#
1265# CONFIG_PROFILING is not set 1326# CONFIG_PROFILING is not set
1327# CONFIG_KPROBES is not set
1266 1328
1267# 1329#
1268# Kernel hacking 1330# Kernel hacking
1269# 1331#
1270# CONFIG_PRINTK_TIME is not set 1332# CONFIG_PRINTK_TIME is not set
1271CONFIG_DEBUG_KERNEL=y
1272CONFIG_MAGIC_SYSRQ=y 1333CONFIG_MAGIC_SYSRQ=y
1334CONFIG_DEBUG_KERNEL=y
1273CONFIG_LOG_BUF_SHIFT=20 1335CONFIG_LOG_BUF_SHIFT=20
1274CONFIG_DETECT_SOFTLOCKUP=y 1336CONFIG_DETECT_SOFTLOCKUP=y
1275# CONFIG_SCHEDSTATS is not set 1337# CONFIG_SCHEDSTATS is not set
1276# CONFIG_DEBUG_SLAB is not set 1338# CONFIG_DEBUG_SLAB is not set
1339CONFIG_DEBUG_MUTEXES=y
1277# CONFIG_DEBUG_SPINLOCK is not set 1340# CONFIG_DEBUG_SPINLOCK is not set
1278# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1341# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1279# CONFIG_DEBUG_KOBJECT is not set 1342# CONFIG_DEBUG_KOBJECT is not set
1280# CONFIG_DEBUG_INFO is not set 1343# CONFIG_DEBUG_INFO is not set
1281# CONFIG_DEBUG_FS is not set 1344# CONFIG_DEBUG_FS is not set
1282# CONFIG_KPROBES is not set 1345# CONFIG_DEBUG_VM is not set
1346CONFIG_FORCED_INLINING=y
1347# CONFIG_RCU_TORTURE_TEST is not set
1283CONFIG_IA64_GRANULE_16MB=y 1348CONFIG_IA64_GRANULE_16MB=y
1284# CONFIG_IA64_GRANULE_64MB is not set 1349# CONFIG_IA64_GRANULE_64MB is not set
1285# CONFIG_IA64_PRINT_HAZARDS is not set 1350# CONFIG_IA64_PRINT_HAZARDS is not set
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index ac6055c83115..7a05b1cb2ad5 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -878,8 +878,7 @@ fsyscall_table:
878 data8 0 // timer_delete 878 data8 0 // timer_delete
879 data8 0 // clock_settime 879 data8 0 // clock_settime
880 data8 fsys_clock_gettime // clock_gettime 880 data8 fsys_clock_gettime // clock_gettime
881 #define __NR_syscall_last 1255
882 881
883 .space 8*(NR_syscalls + 1024 - __NR_syscall_last), 0 882 // fill in zeros for the remaining entries
884 883 .zero:
885 .org fsyscall_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 884 .space fsyscall_table + 8*NR_syscalls - .zero, 0
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 301f2e9d262e..9f80569a32b0 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -1362,7 +1362,6 @@ END(debug_vector)
1362// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57) 1362// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
1363ENTRY(unaligned_access) 1363ENTRY(unaligned_access)
1364 DBG_FAULT(30) 1364 DBG_FAULT(30)
1365 mov r16=cr.ipsr
1366 mov r31=pr // prepare to save predicates 1365 mov r31=pr // prepare to save predicates
1367 ;; 1366 ;;
1368 br.sptk.many dispatch_unaligned_handler 1367 br.sptk.many dispatch_unaligned_handler
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index f9e0ae936d1a..1e357550c776 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -24,7 +24,7 @@
24#include <asm/uaccess.h> 24#include <asm/uaccess.h>
25#include <asm/unaligned.h> 25#include <asm/unaligned.h>
26 26
27extern void die_if_kernel(char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); 27extern void die_if_kernel(char *str, struct pt_regs *regs, long err);
28 28
29#undef DEBUG_UNALIGNED_TRAP 29#undef DEBUG_UNALIGNED_TRAP
30 30
@@ -53,6 +53,15 @@ dump (const char *str, void *vp, size_t len)
53#define SIGN_EXT9 0xffffffffffffff00ul 53#define SIGN_EXT9 0xffffffffffffff00ul
54 54
55/* 55/*
56 * sysctl settable hook which tells the kernel whether to honor the
57 * IA64_THREAD_UAC_NOPRINT prctl. Because this is user settable, we want
58 * to allow the super user to enable/disable this for security reasons
59 * (i.e. don't allow attacker to fill up logs with unaligned accesses).
60 */
61int no_unaligned_warning;
62static int noprint_warning;
63
64/*
56 * For M-unit: 65 * For M-unit:
57 * 66 *
58 * opcode | m | x6 | 67 * opcode | m | x6 |
@@ -1324,8 +1333,9 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
1324 if ((current->thread.flags & IA64_THREAD_UAC_SIGBUS) != 0) 1333 if ((current->thread.flags & IA64_THREAD_UAC_SIGBUS) != 0)
1325 goto force_sigbus; 1334 goto force_sigbus;
1326 1335
1327 if (!(current->thread.flags & IA64_THREAD_UAC_NOPRINT) 1336 if (!no_unaligned_warning &&
1328 && within_logging_rate_limit()) 1337 !(current->thread.flags & IA64_THREAD_UAC_NOPRINT) &&
1338 within_logging_rate_limit())
1329 { 1339 {
1330 char buf[200]; /* comm[] is at most 16 bytes... */ 1340 char buf[200]; /* comm[] is at most 16 bytes... */
1331 size_t len; 1341 size_t len;
@@ -1340,7 +1350,22 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
1340 if (user_mode(regs)) 1350 if (user_mode(regs))
1341 tty_write_message(current->signal->tty, buf); 1351 tty_write_message(current->signal->tty, buf);
1342 buf[len-1] = '\0'; /* drop '\r' */ 1352 buf[len-1] = '\0'; /* drop '\r' */
1343 printk(KERN_WARNING "%s", buf); /* watch for command names containing %s */ 1353 /* watch for command names containing %s */
1354 printk(KERN_WARNING "%s", buf);
1355 } else {
1356 if (no_unaligned_warning && !noprint_warning) {
1357 noprint_warning = 1;
1358 printk(KERN_WARNING "%s(%d) encountered an "
1359 "unaligned exception which required\n"
1360 "kernel assistance, which degrades "
1361 "the performance of the application.\n"
1362 "Unaligned exception warnings have "
1363 "been disabled by the system "
1364 "administrator\n"
1365 "echo 0 > /proc/sys/kernel/ignore-"
1366 "unaligned-usertrap to re-enable\n",
1367 current->comm, current->pid);
1368 }
1344 } 1369 }
1345 } else { 1370 } else {
1346 if (within_logging_rate_limit()) 1371 if (within_logging_rate_limit())
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 0b30ca006286..9ba32b2d96d0 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -579,7 +579,7 @@ pcibios_align_resource (void *data, struct resource *res,
579char * __init 579char * __init
580pcibios_setup (char *str) 580pcibios_setup (char *str)
581{ 581{
582 return NULL; 582 return str;
583} 583}
584 584
585int 585int
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 3edef0d32f86..dfb3f2902379 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -716,4 +716,3 @@ EXPORT_SYMBOL(sn_pci_unfixup_slot);
716EXPORT_SYMBOL(sn_pci_controller_fixup); 716EXPORT_SYMBOL(sn_pci_controller_fixup);
717EXPORT_SYMBOL(sn_bus_store_sysdata); 717EXPORT_SYMBOL(sn_bus_store_sysdata);
718EXPORT_SYMBOL(sn_bus_free_sysdata); 718EXPORT_SYMBOL(sn_bus_free_sysdata);
719EXPORT_SYMBOL(sn_pcidev_info_get);
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index 5f68b220c26d..e00e5f6e7fdd 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -161,60 +161,6 @@ out:
161 return error; 161 return error;
162} 162}
163 163
164struct dirent32 {
165 unsigned int d_ino;
166 unsigned int d_off;
167 unsigned short d_reclen;
168 char d_name[NAME_MAX + 1];
169};
170
171static void
172xlate_dirent(void *dirent64, void *dirent32, long n)
173{
174 long off;
175 struct dirent *dirp;
176 struct dirent32 *dirp32;
177
178 off = 0;
179 while (off < n) {
180 dirp = (struct dirent *)(dirent64 + off);
181 dirp32 = (struct dirent32 *)(dirent32 + off);
182 off += dirp->d_reclen;
183 dirp32->d_ino = dirp->d_ino;
184 dirp32->d_off = (unsigned int)dirp->d_off;
185 dirp32->d_reclen = dirp->d_reclen;
186 strncpy(dirp32->d_name, dirp->d_name, dirp->d_reclen - ((3 * 4) + 2));
187 }
188 return;
189}
190
191asmlinkage long
192sys32_getdents(unsigned int fd, void * dirent32, unsigned int count)
193{
194 long n;
195 void *dirent64;
196
197 dirent64 = (void *)((unsigned long)(dirent32 + (sizeof(long) - 1)) & ~(sizeof(long) - 1));
198 if ((n = sys_getdents(fd, dirent64, count - (dirent64 - dirent32))) < 0)
199 return(n);
200 xlate_dirent(dirent64, dirent32, n);
201 return(n);
202}
203
204asmlinkage int old_readdir(unsigned int fd, void * dirent, unsigned int count);
205
206asmlinkage int
207sys32_readdir(unsigned int fd, void * dirent32, unsigned int count)
208{
209 int n;
210 struct dirent dirent64;
211
212 if ((n = old_readdir(fd, &dirent64, count)) < 0)
213 return(n);
214 xlate_dirent(&dirent64, dirent32, dirent64.d_reclen);
215 return(n);
216}
217
218asmlinkage int 164asmlinkage int
219sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options) 165sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options)
220{ 166{
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index d87b5446fa13..02c8267e45e7 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -195,7 +195,7 @@ EXPORT(sysn32_call_table)
195 PTR sys_fdatasync 195 PTR sys_fdatasync
196 PTR sys_truncate 196 PTR sys_truncate
197 PTR sys_ftruncate /* 6075 */ 197 PTR sys_ftruncate /* 6075 */
198 PTR sys32_getdents 198 PTR compat_sys_getdents
199 PTR sys_getcwd 199 PTR sys_getcwd
200 PTR sys_chdir 200 PTR sys_chdir
201 PTR sys_fchdir 201 PTR sys_fchdir
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index 5b0414018c9a..797e0d874889 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -293,7 +293,7 @@ sys_call_table:
293 PTR sys_uselib 293 PTR sys_uselib
294 PTR sys_swapon 294 PTR sys_swapon
295 PTR sys_reboot 295 PTR sys_reboot
296 PTR sys32_readdir 296 PTR compat_sys_old_readdir
297 PTR old_mmap /* 4090 */ 297 PTR old_mmap /* 4090 */
298 PTR sys_munmap 298 PTR sys_munmap
299 PTR sys_truncate 299 PTR sys_truncate
@@ -345,7 +345,7 @@ sys_call_table:
345 PTR sys_setfsuid 345 PTR sys_setfsuid
346 PTR sys_setfsgid 346 PTR sys_setfsgid
347 PTR sys32_llseek /* 4140 */ 347 PTR sys32_llseek /* 4140 */
348 PTR sys32_getdents 348 PTR compat_sys_getdents
349 PTR compat_sys_select 349 PTR compat_sys_select
350 PTR sys_flock 350 PTR sys_flock
351 PTR sys_msync 351 PTR sys_msync
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index d86affa21278..d9293c558e41 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -540,6 +540,9 @@ void __init setup_arch(char **cmdline_p)
540 sparse_init(); 540 sparse_init();
541 paging_init(); 541 paging_init();
542 resource_init(); 542 resource_init();
543#ifdef CONFIG_SMP
544 plat_smp_setup();
545#endif
543} 546}
544 547
545int __init fpu_disable(char *s) 548int __init fpu_disable(char *s)
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 5e189862e523..06ed90752424 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -236,7 +236,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
236 init_new_context(current, &init_mm); 236 init_new_context(current, &init_mm);
237 current_thread_info()->cpu = 0; 237 current_thread_info()->cpu = 0;
238 smp_tune_scheduling(); 238 smp_tune_scheduling();
239 prom_prepare_cpus(max_cpus); 239 plat_prepare_cpus(max_cpus);
240} 240}
241 241
242/* preload SMP state for boot cpu */ 242/* preload SMP state for boot cpu */
diff --git a/arch/mips/kernel/smp_mt.c b/arch/mips/kernel/smp_mt.c
index c930364830d0..993b8bf56aaf 100644
--- a/arch/mips/kernel/smp_mt.c
+++ b/arch/mips/kernel/smp_mt.c
@@ -143,7 +143,7 @@ static struct irqaction irq_call = {
143 * Make sure all CPU's are in a sensible state before we boot any of the 143 * Make sure all CPU's are in a sensible state before we boot any of the
144 * secondarys 144 * secondarys
145 */ 145 */
146void prom_prepare_cpus(unsigned int max_cpus) 146void plat_smp_setup(void)
147{ 147{
148 unsigned long val; 148 unsigned long val;
149 int i, num; 149 int i, num;
@@ -179,11 +179,9 @@ void prom_prepare_cpus(unsigned int max_cpus)
179 write_vpe_c0_vpeconf0(tmp); 179 write_vpe_c0_vpeconf0(tmp);
180 180
181 /* Record this as available CPU */ 181 /* Record this as available CPU */
182 if (i < max_cpus) { 182 cpu_set(i, phys_cpu_present_map);
183 cpu_set(i, phys_cpu_present_map); 183 __cpu_number_map[i] = ++num;
184 __cpu_number_map[i] = ++num; 184 __cpu_logical_map[num] = i;
185 __cpu_logical_map[num] = i;
186 }
187 } 185 }
188 186
189 /* disable multi-threading with TC's */ 187 /* disable multi-threading with TC's */
@@ -241,7 +239,10 @@ void prom_prepare_cpus(unsigned int max_cpus)
241 set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch); 239 set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch);
242 set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch); 240 set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch);
243 } 241 }
242}
244 243
244void __init plat_prepare_cpus(unsigned int max_cpus)
245{
245 cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ; 246 cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ;
246 cpu_ipi_call_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ; 247 cpu_ipi_call_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ;
247 248
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 7050b4ffffcd..42c94c771afb 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -163,7 +163,7 @@ void do_gettimeofday(struct timeval *tv)
163 unsigned long seq; 163 unsigned long seq;
164 unsigned long lost; 164 unsigned long lost;
165 unsigned long usec, sec; 165 unsigned long usec, sec;
166 unsigned long max_ntp_tick = tick_usec - tickadj; 166 unsigned long max_ntp_tick;
167 167
168 do { 168 do {
169 seq = read_seqbegin(&xtime_lock); 169 seq = read_seqbegin(&xtime_lock);
@@ -178,12 +178,13 @@ void do_gettimeofday(struct timeval *tv)
178 * Better to lose some accuracy than have time go backwards.. 178 * Better to lose some accuracy than have time go backwards..
179 */ 179 */
180 if (unlikely(time_adjust < 0)) { 180 if (unlikely(time_adjust < 0)) {
181 max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj;
181 usec = min(usec, max_ntp_tick); 182 usec = min(usec, max_ntp_tick);
182 183
183 if (lost) 184 if (lost)
184 usec += lost * max_ntp_tick; 185 usec += lost * max_ntp_tick;
185 } else if (unlikely(lost)) 186 } else if (unlikely(lost))
186 usec += lost * tick_usec; 187 usec += lost * (USEC_PER_SEC / HZ);
187 188
188 sec = xtime.tv_sec; 189 sec = xtime.tv_sec;
189 usec += (xtime.tv_nsec / 1000); 190 usec += (xtime.tv_nsec / 1000);
diff --git a/arch/mips/lib/iomap.c b/arch/mips/lib/iomap.c
index 7e2ced715cfb..f4ac5bbcd81f 100644
--- a/arch/mips/lib/iomap.c
+++ b/arch/mips/lib/iomap.c
@@ -63,7 +63,7 @@ void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
63 return ioport_map(start, len); 63 return ioport_map(start, len);
64 if (flags & IORESOURCE_MEM) { 64 if (flags & IORESOURCE_MEM) {
65 if (flags & IORESOURCE_CACHEABLE) 65 if (flags & IORESOURCE_CACHEABLE)
66 return ioremap_cacheable_cow(start, len); 66 return ioremap_cachable(start, len);
67 return ioremap_nocache(start, len); 67 return ioremap_nocache(start, len);
68 } 68 }
69 69
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 1b71d91e8268..0668e9bfce41 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -235,7 +235,9 @@ static inline void r4k_blast_scache_page_setup(void)
235{ 235{
236 unsigned long sc_lsize = cpu_scache_line_size(); 236 unsigned long sc_lsize = cpu_scache_line_size();
237 237
238 if (sc_lsize == 16) 238 if (scache_size == 0)
239 r4k_blast_scache_page = (void *)no_sc_noop;
240 else if (sc_lsize == 16)
239 r4k_blast_scache_page = blast_scache16_page; 241 r4k_blast_scache_page = blast_scache16_page;
240 else if (sc_lsize == 32) 242 else if (sc_lsize == 32)
241 r4k_blast_scache_page = blast_scache32_page; 243 r4k_blast_scache_page = blast_scache32_page;
@@ -251,7 +253,9 @@ static inline void r4k_blast_scache_page_indexed_setup(void)
251{ 253{
252 unsigned long sc_lsize = cpu_scache_line_size(); 254 unsigned long sc_lsize = cpu_scache_line_size();
253 255
254 if (sc_lsize == 16) 256 if (scache_size == 0)
257 r4k_blast_scache_page_indexed = (void *)no_sc_noop;
258 else if (sc_lsize == 16)
255 r4k_blast_scache_page_indexed = blast_scache16_page_indexed; 259 r4k_blast_scache_page_indexed = blast_scache16_page_indexed;
256 else if (sc_lsize == 32) 260 else if (sc_lsize == 32)
257 r4k_blast_scache_page_indexed = blast_scache32_page_indexed; 261 r4k_blast_scache_page_indexed = blast_scache32_page_indexed;
@@ -267,7 +271,9 @@ static inline void r4k_blast_scache_setup(void)
267{ 271{
268 unsigned long sc_lsize = cpu_scache_line_size(); 272 unsigned long sc_lsize = cpu_scache_line_size();
269 273
270 if (sc_lsize == 16) 274 if (scache_size == 0)
275 r4k_blast_scache = (void *)no_sc_noop;
276 else if (sc_lsize == 16)
271 r4k_blast_scache = blast_scache16; 277 r4k_blast_scache = blast_scache16;
272 else if (sc_lsize == 32) 278 else if (sc_lsize == 32)
273 r4k_blast_scache = blast_scache32; 279 r4k_blast_scache = blast_scache32;
@@ -482,7 +488,7 @@ static inline void local_r4k_flush_icache_range(void *args)
482 protected_blast_dcache_range(start, end); 488 protected_blast_dcache_range(start, end);
483 } 489 }
484 490
485 if (!cpu_icache_snoops_remote_store) { 491 if (!cpu_icache_snoops_remote_store && scache_size) {
486 if (end - start > scache_size) 492 if (end - start > scache_size)
487 r4k_blast_scache(); 493 r4k_blast_scache();
488 else 494 else
@@ -651,7 +657,7 @@ static void local_r4k_flush_cache_sigtramp(void * arg)
651 657
652 R4600_HIT_CACHEOP_WAR_IMPL; 658 R4600_HIT_CACHEOP_WAR_IMPL;
653 protected_writeback_dcache_line(addr & ~(dc_lsize - 1)); 659 protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
654 if (!cpu_icache_snoops_remote_store) 660 if (!cpu_icache_snoops_remote_store && scache_size)
655 protected_writeback_scache_line(addr & ~(sc_lsize - 1)); 661 protected_writeback_scache_line(addr & ~(sc_lsize - 1));
656 protected_flush_icache_line(addr & ~(ic_lsize - 1)); 662 protected_flush_icache_line(addr & ~(ic_lsize - 1));
657 if (MIPS4K_ICACHE_REFILL_WAR) { 663 if (MIPS4K_ICACHE_REFILL_WAR) {
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index 7f8fda962190..c197311e15d3 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -50,37 +50,25 @@ void __init prom_grab_secondary(void)
50 * We don't want to start the secondary CPU yet nor do we have a nice probing 50 * We don't want to start the secondary CPU yet nor do we have a nice probing
51 * feature in PMON so we just assume presence of the secondary core. 51 * feature in PMON so we just assume presence of the secondary core.
52 */ 52 */
53static char maxcpus_string[] __initdata = 53void __init plat_smp_setup(void)
54 KERN_WARNING "max_cpus set to 0; using 1 instead\n";
55
56void __init prom_prepare_cpus(unsigned int max_cpus)
57{ 54{
58 int enabled = 0, i; 55 int i;
59
60 if (max_cpus == 0) {
61 printk(maxcpus_string);
62 max_cpus = 1;
63 }
64 56
65 cpus_clear(phys_cpu_present_map); 57 cpus_clear(phys_cpu_present_map);
66 58
67 for (i = 0; i < 2; i++) { 59 for (i = 0; i < 2; i++) {
68 if (i == max_cpus)
69 break;
70
71 /*
72 * The boot CPU
73 */
74 cpu_set(i, phys_cpu_present_map); 60 cpu_set(i, phys_cpu_present_map);
75 __cpu_number_map[i] = i; 61 __cpu_number_map[i] = i;
76 __cpu_logical_map[i] = i; 62 __cpu_logical_map[i] = i;
77 enabled++;
78 } 63 }
64}
79 65
66void __init plat_prepare_cpus(unsigned int max_cpus)
67{
80 /* 68 /*
81 * Be paranoid. Enable the IPI only if we're really about to go SMP. 69 * Be paranoid. Enable the IPI only if we're really about to go SMP.
82 */ 70 */
83 if (enabled > 1) 71 if (cpus_weight(cpu_possible_map))
84 set_c0_status(STATUSF_IP5); 72 set_c0_status(STATUSF_IP5);
85} 73}
86 74
diff --git a/arch/mips/sgi-ip27/ip27-smp.c b/arch/mips/sgi-ip27/ip27-smp.c
index dbef3f6b5650..09fa7f5216f0 100644
--- a/arch/mips/sgi-ip27/ip27-smp.c
+++ b/arch/mips/sgi-ip27/ip27-smp.c
@@ -140,7 +140,7 @@ static __init void intr_clear_all(nasid_t nasid)
140 REMOTE_HUB_CLR_INTR(nasid, i); 140 REMOTE_HUB_CLR_INTR(nasid, i);
141} 141}
142 142
143void __init prom_prepare_cpus(unsigned int max_cpus) 143void __init plat_smp_setup(void)
144{ 144{
145 cnodeid_t cnode; 145 cnodeid_t cnode;
146 146
@@ -161,6 +161,11 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
161 alloc_cpupda(0, 0); 161 alloc_cpupda(0, 0);
162} 162}
163 163
164void __init plat_prepare_cpus(unsigned int max_cpus)
165{
166 /* We already did everything necessary earlier */
167}
168
164/* 169/*
165 * Launch a slave into smp_bootstrap(). It doesn't take an argument, and we 170 * Launch a slave into smp_bootstrap(). It doesn't take an argument, and we
166 * set sp to the kernel stack of the newly created idle process, gp to the proc 171 * set sp to the kernel stack of the newly created idle process, gp to the proc
diff --git a/arch/mips/sibyte/cfe/smp.c b/arch/mips/sibyte/cfe/smp.c
index 4477af3d8074..eab20e2db323 100644
--- a/arch/mips/sibyte/cfe/smp.c
+++ b/arch/mips/sibyte/cfe/smp.c
@@ -31,7 +31,7 @@
31 * 31 *
32 * Common setup before any secondaries are started 32 * Common setup before any secondaries are started
33 */ 33 */
34void __init prom_prepare_cpus(unsigned int max_cpus) 34void __init plat_smp_setup(void)
35{ 35{
36 int i, num; 36 int i, num;
37 37
@@ -40,14 +40,18 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
40 __cpu_number_map[0] = 0; 40 __cpu_number_map[0] = 0;
41 __cpu_logical_map[0] = 0; 41 __cpu_logical_map[0] = 0;
42 42
43 for (i=1, num=0; i<NR_CPUS; i++) { 43 for (i = 1, num = 0; i < NR_CPUS; i++) {
44 if (cfe_cpu_stop(i) == 0) { 44 if (cfe_cpu_stop(i) == 0) {
45 cpu_set(i, phys_cpu_present_map); 45 cpu_set(i, phys_cpu_present_map);
46 __cpu_number_map[i] = ++num; 46 __cpu_number_map[i] = ++num;
47 __cpu_logical_map[num] = i; 47 __cpu_logical_map[num] = i;
48 } 48 }
49 } 49 }
50 printk("Detected %i available secondary CPU(s)\n", num); 50 printk(KERN_INFO "Detected %i available secondary CPU(s)\n", num);
51}
52
53void __init plat_prepare_cpus(unsigned int max_cpus)
54{
51} 55}
52 56
53/* 57/*
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 80d114a3a837..a834f9e0bbb3 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -963,7 +963,7 @@ source "arch/powerpc/oprofile/Kconfig"
963 963
964config KPROBES 964config KPROBES
965 bool "Kprobes (EXPERIMENTAL)" 965 bool "Kprobes (EXPERIMENTAL)"
966 depends on PPC64 966 depends on PPC64 && EXPERIMENTAL && MODULES
967 help 967 help
968 Kprobes allows you to trap at almost any kernel address and 968 Kprobes allows you to trap at almost any kernel address and
969 execute a callback function. register_kprobe() establishes 969 execute a callback function. register_kprobe() establishes
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index f0c47dab0903..04f7df39ffbb 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -182,8 +182,8 @@ static struct page * vdso_vma_nopage(struct vm_area_struct * vma,
182 unsigned long offset = address - vma->vm_start; 182 unsigned long offset = address - vma->vm_start;
183 struct page *pg; 183 struct page *pg;
184#ifdef CONFIG_PPC64 184#ifdef CONFIG_PPC64
185 void *vbase = test_thread_flag(TIF_32BIT) ? 185 void *vbase = (vma->vm_mm->task_size > TASK_SIZE_USER32) ?
186 vdso32_kbase : vdso64_kbase; 186 vdso64_kbase : vdso32_kbase;
187#else 187#else
188 void *vbase = vdso32_kbase; 188 void *vbase = vdso32_kbase;
189#endif 189#endif
diff --git a/arch/powerpc/kernel/vdso64/gettimeofday.S b/arch/powerpc/kernel/vdso64/gettimeofday.S
index ccaeda5136d1..4ee871f1cadb 100644
--- a/arch/powerpc/kernel/vdso64/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso64/gettimeofday.S
@@ -225,9 +225,9 @@ V_FUNCTION_BEGIN(__do_get_xsec)
225 .cfi_startproc 225 .cfi_startproc
226 /* check for update count & load values */ 226 /* check for update count & load values */
2271: ld r8,CFG_TB_UPDATE_COUNT(r3) 2271: ld r8,CFG_TB_UPDATE_COUNT(r3)
228 andi. r0,r4,1 /* pending update ? loop */ 228 andi. r0,r8,1 /* pending update ? loop */
229 bne- 1b 229 bne- 1b
230 xor r0,r4,r4 /* create dependency */ 230 xor r0,r8,r8 /* create dependency */
231 add r3,r3,r0 231 add r3,r3,r0
232 232
233 /* Get TB & offset it */ 233 /* Get TB & offset it */
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index b1f614c612dd..e9d589eefc14 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -169,7 +169,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
169#ifdef CONFIG_PPC_ISERIES 169#ifdef CONFIG_PPC_ISERIES
170 if (_machine == PLATFORM_ISERIES_LPAR) 170 if (_machine == PLATFORM_ISERIES_LPAR)
171 ret = iSeries_hpte_insert(hpteg, va, 171 ret = iSeries_hpte_insert(hpteg, va,
172 virt_to_abs(paddr), 172 __pa(vaddr),
173 tmp_mode, 173 tmp_mode,
174 HPTE_V_BOLTED, 174 HPTE_V_BOLTED,
175 psize); 175 psize);
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c
index 83578313ee7e..2ab9dcdfb415 100644
--- a/arch/powerpc/platforms/pseries/eeh.c
+++ b/arch/powerpc/platforms/pseries/eeh.c
@@ -893,6 +893,20 @@ void eeh_add_device_tree_early(struct device_node *dn)
893} 893}
894EXPORT_SYMBOL_GPL(eeh_add_device_tree_early); 894EXPORT_SYMBOL_GPL(eeh_add_device_tree_early);
895 895
896void eeh_add_device_tree_late(struct pci_bus *bus)
897{
898 struct pci_dev *dev;
899
900 list_for_each_entry(dev, &bus->devices, bus_list) {
901 eeh_add_device_late(dev);
902 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
903 struct pci_bus *subbus = dev->subordinate;
904 if (subbus)
905 eeh_add_device_tree_late(subbus);
906 }
907 }
908}
909
896/** 910/**
897 * eeh_add_device_late - perform EEH initialization for the indicated pci device 911 * eeh_add_device_late - perform EEH initialization for the indicated pci device
898 * @dev: pci device for which to set up EEH 912 * @dev: pci device for which to set up EEH
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index e3cbba49fd6e..b811d5ff92fe 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -37,7 +37,7 @@
37 37
38static inline const char * pcid_name (struct pci_dev *pdev) 38static inline const char * pcid_name (struct pci_dev *pdev)
39{ 39{
40 if (pdev->dev.driver) 40 if (pdev && pdev->dev.driver)
41 return pdev->dev.driver->name; 41 return pdev->dev.driver->name;
42 return ""; 42 return "";
43} 43}
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index bdaa8aabdaa6..f3bad900bbcf 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
@@ -106,6 +106,8 @@ pcibios_fixup_new_pci_devices(struct pci_bus *bus, int fix_bus)
106 } 106 }
107 } 107 }
108 } 108 }
109
110 eeh_add_device_tree_late(bus);
109} 111}
110EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices); 112EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices);
111 113
@@ -114,7 +116,6 @@ pcibios_pci_config_bridge(struct pci_dev *dev)
114{ 116{
115 u8 sec_busno; 117 u8 sec_busno;
116 struct pci_bus *child_bus; 118 struct pci_bus *child_bus;
117 struct pci_dev *child_dev;
118 119
119 /* Get busno of downstream bus */ 120 /* Get busno of downstream bus */
120 pci_read_config_byte(dev, PCI_SECONDARY_BUS, &sec_busno); 121 pci_read_config_byte(dev, PCI_SECONDARY_BUS, &sec_busno);
@@ -129,10 +130,6 @@ pcibios_pci_config_bridge(struct pci_dev *dev)
129 130
130 pci_scan_child_bus(child_bus); 131 pci_scan_child_bus(child_bus);
131 132
132 list_for_each_entry(child_dev, &child_bus->devices, bus_list) {
133 eeh_add_device_late(child_dev);
134 }
135
136 /* Fixup new pci devices without touching bus struct */ 133 /* Fixup new pci devices without touching bus struct */
137 pcibios_fixup_new_pci_devices(child_bus, 0); 134 pcibios_fixup_new_pci_devices(child_bus, 0);
138 135
@@ -160,18 +157,25 @@ pcibios_add_pci_devices(struct pci_bus * bus)
160 157
161 eeh_add_device_tree_early(dn); 158 eeh_add_device_tree_early(dn);
162 159
163 /* pci_scan_slot should find all children */ 160 if (_machine == PLATFORM_PSERIES_LPAR) {
164 slotno = PCI_SLOT(PCI_DN(dn->child)->devfn); 161 /* use ofdt-based probe */
165 num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0)); 162 of_scan_bus(dn, bus);
166 if (num) { 163 if (!list_empty(&bus->devices)) {
167 pcibios_fixup_new_pci_devices(bus, 1); 164 pcibios_fixup_new_pci_devices(bus, 0);
168 pci_bus_add_devices(bus); 165 pci_bus_add_devices(bus);
169 } 166 }
167 } else {
168 /* use legacy probe */
169 slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
170 num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
171 if (num) {
172 pcibios_fixup_new_pci_devices(bus, 1);
173 pci_bus_add_devices(bus);
174 }
170 175
171 list_for_each_entry(dev, &bus->devices, bus_list) { 176 list_for_each_entry(dev, &bus->devices, bus_list)
172 eeh_add_device_late (dev); 177 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE)
173 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) 178 pcibios_pci_config_bridge(dev);
174 pcibios_pci_config_bridge(dev);
175 } 179 }
176} 180}
177EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); 181EXPORT_SYMBOL_GPL(pcibios_add_pci_devices);
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index ab733be9af08..4c0a50a76554 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -383,6 +383,7 @@ source "arch/sparc64/oprofile/Kconfig"
383 383
384config KPROBES 384config KPROBES
385 bool "Kprobes (EXPERIMENTAL)" 385 bool "Kprobes (EXPERIMENTAL)"
386 depends on EXPERIMENTAL && MODULES
386 help 387 help
387 Kprobes allows you to trap at almost any kernel address and 388 Kprobes allows you to trap at almost any kernel address and
388 execute a callback function. register_kprobe() establishes 389 execute a callback function. register_kprobe() establishes
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 054461e6946d..158bd31e15b7 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -542,6 +542,8 @@ void __init setup_arch(char **cmdline_p)
542 } 542 }
543#endif 543#endif
544 544
545 smp_setup_cpu_possible_map();
546
545 paging_init(); 547 paging_init();
546} 548}
547 549
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 1fb6323e65a4..1f7ad8a69052 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -1079,18 +1079,12 @@ int setup_profiling_timer(unsigned int multiplier)
1079 return 0; 1079 return 0;
1080} 1080}
1081 1081
1082/* Constrain the number of cpus to max_cpus. */
1082void __init smp_prepare_cpus(unsigned int max_cpus) 1083void __init smp_prepare_cpus(unsigned int max_cpus)
1083{ 1084{
1084 int instance, mid;
1085
1086 instance = 0;
1087 while (!cpu_find_by_instance(instance, NULL, &mid)) {
1088 if (mid < max_cpus)
1089 cpu_set(mid, phys_cpu_present_map);
1090 instance++;
1091 }
1092
1093 if (num_possible_cpus() > max_cpus) { 1085 if (num_possible_cpus() > max_cpus) {
1086 int instance, mid;
1087
1094 instance = 0; 1088 instance = 0;
1095 while (!cpu_find_by_instance(instance, NULL, &mid)) { 1089 while (!cpu_find_by_instance(instance, NULL, &mid)) {
1096 if (mid != boot_cpu_id) { 1090 if (mid != boot_cpu_id) {
@@ -1105,6 +1099,22 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
1105 smp_store_cpu_info(boot_cpu_id); 1099 smp_store_cpu_info(boot_cpu_id);
1106} 1100}
1107 1101
1102/* Set this up early so that things like the scheduler can init
1103 * properly. We use the same cpu mask for both the present and
1104 * possible cpu map.
1105 */
1106void __init smp_setup_cpu_possible_map(void)
1107{
1108 int instance, mid;
1109
1110 instance = 0;
1111 while (!cpu_find_by_instance(instance, NULL, &mid)) {
1112 if (mid < NR_CPUS)
1113 cpu_set(mid, phys_cpu_present_map);
1114 instance++;
1115 }
1116}
1117
1108void __devinit smp_prepare_boot_cpu(void) 1118void __devinit smp_prepare_boot_cpu(void)
1109{ 1119{
1110 if (hard_smp_processor_id() >= NR_CPUS) { 1120 if (hard_smp_processor_id() >= NR_CPUS) {
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
index babc31b3ef12..e18eb79bf855 100644
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -577,6 +577,7 @@ source "arch/x86_64/oprofile/Kconfig"
577 577
578config KPROBES 578config KPROBES
579 bool "Kprobes (EXPERIMENTAL)" 579 bool "Kprobes (EXPERIMENTAL)"
580 depends on EXPERIMENTAL && MODULES
580 help 581 help
581 Kprobes allows you to trap at almost any kernel address and 582 Kprobes allows you to trap at almost any kernel address and
582 execute a callback function. register_kprobe() establishes 583 execute a callback function. register_kprobe() establishes
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index d70605eda333..e5b14c57eaa0 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -962,14 +962,12 @@ void smp_apic_timer_interrupt(struct pt_regs *regs)
962 irq_exit(); 962 irq_exit();
963} 963}
964 964
965int __initdata unsync_tsc_on_multicluster;
966
967/* 965/*
968 * oem_force_hpet_timer -- force HPET mode for some boxes. 966 * oem_force_hpet_timer -- force HPET mode for some boxes.
969 * 967 *
970 * Thus far, the major user of this is IBM's Summit2 series: 968 * Thus far, the major user of this is IBM's Summit2 series:
971 * 969 *
972 * Some clustered boxes may have unsynced TSC problems if they are 970 * Clustered boxes may have unsynced TSC problems if they are
973 * multi-chassis. Use available data to take a good guess. 971 * multi-chassis. Use available data to take a good guess.
974 * If in doubt, go HPET. 972 * If in doubt, go HPET.
975 */ 973 */
@@ -979,11 +977,6 @@ __cpuinit int oem_force_hpet_timer(void)
979 unsigned id; 977 unsigned id;
980 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS); 978 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
981 979
982 /* Only do this check on IBM machines - big Unisys systems
983 use multiple clusters too, but have synchronized TSC */
984 if (!unsync_tsc_on_multicluster)
985 return 0;
986
987 bitmap_zero(clustermap, NUM_APIC_CLUSTERS); 980 bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
988 981
989 for (i = 0; i < NR_CPUS; i++) { 982 for (i = 0; i < NR_CPUS; i++) {
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index 5de7eaf5d97c..aa55e3cec665 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -424,7 +424,7 @@ static __init void parse_cmdline_early (char ** cmdline_p)
424 elfcorehdr_addr = memparse(from+11, &from); 424 elfcorehdr_addr = memparse(from+11, &from);
425#endif 425#endif
426 426
427#ifdef CONFIG_SMP 427#ifdef CONFIG_HOTPLUG_CPU
428 else if (!memcmp(from, "additional_cpus=", 16)) 428 else if (!memcmp(from, "additional_cpus=", 16))
429 setup_additional_cpus(from+16); 429 setup_additional_cpus(from+16);
430#endif 430#endif
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 74fae2daf87e..c8dbe38c81c8 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -239,7 +239,6 @@ enum cfqq_state_flags {
239 CFQ_CFQQ_FLAG_fifo_expire, 239 CFQ_CFQQ_FLAG_fifo_expire,
240 CFQ_CFQQ_FLAG_idle_window, 240 CFQ_CFQQ_FLAG_idle_window,
241 CFQ_CFQQ_FLAG_prio_changed, 241 CFQ_CFQQ_FLAG_prio_changed,
242 CFQ_CFQQ_FLAG_expired,
243}; 242};
244 243
245#define CFQ_CFQQ_FNS(name) \ 244#define CFQ_CFQQ_FNS(name) \
@@ -264,7 +263,6 @@ CFQ_CFQQ_FNS(must_dispatch);
264CFQ_CFQQ_FNS(fifo_expire); 263CFQ_CFQQ_FNS(fifo_expire);
265CFQ_CFQQ_FNS(idle_window); 264CFQ_CFQQ_FNS(idle_window);
266CFQ_CFQQ_FNS(prio_changed); 265CFQ_CFQQ_FNS(prio_changed);
267CFQ_CFQQ_FNS(expired);
268#undef CFQ_CFQQ_FNS 266#undef CFQ_CFQQ_FNS
269 267
270enum cfq_rq_state_flags { 268enum cfq_rq_state_flags {
@@ -336,7 +334,7 @@ static struct request *cfq_find_rq_hash(struct cfq_data *cfqd, sector_t offset)
336 */ 334 */
337static inline void cfq_schedule_dispatch(struct cfq_data *cfqd) 335static inline void cfq_schedule_dispatch(struct cfq_data *cfqd)
338{ 336{
339 if (!cfqd->rq_in_driver && cfqd->busy_queues) 337 if (cfqd->busy_queues)
340 kblockd_schedule_work(&cfqd->unplug_work); 338 kblockd_schedule_work(&cfqd->unplug_work);
341} 339}
342 340
@@ -736,13 +734,63 @@ __cfq_set_active_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq)
736 cfqq->slice_left = 0; 734 cfqq->slice_left = 0;
737 cfq_clear_cfqq_must_alloc_slice(cfqq); 735 cfq_clear_cfqq_must_alloc_slice(cfqq);
738 cfq_clear_cfqq_fifo_expire(cfqq); 736 cfq_clear_cfqq_fifo_expire(cfqq);
739 cfq_clear_cfqq_expired(cfqq);
740 } 737 }
741 738
742 cfqd->active_queue = cfqq; 739 cfqd->active_queue = cfqq;
743} 740}
744 741
745/* 742/*
743 * current cfqq expired its slice (or was too idle), select new one
744 */
745static void
746__cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
747 int preempted)
748{
749 unsigned long now = jiffies;
750
751 if (cfq_cfqq_wait_request(cfqq))
752 del_timer(&cfqd->idle_slice_timer);
753
754 if (!preempted && !cfq_cfqq_dispatched(cfqq)) {
755 cfqq->service_last = now;
756 cfq_schedule_dispatch(cfqd);
757 }
758
759 cfq_clear_cfqq_must_dispatch(cfqq);
760 cfq_clear_cfqq_wait_request(cfqq);
761
762 /*
763 * store what was left of this slice, if the queue idled out
764 * or was preempted
765 */
766 if (time_after(cfqq->slice_end, now))
767 cfqq->slice_left = cfqq->slice_end - now;
768 else
769 cfqq->slice_left = 0;
770
771 if (cfq_cfqq_on_rr(cfqq))
772 cfq_resort_rr_list(cfqq, preempted);
773
774 if (cfqq == cfqd->active_queue)
775 cfqd->active_queue = NULL;
776
777 if (cfqd->active_cic) {
778 put_io_context(cfqd->active_cic->ioc);
779 cfqd->active_cic = NULL;
780 }
781
782 cfqd->dispatch_slice = 0;
783}
784
785static inline void cfq_slice_expired(struct cfq_data *cfqd, int preempted)
786{
787 struct cfq_queue *cfqq = cfqd->active_queue;
788
789 if (cfqq)
790 __cfq_slice_expired(cfqd, cfqq, preempted);
791}
792
793/*
746 * 0 794 * 0
747 * 0,1 795 * 0,1
748 * 0,1,2 796 * 0,1,2
@@ -801,16 +849,7 @@ static int cfq_get_next_prio_level(struct cfq_data *cfqd)
801 849
802static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd) 850static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd)
803{ 851{
804 struct cfq_queue *cfqq; 852 struct cfq_queue *cfqq = NULL;
805
806 /*
807 * if current queue is expired but not done with its requests yet,
808 * wait for that to happen
809 */
810 if ((cfqq = cfqd->active_queue) != NULL) {
811 if (cfq_cfqq_expired(cfqq) && cfq_cfqq_dispatched(cfqq))
812 return NULL;
813 }
814 853
815 /* 854 /*
816 * if current list is non-empty, grab first entry. if it is empty, 855 * if current list is non-empty, grab first entry. if it is empty,
@@ -837,66 +876,11 @@ static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd)
837 return cfqq; 876 return cfqq;
838} 877}
839 878
840/*
841 * current cfqq expired its slice (or was too idle), select new one
842 */
843static void
844__cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
845 int preempted)
846{
847 unsigned long now = jiffies;
848
849 if (cfq_cfqq_wait_request(cfqq))
850 del_timer(&cfqd->idle_slice_timer);
851
852 if (!preempted && !cfq_cfqq_dispatched(cfqq))
853 cfqq->service_last = now;
854
855 cfq_clear_cfqq_must_dispatch(cfqq);
856 cfq_clear_cfqq_wait_request(cfqq);
857
858 /*
859 * store what was left of this slice, if the queue idled out
860 * or was preempted
861 */
862 if (time_after(cfqq->slice_end, now))
863 cfqq->slice_left = cfqq->slice_end - now;
864 else
865 cfqq->slice_left = 0;
866
867 if (cfq_cfqq_on_rr(cfqq))
868 cfq_resort_rr_list(cfqq, preempted);
869
870 if (cfqq == cfqd->active_queue)
871 cfqd->active_queue = NULL;
872
873 if (cfqd->active_cic) {
874 put_io_context(cfqd->active_cic->ioc);
875 cfqd->active_cic = NULL;
876 }
877
878 cfqd->dispatch_slice = 0;
879}
880
881static inline void cfq_slice_expired(struct cfq_data *cfqd, int preempted)
882{
883 struct cfq_queue *cfqq = cfqd->active_queue;
884
885 if (cfqq) {
886 /*
887 * use deferred expiry, if there are requests in progress as
888 * not to disturb the slice of the next queue
889 */
890 if (cfq_cfqq_dispatched(cfqq))
891 cfq_mark_cfqq_expired(cfqq);
892 else
893 __cfq_slice_expired(cfqd, cfqq, preempted);
894 }
895}
896
897static int cfq_arm_slice_timer(struct cfq_data *cfqd, struct cfq_queue *cfqq) 879static int cfq_arm_slice_timer(struct cfq_data *cfqd, struct cfq_queue *cfqq)
898 880
899{ 881{
882 unsigned long sl;
883
900 WARN_ON(!RB_EMPTY(&cfqq->sort_list)); 884 WARN_ON(!RB_EMPTY(&cfqq->sort_list));
901 WARN_ON(cfqq != cfqd->active_queue); 885 WARN_ON(cfqq != cfqd->active_queue);
902 886
@@ -916,13 +900,8 @@ static int cfq_arm_slice_timer(struct cfq_data *cfqd, struct cfq_queue *cfqq)
916 cfq_mark_cfqq_must_dispatch(cfqq); 900 cfq_mark_cfqq_must_dispatch(cfqq);
917 cfq_mark_cfqq_wait_request(cfqq); 901 cfq_mark_cfqq_wait_request(cfqq);
918 902
919 if (!timer_pending(&cfqd->idle_slice_timer)) { 903 sl = min(cfqq->slice_end - 1, (unsigned long) cfqd->cfq_slice_idle);
920 unsigned long slice_left = min(cfqq->slice_end - 1, (unsigned long) cfqd->cfq_slice_idle); 904 mod_timer(&cfqd->idle_slice_timer, jiffies + sl);
921
922 cfqd->idle_slice_timer.expires = jiffies + slice_left;
923 add_timer(&cfqd->idle_slice_timer);
924 }
925
926 return 1; 905 return 1;
927} 906}
928 907
@@ -1006,9 +985,6 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd)
1006 if (!cfqq) 985 if (!cfqq)
1007 goto new_queue; 986 goto new_queue;
1008 987
1009 if (cfq_cfqq_expired(cfqq))
1010 goto new_queue;
1011
1012 /* 988 /*
1013 * slice has expired 989 * slice has expired
1014 */ 990 */
@@ -1181,10 +1157,8 @@ static void cfq_put_queue(struct cfq_queue *cfqq)
1181 BUG_ON(cfqq->allocated[READ] + cfqq->allocated[WRITE]); 1157 BUG_ON(cfqq->allocated[READ] + cfqq->allocated[WRITE]);
1182 BUG_ON(cfq_cfqq_on_rr(cfqq)); 1158 BUG_ON(cfq_cfqq_on_rr(cfqq));
1183 1159
1184 if (unlikely(cfqd->active_queue == cfqq)) { 1160 if (unlikely(cfqd->active_queue == cfqq))
1185 __cfq_slice_expired(cfqd, cfqq, 0); 1161 __cfq_slice_expired(cfqd, cfqq, 0);
1186 cfq_schedule_dispatch(cfqd);
1187 }
1188 1162
1189 cfq_put_cfqd(cfqq->cfqd); 1163 cfq_put_cfqd(cfqq->cfqd);
1190 1164
@@ -1245,10 +1219,8 @@ static void cfq_exit_single_io_context(struct cfq_io_context *cic)
1245 1219
1246 spin_lock(q->queue_lock); 1220 spin_lock(q->queue_lock);
1247 1221
1248 if (unlikely(cic->cfqq == cfqd->active_queue)) { 1222 if (unlikely(cic->cfqq == cfqd->active_queue))
1249 __cfq_slice_expired(cfqd, cic->cfqq, 0); 1223 __cfq_slice_expired(cfqd, cic->cfqq, 0);
1250 cfq_schedule_dispatch(cfqd);
1251 }
1252 1224
1253 cfq_put_queue(cic->cfqq); 1225 cfq_put_queue(cic->cfqq);
1254 cic->cfqq = NULL; 1226 cic->cfqq = NULL;
@@ -1715,10 +1687,7 @@ static void cfq_completed_request(request_queue_t *q, struct request *rq)
1715 cfqq->service_last = now; 1687 cfqq->service_last = now;
1716 cfq_resort_rr_list(cfqq, 0); 1688 cfq_resort_rr_list(cfqq, 0);
1717 } 1689 }
1718 if (cfq_cfqq_expired(cfqq)) { 1690 cfq_schedule_dispatch(cfqd);
1719 __cfq_slice_expired(cfqd, cfqq, 0);
1720 cfq_schedule_dispatch(cfqd);
1721 }
1722 } 1691 }
1723 1692
1724 if (cfq_crq_is_sync(crq)) 1693 if (cfq_crq_is_sync(crq))
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
index 649677b5dc36..5fdf18515433 100644
--- a/drivers/char/pcmcia/cm4000_cs.c
+++ b/drivers/char/pcmcia/cm4000_cs.c
@@ -13,11 +13,12 @@
13 * 13 *
14 * (C) 2000,2001,2002,2003,2004 Omnikey AG 14 * (C) 2000,2001,2002,2003,2004 Omnikey AG
15 * 15 *
16 * (C) 2005 Harald Welte <laforge@gnumonks.org> 16 * (C) 2005-2006 Harald Welte <laforge@gnumonks.org>
17 * - Adhere to Kernel CodingStyle 17 * - Adhere to Kernel CodingStyle
18 * - Port to 2.6.13 "new" style PCMCIA 18 * - Port to 2.6.13 "new" style PCMCIA
19 * - Check for copy_{from,to}_user return values 19 * - Check for copy_{from,to}_user return values
20 * - Use nonseekable_open() 20 * - Use nonseekable_open()
21 * - add class interface for udev device creation
21 * 22 *
22 * All rights reserved. Licensed under dual BSD/GPL license. 23 * All rights reserved. Licensed under dual BSD/GPL license.
23 */ 24 */
@@ -56,7 +57,7 @@ module_param(pc_debug, int, 0600);
56#else 57#else
57#define DEBUGP(n, rdr, x, args...) 58#define DEBUGP(n, rdr, x, args...)
58#endif 59#endif
59static char *version = "cm4000_cs.c v2.4.0gm5 - All bugs added by Harald Welte"; 60static char *version = "cm4000_cs.c v2.4.0gm6 - All bugs added by Harald Welte";
60 61
61#define T_1SEC (HZ) 62#define T_1SEC (HZ)
62#define T_10MSEC msecs_to_jiffies(10) 63#define T_10MSEC msecs_to_jiffies(10)
@@ -156,6 +157,7 @@ struct cm4000_dev {
156 /*queue*/ 4*sizeof(wait_queue_head_t)) 157 /*queue*/ 4*sizeof(wait_queue_head_t))
157 158
158static dev_link_t *dev_table[CM4000_MAX_DEV]; 159static dev_link_t *dev_table[CM4000_MAX_DEV];
160static struct class *cmm_class;
159 161
160/* This table doesn't use spaces after the comma between fields and thus 162/* This table doesn't use spaces after the comma between fields and thus
161 * violates CodingStyle. However, I don't really think wrapping it around will 163 * violates CodingStyle. However, I don't really think wrapping it around will
@@ -1937,6 +1939,9 @@ static int cm4000_attach(struct pcmcia_device *p_dev)
1937 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; 1939 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
1938 cm4000_config(link, i); 1940 cm4000_config(link, i);
1939 1941
1942 class_device_create(cmm_class, NULL, MKDEV(major, i), NULL,
1943 "cmm%d", i);
1944
1940 return 0; 1945 return 0;
1941} 1946}
1942 1947
@@ -1962,6 +1967,8 @@ static void cm4000_detach(struct pcmcia_device *p_dev)
1962 dev_table[devno] = NULL; 1967 dev_table[devno] = NULL;
1963 kfree(dev); 1968 kfree(dev);
1964 1969
1970 class_device_destroy(cmm_class, MKDEV(major, devno));
1971
1965 return; 1972 return;
1966} 1973}
1967 1974
@@ -1995,8 +2002,18 @@ static struct pcmcia_driver cm4000_driver = {
1995 2002
1996static int __init cmm_init(void) 2003static int __init cmm_init(void)
1997{ 2004{
2005 int rc;
2006
1998 printk(KERN_INFO "%s\n", version); 2007 printk(KERN_INFO "%s\n", version);
1999 pcmcia_register_driver(&cm4000_driver); 2008
2009 cmm_class = class_create(THIS_MODULE, "cardman_4000");
2010 if (!cmm_class)
2011 return -1;
2012
2013 rc = pcmcia_register_driver(&cm4000_driver);
2014 if (rc < 0)
2015 return rc;
2016
2000 major = register_chrdev(0, DEVICE_NAME, &cm4000_fops); 2017 major = register_chrdev(0, DEVICE_NAME, &cm4000_fops);
2001 if (major < 0) { 2018 if (major < 0) {
2002 printk(KERN_WARNING MODULE_NAME 2019 printk(KERN_WARNING MODULE_NAME
@@ -2012,6 +2029,7 @@ static void __exit cmm_exit(void)
2012 printk(KERN_INFO MODULE_NAME ": unloading\n"); 2029 printk(KERN_INFO MODULE_NAME ": unloading\n");
2013 pcmcia_unregister_driver(&cm4000_driver); 2030 pcmcia_unregister_driver(&cm4000_driver);
2014 unregister_chrdev(major, DEVICE_NAME); 2031 unregister_chrdev(major, DEVICE_NAME);
2032 class_destroy(cmm_class);
2015}; 2033};
2016 2034
2017module_init(cmm_init); 2035module_init(cmm_init);
diff --git a/drivers/char/pcmcia/cm4040_cs.c b/drivers/char/pcmcia/cm4040_cs.c
index 46eb371bf17e..466e33bab029 100644
--- a/drivers/char/pcmcia/cm4040_cs.c
+++ b/drivers/char/pcmcia/cm4040_cs.c
@@ -3,12 +3,13 @@
3 * 3 *
4 * (c) 2000-2004 Omnikey AG (http://www.omnikey.com/) 4 * (c) 2000-2004 Omnikey AG (http://www.omnikey.com/)
5 * 5 *
6 * (C) 2005 Harald Welte <laforge@gnumonks.org> 6 * (C) 2005-2006 Harald Welte <laforge@gnumonks.org>
7 * - add support for poll() 7 * - add support for poll()
8 * - driver cleanup 8 * - driver cleanup
9 * - add waitqueues 9 * - add waitqueues
10 * - adhere to linux kernel coding style and policies 10 * - adhere to linux kernel coding style and policies
11 * - support 2.6.13 "new style" pcmcia interface 11 * - support 2.6.13 "new style" pcmcia interface
12 * - add class interface for udev device creation
12 * 13 *
13 * The device basically is a USB CCID compliant device that has been 14 * The device basically is a USB CCID compliant device that has been
14 * attached to an I/O-Mapped FIFO. 15 * attached to an I/O-Mapped FIFO.
@@ -53,7 +54,7 @@ module_param(pc_debug, int, 0600);
53#endif 54#endif
54 55
55static char *version = 56static char *version =
56"OMNIKEY CardMan 4040 v1.1.0gm4 - All bugs added by Harald Welte"; 57"OMNIKEY CardMan 4040 v1.1.0gm5 - All bugs added by Harald Welte";
57 58
58#define CCID_DRIVER_BULK_DEFAULT_TIMEOUT (150*HZ) 59#define CCID_DRIVER_BULK_DEFAULT_TIMEOUT (150*HZ)
59#define CCID_DRIVER_ASYNC_POWERUP_TIMEOUT (35*HZ) 60#define CCID_DRIVER_ASYNC_POWERUP_TIMEOUT (35*HZ)
@@ -67,6 +68,7 @@ static char *version =
67static void reader_release(dev_link_t *link); 68static void reader_release(dev_link_t *link);
68 69
69static int major; 70static int major;
71static struct class *cmx_class;
70 72
71#define BS_READABLE 0x01 73#define BS_READABLE 0x01
72#define BS_WRITABLE 0x02 74#define BS_WRITABLE 0x02
@@ -696,6 +698,9 @@ static int reader_attach(struct pcmcia_device *p_dev)
696 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; 698 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
697 reader_config(link, i); 699 reader_config(link, i);
698 700
701 class_device_create(cmx_class, NULL, MKDEV(major, i), NULL,
702 "cmx%d", i);
703
699 return 0; 704 return 0;
700} 705}
701 706
@@ -721,6 +726,8 @@ static void reader_detach(struct pcmcia_device *p_dev)
721 dev_table[devno] = NULL; 726 dev_table[devno] = NULL;
722 kfree(dev); 727 kfree(dev);
723 728
729 class_device_destroy(cmx_class, MKDEV(major, devno));
730
724 return; 731 return;
725} 732}
726 733
@@ -755,8 +762,17 @@ static struct pcmcia_driver reader_driver = {
755 762
756static int __init cm4040_init(void) 763static int __init cm4040_init(void)
757{ 764{
765 int rc;
766
758 printk(KERN_INFO "%s\n", version); 767 printk(KERN_INFO "%s\n", version);
759 pcmcia_register_driver(&reader_driver); 768 cmx_class = class_create(THIS_MODULE, "cardman_4040");
769 if (!cmx_class)
770 return -1;
771
772 rc = pcmcia_register_driver(&reader_driver);
773 if (rc < 0)
774 return rc;
775
760 major = register_chrdev(0, DEVICE_NAME, &reader_fops); 776 major = register_chrdev(0, DEVICE_NAME, &reader_fops);
761 if (major < 0) { 777 if (major < 0) {
762 printk(KERN_WARNING MODULE_NAME 778 printk(KERN_WARNING MODULE_NAME
@@ -771,6 +787,7 @@ static void __exit cm4040_exit(void)
771 printk(KERN_INFO MODULE_NAME ": unloading\n"); 787 printk(KERN_INFO MODULE_NAME ": unloading\n");
772 pcmcia_unregister_driver(&reader_driver); 788 pcmcia_unregister_driver(&reader_driver);
773 unregister_chrdev(major, DEVICE_NAME); 789 unregister_chrdev(major, DEVICE_NAME);
790 class_destroy(cmx_class);
774} 791}
775 792
776module_init(cm4040_init); 793module_init(cm4040_init);
diff --git a/drivers/char/sx.c b/drivers/char/sx.c
index 588e75ec1630..a6b4f02bdceb 100644
--- a/drivers/char/sx.c
+++ b/drivers/char/sx.c
@@ -1095,17 +1095,17 @@ static inline void sx_receive_chars (struct sx_port *port)
1095 1095
1096 sx_dprintk (SX_DEBUG_RECEIVE, "rxop=%d, c = %d.\n", rx_op, c); 1096 sx_dprintk (SX_DEBUG_RECEIVE, "rxop=%d, c = %d.\n", rx_op, c);
1097 1097
1098 /* Don't copy past the end of the hardware receive buffer */
1099 if (rx_op + c > 0x100) c = 0x100 - rx_op;
1100
1101 sx_dprintk (SX_DEBUG_RECEIVE, "c = %d.\n", c);
1102
1098 /* Don't copy more bytes than there is room for in the buffer */ 1103 /* Don't copy more bytes than there is room for in the buffer */
1099 1104
1100 c = tty_prepare_flip_string(tty, &rp, c); 1105 c = tty_prepare_flip_string(tty, &rp, c);
1101 1106
1102 sx_dprintk (SX_DEBUG_RECEIVE, "c = %d.\n", c); 1107 sx_dprintk (SX_DEBUG_RECEIVE, "c = %d.\n", c);
1103 1108
1104 /* Don't copy past the end of the hardware receive buffer */
1105 if (rx_op + c > 0x100) c = 0x100 - rx_op;
1106
1107 sx_dprintk (SX_DEBUG_RECEIVE, "c = %d.\n", c);
1108
1109 /* If for one reason or another, we can't copy more data, we're done! */ 1109 /* If for one reason or another, we can't copy more data, we're done! */
1110 if (c == 0) break; 1110 if (c == 0) break;
1111 1111
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c
index a85a60a93deb..b046390cd256 100644
--- a/drivers/char/synclink_gt.c
+++ b/drivers/char/synclink_gt.c
@@ -306,7 +306,7 @@ struct slgt_info {
306 int tx_active; 306 int tx_active;
307 307
308 unsigned char signals; /* serial signal states */ 308 unsigned char signals; /* serial signal states */
309 unsigned int init_error; /* initialization error */ 309 int init_error; /* initialization error */
310 310
311 unsigned char *tx_buf; 311 unsigned char *tx_buf;
312 int tx_count; 312 int tx_count;
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index e9bba94fc898..53d3d066554e 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -303,7 +303,7 @@ static struct tty_buffer *tty_buffer_find(struct tty_struct *tty, size_t size)
303 t->commit = 0; 303 t->commit = 0;
304 t->read = 0; 304 t->read = 0;
305 /* DEBUG ONLY */ 305 /* DEBUG ONLY */
306 memset(t->data, '*', size); 306/* memset(t->data, '*', size); */
307/* printk("Flip recycle %p\n", t); */ 307/* printk("Flip recycle %p\n", t); */
308 return t; 308 return t;
309 } 309 }
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c
index 4c2af9020905..6213bd3caee5 100644
--- a/drivers/ide/legacy/ide-cs.c
+++ b/drivers/ide/legacy/ide-cs.c
@@ -445,6 +445,7 @@ static struct pcmcia_device_id ide_ids[] = {
445 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728), 445 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
446 PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1), 446 PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
447 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003), 447 PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
448 PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
448 PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852), 449 PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
449 PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209), 450 PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
450 PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e), 451 PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
diff --git a/drivers/ieee1394/video1394.c b/drivers/ieee1394/video1394.c
index 39fb88309e8e..216dbbf1dc8e 100644
--- a/drivers/ieee1394/video1394.c
+++ b/drivers/ieee1394/video1394.c
@@ -744,7 +744,7 @@ static int __video1394_ioctl(struct file *file,
744 if (i == ISO_CHANNELS) { 744 if (i == ISO_CHANNELS) {
745 PRINT(KERN_ERR, ohci->host->id, 745 PRINT(KERN_ERR, ohci->host->id,
746 "No free channel found"); 746 "No free channel found");
747 return EAGAIN; 747 return -EAGAIN;
748 } 748 }
749 if (!(ohci->ISO_channel_usage & mask)) { 749 if (!(ohci->ISO_channel_usage & mask)) {
750 v.channel = i; 750 v.channel = i;
diff --git a/drivers/mtd/redboot.c b/drivers/mtd/redboot.c
index 7b7ca5ab5ae4..8815c8dbef2d 100644
--- a/drivers/mtd/redboot.c
+++ b/drivers/mtd/redboot.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * $Id: redboot.c,v 1.18 2005/11/07 11:14:21 gleixner Exp $ 2 * $Id: redboot.c,v 1.19 2005/12/01 10:03:51 dwmw2 Exp $
3 * 3 *
4 * Parse RedBoot-style Flash Image System (FIS) tables and 4 * Parse RedBoot-style Flash Image System (FIS) tables and
5 * produce a Linux partition array to match. 5 * produce a Linux partition array to match.
@@ -89,8 +89,32 @@ static int parse_redboot_partitions(struct mtd_info *master,
89 i = numslots; 89 i = numslots;
90 break; 90 break;
91 } 91 }
92 if (!memcmp(buf[i].name, "FIS directory", 14)) 92 if (!memcmp(buf[i].name, "FIS directory", 14)) {
93 /* This is apparently the FIS directory entry for the
94 * FIS directory itself. The FIS directory size is
95 * one erase block; if the buf[i].size field is
96 * swab32(erasesize) then we know we are looking at
97 * a byte swapped FIS directory - swap all the entries!
98 * (NOTE: this is 'size' not 'data_length'; size is
99 * the full size of the entry.)
100 */
101 if (swab32(buf[i].size) == master->erasesize) {
102 int j;
103 for (j = 0; j < numslots && buf[j].name[0] != 0xff; ++j) {
104 /* The unsigned long fields were written with the
105 * wrong byte sex, name and pad have no byte sex.
106 */
107 swab32s(&buf[j].flash_base);
108 swab32s(&buf[j].mem_base);
109 swab32s(&buf[j].size);
110 swab32s(&buf[j].entry_point);
111 swab32s(&buf[j].data_length);
112 swab32s(&buf[j].desc_cksum);
113 swab32s(&buf[j].file_cksum);
114 }
115 }
93 break; 116 break;
117 }
94 } 118 }
95 if (i == numslots) { 119 if (i == numslots) {
96 /* Didn't find it */ 120 /* Didn't find it */
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index f822cd3025ff..dd410496aadb 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -1118,13 +1118,18 @@ err_out:
1118 return -ENOMEM; 1118 return -ENOMEM;
1119} 1119}
1120 1120
1121static void cp_init_rings_index (struct cp_private *cp)
1122{
1123 cp->rx_tail = 0;
1124 cp->tx_head = cp->tx_tail = 0;
1125}
1126
1121static int cp_init_rings (struct cp_private *cp) 1127static int cp_init_rings (struct cp_private *cp)
1122{ 1128{
1123 memset(cp->tx_ring, 0, sizeof(struct cp_desc) * CP_TX_RING_SIZE); 1129 memset(cp->tx_ring, 0, sizeof(struct cp_desc) * CP_TX_RING_SIZE);
1124 cp->tx_ring[CP_TX_RING_SIZE - 1].opts1 = cpu_to_le32(RingEnd); 1130 cp->tx_ring[CP_TX_RING_SIZE - 1].opts1 = cpu_to_le32(RingEnd);
1125 1131
1126 cp->rx_tail = 0; 1132 cp_init_rings_index(cp);
1127 cp->tx_head = cp->tx_tail = 0;
1128 1133
1129 return cp_refill_rx (cp); 1134 return cp_refill_rx (cp);
1130} 1135}
@@ -1886,30 +1891,30 @@ static int cp_suspend (struct pci_dev *pdev, pm_message_t state)
1886 1891
1887 spin_unlock_irqrestore (&cp->lock, flags); 1892 spin_unlock_irqrestore (&cp->lock, flags);
1888 1893
1889 if (cp->pdev && cp->wol_enabled) { 1894 pci_save_state(pdev);
1890 pci_save_state (cp->pdev); 1895 pci_enable_wake(pdev, pci_choose_state(pdev, state), cp->wol_enabled);
1891 cp_set_d3_state (cp); 1896 pci_set_power_state(pdev, pci_choose_state(pdev, state));
1892 }
1893 1897
1894 return 0; 1898 return 0;
1895} 1899}
1896 1900
1897static int cp_resume (struct pci_dev *pdev) 1901static int cp_resume (struct pci_dev *pdev)
1898{ 1902{
1899 struct net_device *dev; 1903 struct net_device *dev = pci_get_drvdata (pdev);
1900 struct cp_private *cp; 1904 struct cp_private *cp = netdev_priv(dev);
1901 unsigned long flags; 1905 unsigned long flags;
1902 1906
1903 dev = pci_get_drvdata (pdev); 1907 if (!netif_running(dev))
1904 cp = netdev_priv(dev); 1908 return 0;
1905 1909
1906 netif_device_attach (dev); 1910 netif_device_attach (dev);
1907 1911
1908 if (cp->pdev && cp->wol_enabled) { 1912 pci_set_power_state(pdev, PCI_D0);
1909 pci_set_power_state (cp->pdev, PCI_D0); 1913 pci_restore_state(pdev);
1910 pci_restore_state (cp->pdev); 1914 pci_enable_wake(pdev, PCI_D0, 0);
1911 } 1915
1912 1916 /* FIXME: sh*t may happen if the Rx ring buffer is depleted */
1917 cp_init_rings_index (cp);
1913 cp_init_hw (cp); 1918 cp_init_hw (cp);
1914 netif_start_queue (dev); 1919 netif_start_queue (dev);
1915 1920
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index 27c77306193b..99baf0e099fc 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -225,9 +225,6 @@ struct e1000_rx_ring {
225 struct e1000_ps_page *ps_page; 225 struct e1000_ps_page *ps_page;
226 struct e1000_ps_page_dma *ps_page_dma; 226 struct e1000_ps_page_dma *ps_page_dma;
227 227
228 struct sk_buff *rx_skb_top;
229 struct sk_buff *rx_skb_prev;
230
231 /* cpu for rx queue */ 228 /* cpu for rx queue */
232 int cpu; 229 int cpu;
233 230
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 31e332935e5a..5b7d0f425af2 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -103,7 +103,7 @@ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
103#else 103#else
104#define DRIVERNAPI "-NAPI" 104#define DRIVERNAPI "-NAPI"
105#endif 105#endif
106#define DRV_VERSION "6.3.9-k2"DRIVERNAPI 106#define DRV_VERSION "6.3.9-k4"DRIVERNAPI
107char e1000_driver_version[] = DRV_VERSION; 107char e1000_driver_version[] = DRV_VERSION;
108static char e1000_copyright[] = "Copyright (c) 1999-2005 Intel Corporation."; 108static char e1000_copyright[] = "Copyright (c) 1999-2005 Intel Corporation.";
109 109
@@ -1635,8 +1635,6 @@ setup_rx_desc_die:
1635 1635
1636 rxdr->next_to_clean = 0; 1636 rxdr->next_to_clean = 0;
1637 rxdr->next_to_use = 0; 1637 rxdr->next_to_use = 0;
1638 rxdr->rx_skb_top = NULL;
1639 rxdr->rx_skb_prev = NULL;
1640 1638
1641 return 0; 1639 return 0;
1642} 1640}
@@ -1713,8 +1711,23 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
1713 rctl |= adapter->rx_buffer_len << 0x11; 1711 rctl |= adapter->rx_buffer_len << 0x11;
1714 } else { 1712 } else {
1715 rctl &= ~E1000_RCTL_SZ_4096; 1713 rctl &= ~E1000_RCTL_SZ_4096;
1716 rctl &= ~E1000_RCTL_BSEX; 1714 rctl |= E1000_RCTL_BSEX;
1717 rctl |= E1000_RCTL_SZ_2048; 1715 switch (adapter->rx_buffer_len) {
1716 case E1000_RXBUFFER_2048:
1717 default:
1718 rctl |= E1000_RCTL_SZ_2048;
1719 rctl &= ~E1000_RCTL_BSEX;
1720 break;
1721 case E1000_RXBUFFER_4096:
1722 rctl |= E1000_RCTL_SZ_4096;
1723 break;
1724 case E1000_RXBUFFER_8192:
1725 rctl |= E1000_RCTL_SZ_8192;
1726 break;
1727 case E1000_RXBUFFER_16384:
1728 rctl |= E1000_RCTL_SZ_16384;
1729 break;
1730 }
1718 } 1731 }
1719 1732
1720#ifndef CONFIG_E1000_DISABLE_PACKET_SPLIT 1733#ifndef CONFIG_E1000_DISABLE_PACKET_SPLIT
@@ -2107,16 +2120,6 @@ e1000_clean_rx_ring(struct e1000_adapter *adapter,
2107 } 2120 }
2108 } 2121 }
2109 2122
2110 /* there also may be some cached data in our adapter */
2111 if (rx_ring->rx_skb_top) {
2112 dev_kfree_skb(rx_ring->rx_skb_top);
2113
2114 /* rx_skb_prev will be wiped out by rx_skb_top */
2115 rx_ring->rx_skb_top = NULL;
2116 rx_ring->rx_skb_prev = NULL;
2117 }
2118
2119
2120 size = sizeof(struct e1000_buffer) * rx_ring->count; 2123 size = sizeof(struct e1000_buffer) * rx_ring->count;
2121 memset(rx_ring->buffer_info, 0, size); 2124 memset(rx_ring->buffer_info, 0, size);
2122 size = sizeof(struct e1000_ps_page) * rx_ring->count; 2125 size = sizeof(struct e1000_ps_page) * rx_ring->count;
@@ -3106,24 +3109,27 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
3106 break; 3109 break;
3107 } 3110 }
3108 3111
3109 /* since the driver code now supports splitting a packet across 3112
3110 * multiple descriptors, most of the fifo related limitations on
3111 * jumbo frame traffic have gone away.
3112 * simply use 2k descriptors for everything.
3113 *
3114 * NOTE: dev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
3115 * means we reserve 2 more, this pushes us to allocate from the next
3116 * larger slab size
3117 * i.e. RXBUFFER_2048 --> size-4096 slab */
3118
3119 /* recent hardware supports 1KB granularity */
3120 if (adapter->hw.mac_type > e1000_82547_rev_2) { 3113 if (adapter->hw.mac_type > e1000_82547_rev_2) {
3121 adapter->rx_buffer_len = 3114 adapter->rx_buffer_len = max_frame;
3122 ((max_frame < E1000_RXBUFFER_2048) ?
3123 max_frame : E1000_RXBUFFER_2048);
3124 E1000_ROUNDUP(adapter->rx_buffer_len, 1024); 3115 E1000_ROUNDUP(adapter->rx_buffer_len, 1024);
3125 } else 3116 } else {
3126 adapter->rx_buffer_len = E1000_RXBUFFER_2048; 3117 if(unlikely((adapter->hw.mac_type < e1000_82543) &&
3118 (max_frame > MAXIMUM_ETHERNET_FRAME_SIZE))) {
3119 DPRINTK(PROBE, ERR, "Jumbo Frames not supported "
3120 "on 82542\n");
3121 return -EINVAL;
3122 } else {
3123 if(max_frame <= E1000_RXBUFFER_2048)
3124 adapter->rx_buffer_len = E1000_RXBUFFER_2048;
3125 else if(max_frame <= E1000_RXBUFFER_4096)
3126 adapter->rx_buffer_len = E1000_RXBUFFER_4096;
3127 else if(max_frame <= E1000_RXBUFFER_8192)
3128 adapter->rx_buffer_len = E1000_RXBUFFER_8192;
3129 else if(max_frame <= E1000_RXBUFFER_16384)
3130 adapter->rx_buffer_len = E1000_RXBUFFER_16384;
3131 }
3132 }
3127 3133
3128 netdev->mtu = new_mtu; 3134 netdev->mtu = new_mtu;
3129 3135
@@ -3620,7 +3626,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
3620 uint8_t last_byte; 3626 uint8_t last_byte;
3621 unsigned int i; 3627 unsigned int i;
3622 int cleaned_count = 0; 3628 int cleaned_count = 0;
3623 boolean_t cleaned = FALSE, multi_descriptor = FALSE; 3629 boolean_t cleaned = FALSE;
3624 3630
3625 i = rx_ring->next_to_clean; 3631 i = rx_ring->next_to_clean;
3626 rx_desc = E1000_RX_DESC(*rx_ring, i); 3632 rx_desc = E1000_RX_DESC(*rx_ring, i);
@@ -3652,43 +3658,12 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
3652 3658
3653 length = le16_to_cpu(rx_desc->length); 3659 length = le16_to_cpu(rx_desc->length);
3654 3660
3655 skb_put(skb, length); 3661 if (unlikely(!(status & E1000_RXD_STAT_EOP))) {
3656 3662 /* All receives must fit into a single buffer */
3657 if (!(status & E1000_RXD_STAT_EOP)) { 3663 E1000_DBG("%s: Receive packet consumed multiple"
3658 if (!rx_ring->rx_skb_top) { 3664 " buffers\n", netdev->name);
3659 rx_ring->rx_skb_top = skb; 3665 dev_kfree_skb_irq(skb);
3660 rx_ring->rx_skb_top->len = length;
3661 rx_ring->rx_skb_prev = skb;
3662 } else {
3663 if (skb_shinfo(rx_ring->rx_skb_top)->frag_list) {
3664 rx_ring->rx_skb_prev->next = skb;
3665 skb->prev = rx_ring->rx_skb_prev;
3666 } else {
3667 skb_shinfo(rx_ring->rx_skb_top)->frag_list = skb;
3668 }
3669 rx_ring->rx_skb_prev = skb;
3670 rx_ring->rx_skb_top->data_len += length;
3671 }
3672 goto next_desc; 3666 goto next_desc;
3673 } else {
3674 if (rx_ring->rx_skb_top) {
3675 if (skb_shinfo(rx_ring->rx_skb_top)
3676 ->frag_list) {
3677 rx_ring->rx_skb_prev->next = skb;
3678 skb->prev = rx_ring->rx_skb_prev;
3679 } else
3680 skb_shinfo(rx_ring->rx_skb_top)
3681 ->frag_list = skb;
3682
3683 rx_ring->rx_skb_top->data_len += length;
3684 rx_ring->rx_skb_top->len +=
3685 rx_ring->rx_skb_top->data_len;
3686
3687 skb = rx_ring->rx_skb_top;
3688 multi_descriptor = TRUE;
3689 rx_ring->rx_skb_top = NULL;
3690 rx_ring->rx_skb_prev = NULL;
3691 }
3692 } 3667 }
3693 3668
3694 if (unlikely(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)) { 3669 if (unlikely(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)) {
@@ -3712,10 +3687,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
3712 * performance for small packets with large amounts 3687 * performance for small packets with large amounts
3713 * of reassembly being done in the stack */ 3688 * of reassembly being done in the stack */
3714#define E1000_CB_LENGTH 256 3689#define E1000_CB_LENGTH 256
3715 if ((length < E1000_CB_LENGTH) && 3690 if (length < E1000_CB_LENGTH) {
3716 !rx_ring->rx_skb_top &&
3717 /* or maybe (status & E1000_RXD_STAT_EOP) && */
3718 !multi_descriptor) {
3719 struct sk_buff *new_skb = 3691 struct sk_buff *new_skb =
3720 dev_alloc_skb(length + NET_IP_ALIGN); 3692 dev_alloc_skb(length + NET_IP_ALIGN);
3721 if (new_skb) { 3693 if (new_skb) {
@@ -3729,7 +3701,8 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
3729 skb = new_skb; 3701 skb = new_skb;
3730 skb_put(skb, length); 3702 skb_put(skb, length);
3731 } 3703 }
3732 } 3704 } else
3705 skb_put(skb, length);
3733 3706
3734 /* end copybreak code */ 3707 /* end copybreak code */
3735 3708
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index 01ddfc8cce3f..aa5581369399 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -806,6 +806,7 @@ static struct pcmcia_device_id axnet_ids[] = {
806 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0309), 806 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0309),
807 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1106), 807 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1106),
808 PCMCIA_DEVICE_MANF_CARD(0x8a01, 0xc1ab), 808 PCMCIA_DEVICE_MANF_CARD(0x8a01, 0xc1ab),
809 PCMCIA_DEVICE_PROD_ID12("AmbiCom,Inc.", "Fast Ethernet PC Card(AMB8110)", 0x49b020a7, 0x119cc9fc),
809 PCMCIA_DEVICE_PROD_ID124("Fast Ethernet", "16-bit PC Card", "AX88190", 0xb4be14e3, 0x9a12eb6a, 0xab9be5ef), 810 PCMCIA_DEVICE_PROD_ID124("Fast Ethernet", "16-bit PC Card", "AX88190", 0xb4be14e3, 0x9a12eb6a, 0xab9be5ef),
810 PCMCIA_DEVICE_PROD_ID12("ASIX", "AX88190", 0x0959823b, 0xab9be5ef), 811 PCMCIA_DEVICE_PROD_ID12("ASIX", "AX88190", 0x0959823b, 0xab9be5ef),
811 PCMCIA_DEVICE_PROD_ID12("Billionton", "LNA-100B", 0x552ab682, 0xbc3b87e1), 812 PCMCIA_DEVICE_PROD_ID12("Billionton", "LNA-100B", 0x552ab682, 0xbc3b87e1),
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index 3d95fa20cd88..7a952fe60be2 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -540,7 +540,7 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
540 printk("%2.2x.\n", net_dev->dev_addr[i]); 540 printk("%2.2x.\n", net_dev->dev_addr[i]);
541 541
542 /* Detect Wake on Lan support */ 542 /* Detect Wake on Lan support */
543 ret = inl(CFGPMC & PMESP); 543 ret = (inl(net_dev->base_addr + CFGPMC) & PMESP) >> 27;
544 if (netif_msg_probe(sis_priv) && (ret & PME_D3C) == 0) 544 if (netif_msg_probe(sis_priv) && (ret & PME_D3C) == 0)
545 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name); 545 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name);
546 546
@@ -2040,7 +2040,7 @@ static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wo
2040 2040
2041 if (wol->wolopts == 0) { 2041 if (wol->wolopts == 0) {
2042 pci_read_config_dword(sis_priv->pci_dev, CFGPMCSR, &cfgpmcsr); 2042 pci_read_config_dword(sis_priv->pci_dev, CFGPMCSR, &cfgpmcsr);
2043 cfgpmcsr |= ~PME_EN; 2043 cfgpmcsr &= ~PME_EN;
2044 pci_write_config_dword(sis_priv->pci_dev, CFGPMCSR, cfgpmcsr); 2044 pci_write_config_dword(sis_priv->pci_dev, CFGPMCSR, cfgpmcsr);
2045 outl(pmctrl_bits, pmctrl_addr); 2045 outl(pmctrl_bits, pmctrl_addr);
2046 if (netif_msg_wol(sis_priv)) 2046 if (netif_msg_wol(sis_priv))
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index ca8160d68229..72c1630977d6 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -96,10 +96,6 @@ static int copybreak __read_mostly = 256;
96module_param(copybreak, int, 0); 96module_param(copybreak, int, 0);
97MODULE_PARM_DESC(copybreak, "Receive copy threshold"); 97MODULE_PARM_DESC(copybreak, "Receive copy threshold");
98 98
99static int disable_msi = 0;
100module_param(disable_msi, int, 0);
101MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
102
103static const struct pci_device_id sky2_id_table[] = { 99static const struct pci_device_id sky2_id_table[] = {
104 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, 100 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) },
105 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, 101 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) },
@@ -3126,61 +3122,6 @@ static void __devinit sky2_show_addr(struct net_device *dev)
3126 dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); 3122 dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
3127} 3123}
3128 3124
3129/* Handle software interrupt used during MSI test */
3130static irqreturn_t __devinit sky2_test_intr(int irq, void *dev_id,
3131 struct pt_regs *regs)
3132{
3133 struct sky2_hw *hw = dev_id;
3134 u32 status = sky2_read32(hw, B0_Y2_SP_ISRC2);
3135
3136 if (status == 0)
3137 return IRQ_NONE;
3138
3139 if (status & Y2_IS_IRQ_SW) {
3140 sky2_write8(hw, B0_CTST, CS_CL_SW_IRQ);
3141 hw->msi = 1;
3142 }
3143 sky2_write32(hw, B0_Y2_SP_ICR, 2);
3144
3145 sky2_read32(hw, B0_IMSK);
3146 return IRQ_HANDLED;
3147}
3148
3149/* Test interrupt path by forcing a a software IRQ */
3150static int __devinit sky2_test_msi(struct sky2_hw *hw)
3151{
3152 struct pci_dev *pdev = hw->pdev;
3153 int i, err;
3154
3155 sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW);
3156
3157 err = request_irq(pdev->irq, sky2_test_intr, SA_SHIRQ, DRV_NAME, hw);
3158 if (err) {
3159 printk(KERN_ERR PFX "%s: cannot assign irq %d\n",
3160 pci_name(pdev), pdev->irq);
3161 return err;
3162 }
3163
3164 sky2_write8(hw, B0_CTST, CS_ST_SW_IRQ);
3165 wmb();
3166
3167 for (i = 0; i < 10; i++) {
3168 barrier();
3169 if (hw->msi)
3170 goto found;
3171 mdelay(1);
3172 }
3173
3174 err = -EOPNOTSUPP;
3175 sky2_write8(hw, B0_CTST, CS_CL_SW_IRQ);
3176 found:
3177 sky2_write32(hw, B0_IMSK, 0);
3178
3179 free_irq(pdev->irq, hw);
3180
3181 return err;
3182}
3183
3184static int __devinit sky2_probe(struct pci_dev *pdev, 3125static int __devinit sky2_probe(struct pci_dev *pdev,
3185 const struct pci_device_id *ent) 3126 const struct pci_device_id *ent)
3186{ 3127{
@@ -3302,20 +3243,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
3302 } 3243 }
3303 } 3244 }
3304 3245
3305 if (!disable_msi && pci_enable_msi(pdev) == 0) {
3306 err = sky2_test_msi(hw);
3307 if (err == -EOPNOTSUPP) {
3308 /* MSI test failed, go back to INTx mode */
3309 printk(KERN_WARNING PFX "%s: No interrupt was generated using MSI, "
3310 "switching to INTx mode. Please report this failure to "
3311 "the PCI maintainer and include system chipset information.\n",
3312 pci_name(pdev));
3313 pci_disable_msi(pdev);
3314 }
3315 else if (err)
3316 goto err_out_unregister;
3317 }
3318
3319 err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ | SA_SAMPLE_RANDOM, 3246 err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ | SA_SAMPLE_RANDOM,
3320 DRV_NAME, hw); 3247 DRV_NAME, hw);
3321 if (err) { 3248 if (err) {
@@ -3332,8 +3259,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
3332 return 0; 3259 return 0;
3333 3260
3334err_out_unregister: 3261err_out_unregister:
3335 if (hw->msi)
3336 pci_disable_msi(pdev);
3337 if (dev1) { 3262 if (dev1) {
3338 unregister_netdev(dev1); 3263 unregister_netdev(dev1);
3339 free_netdev(dev1); 3264 free_netdev(dev1);
@@ -3376,8 +3301,6 @@ static void __devexit sky2_remove(struct pci_dev *pdev)
3376 sky2_read8(hw, B0_CTST); 3301 sky2_read8(hw, B0_CTST);
3377 3302
3378 free_irq(pdev->irq, hw); 3303 free_irq(pdev->irq, hw);
3379 if (hw->msi)
3380 pci_disable_msi(pdev);
3381 pci_free_consistent(pdev, STATUS_LE_BYTES, hw->st_le, hw->st_dma); 3304 pci_free_consistent(pdev, STATUS_LE_BYTES, hw->st_le, hw->st_dma);
3382 pci_release_regions(pdev); 3305 pci_release_regions(pdev);
3383 pci_disable_device(pdev); 3306 pci_disable_device(pdev);
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index 3edb98075e0a..dce955c76f3c 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -1881,7 +1881,6 @@ struct sky2_hw {
1881 u32 intr_mask; 1881 u32 intr_mask;
1882 1882
1883 int pm_cap; 1883 int pm_cap;
1884 int msi;
1885 u8 chip_id; 1884 u8 chip_id;
1886 u8 chip_rev; 1885 u8 chip_rev;
1887 u8 copper; 1886 u8 copper;
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index e7dc653d5bd6..e8e92c853e89 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -9408,6 +9408,15 @@ static int __devinit tg3_is_sun_570X(struct tg3 *tp)
9408 return 0; 9408 return 0;
9409 if (venid == PCI_VENDOR_ID_SUN) 9409 if (venid == PCI_VENDOR_ID_SUN)
9410 return 1; 9410 return 1;
9411
9412 /* TG3 chips onboard the SunBlade-2500 don't have the
9413 * subsystem-vendor-id set to PCI_VENDOR_ID_SUN but they
9414 * are distinguishable from non-Sun variants by being
9415 * named "network" by the firmware. Non-Sun cards will
9416 * show up as being named "ethernet".
9417 */
9418 if (!strcmp(pcp->prom_name, "network"))
9419 return 1;
9411 } 9420 }
9412 return 0; 9421 return 0;
9413} 9422}
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index c2d5907dc8e0..ed1f837c8fda 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -1106,6 +1106,9 @@ static void velocity_free_rd_ring(struct velocity_info *vptr)
1106 1106
1107 for (i = 0; i < vptr->options.numrx; i++) { 1107 for (i = 0; i < vptr->options.numrx; i++) {
1108 struct velocity_rd_info *rd_info = &(vptr->rd_info[i]); 1108 struct velocity_rd_info *rd_info = &(vptr->rd_info[i]);
1109 struct rx_desc *rd = vptr->rd_ring + i;
1110
1111 memset(rd, 0, sizeof(*rd));
1109 1112
1110 if (!rd_info->skb) 1113 if (!rd_info->skb)
1111 continue; 1114 continue;
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index 8bc0b528548f..f8f4503475f9 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -877,7 +877,6 @@ static struct pcmcia_device_id hostap_cs_ids[] = {
877 PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), 877 PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777),
878 PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000), 878 PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000),
879 PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), 879 PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002),
880 PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002),
881 PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), 880 PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002),
882 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x030b), 881 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x030b),
883 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), 882 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612),
@@ -891,6 +890,10 @@ static struct pcmcia_device_id hostap_cs_ids[] = {
891 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), 890 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002),
892 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), 891 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005),
893 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0010), 892 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0010),
893 PCMCIA_DEVICE_MANF_CARD_PROD_ID1(0x0156, 0x0002, "INTERSIL",
894 0x74c5e40d),
895 PCMCIA_DEVICE_MANF_CARD_PROD_ID1(0x0156, 0x0002, "Intersil",
896 0x4b801a17),
894 PCMCIA_MFC_DEVICE_PROD_ID12(0, "SanDisk", "ConnectPlus", 897 PCMCIA_MFC_DEVICE_PROD_ID12(0, "SanDisk", "ConnectPlus",
895 0x7a954bd9, 0x74be00c6), 898 0x7a954bd9, 0x74be00c6),
896 PCMCIA_DEVICE_PROD_ID1234( 899 PCMCIA_DEVICE_PROD_ID1234(
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 0a424a4e8187..54ad93daca3c 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -352,11 +352,20 @@ static void pcmcia_release_dev(struct device *dev)
352 kfree(p_dev); 352 kfree(p_dev);
353} 353}
354 354
355static void pcmcia_add_pseudo_device(struct pcmcia_socket *s)
356{
357 if (!s->pcmcia_state.device_add_pending) {
358 s->pcmcia_state.device_add_pending = 1;
359 schedule_work(&s->device_add);
360 }
361 return;
362}
355 363
356static int pcmcia_device_probe(struct device * dev) 364static int pcmcia_device_probe(struct device * dev)
357{ 365{
358 struct pcmcia_device *p_dev; 366 struct pcmcia_device *p_dev;
359 struct pcmcia_driver *p_drv; 367 struct pcmcia_driver *p_drv;
368 struct pcmcia_device_id *did;
360 struct pcmcia_socket *s; 369 struct pcmcia_socket *s;
361 int ret = 0; 370 int ret = 0;
362 371
@@ -392,6 +401,19 @@ static int pcmcia_device_probe(struct device * dev)
392 } 401 }
393 402
394 ret = p_drv->probe(p_dev); 403 ret = p_drv->probe(p_dev);
404 if (ret)
405 goto put_module;
406
407 /* handle pseudo multifunction devices:
408 * there are at most two pseudo multifunction devices.
409 * if we're matching against the first, schedule a
410 * call which will then check whether there are two
411 * pseudo devices, and if not, add the second one.
412 */
413 did = (struct pcmcia_device_id *) p_dev->dev.driver_data;
414 if ((did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) &&
415 (p_dev->socket->device_count == 1) && (p_dev->device_no == 0))
416 pcmcia_add_pseudo_device(p_dev->socket);
395 417
396 put_module: 418 put_module:
397 if (ret) 419 if (ret)
@@ -660,15 +682,6 @@ static void pcmcia_delayed_add_pseudo_device(void *data)
660 s->pcmcia_state.device_add_pending = 0; 682 s->pcmcia_state.device_add_pending = 0;
661} 683}
662 684
663static inline void pcmcia_add_pseudo_device(struct pcmcia_socket *s)
664{
665 if (!s->pcmcia_state.device_add_pending) {
666 s->pcmcia_state.device_add_pending = 1;
667 schedule_work(&s->device_add);
668 }
669 return;
670}
671
672static int pcmcia_requery(struct device *dev, void * _data) 685static int pcmcia_requery(struct device *dev, void * _data)
673{ 686{
674 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); 687 struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
@@ -755,15 +768,6 @@ static inline int pcmcia_devmatch(struct pcmcia_device *dev,
755 } 768 }
756 769
757 if (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) { 770 if (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) {
758 /* handle pseudo multifunction devices:
759 * there are at most two pseudo multifunction devices.
760 * if we're matching against the first, schedule a
761 * call which will then check whether there are two
762 * pseudo devices, and if not, add the second one.
763 */
764 if (dev->device_no == 0)
765 pcmcia_add_pseudo_device(dev->socket);
766
767 if (dev->device_no != did->device_no) 771 if (dev->device_no != did->device_no)
768 return 0; 772 return 0;
769 } 773 }
diff --git a/drivers/pnp/card.c b/drivers/pnp/card.c
index aaa568a3806e..b68eef251614 100644
--- a/drivers/pnp/card.c
+++ b/drivers/pnp/card.c
@@ -303,13 +303,11 @@ found:
303 down_write(&dev->dev.bus->subsys.rwsem); 303 down_write(&dev->dev.bus->subsys.rwsem);
304 dev->card_link = clink; 304 dev->card_link = clink;
305 dev->dev.driver = &drv->link.driver; 305 dev->dev.driver = &drv->link.driver;
306 if (drv->link.driver.probe) { 306 if (pnp_bus_type.probe(&dev->dev)) {
307 if (drv->link.driver.probe(&dev->dev)) { 307 dev->dev.driver = NULL;
308 dev->dev.driver = NULL; 308 dev->card_link = NULL;
309 dev->card_link = NULL; 309 up_write(&dev->dev.bus->subsys.rwsem);
310 up_write(&dev->dev.bus->subsys.rwsem); 310 return NULL;
311 return NULL;
312 }
313 } 311 }
314 device_bind_driver(&dev->dev); 312 device_bind_driver(&dev->dev);
315 up_write(&dev->dev.bus->subsys.rwsem); 313 up_write(&dev->dev.bus->subsys.rwsem);
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c
index cb2ee25f213f..531a1f9ceb51 100644
--- a/drivers/scsi/aha152x.c
+++ b/drivers/scsi/aha152x.c
@@ -1260,16 +1260,15 @@ static void free_hard_reset_SCs(struct Scsi_Host *shpnt, Scsi_Cmnd **SCs)
1260 * Reset the bus 1260 * Reset the bus
1261 * 1261 *
1262 */ 1262 */
1263static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) 1263static int aha152x_bus_reset_host(struct Scsi_Host *shpnt)
1264{ 1264{
1265 struct Scsi_Host *shpnt = SCpnt->device->host;
1266 unsigned long flags; 1265 unsigned long flags;
1267 1266
1268 DO_LOCK(flags); 1267 DO_LOCK(flags);
1269 1268
1270#if defined(AHA152X_DEBUG) 1269#if defined(AHA152X_DEBUG)
1271 if(HOSTDATA(shpnt)->debug & debug_eh) { 1270 if(HOSTDATA(shpnt)->debug & debug_eh) {
1272 printk(DEBUG_LEAD "aha152x_bus_reset(%p)", CMDINFO(SCpnt), SCpnt); 1271 printk(KERN_DEBUG "scsi%d: bus reset", shpnt->host_no);
1273 show_queues(shpnt); 1272 show_queues(shpnt);
1274 } 1273 }
1275#endif 1274#endif
@@ -1277,14 +1276,14 @@ static int aha152x_bus_reset(Scsi_Cmnd *SCpnt)
1277 free_hard_reset_SCs(shpnt, &ISSUE_SC); 1276 free_hard_reset_SCs(shpnt, &ISSUE_SC);
1278 free_hard_reset_SCs(shpnt, &DISCONNECTED_SC); 1277 free_hard_reset_SCs(shpnt, &DISCONNECTED_SC);
1279 1278
1280 DPRINTK(debug_eh, DEBUG_LEAD "resetting bus\n", CMDINFO(SCpnt)); 1279 DPRINTK(debug_eh, KERN_DEBUG "scsi%d: resetting bus\n", shpnt->host_no);
1281 1280
1282 SETPORT(SCSISEQ, SCSIRSTO); 1281 SETPORT(SCSISEQ, SCSIRSTO);
1283 mdelay(256); 1282 mdelay(256);
1284 SETPORT(SCSISEQ, 0); 1283 SETPORT(SCSISEQ, 0);
1285 mdelay(DELAY); 1284 mdelay(DELAY);
1286 1285
1287 DPRINTK(debug_eh, DEBUG_LEAD "bus resetted\n", CMDINFO(SCpnt)); 1286 DPRINTK(debug_eh, KERN_DEBUG "scsi%d: bus resetted\n", shpnt->host_no);
1288 1287
1289 setup_expected_interrupts(shpnt); 1288 setup_expected_interrupts(shpnt);
1290 if(HOSTDATA(shpnt)->commands==0) 1289 if(HOSTDATA(shpnt)->commands==0)
@@ -1295,6 +1294,14 @@ static int aha152x_bus_reset(Scsi_Cmnd *SCpnt)
1295 return SUCCESS; 1294 return SUCCESS;
1296} 1295}
1297 1296
1297/*
1298 * Reset the bus
1299 *
1300 */
1301static int aha152x_bus_reset(Scsi_Cmnd *SCpnt)
1302{
1303 return aha152x_bus_reset_host(SCpnt->device->host);
1304}
1298 1305
1299/* 1306/*
1300 * Restore default values to the AIC-6260 registers and reset the fifos 1307 * Restore default values to the AIC-6260 registers and reset the fifos
@@ -1337,23 +1344,28 @@ static void reset_ports(struct Scsi_Host *shpnt)
1337 * Reset the host (bus and controller) 1344 * Reset the host (bus and controller)
1338 * 1345 *
1339 */ 1346 */
1340int aha152x_host_reset(Scsi_Cmnd * SCpnt) 1347int aha152x_host_reset_host(struct Scsi_Host *shpnt)
1341{ 1348{
1342#if defined(AHA152X_DEBUG) 1349 DPRINTK(debug_eh, KERN_DEBUG "scsi%d: host reset\n", shpnt->host_no);
1343 struct Scsi_Host *shpnt = SCpnt->device->host;
1344#endif
1345
1346 DPRINTK(debug_eh, DEBUG_LEAD "aha152x_host_reset(%p)\n", CMDINFO(SCpnt), SCpnt);
1347 1350
1348 aha152x_bus_reset(SCpnt); 1351 aha152x_bus_reset_host(shpnt);
1349 1352
1350 DPRINTK(debug_eh, DEBUG_LEAD "resetting ports\n", CMDINFO(SCpnt)); 1353 DPRINTK(debug_eh, KERN_DEBUG "scsi%d: resetting ports\n", shpnt->host_no);
1351 reset_ports(SCpnt->device->host); 1354 reset_ports(shpnt);
1352 1355
1353 return SUCCESS; 1356 return SUCCESS;
1354} 1357}
1355 1358
1356/* 1359/*
1360 * Reset the host (bus and controller)
1361 *
1362 */
1363static int aha152x_host_reset(Scsi_Cmnd *SCpnt)
1364{
1365 return aha152x_host_reset_host(SCpnt->device->host);
1366}
1367
1368/*
1357 * Return the "logical geometry" 1369 * Return the "logical geometry"
1358 * 1370 *
1359 */ 1371 */
@@ -1431,22 +1443,18 @@ static void run(void)
1431{ 1443{
1432 int i; 1444 int i;
1433 for (i = 0; i<ARRAY_SIZE(aha152x_host); i++) { 1445 for (i = 0; i<ARRAY_SIZE(aha152x_host); i++) {
1434 struct Scsi_Host *shpnt = aha152x_host[i]; 1446 is_complete(aha152x_host[i]);
1435 if (shpnt && HOSTDATA(shpnt)->service) {
1436 HOSTDATA(shpnt)->service=0;
1437 is_complete(shpnt);
1438 }
1439 } 1447 }
1440} 1448}
1441 1449
1442/* 1450/*
1443 * Interrupts handler 1451 * Interrupt handler
1444 * 1452 *
1445 */ 1453 */
1446
1447static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) 1454static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs)
1448{ 1455{
1449 struct Scsi_Host *shpnt = lookup_irq(irqno); 1456 struct Scsi_Host *shpnt = lookup_irq(irqno);
1457 unsigned long flags;
1450 unsigned char rev, dmacntrl0; 1458 unsigned char rev, dmacntrl0;
1451 1459
1452 if (!shpnt) { 1460 if (!shpnt) {
@@ -1472,23 +1480,23 @@ static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs)
1472 if ((rev == 0xFF) && (dmacntrl0 == 0xFF)) 1480 if ((rev == 0xFF) && (dmacntrl0 == 0xFF))
1473 return IRQ_NONE; 1481 return IRQ_NONE;
1474 1482
1483 if( TESTLO(DMASTAT, INTSTAT) )
1484 return IRQ_NONE;
1485
1475 /* no more interrupts from the controller, while we're busy. 1486 /* no more interrupts from the controller, while we're busy.
1476 INTEN is restored by the BH handler */ 1487 INTEN is restored by the BH handler */
1477 CLRBITS(DMACNTRL0, INTEN); 1488 CLRBITS(DMACNTRL0, INTEN);
1478 1489
1479#if 0 1490 DO_LOCK(flags);
1480 /* check if there is already something to be 1491 if( HOSTDATA(shpnt)->service==0 ) {
1481 serviced; should not happen */ 1492 HOSTDATA(shpnt)->service=1;
1482 if(HOSTDATA(shpnt)->service) { 1493
1483 printk(KERN_ERR "aha152x%d: lost interrupt (%d)\n", HOSTNO, HOSTDATA(shpnt)->service); 1494 /* Poke the BH handler */
1484 show_queues(shpnt); 1495 INIT_WORK(&aha152x_tq, (void *) run, NULL);
1496 schedule_work(&aha152x_tq);
1485 } 1497 }
1486#endif 1498 DO_UNLOCK(flags);
1487 1499
1488 /* Poke the BH handler */
1489 HOSTDATA(shpnt)->service++;
1490 INIT_WORK(&aha152x_tq, (void *) run, NULL);
1491 schedule_work(&aha152x_tq);
1492 return IRQ_HANDLED; 1500 return IRQ_HANDLED;
1493} 1501}
1494 1502
@@ -2527,7 +2535,18 @@ static void is_complete(struct Scsi_Host *shpnt)
2527 unsigned long flags; 2535 unsigned long flags;
2528 int pending; 2536 int pending;
2529 2537
2538 if(!shpnt)
2539 return;
2540
2530 DO_LOCK(flags); 2541 DO_LOCK(flags);
2542
2543 if( HOSTDATA(shpnt)->service==0 ) {
2544 DO_UNLOCK(flags);
2545 return;
2546 }
2547
2548 HOSTDATA(shpnt)->service = 0;
2549
2531 if(HOSTDATA(shpnt)->in_intr) { 2550 if(HOSTDATA(shpnt)->in_intr) {
2532 DO_UNLOCK(flags); 2551 DO_UNLOCK(flags);
2533 /* aha152x_error never returns.. */ 2552 /* aha152x_error never returns.. */
diff --git a/drivers/scsi/aha152x.h b/drivers/scsi/aha152x.h
index d277613af29b..d2add24d02a3 100644
--- a/drivers/scsi/aha152x.h
+++ b/drivers/scsi/aha152x.h
@@ -332,6 +332,6 @@ struct aha152x_setup {
332 332
333struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); 333struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *);
334void aha152x_release(struct Scsi_Host *); 334void aha152x_release(struct Scsi_Host *);
335int aha152x_host_reset(Scsi_Cmnd *); 335int aha152x_host_reset_host(struct Scsi_Host *);
336 336
337#endif /* _AHA152X_H */ 337#endif /* _AHA152X_H */
diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c
index 23728d1c980c..fcd304e11c26 100644
--- a/drivers/scsi/jazz_esp.c
+++ b/drivers/scsi/jazz_esp.c
@@ -65,27 +65,6 @@ static int jazz_esp_release(struct Scsi_Host *shost)
65 return 0; 65 return 0;
66} 66}
67 67
68static struct scsi_host_template driver_template = {
69 .proc_name = "jazz_esp",
70 .proc_info = &esp_proc_info,
71 .name = "ESP 100/100a/200",
72 .detect = jazz_esp_detect,
73 .slave_alloc = esp_slave_alloc,
74 .slave_destroy = esp_slave_destroy,
75 .release = jazz_esp_release,
76 .info = esp_info,
77 .queuecommand = esp_queue,
78 .eh_abort_handler = esp_abort,
79 .eh_bus_reset_handler = esp_reset,
80 .can_queue = 7,
81 .this_id = 7,
82 .sg_tablesize = SG_ALL,
83 .cmd_per_lun = 1,
84 .use_clustering = DISABLE_CLUSTERING,
85};
86
87#include "scsi_module.c"
88
89/***************************************************************** Detection */ 68/***************************************************************** Detection */
90static int jazz_esp_detect(struct scsi_host_template *tpnt) 69static int jazz_esp_detect(struct scsi_host_template *tpnt)
91{ 70{
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 5f1d7580218d..4f91b0dc572b 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -82,6 +82,10 @@ int atapi_enabled = 0;
82module_param(atapi_enabled, int, 0444); 82module_param(atapi_enabled, int, 0444);
83MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)"); 83MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)");
84 84
85int libata_fua = 0;
86module_param_named(fua, libata_fua, int, 0444);
87MODULE_PARM_DESC(fua, "FUA support (0=off, 1=on)");
88
85MODULE_AUTHOR("Jeff Garzik"); 89MODULE_AUTHOR("Jeff Garzik");
86MODULE_DESCRIPTION("Library module for ATA devices"); 90MODULE_DESCRIPTION("Library module for ATA devices");
87MODULE_LICENSE("GPL"); 91MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 07b1e7cc61df..59503c9ccac9 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -1708,6 +1708,8 @@ static int ata_dev_supports_fua(u16 *id)
1708{ 1708{
1709 unsigned char model[41], fw[9]; 1709 unsigned char model[41], fw[9];
1710 1710
1711 if (!libata_fua)
1712 return 0;
1711 if (!ata_id_has_fua(id)) 1713 if (!ata_id_has_fua(id))
1712 return 0; 1714 return 0;
1713 1715
diff --git a/drivers/scsi/libata.h b/drivers/scsi/libata.h
index e03ce48b7b4b..fddaf479a544 100644
--- a/drivers/scsi/libata.h
+++ b/drivers/scsi/libata.h
@@ -41,6 +41,7 @@ struct ata_scsi_args {
41 41
42/* libata-core.c */ 42/* libata-core.c */
43extern int atapi_enabled; 43extern int atapi_enabled;
44extern int libata_fua;
44extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, 45extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap,
45 struct ata_device *dev); 46 struct ata_device *dev);
46extern int ata_rwcmd_protocol(struct ata_queued_cmd *qc); 47extern int ata_rwcmd_protocol(struct ata_queued_cmd *qc);
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 7de267e14458..4f39dd01936d 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -793,6 +793,20 @@ megasas_queue_command(struct scsi_cmnd *scmd, void (*done) (struct scsi_cmnd *))
793 return 0; 793 return 0;
794} 794}
795 795
796static int megasas_slave_configure(struct scsi_device *sdev)
797{
798 /*
799 * Don't export physical disk devices to the disk driver.
800 *
801 * FIXME: Currently we don't export them to the midlayer at all.
802 * That will be fixed once LSI engineers have audited the
803 * firmware for possible issues.
804 */
805 if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK)
806 return -ENXIO;
807 return 0;
808}
809
796/** 810/**
797 * megasas_wait_for_outstanding - Wait for all outstanding cmds 811 * megasas_wait_for_outstanding - Wait for all outstanding cmds
798 * @instance: Adapter soft state 812 * @instance: Adapter soft state
@@ -943,6 +957,7 @@ static struct scsi_host_template megasas_template = {
943 .module = THIS_MODULE, 957 .module = THIS_MODULE,
944 .name = "LSI Logic SAS based MegaRAID driver", 958 .name = "LSI Logic SAS based MegaRAID driver",
945 .proc_name = "megaraid_sas", 959 .proc_name = "megaraid_sas",
960 .slave_configure = megasas_slave_configure,
946 .queuecommand = megasas_queue_command, 961 .queuecommand = megasas_queue_command,
947 .eh_device_reset_handler = megasas_reset_device, 962 .eh_device_reset_handler = megasas_reset_device,
948 .eh_bus_reset_handler = megasas_reset_bus_host, 963 .eh_bus_reset_handler = megasas_reset_bus_host,
@@ -1071,20 +1086,6 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd,
1071 break; 1086 break;
1072 } 1087 }
1073 1088
1074 /*
1075 * Don't export physical disk devices to mid-layer.
1076 */
1077 if (!MEGASAS_IS_LOGICAL(cmd->scmd) &&
1078 (hdr->cmd_status == MFI_STAT_OK) &&
1079 (cmd->scmd->cmnd[0] == INQUIRY)) {
1080
1081 if (((*(u8 *) cmd->scmd->request_buffer) & 0x1F) ==
1082 TYPE_DISK) {
1083 cmd->scmd->result = DID_BAD_TARGET << 16;
1084 exception = 1;
1085 }
1086 }
1087
1088 case MFI_CMD_LD_READ: 1089 case MFI_CMD_LD_READ:
1089 case MFI_CMD_LD_WRITE: 1090 case MFI_CMD_LD_WRITE:
1090 1091
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c
index 0c9edb7051f4..5609847e254a 100644
--- a/drivers/scsi/pcmcia/aha152x_stub.c
+++ b/drivers/scsi/pcmcia/aha152x_stub.c
@@ -275,10 +275,8 @@ static int aha152x_resume(struct pcmcia_device *dev)
275 275
276 link->state &= ~DEV_SUSPEND; 276 link->state &= ~DEV_SUSPEND;
277 if (link->state & DEV_CONFIG) { 277 if (link->state & DEV_CONFIG) {
278 Scsi_Cmnd tmp;
279 pcmcia_request_configuration(link->handle, &link->conf); 278 pcmcia_request_configuration(link->handle, &link->conf);
280 tmp.device->host = info->host; 279 aha152x_host_reset_host(info->host);
281 aha152x_host_reset(&tmp);
282 } 280 }
283 281
284 return 0; 282 return 0;
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c
index 17f74d3c10e7..9face3c6aa21 100644
--- a/drivers/scsi/sata_sil.c
+++ b/drivers/scsi/sata_sil.c
@@ -49,11 +49,13 @@
49#define DRV_VERSION "0.9" 49#define DRV_VERSION "0.9"
50 50
51enum { 51enum {
52 SIL_FLAG_RERR_ON_DMA_ACT = (1 << 29),
52 SIL_FLAG_MOD15WRITE = (1 << 30), 53 SIL_FLAG_MOD15WRITE = (1 << 30),
53 54
54 sil_3112 = 0, 55 sil_3112 = 0,
55 sil_3112_m15w = 1, 56 sil_3112_m15w = 1,
56 sil_3114 = 2, 57 sil_3512 = 2,
58 sil_3114 = 3,
57 59
58 SIL_FIFO_R0 = 0x40, 60 SIL_FIFO_R0 = 0x40,
59 SIL_FIFO_W0 = 0x41, 61 SIL_FIFO_W0 = 0x41,
@@ -90,7 +92,7 @@ static void sil_post_set_mode (struct ata_port *ap);
90static const struct pci_device_id sil_pci_tbl[] = { 92static const struct pci_device_id sil_pci_tbl[] = {
91 { 0x1095, 0x3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, 93 { 0x1095, 0x3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
92 { 0x1095, 0x0240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, 94 { 0x1095, 0x0240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
93 { 0x1095, 0x3512, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, 95 { 0x1095, 0x3512, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3512 },
94 { 0x1095, 0x3114, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3114 }, 96 { 0x1095, 0x3114, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3114 },
95 { 0x1002, 0x436e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, 97 { 0x1002, 0x436e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
96 { 0x1002, 0x4379, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, 98 { 0x1002, 0x4379, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
@@ -185,7 +187,8 @@ static const struct ata_port_info sil_port_info[] = {
185 .mwdma_mask = 0x07, /* mwdma0-2 */ 187 .mwdma_mask = 0x07, /* mwdma0-2 */
186 .udma_mask = 0x3f, /* udma0-5 */ 188 .udma_mask = 0x3f, /* udma0-5 */
187 .port_ops = &sil_ops, 189 .port_ops = &sil_ops,
188 }, /* sil_3112_15w - keep it sync'd w/ sil_3112 */ 190 },
191 /* sil_3112_15w - keep it sync'd w/ sil_3112 */
189 { 192 {
190 .sht = &sil_sht, 193 .sht = &sil_sht,
191 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 194 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
@@ -195,11 +198,24 @@ static const struct ata_port_info sil_port_info[] = {
195 .mwdma_mask = 0x07, /* mwdma0-2 */ 198 .mwdma_mask = 0x07, /* mwdma0-2 */
196 .udma_mask = 0x3f, /* udma0-5 */ 199 .udma_mask = 0x3f, /* udma0-5 */
197 .port_ops = &sil_ops, 200 .port_ops = &sil_ops,
198 }, /* sil_3114 */ 201 },
202 /* sil_3512 */
199 { 203 {
200 .sht = &sil_sht, 204 .sht = &sil_sht,
201 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 205 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
202 ATA_FLAG_SRST | ATA_FLAG_MMIO, 206 ATA_FLAG_SRST | ATA_FLAG_MMIO |
207 SIL_FLAG_RERR_ON_DMA_ACT,
208 .pio_mask = 0x1f, /* pio0-4 */
209 .mwdma_mask = 0x07, /* mwdma0-2 */
210 .udma_mask = 0x3f, /* udma0-5 */
211 .port_ops = &sil_ops,
212 },
213 /* sil_3114 */
214 {
215 .sht = &sil_sht,
216 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
217 ATA_FLAG_SRST | ATA_FLAG_MMIO |
218 SIL_FLAG_RERR_ON_DMA_ACT,
203 .pio_mask = 0x1f, /* pio0-4 */ 219 .pio_mask = 0x1f, /* pio0-4 */
204 .mwdma_mask = 0x07, /* mwdma0-2 */ 220 .mwdma_mask = 0x07, /* mwdma0-2 */
205 .udma_mask = 0x3f, /* udma0-5 */ 221 .udma_mask = 0x3f, /* udma0-5 */
@@ -216,12 +232,13 @@ static const struct {
216 unsigned long scr; /* SATA control register block */ 232 unsigned long scr; /* SATA control register block */
217 unsigned long sien; /* SATA Interrupt Enable register */ 233 unsigned long sien; /* SATA Interrupt Enable register */
218 unsigned long xfer_mode;/* data transfer mode register */ 234 unsigned long xfer_mode;/* data transfer mode register */
235 unsigned long sfis_cfg; /* SATA FIS reception config register */
219} sil_port[] = { 236} sil_port[] = {
220 /* port 0 ... */ 237 /* port 0 ... */
221 { 0x80, 0x8A, 0x00, 0x100, 0x148, 0xb4 }, 238 { 0x80, 0x8A, 0x00, 0x100, 0x148, 0xb4, 0x14c },
222 { 0xC0, 0xCA, 0x08, 0x180, 0x1c8, 0xf4 }, 239 { 0xC0, 0xCA, 0x08, 0x180, 0x1c8, 0xf4, 0x1cc },
223 { 0x280, 0x28A, 0x200, 0x300, 0x348, 0x2b4 }, 240 { 0x280, 0x28A, 0x200, 0x300, 0x348, 0x2b4, 0x34c },
224 { 0x2C0, 0x2CA, 0x208, 0x380, 0x3c8, 0x2f4 }, 241 { 0x2C0, 0x2CA, 0x208, 0x380, 0x3c8, 0x2f4, 0x3cc },
225 /* ... port 3 */ 242 /* ... port 3 */
226}; 243};
227 244
@@ -471,6 +488,23 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
471 dev_printk(KERN_WARNING, &pdev->dev, 488 dev_printk(KERN_WARNING, &pdev->dev,
472 "cache line size not set. Driver may not function\n"); 489 "cache line size not set. Driver may not function\n");
473 490
491 /* Apply R_ERR on DMA activate FIS errata workaround */
492 if (probe_ent->host_flags & SIL_FLAG_RERR_ON_DMA_ACT) {
493 int cnt;
494
495 for (i = 0, cnt = 0; i < probe_ent->n_ports; i++) {
496 tmp = readl(mmio_base + sil_port[i].sfis_cfg);
497 if ((tmp & 0x3) != 0x01)
498 continue;
499 if (!cnt)
500 dev_printk(KERN_INFO, &pdev->dev,
501 "Applying R_ERR on DMA activate "
502 "FIS errata fix\n");
503 writel(tmp & ~0x3, mmio_base + sil_port[i].sfis_cfg);
504 cnt++;
505 }
506 }
507
474 if (ent->driver_data == sil_3114) { 508 if (ent->driver_data == sil_3114) {
475 irq_mask = SIL_MASK_4PORT; 509 irq_mask = SIL_MASK_4PORT;
476 510
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 5cc97b721661..ff82ccfbb106 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1308,7 +1308,7 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
1308 * the request was not marked fast fail. Note that above, 1308 * the request was not marked fast fail. Note that above,
1309 * even if the request is marked fast fail, we still requeue 1309 * even if the request is marked fast fail, we still requeue
1310 * for queue congestion conditions (QUEUE_FULL or BUSY) */ 1310 * for queue congestion conditions (QUEUE_FULL or BUSY) */
1311 if ((++scmd->retries) < scmd->allowed 1311 if ((++scmd->retries) <= scmd->allowed
1312 && !blk_noretry_request(scmd->request)) { 1312 && !blk_noretry_request(scmd->request)) {
1313 return NEEDS_RETRY; 1313 return NEEDS_RETRY;
1314 } else { 1314 } else {
@@ -1433,7 +1433,7 @@ static void scsi_eh_flush_done_q(struct list_head *done_q)
1433 list_del_init(&scmd->eh_entry); 1433 list_del_init(&scmd->eh_entry);
1434 if (scsi_device_online(scmd->device) && 1434 if (scsi_device_online(scmd->device) &&
1435 !blk_noretry_request(scmd->request) && 1435 !blk_noretry_request(scmd->request) &&
1436 (++scmd->retries < scmd->allowed)) { 1436 (++scmd->retries <= scmd->allowed)) {
1437 SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush" 1437 SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush"
1438 " retry cmd: %p\n", 1438 " retry cmd: %p\n",
1439 current->comm, 1439 current->comm,
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 4362dcde74af..701a328f7beb 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1498,7 +1498,7 @@ static void scsi_kill_request(struct request *req, request_queue_t *q)
1498static void scsi_softirq_done(struct request *rq) 1498static void scsi_softirq_done(struct request *rq)
1499{ 1499{
1500 struct scsi_cmnd *cmd = rq->completion_data; 1500 struct scsi_cmnd *cmd = rq->completion_data;
1501 unsigned long wait_for = cmd->allowed * cmd->timeout_per_command; 1501 unsigned long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command;
1502 int disposition; 1502 int disposition;
1503 1503
1504 INIT_LIST_HEAD(&cmd->eh_entry); 1504 INIT_LIST_HEAD(&cmd->eh_entry);
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 5acb83ca5ae5..f9ecc3dea7df 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -752,8 +752,20 @@ static int scsi_add_lun(struct scsi_device *sdev, char *inq_result, int *bflags)
752 752
753 transport_configure_device(&sdev->sdev_gendev); 753 transport_configure_device(&sdev->sdev_gendev);
754 754
755 if (sdev->host->hostt->slave_configure) 755 if (sdev->host->hostt->slave_configure) {
756 sdev->host->hostt->slave_configure(sdev); 756 int ret = sdev->host->hostt->slave_configure(sdev);
757 if (ret) {
758 /*
759 * if LLDD reports slave not present, don't clutter
760 * console with alloc failure messages
761 */
762 if (ret != -ENXIO) {
763 sdev_printk(KERN_ERR, sdev,
764 "failed to configure device\n");
765 }
766 return SCSI_SCAN_NO_RESPONSE;
767 }
768 }
757 769
758 /* 770 /*
759 * Ok, the device is now all set up, we can 771 * Ok, the device is now all set up, we can
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index f2c9acf11bd0..929032e370db 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -1498,8 +1498,7 @@ fc_remote_port_add(struct Scsi_Host *shost, int channel,
1498 } 1498 }
1499 1499
1500 /* Search the bindings array */ 1500 /* Search the bindings array */
1501 if (likely((ids->roles & FC_RPORT_ROLE_FCP_TARGET) && 1501 if (fc_host_tgtid_bind_type(shost) != FC_TGTID_BIND_NONE) {
1502 (fc_host_tgtid_bind_type(shost) != FC_TGTID_BIND_NONE))) {
1503 1502
1504 /* search for a matching consistent binding */ 1503 /* search for a matching consistent binding */
1505 1504
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 2a547538d444..5a0a19322d01 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -2162,7 +2162,7 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
2162 2162
2163 srp->res_used = 1; 2163 srp->res_used = 1;
2164 SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); 2164 SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size));
2165 rem = size = (size + 1) & (~1); /* round to even for aha1542 */ 2165 rem = size;
2166 2166
2167 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) { 2167 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) {
2168 num = sg->length; 2168 num = sg->length;
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index f4854c33f48d..2627000ca653 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -919,6 +919,8 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru
919 919
920 tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); 920 tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
921 tp->usrtags = SYM_SETUP_MAX_TAG; 921 tp->usrtags = SYM_SETUP_MAX_TAG;
922 tp->usr_width = np->maxwide;
923 tp->usr_period = 9;
922 924
923 sym_nvram_setup_target(tp, i, nvram); 925 sym_nvram_setup_target(tp, i, nvram);
924 926
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 308704566948..4e453fa966ae 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -299,13 +299,10 @@ static void sunsu_start_tx(struct uart_port *port)
299static void sunsu_stop_rx(struct uart_port *port) 299static void sunsu_stop_rx(struct uart_port *port)
300{ 300{
301 struct uart_sunsu_port *up = (struct uart_sunsu_port *) port; 301 struct uart_sunsu_port *up = (struct uart_sunsu_port *) port;
302 unsigned long flags;
303 302
304 spin_lock_irqsave(&up->port.lock, flags);
305 up->ier &= ~UART_IER_RLSI; 303 up->ier &= ~UART_IER_RLSI;
306 up->port.read_status_mask &= ~UART_LSR_DR; 304 up->port.read_status_mask &= ~UART_LSR_DR;
307 serial_out(up, UART_IER, up->ier); 305 serial_out(up, UART_IER, up->ier);
308 spin_unlock_irqrestore(&up->port.lock, flags);
309} 306}
310 307
311static void sunsu_enable_ms(struct uart_port *port) 308static void sunsu_enable_ms(struct uart_port *port)
diff --git a/drivers/sn/Kconfig b/drivers/sn/Kconfig
index d95265b187a3..a34731625877 100644
--- a/drivers/sn/Kconfig
+++ b/drivers/sn/Kconfig
@@ -3,10 +3,11 @@
3# 3#
4 4
5menu "SN Devices" 5menu "SN Devices"
6 depends on SGI_SN
6 7
7config SGI_IOC4 8config SGI_IOC4
8 tristate "SGI IOC4 Base IO support" 9 tristate "SGI IOC4 Base IO support"
9 depends on (IA64_GENERIC || IA64_SGI_SN2) && MMTIMER 10 depends on MMTIMER
10 default m 11 default m
11 ---help--- 12 ---help---
12 This option enables basic support for the SGI IOC4-based Base IO 13 This option enables basic support for the SGI IOC4-based Base IO
@@ -19,7 +20,6 @@ config SGI_IOC4
19 20
20config SGI_IOC3 21config SGI_IOC3
21 tristate "SGI IOC3 Base IO support" 22 tristate "SGI IOC3 Base IO support"
22 depends on (IA64_GENERIC || IA64_SGI_SN2)
23 default m 23 default m
24 ---help--- 24 ---help---
25 This option enables basic support for the SGI IOC3-based Base IO 25 This option enables basic support for the SGI IOC3-based Base IO
diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c
index 12357e1fa558..93449a1a0065 100644
--- a/drivers/sn/ioc3.c
+++ b/drivers/sn/ioc3.c
@@ -62,7 +62,7 @@ static int nic_reset(struct ioc3_driver_data *idd)
62 return presence; 62 return presence;
63} 63}
64 64
65static inline int nic_read_bit(struct ioc3_driver_data *idd) 65static int nic_read_bit(struct ioc3_driver_data *idd)
66{ 66{
67 int result; 67 int result;
68 unsigned long flags; 68 unsigned long flags;
@@ -77,7 +77,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
77 return result; 77 return result;
78} 78}
79 79
80static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit) 80static void nic_write_bit(struct ioc3_driver_data *idd, int bit)
81{ 81{
82 if (bit) 82 if (bit)
83 writel(mcr_pack(6, 110), &idd->vma->mcr); 83 writel(mcr_pack(6, 110), &idd->vma->mcr);
@@ -371,8 +371,7 @@ static void probe_nic(struct ioc3_driver_data *idd)
371 371
372/* Interrupts */ 372/* Interrupts */
373 373
374static inline void 374static void write_ireg(struct ioc3_driver_data *idd, uint32_t val, int which)
375write_ireg(struct ioc3_driver_data *idd, uint32_t val, int which)
376{ 375{
377 unsigned long flags; 376 unsigned long flags;
378 377
@@ -735,14 +734,12 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
735 } 734 }
736 735
737 /* Add this IOC3 to all submodules */ 736 /* Add this IOC3 to all submodules */
738 read_lock(&ioc3_submodules_lock);
739 for(id=0;id<IOC3_MAX_SUBMODULES;id++) 737 for(id=0;id<IOC3_MAX_SUBMODULES;id++)
740 if(ioc3_submodules[id] && ioc3_submodules[id]->probe) { 738 if(ioc3_submodules[id] && ioc3_submodules[id]->probe) {
741 idd->active[id] = 1; 739 idd->active[id] = 1;
742 idd->active[id] = !ioc3_submodules[id]->probe 740 idd->active[id] = !ioc3_submodules[id]->probe
743 (ioc3_submodules[id], idd); 741 (ioc3_submodules[id], idd);
744 } 742 }
745 read_unlock(&ioc3_submodules_lock);
746 743
747 printk(KERN_INFO "IOC3 Master Driver loaded for %s\n", pci_name(pdev)); 744 printk(KERN_INFO "IOC3 Master Driver loaded for %s\n", pci_name(pdev));
748 745
@@ -767,7 +764,6 @@ static void ioc3_remove(struct pci_dev *pdev)
767 idd = pci_get_drvdata(pdev); 764 idd = pci_get_drvdata(pdev);
768 765
769 /* Remove this IOC3 from all submodules */ 766 /* Remove this IOC3 from all submodules */
770 read_lock(&ioc3_submodules_lock);
771 for(id=0;id<IOC3_MAX_SUBMODULES;id++) 767 for(id=0;id<IOC3_MAX_SUBMODULES;id++)
772 if(idd->active[id]) { 768 if(idd->active[id]) {
773 if(ioc3_submodules[id] && ioc3_submodules[id]->remove) 769 if(ioc3_submodules[id] && ioc3_submodules[id]->remove)
@@ -781,7 +777,6 @@ static void ioc3_remove(struct pci_dev *pdev)
781 pci_name(pdev)); 777 pci_name(pdev));
782 idd->active[id] = 0; 778 idd->active[id] = 0;
783 } 779 }
784 read_unlock(&ioc3_submodules_lock);
785 780
786 /* Clear and disable all IRQs */ 781 /* Clear and disable all IRQs */
787 write_ireg(idd, ~0, IOC3_W_IEC); 782 write_ireg(idd, ~0, IOC3_W_IEC);
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c
index e02fea5a5433..1a362c5e7f3d 100644
--- a/drivers/usb/gadget/lh7a40x_udc.c
+++ b/drivers/usb/gadget/lh7a40x_udc.c
@@ -1062,11 +1062,11 @@ static int lh7a40x_ep_enable(struct usb_ep *_ep,
1062 ep->pio_irqs = 0; 1062 ep->pio_irqs = 0;
1063 ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize); 1063 ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize);
1064 1064
1065 spin_unlock_irqrestore(&ep->dev->lock, flags);
1066
1065 /* Reset halt state (does flush) */ 1067 /* Reset halt state (does flush) */
1066 lh7a40x_set_halt(_ep, 0); 1068 lh7a40x_set_halt(_ep, 0);
1067 1069
1068 spin_unlock_irqrestore(&ep->dev->lock, flags);
1069
1070 DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name); 1070 DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name);
1071 return 0; 1071 return 0;
1072} 1072}
@@ -1775,6 +1775,7 @@ static void lh7a40x_ep0_setup(struct lh7a40x_udc *dev, u32 csr)
1775 break; 1775 break;
1776 1776
1777 qep = &dev->ep[ep_num]; 1777 qep = &dev->ep[ep_num];
1778 spin_unlock(&dev->lock);
1778 if (ctrl.bRequest == USB_REQ_SET_FEATURE) { 1779 if (ctrl.bRequest == USB_REQ_SET_FEATURE) {
1779 DEBUG_SETUP("SET_FEATURE (%d)\n", 1780 DEBUG_SETUP("SET_FEATURE (%d)\n",
1780 ep_num); 1781 ep_num);
@@ -1784,6 +1785,7 @@ static void lh7a40x_ep0_setup(struct lh7a40x_udc *dev, u32 csr)
1784 ep_num); 1785 ep_num);
1785 lh7a40x_set_halt(&qep->ep, 0); 1786 lh7a40x_set_halt(&qep->ep, 0);
1786 } 1787 }
1788 spin_lock(&dev->lock);
1787 usb_set_index(0); 1789 usb_set_index(0);
1788 1790
1789 /* Reply with a ZLP on next IN token */ 1791 /* Reply with a ZLP on next IN token */
diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
index 9689efeb364c..6d6eaad73968 100644
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -853,11 +853,14 @@ static int rndis_query_response (int configNr, rndis_query_msg_type *buf)
853 // DEBUG("%s: OID = %08X\n", __FUNCTION__, cpu_to_le32(buf->OID)); 853 // DEBUG("%s: OID = %08X\n", __FUNCTION__, cpu_to_le32(buf->OID));
854 if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP; 854 if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP;
855 855
856 /* 856 /*
857 * we need more memory: 857 * we need more memory:
858 * oid_supported_list is the largest answer 858 * gen_ndis_query_resp expects enough space for
859 * rndis_query_cmplt_type followed by data.
860 * oid_supported_list is the largest data reply
859 */ 861 */
860 r = rndis_add_response (configNr, sizeof (oid_supported_list)); 862 r = rndis_add_response (configNr,
863 sizeof (oid_supported_list) + sizeof(rndis_query_cmplt_type));
861 if (!r) 864 if (!r)
862 return -ENOMEM; 865 return -ENOMEM;
863 resp = (rndis_query_cmplt_type *) r->buf; 866 resp = (rndis_query_cmplt_type *) r->buf;
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 118288d94423..9e81c26313f9 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -260,12 +260,13 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
260 offset + EHCI_USBLEGCTLSTS, 260 offset + EHCI_USBLEGCTLSTS,
261 val | EHCI_USBLEGCTLSTS_SOOE); 261 val | EHCI_USBLEGCTLSTS_SOOE);
262#endif 262#endif
263 }
264 263
265 /* always say Linux will own the hardware 264 /* some systems get upset if this semaphore is
266 * by setting EHCI_USBLEGSUP_OS. 265 * set for any other reason than forcing a BIOS
267 */ 266 * handoff..
268 pci_write_config_byte(pdev, offset + 3, 1); 267 */
268 pci_write_config_byte(pdev, offset + 3, 1);
269 }
269 270
270 /* if boot firmware now owns EHCI, spin till 271 /* if boot firmware now owns EHCI, spin till
271 * it hands it over. 272 * it hands it over.
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 772478086bd3..07a012f88772 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -1407,6 +1407,7 @@ void hid_init_reports(struct hid_device *hid)
1407#define USB_VENDOR_ID_WISEGROUP 0x0925 1407#define USB_VENDOR_ID_WISEGROUP 0x0925
1408#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 1408#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101
1409#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 1409#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104
1410#define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866
1410 1411
1411#define USB_VENDOR_ID_CODEMERCS 0x07c0 1412#define USB_VENDOR_ID_CODEMERCS 0x07c0
1412#define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500 1413#define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500
@@ -1577,6 +1578,7 @@ static const struct hid_blacklist {
1577 { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, 1578 { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET},
1578 { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, 1579 { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET },
1579 { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, 1580 { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET },
1581 { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
1580 1582
1581 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, 1583 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE },
1582 { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, 1584 { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 },
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index f2b4ca8692d8..c145e1ed8429 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -469,8 +469,14 @@ static struct usb_device_id id_table_combined [] = {
469 { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, 469 { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) },
470 { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, 470 { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) },
471 { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, 471 { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) },
472 { USB_DEVICE(FTDI_VID, FTDI_MHAM_KW_PID) },
473 { USB_DEVICE(FTDI_VID, FTDI_MHAM_YS_PID) },
472 { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) }, 474 { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) },
473 { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) }, 475 { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) },
476 { USB_DEVICE(FTDI_VID, FTDI_MHAM_IC_PID) },
477 { USB_DEVICE(FTDI_VID, FTDI_MHAM_DB9_PID) },
478 { USB_DEVICE(FTDI_VID, FTDI_MHAM_RS232_PID) },
479 { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y9_PID) },
474 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) }, 480 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) },
475 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) }, 481 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) },
476 { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, 482 { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) },
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index ca40f16370f1..bdef3b8c731f 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -333,10 +333,18 @@
333 333
334/* 334/*
335 * microHAM product IDs (http://www.microham.com). 335 * microHAM product IDs (http://www.microham.com).
336 * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>. 336 * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
337 * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
338 * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
337 */ 339 */
340#define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */
341#define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */
338#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */ 342#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */
339#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */ 343#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */
344#define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */
345#define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */
346#define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */
347#define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */
340 348
341/* 349/*
342 * Active Robots product ids. 350 * Active Robots product ids.
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index bce3d55affd8..11a48d874752 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -69,6 +69,8 @@ static struct usb_device_id id_table [] = {
69 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 69 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
70 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID), 70 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID),
71 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 71 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
72 { USB_DEVICE(GSPDA_VENDOR_ID, GSPDA_XPLORE_M68_ID),
73 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
72 { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID), 74 { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID),
73 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 75 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
74 { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID), 76 { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID),
@@ -139,6 +141,7 @@ static struct usb_device_id id_table_combined [] = {
139 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_VISOR_ID) }, 141 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_VISOR_ID) },
140 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO_ID) }, 142 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO_ID) },
141 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID) }, 143 { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID) },
144 { USB_DEVICE(GSPDA_VENDOR_ID, GSPDA_XPLORE_M68_ID) },
142 { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID) }, 145 { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID) },
143 { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID) }, 146 { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID) },
144 { USB_DEVICE(PALM_VENDOR_ID, PALM_M515_ID) }, 147 { USB_DEVICE(PALM_VENDOR_ID, PALM_M515_ID) },
diff --git a/drivers/usb/serial/visor.h b/drivers/usb/serial/visor.h
index b84d1cb4c693..765118d83fb6 100644
--- a/drivers/usb/serial/visor.h
+++ b/drivers/usb/serial/visor.h
@@ -36,6 +36,9 @@
36#define PALM_ZIRE_ID 0x0070 36#define PALM_ZIRE_ID 0x0070
37#define PALM_M100_ID 0x0080 37#define PALM_M100_ID 0x0080
38 38
39#define GSPDA_VENDOR_ID 0x115e
40#define GSPDA_XPLORE_M68_ID 0xf100
41
39#define SONY_VENDOR_ID 0x054C 42#define SONY_VENDOR_ID 0x054C
40#define SONY_CLIE_3_5_ID 0x0038 43#define SONY_CLIE_3_5_ID 0x0038
41#define SONY_CLIE_4_0_ID 0x0066 44#define SONY_CLIE_4_0_ID 0x0066
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index e71c5ca1a07b..31ca92056c27 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -753,6 +753,13 @@ UNUSUAL_DEV( 0x0693, 0x0005, 0x0100, 0x0100,
753 "Flashgate", 753 "Flashgate",
754 US_SC_SCSI, US_PR_BULK, NULL, 0 ), 754 US_SC_SCSI, US_PR_BULK, NULL, 0 ),
755 755
756/* Reported by David Hamilton <niftimusmaximus@lycos.com> */
757UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001,
758 "Thomson Multimedia Inc.",
759 "RCA RD1080 MP3 Player",
760 US_SC_DEVICE, US_PR_DEVICE, NULL,
761 US_FL_FIX_CAPACITY ),
762
756UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, 763UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200,
757 "Sandisk", 764 "Sandisk",
758 "ImageMate SDDR-05a", 765 "ImageMate SDDR-05a",
diff --git a/fs/9p/fid.c b/fs/9p/fid.c
index eda449778fa5..c4d13bf904d2 100644
--- a/fs/9p/fid.c
+++ b/fs/9p/fid.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * V9FS FID Management 2 * V9FS FID Management
3 * 3 *
4 * Copyright (C) 2005 by Eric Van Hensbergen <ericvh@gmail.com> 4 * Copyright (C) 2005, 2006 by Eric Van Hensbergen <ericvh@gmail.com>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@
40 * 40 *
41 */ 41 */
42 42
43static int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry) 43int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry)
44{ 44{
45 struct list_head *fid_list = (struct list_head *)dentry->d_fsdata; 45 struct list_head *fid_list = (struct list_head *)dentry->d_fsdata;
46 dprintk(DEBUG_9P, "fid %d (%p) dentry %s (%p)\n", fid->fid, fid, 46 dprintk(DEBUG_9P, "fid %d (%p) dentry %s (%p)\n", fid->fid, fid,
@@ -57,7 +57,6 @@ static int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry)
57 } 57 }
58 58
59 fid->uid = current->uid; 59 fid->uid = current->uid;
60 fid->pid = current->pid;
61 list_add(&fid->list, fid_list); 60 list_add(&fid->list, fid_list);
62 return 0; 61 return 0;
63} 62}
@@ -68,14 +67,11 @@ static int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry)
68 * 67 *
69 */ 68 */
70 69
71struct v9fs_fid *v9fs_fid_create(struct dentry *dentry, 70struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *v9ses, int fid)
72 struct v9fs_session_info *v9ses, int fid, int create)
73{ 71{
74 struct v9fs_fid *new; 72 struct v9fs_fid *new;
75 73
76 dprintk(DEBUG_9P, "fid create dentry %p, fid %d, create %d\n", 74 dprintk(DEBUG_9P, "fid create fid %d\n", fid);
77 dentry, fid, create);
78
79 new = kmalloc(sizeof(struct v9fs_fid), GFP_KERNEL); 75 new = kmalloc(sizeof(struct v9fs_fid), GFP_KERNEL);
80 if (new == NULL) { 76 if (new == NULL) {
81 dprintk(DEBUG_ERROR, "Out of Memory\n"); 77 dprintk(DEBUG_ERROR, "Out of Memory\n");
@@ -85,19 +81,13 @@ struct v9fs_fid *v9fs_fid_create(struct dentry *dentry,
85 new->fid = fid; 81 new->fid = fid;
86 new->v9ses = v9ses; 82 new->v9ses = v9ses;
87 new->fidopen = 0; 83 new->fidopen = 0;
88 new->fidcreate = create;
89 new->fidclunked = 0; 84 new->fidclunked = 0;
90 new->iounit = 0; 85 new->iounit = 0;
91 new->rdir_pos = 0; 86 new->rdir_pos = 0;
92 new->rdir_fcall = NULL; 87 new->rdir_fcall = NULL;
88 INIT_LIST_HEAD(&new->list);
93 89
94 if (v9fs_fid_insert(new, dentry) == 0) 90 return new;
95 return new;
96 else {
97 dprintk(DEBUG_ERROR, "Problems inserting to dentry\n");
98 kfree(new);
99 return NULL;
100 }
101} 91}
102 92
103/** 93/**
@@ -113,140 +103,29 @@ void v9fs_fid_destroy(struct v9fs_fid *fid)
113} 103}
114 104
115/** 105/**
116 * v9fs_fid_walk_up - walks from the process current directory
117 * up to the specified dentry.
118 */
119static struct v9fs_fid *v9fs_fid_walk_up(struct dentry *dentry)
120{
121 int fidnum, cfidnum, err;
122 struct v9fs_fid *cfid;
123 struct dentry *cde;
124 struct v9fs_session_info *v9ses;
125
126 v9ses = v9fs_inode2v9ses(current->fs->pwd->d_inode);
127 cfid = v9fs_fid_lookup(current->fs->pwd);
128 if (cfid == NULL) {
129 dprintk(DEBUG_ERROR, "process cwd doesn't have a fid\n");
130 return ERR_PTR(-ENOENT);
131 }
132
133 cfidnum = cfid->fid;
134 cde = current->fs->pwd;
135 /* TODO: take advantage of multiwalk */
136
137 fidnum = v9fs_get_idpool(&v9ses->fidpool);
138 if (fidnum < 0) {
139 dprintk(DEBUG_ERROR, "could not get a new fid num\n");
140 err = -ENOENT;
141 goto clunk_fid;
142 }
143
144 while (cde != dentry) {
145 if (cde == cde->d_parent) {
146 dprintk(DEBUG_ERROR, "can't find dentry\n");
147 err = -ENOENT;
148 goto clunk_fid;
149 }
150
151 err = v9fs_t_walk(v9ses, cfidnum, fidnum, "..", NULL);
152 if (err < 0) {
153 dprintk(DEBUG_ERROR, "problem walking to parent\n");
154 goto clunk_fid;
155 }
156
157 cfidnum = fidnum;
158 cde = cde->d_parent;
159 }
160
161 return v9fs_fid_create(dentry, v9ses, fidnum, 0);
162
163clunk_fid:
164 v9fs_t_clunk(v9ses, fidnum);
165 return ERR_PTR(err);
166}
167
168/**
169 * v9fs_fid_lookup - retrieve the right fid from a particular dentry 106 * v9fs_fid_lookup - retrieve the right fid from a particular dentry
170 * @dentry: dentry to look for fid in 107 * @dentry: dentry to look for fid in
171 * @type: intent of lookup (operation or traversal) 108 * @type: intent of lookup (operation or traversal)
172 * 109 *
173 * search list of fids associated with a dentry for a fid with a matching 110 * find a fid in the dentry
174 * thread id or uid. If that fails, look up the dentry's parents to see if you 111 *
175 * can find a matching fid. 112 * TODO: only match fids that have the same uid as current user
176 * 113 *
177 */ 114 */
178 115
179struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry) 116struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry)
180{ 117{
181 struct list_head *fid_list = (struct list_head *)dentry->d_fsdata; 118 struct list_head *fid_list = (struct list_head *)dentry->d_fsdata;
182 struct v9fs_fid *current_fid = NULL;
183 struct v9fs_fid *temp = NULL;
184 struct v9fs_fid *return_fid = NULL; 119 struct v9fs_fid *return_fid = NULL;
185 120
186 dprintk(DEBUG_9P, " dentry: %s (%p)\n", dentry->d_iname, dentry); 121 dprintk(DEBUG_9P, " dentry: %s (%p)\n", dentry->d_iname, dentry);
187 122
188 if (fid_list) { 123 if (fid_list)
189 list_for_each_entry_safe(current_fid, temp, fid_list, list) { 124 return_fid = list_entry(fid_list->next, struct v9fs_fid, list);
190 if (!current_fid->fidcreate) {
191 return_fid = current_fid;
192 break;
193 }
194 }
195
196 if (!return_fid)
197 return_fid = current_fid;
198 }
199
200 /* we are at the root but didn't match */
201 if ((!return_fid) && (dentry->d_parent == dentry)) {
202 /* TODO: clone attach with new uid */
203 return_fid = current_fid;
204 }
205 125
206 if (!return_fid) { 126 if (!return_fid) {
207 struct dentry *par = current->fs->pwd->d_parent; 127 dprintk(DEBUG_ERROR, "Couldn't find a fid in dentry\n");
208 int count = 1;
209 while (par != NULL) {
210 if (par == dentry)
211 break;
212 count++;
213 if (par == par->d_parent) {
214 dprintk(DEBUG_ERROR,
215 "got to root without finding dentry\n");
216 break;
217 }
218 par = par->d_parent;
219 }
220
221/* XXX - there may be some duplication we can get rid of */
222 if (par == dentry) {
223 return_fid = v9fs_fid_walk_up(dentry);
224 if (IS_ERR(return_fid))
225 return_fid = NULL;
226 }
227 } 128 }
228 129
229 return return_fid; 130 return return_fid;
230} 131}
231
232struct v9fs_fid *v9fs_fid_get_created(struct dentry *dentry)
233{
234 struct list_head *fid_list;
235 struct v9fs_fid *fid, *ftmp, *ret;
236
237 dprintk(DEBUG_9P, " dentry: %s (%p)\n", dentry->d_iname, dentry);
238 fid_list = (struct list_head *)dentry->d_fsdata;
239 ret = NULL;
240 if (fid_list) {
241 list_for_each_entry_safe(fid, ftmp, fid_list, list) {
242 if (fid->fidcreate && fid->pid == current->pid) {
243 list_del(&fid->list);
244 ret = fid;
245 break;
246 }
247 }
248 }
249
250 dprintk(DEBUG_9P, "return %p\n", ret);
251 return ret;
252}
diff --git a/fs/9p/fid.h b/fs/9p/fid.h
index 84c673a44c83..1fc2dd08d75a 100644
--- a/fs/9p/fid.h
+++ b/fs/9p/fid.h
@@ -33,7 +33,6 @@ struct v9fs_fid {
33 33
34 u32 fid; 34 u32 fid;
35 unsigned char fidopen; /* set when fid is opened */ 35 unsigned char fidopen; /* set when fid is opened */
36 unsigned char fidcreate; /* set when fid was just created */
37 unsigned char fidclunked; /* set when fid has already been clunked */ 36 unsigned char fidclunked; /* set when fid has already been clunked */
38 37
39 struct v9fs_qid qid; 38 struct v9fs_qid qid;
@@ -45,7 +44,6 @@ struct v9fs_fid {
45 struct v9fs_fcall *rdir_fcall; 44 struct v9fs_fcall *rdir_fcall;
46 45
47 /* management stuff */ 46 /* management stuff */
48 pid_t pid; /* thread associated with this fid */
49 uid_t uid; /* user associated with this fid */ 47 uid_t uid; /* user associated with this fid */
50 48
51 /* private data */ 49 /* private data */
@@ -56,5 +54,5 @@ struct v9fs_fid {
56struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry); 54struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry);
57struct v9fs_fid *v9fs_fid_get_created(struct dentry *); 55struct v9fs_fid *v9fs_fid_get_created(struct dentry *);
58void v9fs_fid_destroy(struct v9fs_fid *fid); 56void v9fs_fid_destroy(struct v9fs_fid *fid);
59struct v9fs_fid *v9fs_fid_create(struct dentry *, 57struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *, int fid);
60 struct v9fs_session_info *v9ses, int fid, int create); 58int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry);
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index ef3386549140..61352491ba36 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -397,6 +397,7 @@ v9fs_session_init(struct v9fs_session_info *v9ses,
397 } 397 }
398 398
399 if (v9ses->afid != ~0) { 399 if (v9ses->afid != ~0) {
400 dprintk(DEBUG_ERROR, "afid not equal to ~0\n");
400 if (v9fs_t_clunk(v9ses, v9ses->afid)) 401 if (v9fs_t_clunk(v9ses, v9ses->afid))
401 dprintk(DEBUG_ERROR, "clunk failed\n"); 402 dprintk(DEBUG_ERROR, "clunk failed\n");
402 } 403 }
diff --git a/fs/9p/v9fs_vfs.h b/fs/9p/v9fs_vfs.h
index 69cf2905dc90..a759278acaae 100644
--- a/fs/9p/v9fs_vfs.h
+++ b/fs/9p/v9fs_vfs.h
@@ -51,3 +51,4 @@ int v9fs_dir_release(struct inode *inode, struct file *filp);
51int v9fs_file_open(struct inode *inode, struct file *file); 51int v9fs_file_open(struct inode *inode, struct file *file);
52void v9fs_inode2stat(struct inode *inode, struct v9fs_stat *stat); 52void v9fs_inode2stat(struct inode *inode, struct v9fs_stat *stat);
53void v9fs_dentry_release(struct dentry *); 53void v9fs_dentry_release(struct dentry *);
54int v9fs_uflags2omode(int uflags);
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c
index 2dd806dac9f1..12c9cc926b71 100644
--- a/fs/9p/vfs_dentry.c
+++ b/fs/9p/vfs_dentry.c
@@ -43,47 +43,18 @@
43#include "fid.h" 43#include "fid.h"
44 44
45/** 45/**
46 * v9fs_dentry_validate - VFS dcache hook to validate cache 46 * v9fs_dentry_delete - called when dentry refcount equals 0
47 * @dentry: dentry that is being validated 47 * @dentry: dentry in question
48 * @nd: path data
49 * 48 *
50 * dcache really shouldn't be used for 9P2000 as at all due to 49 * By returning 1 here we should remove cacheing of unused
51 * potential attached semantics to directory traversal (walk). 50 * dentry components.
52 *
53 * FUTURE: look into how to use dcache to allow multi-stage
54 * walks in Plan 9 & potential for better dcache operation which
55 * would remain valid for Plan 9 semantics. Older versions
56 * had validation via stat for those interested. However, since
57 * stat has the same approximate overhead as walk there really
58 * is no difference. The only improvement would be from a
59 * time-decay cache like NFS has and that undermines the
60 * synchronous nature of 9P2000.
61 * 51 *
62 */ 52 */
63 53
64static int v9fs_dentry_validate(struct dentry *dentry, struct nameidata *nd) 54int v9fs_dentry_delete(struct dentry *dentry)
65{ 55{
66 struct dentry *dc = current->fs->pwd; 56 dprintk(DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry);
67 57 return 1;
68 dprintk(DEBUG_VFS, "dentry: %s (%p)\n", dentry->d_iname, dentry);
69 if (v9fs_fid_lookup(dentry)) {
70 dprintk(DEBUG_VFS, "VALID\n");
71 return 1;
72 }
73
74 while (dc != NULL) {
75 if (dc == dentry) {
76 dprintk(DEBUG_VFS, "VALID\n");
77 return 1;
78 }
79 if (dc == dc->d_parent)
80 break;
81
82 dc = dc->d_parent;
83 }
84
85 dprintk(DEBUG_VFS, "INVALID\n");
86 return 0;
87} 58}
88 59
89/** 60/**
@@ -118,6 +89,6 @@ void v9fs_dentry_release(struct dentry *dentry)
118} 89}
119 90
120struct dentry_operations v9fs_dentry_operations = { 91struct dentry_operations v9fs_dentry_operations = {
121 .d_revalidate = v9fs_dentry_validate, 92 .d_delete = v9fs_dentry_delete,
122 .d_release = v9fs_dentry_release, 93 .d_release = v9fs_dentry_release,
123}; 94};
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index c7e14d917215..de3a129698da 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -53,94 +53,70 @@
53int v9fs_file_open(struct inode *inode, struct file *file) 53int v9fs_file_open(struct inode *inode, struct file *file)
54{ 54{
55 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); 55 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode);
56 struct v9fs_fid *v9fid, *fid; 56 struct v9fs_fid *vfid;
57 struct v9fs_fcall *fcall = NULL; 57 struct v9fs_fcall *fcall = NULL;
58 int open_mode = 0; 58 int omode;
59 unsigned int iounit = 0; 59 int fid = V9FS_NOFID;
60 int newfid = -1; 60 int err;
61 long result = -1;
62 61
63 dprintk(DEBUG_VFS, "inode: %p file: %p \n", inode, file); 62 dprintk(DEBUG_VFS, "inode: %p file: %p \n", inode, file);
64 63
65 v9fid = v9fs_fid_get_created(file->f_dentry); 64 vfid = v9fs_fid_lookup(file->f_dentry);
66 if (!v9fid) 65 if (!vfid) {
67 v9fid = v9fs_fid_lookup(file->f_dentry);
68
69 if (!v9fid) {
70 dprintk(DEBUG_ERROR, "Couldn't resolve fid from dentry\n"); 66 dprintk(DEBUG_ERROR, "Couldn't resolve fid from dentry\n");
71 return -EBADF; 67 return -EBADF;
72 } 68 }
73 69
74 if (!v9fid->fidcreate) { 70 fid = v9fs_get_idpool(&v9ses->fidpool);
75 fid = kmalloc(sizeof(struct v9fs_fid), GFP_KERNEL); 71 if (fid < 0) {
76 if (fid == NULL) {
77 dprintk(DEBUG_ERROR, "Out of Memory\n");
78 return -ENOMEM;
79 }
80
81 fid->fidopen = 0;
82 fid->fidcreate = 0;
83 fid->fidclunked = 0;
84 fid->iounit = 0;
85 fid->v9ses = v9ses;
86
87 newfid = v9fs_get_idpool(&v9ses->fidpool);
88 if (newfid < 0) {
89 eprintk(KERN_WARNING, "newfid fails!\n"); 72 eprintk(KERN_WARNING, "newfid fails!\n");
90 return -ENOSPC; 73 return -ENOSPC;
91 } 74 }
92 75
93 result = 76 err = v9fs_t_walk(v9ses, vfid->fid, fid, NULL, NULL);
94 v9fs_t_walk(v9ses, v9fid->fid, newfid, NULL, NULL); 77 if (err < 0) {
95
96 if (result < 0) {
97 v9fs_put_idpool(newfid, &v9ses->fidpool);
98 dprintk(DEBUG_ERROR, "rewalk didn't work\n"); 78 dprintk(DEBUG_ERROR, "rewalk didn't work\n");
99 return -EBADF; 79 goto put_fid;
80 }
81
82 vfid = kmalloc(sizeof(struct v9fs_fid), GFP_KERNEL);
83 if (vfid == NULL) {
84 dprintk(DEBUG_ERROR, "out of memory\n");
85 goto clunk_fid;
100 } 86 }
101 87
102 fid->fid = newfid;
103 v9fid = fid;
104 /* TODO: do special things for O_EXCL, O_NOFOLLOW, O_SYNC */ 88 /* TODO: do special things for O_EXCL, O_NOFOLLOW, O_SYNC */
105 /* translate open mode appropriately */ 89 /* translate open mode appropriately */
106 open_mode = file->f_flags & 0x3; 90 omode = v9fs_uflags2omode(file->f_flags);
91 err = v9fs_t_open(v9ses, fid, omode, &fcall);
92 if (err < 0) {
93 PRINT_FCALL_ERROR("open failed", fcall);
94 goto destroy_vfid;
95 }
107 96
108 if (file->f_flags & O_EXCL) 97 file->private_data = vfid;
109 open_mode |= V9FS_OEXCL; 98 vfid->fid = fid;
99 vfid->fidopen = 1;
100 vfid->fidclunked = 0;
101 vfid->iounit = fcall->params.ropen.iounit;
102 vfid->rdir_pos = 0;
103 vfid->rdir_fcall = NULL;
104 vfid->filp = file;
105 kfree(fcall);
110 106
111 if (v9ses->extended) { 107 return 0;
112 if (file->f_flags & O_TRUNC)
113 open_mode |= V9FS_OTRUNC;
114 108
115 if (file->f_flags & O_APPEND) 109destroy_vfid:
116 open_mode |= V9FS_OAPPEND; 110 v9fs_fid_destroy(vfid);
117 }
118 111
119 result = v9fs_t_open(v9ses, newfid, open_mode, &fcall); 112clunk_fid:
120 if (result < 0) { 113 v9fs_t_clunk(v9ses, fid);
121 PRINT_FCALL_ERROR("open failed", fcall);
122 kfree(fcall);
123 return result;
124 }
125 114
126 iounit = fcall->params.ropen.iounit; 115put_fid:
116 v9fs_put_idpool(fid, &v9ses->fidpool);
127 kfree(fcall); 117 kfree(fcall);
128 } else {
129 /* create case */
130 newfid = v9fid->fid;
131 iounit = v9fid->iounit;
132 v9fid->fidcreate = 0;
133 }
134
135 file->private_data = v9fid;
136
137 v9fid->rdir_pos = 0;
138 v9fid->rdir_fcall = NULL;
139 v9fid->fidopen = 1;
140 v9fid->filp = file;
141 v9fid->iounit = iounit;
142 118
143 return 0; 119 return err;
144} 120}
145 121
146/** 122/**
@@ -289,9 +265,7 @@ v9fs_file_write(struct file *filp, const char __user * data,
289 total += result; 265 total += result;
290 } while (count); 266 } while (count);
291 267
292 if(inode->i_mapping->nrpages)
293 invalidate_inode_pages2(inode->i_mapping); 268 invalidate_inode_pages2(inode->i_mapping);
294
295 return total; 269 return total;
296} 270}
297 271
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 63e5b0398e8b..dce729d42869 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -125,6 +125,38 @@ static int p9mode2unixmode(struct v9fs_session_info *v9ses, int mode)
125 return res; 125 return res;
126} 126}
127 127
128int v9fs_uflags2omode(int uflags)
129{
130 int ret;
131
132 ret = 0;
133 switch (uflags&3) {
134 default:
135 case O_RDONLY:
136 ret = V9FS_OREAD;
137 break;
138
139 case O_WRONLY:
140 ret = V9FS_OWRITE;
141 break;
142
143 case O_RDWR:
144 ret = V9FS_ORDWR;
145 break;
146 }
147
148 if (uflags & O_EXCL)
149 ret |= V9FS_OEXCL;
150
151 if (uflags & O_TRUNC)
152 ret |= V9FS_OTRUNC;
153
154 if (uflags & O_APPEND)
155 ret |= V9FS_OAPPEND;
156
157 return ret;
158}
159
128/** 160/**
129 * v9fs_blank_wstat - helper function to setup a 9P stat structure 161 * v9fs_blank_wstat - helper function to setup a 9P stat structure
130 * @v9ses: 9P session info (for determining extended mode) 162 * @v9ses: 9P session info (for determining extended mode)
@@ -163,7 +195,7 @@ v9fs_blank_wstat(struct v9fs_wstat *wstat)
163 195
164struct inode *v9fs_get_inode(struct super_block *sb, int mode) 196struct inode *v9fs_get_inode(struct super_block *sb, int mode)
165{ 197{
166 struct inode *inode = NULL; 198 struct inode *inode;
167 struct v9fs_session_info *v9ses = sb->s_fs_info; 199 struct v9fs_session_info *v9ses = sb->s_fs_info;
168 200
169 dprintk(DEBUG_VFS, "super block: %p mode: %o\n", sb, mode); 201 dprintk(DEBUG_VFS, "super block: %p mode: %o\n", sb, mode);
@@ -222,171 +254,135 @@ struct inode *v9fs_get_inode(struct super_block *sb, int mode)
222 return inode; 254 return inode;
223} 255}
224 256
225/**
226 * v9fs_create - helper function to create files and directories
227 * @dir: directory inode file is being created in
228 * @file_dentry: dentry file is being created in
229 * @perm: permissions file is being created with
230 * @open_mode: resulting open mode for file
231 *
232 */
233
234static int 257static int
235v9fs_create(struct inode *dir, 258v9fs_create(struct v9fs_session_info *v9ses, u32 pfid, char *name,
236 struct dentry *file_dentry, 259 u32 perm, u8 mode, u32 *fidp, struct v9fs_qid *qid, u32 *iounit)
237 unsigned int perm, unsigned int open_mode)
238{ 260{
239 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dir); 261 u32 fid;
240 struct super_block *sb = dir->i_sb;
241 struct v9fs_fid *dirfid =
242 v9fs_fid_lookup(file_dentry->d_parent);
243 struct v9fs_fid *fid = NULL;
244 struct inode *file_inode = NULL;
245 struct v9fs_fcall *fcall = NULL;
246 struct v9fs_qid qid;
247 int dirfidnum = -1;
248 long newfid = -1;
249 int result = 0;
250 unsigned int iounit = 0;
251 int wfidno = -1;
252 int err; 262 int err;
263 struct v9fs_fcall *fcall;
253 264
254 perm = unixmode2p9mode(v9ses, perm); 265 fid = v9fs_get_idpool(&v9ses->fidpool);
255 266 if (fid < 0) {
256 dprintk(DEBUG_VFS, "dir: %p dentry: %p perm: %o mode: %o\n", dir,
257 file_dentry, perm, open_mode);
258
259 if (!dirfid)
260 return -EBADF;
261
262 dirfidnum = dirfid->fid;
263 if (dirfidnum < 0) {
264 dprintk(DEBUG_ERROR, "No fid for the directory #%lu\n",
265 dir->i_ino);
266 return -EBADF;
267 }
268
269 if (file_dentry->d_inode) {
270 dprintk(DEBUG_ERROR,
271 "Odd. There is an inode for dir %lu, name :%s:\n",
272 dir->i_ino, file_dentry->d_name.name);
273 return -EEXIST;
274 }
275
276 newfid = v9fs_get_idpool(&v9ses->fidpool);
277 if (newfid < 0) {
278 eprintk(KERN_WARNING, "no free fids available\n"); 267 eprintk(KERN_WARNING, "no free fids available\n");
279 return -ENOSPC; 268 err = -ENOSPC;
269 goto error;
280 } 270 }
281 271
282 result = v9fs_t_walk(v9ses, dirfidnum, newfid, NULL, &fcall); 272 err = v9fs_t_walk(v9ses, pfid, fid, NULL, &fcall);
283 if (result < 0) { 273 if (err < 0) {
284 PRINT_FCALL_ERROR("clone error", fcall); 274 PRINT_FCALL_ERROR("clone error", fcall);
285 v9fs_put_idpool(newfid, &v9ses->fidpool); 275 goto error;
286 newfid = -1;
287 goto CleanUpFid;
288 } 276 }
289
290 kfree(fcall); 277 kfree(fcall);
291 fcall = NULL;
292 278
293 result = v9fs_t_create(v9ses, newfid, (char *)file_dentry->d_name.name, 279 err = v9fs_t_create(v9ses, fid, name, perm, mode, &fcall);
294 perm, open_mode, &fcall); 280 if (err < 0) {
295 if (result < 0) {
296 PRINT_FCALL_ERROR("create fails", fcall); 281 PRINT_FCALL_ERROR("create fails", fcall);
297 goto CleanUpFid; 282 goto error;
298 } 283 }
299 284
300 iounit = fcall->params.rcreate.iounit; 285 if (iounit)
301 qid = fcall->params.rcreate.qid; 286 *iounit = fcall->params.rcreate.iounit;
287
288 if (qid)
289 *qid = fcall->params.rcreate.qid;
290
291 if (fidp)
292 *fidp = fid;
293
302 kfree(fcall); 294 kfree(fcall);
303 fcall = NULL; 295 return 0;
304 296
305 if (!(perm&V9FS_DMDIR)) { 297error:
306 fid = v9fs_fid_create(file_dentry, v9ses, newfid, 1); 298 if (fid >= 0)
307 dprintk(DEBUG_VFS, "fid %p %d\n", fid, fid->fidcreate); 299 v9fs_put_idpool(fid, &v9ses->fidpool);
308 if (!fid) {
309 result = -ENOMEM;
310 goto CleanUpFid;
311 }
312 300
313 fid->qid = qid; 301 kfree(fcall);
314 fid->iounit = iounit; 302 return err;
315 } else { 303}
316 err = v9fs_t_clunk(v9ses, newfid); 304
317 newfid = -1; 305static struct v9fs_fid*
318 if (err < 0) 306v9fs_clone_walk(struct v9fs_session_info *v9ses, u32 fid, struct dentry *dentry)
319 dprintk(DEBUG_ERROR, "clunk for mkdir failed: %d\n", err); 307{
320 } 308 int err;
309 u32 nfid;
310 struct v9fs_fid *ret;
311 struct v9fs_fcall *fcall;
321 312
322 /* walk to the newly created file and put the fid in the dentry */ 313 nfid = v9fs_get_idpool(&v9ses->fidpool);
323 wfidno = v9fs_get_idpool(&v9ses->fidpool); 314 if (nfid < 0) {
324 if (wfidno < 0) {
325 eprintk(KERN_WARNING, "no free fids available\n"); 315 eprintk(KERN_WARNING, "no free fids available\n");
326 return -ENOSPC; 316 err = -ENOSPC;
317 goto error;
327 } 318 }
328 319
329 result = v9fs_t_walk(v9ses, dirfidnum, wfidno, 320 err = v9fs_t_walk(v9ses, fid, nfid, (char *) dentry->d_name.name,
330 (char *) file_dentry->d_name.name, &fcall); 321 &fcall);
331 if (result < 0) { 322
332 PRINT_FCALL_ERROR("clone error", fcall); 323 if (err < 0) {
333 v9fs_put_idpool(wfidno, &v9ses->fidpool); 324 PRINT_FCALL_ERROR("walk error", fcall);
334 wfidno = -1; 325 v9fs_put_idpool(nfid, &v9ses->fidpool);
335 goto CleanUpFid; 326 goto error;
336 } 327 }
328
337 kfree(fcall); 329 kfree(fcall);
338 fcall = NULL; 330 fcall = NULL;
331 ret = v9fs_fid_create(v9ses, nfid);
332 if (!ret) {
333 err = -ENOMEM;
334 goto clunk_fid;
335 }
339 336
340 if (!v9fs_fid_create(file_dentry, v9ses, wfidno, 0)) { 337 err = v9fs_fid_insert(ret, dentry);
341 v9fs_put_idpool(wfidno, &v9ses->fidpool); 338 if (err < 0) {
342 339 v9fs_fid_destroy(ret);
343 goto CleanUpFid; 340 goto clunk_fid;
344 } 341 }
345 342
346 if ((perm & V9FS_DMSYMLINK) || (perm & V9FS_DMLINK) || 343 return ret;
347 (perm & V9FS_DMNAMEDPIPE) || (perm & V9FS_DMSOCKET) ||
348 (perm & V9FS_DMDEVICE))
349 return 0;
350 344
351 result = v9fs_t_stat(v9ses, wfidno, &fcall); 345clunk_fid:
352 if (result < 0) { 346 v9fs_t_clunk(v9ses, nfid);
353 PRINT_FCALL_ERROR("stat error", fcall); 347
354 goto CleanUpFid; 348error:
355 } 349 kfree(fcall);
350 return ERR_PTR(err);
351}
356 352
353struct inode *
354v9fs_inode_from_fid(struct v9fs_session_info *v9ses, u32 fid,
355 struct super_block *sb)
356{
357 int err, umode;
358 struct inode *ret;
359 struct v9fs_fcall *fcall;
357 360
358 file_inode = v9fs_get_inode(sb, 361 ret = NULL;
359 p9mode2unixmode(v9ses, fcall->params.rstat.stat.mode)); 362 err = v9fs_t_stat(v9ses, fid, &fcall);
363 if (err) {
364 PRINT_FCALL_ERROR("stat error", fcall);
365 goto error;
366 }
360 367
361 if ((!file_inode) || IS_ERR(file_inode)) { 368 umode = p9mode2unixmode(v9ses, fcall->params.rstat.stat.mode);
362 dprintk(DEBUG_ERROR, "create inode failed\n"); 369 ret = v9fs_get_inode(sb, umode);
363 result = -EBADF; 370 if (IS_ERR(ret)) {
364 goto CleanUpFid; 371 err = PTR_ERR(ret);
372 ret = NULL;
373 goto error;
365 } 374 }
366 375
367 v9fs_stat2inode(&fcall->params.rstat.stat, file_inode, sb); 376 v9fs_stat2inode(&fcall->params.rstat.stat, ret, sb);
368 kfree(fcall); 377 kfree(fcall);
369 fcall = NULL; 378 return ret;
370 file_dentry->d_op = &v9fs_dentry_operations;
371 d_instantiate(file_dentry, file_inode);
372
373 return 0;
374 379
375 CleanUpFid: 380error:
376 kfree(fcall); 381 kfree(fcall);
377 fcall = NULL; 382 if (ret)
383 iput(ret);
378 384
379 if (newfid >= 0) { 385 return ERR_PTR(err);
380 err = v9fs_t_clunk(v9ses, newfid);
381 if (err < 0)
382 dprintk(DEBUG_ERROR, "clunk failed: %d\n", err);
383 }
384 if (wfidno >= 0) {
385 err = v9fs_t_clunk(v9ses, wfidno);
386 if (err < 0)
387 dprintk(DEBUG_ERROR, "clunk failed: %d\n", err);
388 }
389 return result;
390} 386}
391 387
392/** 388/**
@@ -440,20 +436,97 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
440 return result; 436 return result;
441} 437}
442 438
439static int
440v9fs_open_created(struct inode *inode, struct file *file)
441{
442 return 0;
443}
444
443/** 445/**
444 * v9fs_vfs_create - VFS hook to create files 446 * v9fs_vfs_create - VFS hook to create files
445 * @inode: directory inode that is being deleted 447 * @inode: directory inode that is being deleted
446 * @dentry: dentry that is being deleted 448 * @dentry: dentry that is being deleted
447 * @perm: create permissions 449 * @mode: create permissions
448 * @nd: path information 450 * @nd: path information
449 * 451 *
450 */ 452 */
451 453
452static int 454static int
453v9fs_vfs_create(struct inode *inode, struct dentry *dentry, int perm, 455v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
454 struct nameidata *nd) 456 struct nameidata *nd)
455{ 457{
456 return v9fs_create(inode, dentry, perm, O_RDWR); 458 int err;
459 u32 fid, perm, iounit;
460 int flags;
461 struct v9fs_session_info *v9ses;
462 struct v9fs_fid *dfid, *vfid, *ffid;
463 struct inode *inode;
464 struct v9fs_qid qid;
465 struct file *filp;
466
467 inode = NULL;
468 vfid = NULL;
469 v9ses = v9fs_inode2v9ses(dir);
470 dfid = v9fs_fid_lookup(dentry->d_parent);
471 perm = unixmode2p9mode(v9ses, mode);
472
473 if (nd && nd->flags & LOOKUP_OPEN)
474 flags = nd->intent.open.flags - 1;
475 else
476 flags = O_RDWR;
477
478 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name,
479 perm, v9fs_uflags2omode(flags), &fid, &qid, &iounit);
480
481 if (err)
482 goto error;
483
484 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
485 if (IS_ERR(vfid)) {
486 err = PTR_ERR(vfid);
487 vfid = NULL;
488 goto error;
489 }
490
491 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb);
492 if (IS_ERR(inode)) {
493 err = PTR_ERR(inode);
494 inode = NULL;
495 goto error;
496 }
497
498 dentry->d_op = &v9fs_dentry_operations;
499 d_instantiate(dentry, inode);
500
501 if (nd && nd->flags & LOOKUP_OPEN) {
502 ffid = v9fs_fid_create(v9ses, fid);
503 if (!ffid)
504 return -ENOMEM;
505
506 filp = lookup_instantiate_filp(nd, dentry, v9fs_open_created);
507 if (IS_ERR(filp)) {
508 v9fs_fid_destroy(ffid);
509 return PTR_ERR(filp);
510 }
511
512 ffid->rdir_pos = 0;
513 ffid->rdir_fcall = NULL;
514 ffid->fidopen = 1;
515 ffid->iounit = iounit;
516 ffid->filp = filp;
517 filp->private_data = ffid;
518 }
519
520 return 0;
521
522error:
523 if (vfid)
524 v9fs_fid_destroy(vfid);
525
526 if (inode)
527 iput(inode);
528
529 return err;
457} 530}
458 531
459/** 532/**
@@ -464,9 +537,57 @@ v9fs_vfs_create(struct inode *inode, struct dentry *dentry, int perm,
464 * 537 *
465 */ 538 */
466 539
467static int v9fs_vfs_mkdir(struct inode *inode, struct dentry *dentry, int mode) 540static int v9fs_vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
468{ 541{
469 return v9fs_create(inode, dentry, mode | S_IFDIR, O_RDONLY); 542 int err;
543 u32 fid, perm;
544 struct v9fs_session_info *v9ses;
545 struct v9fs_fid *dfid, *vfid;
546 struct inode *inode;
547
548 inode = NULL;
549 vfid = NULL;
550 v9ses = v9fs_inode2v9ses(dir);
551 dfid = v9fs_fid_lookup(dentry->d_parent);
552 perm = unixmode2p9mode(v9ses, mode | S_IFDIR);
553
554 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name,
555 perm, V9FS_OREAD, &fid, NULL, NULL);
556
557 if (err) {
558 dprintk(DEBUG_ERROR, "create error %d\n", err);
559 goto error;
560 }
561
562 err = v9fs_t_clunk(v9ses, fid);
563 if (err) {
564 dprintk(DEBUG_ERROR, "clunk error %d\n", err);
565 goto error;
566 }
567
568 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
569 if (IS_ERR(vfid)) {
570 err = PTR_ERR(vfid);
571 vfid = NULL;
572 goto error;
573 }
574
575 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb);
576 if (IS_ERR(inode)) {
577 err = PTR_ERR(inode);
578 inode = NULL;
579 goto error;
580 }
581
582 dentry->d_op = &v9fs_dentry_operations;
583 d_instantiate(dentry, inode);
584 return 0;
585
586error:
587 if (vfid)
588 v9fs_fid_destroy(vfid);
589
590 return err;
470} 591}
471 592
472/** 593/**
@@ -516,9 +637,8 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
516 return ERR_PTR(-ENOSPC); 637 return ERR_PTR(-ENOSPC);
517 } 638 }
518 639
519 result = 640 result = v9fs_t_walk(v9ses, dirfidnum, newfid,
520 v9fs_t_walk(v9ses, dirfidnum, newfid, (char *)dentry->d_name.name, 641 (char *)dentry->d_name.name, NULL);
521 NULL);
522 if (result < 0) { 642 if (result < 0) {
523 v9fs_put_idpool(newfid, &v9ses->fidpool); 643 v9fs_put_idpool(newfid, &v9ses->fidpool);
524 if (result == -ENOENT) { 644 if (result == -ENOENT) {
@@ -551,13 +671,17 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
551 671
552 inode->i_ino = v9fs_qid2ino(&fcall->params.rstat.stat.qid); 672 inode->i_ino = v9fs_qid2ino(&fcall->params.rstat.stat.qid);
553 673
554 fid = v9fs_fid_create(dentry, v9ses, newfid, 0); 674 fid = v9fs_fid_create(v9ses, newfid);
555 if (fid == NULL) { 675 if (fid == NULL) {
556 dprintk(DEBUG_ERROR, "couldn't insert\n"); 676 dprintk(DEBUG_ERROR, "couldn't insert\n");
557 result = -ENOMEM; 677 result = -ENOMEM;
558 goto FreeFcall; 678 goto FreeFcall;
559 } 679 }
560 680
681 result = v9fs_fid_insert(fid, dentry);
682 if (result < 0)
683 goto FreeFcall;
684
561 fid->qid = fcall->params.rstat.stat.qid; 685 fid->qid = fcall->params.rstat.stat.qid;
562 686
563 dentry->d_op = &v9fs_dentry_operations; 687 dentry->d_op = &v9fs_dentry_operations;
@@ -886,8 +1010,8 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
886 } 1010 }
887 1011
888 /* copy extension buffer into buffer */ 1012 /* copy extension buffer into buffer */
889 if (fcall->params.rstat.stat.extension.len+1 < buflen) 1013 if (fcall->params.rstat.stat.extension.len < buflen)
890 buflen = fcall->params.rstat.stat.extension.len + 1; 1014 buflen = fcall->params.rstat.stat.extension.len;
891 1015
892 memcpy(buffer, fcall->params.rstat.stat.extension.str, buflen - 1); 1016 memcpy(buffer, fcall->params.rstat.stat.extension.str, buflen - 1);
893 buffer[buflen-1] = 0; 1017 buffer[buflen-1] = 0;
@@ -951,7 +1075,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
951 if (!link) 1075 if (!link)
952 link = ERR_PTR(-ENOMEM); 1076 link = ERR_PTR(-ENOMEM);
953 else { 1077 else {
954 len = v9fs_readlink(dentry, link, PATH_MAX); 1078 len = v9fs_readlink(dentry, link, strlen(link));
955 1079
956 if (len < 0) { 1080 if (len < 0) {
957 __putname(link); 1081 __putname(link);
@@ -983,53 +1107,75 @@ static void v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void
983static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry, 1107static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry,
984 int mode, const char *extension) 1108 int mode, const char *extension)
985{ 1109{
986 int err, retval; 1110 int err;
1111 u32 fid, perm;
987 struct v9fs_session_info *v9ses; 1112 struct v9fs_session_info *v9ses;
1113 struct v9fs_fid *dfid, *vfid;
1114 struct inode *inode;
988 struct v9fs_fcall *fcall; 1115 struct v9fs_fcall *fcall;
989 struct v9fs_fid *fid;
990 struct v9fs_wstat wstat; 1116 struct v9fs_wstat wstat;
991 1117
992 v9ses = v9fs_inode2v9ses(dir);
993 retval = -EPERM;
994 fcall = NULL; 1118 fcall = NULL;
1119 inode = NULL;
1120 vfid = NULL;
1121 v9ses = v9fs_inode2v9ses(dir);
1122 dfid = v9fs_fid_lookup(dentry->d_parent);
1123 perm = unixmode2p9mode(v9ses, mode);
995 1124
996 if (!v9ses->extended) { 1125 if (!v9ses->extended) {
997 dprintk(DEBUG_ERROR, "not extended\n"); 1126 dprintk(DEBUG_ERROR, "not extended\n");
998 goto free_mem; 1127 return -EPERM;
999 } 1128 }
1000 1129
1001 /* issue a create */ 1130 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name,
1002 retval = v9fs_create(dir, dentry, mode, 0); 1131 perm, V9FS_OREAD, &fid, NULL, NULL);
1003 if (retval != 0)
1004 goto free_mem;
1005 1132
1006 fid = v9fs_fid_get_created(dentry); 1133 if (err)
1007 if (!fid) { 1134 goto error;
1008 dprintk(DEBUG_ERROR, "couldn't resolve fid from dentry\n"); 1135
1009 goto free_mem; 1136 err = v9fs_t_clunk(v9ses, fid);
1137 if (err)
1138 goto error;
1139
1140 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
1141 if (IS_ERR(vfid)) {
1142 err = PTR_ERR(vfid);
1143 vfid = NULL;
1144 goto error;
1145 }
1146
1147 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb);
1148 if (IS_ERR(inode)) {
1149 err = PTR_ERR(inode);
1150 inode = NULL;
1151 goto error;
1010 } 1152 }
1011 1153
1012 /* issue a Twstat */ 1154 /* issue a Twstat */
1013 v9fs_blank_wstat(&wstat); 1155 v9fs_blank_wstat(&wstat);
1014 wstat.muid = v9ses->name; 1156 wstat.muid = v9ses->name;
1015 wstat.extension = (char *) extension; 1157 wstat.extension = (char *) extension;
1016 retval = v9fs_t_wstat(v9ses, fid->fid, &wstat, &fcall); 1158 err = v9fs_t_wstat(v9ses, vfid->fid, &wstat, &fcall);
1017 if (retval < 0) {
1018 PRINT_FCALL_ERROR("wstat error", fcall);
1019 goto free_mem;
1020 }
1021
1022 err = v9fs_t_clunk(v9ses, fid->fid);
1023 if (err < 0) { 1159 if (err < 0) {
1024 dprintk(DEBUG_ERROR, "clunk failed: %d\n", err); 1160 PRINT_FCALL_ERROR("wstat error", fcall);
1025 goto free_mem; 1161 goto error;
1026 } 1162 }
1027 1163
1028 d_drop(dentry); /* FID - will this also clunk? */ 1164 kfree(fcall);
1165 dentry->d_op = &v9fs_dentry_operations;
1166 d_instantiate(dentry, inode);
1167 return 0;
1029 1168
1030free_mem: 1169error:
1031 kfree(fcall); 1170 kfree(fcall);
1032 return retval; 1171 if (vfid)
1172 v9fs_fid_destroy(vfid);
1173
1174 if (inode)
1175 iput(inode);
1176
1177 return err;
1178
1033} 1179}
1034 1180
1035/** 1181/**
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c
index 2c4fa75be025..cdf787ee08de 100644
--- a/fs/9p/vfs_super.c
+++ b/fs/9p/vfs_super.c
@@ -146,7 +146,6 @@ static struct super_block *v9fs_get_sb(struct file_system_type
146 inode->i_gid = gid; 146 inode->i_gid = gid;
147 147
148 root = d_alloc_root(inode); 148 root = d_alloc_root(inode);
149
150 if (!root) { 149 if (!root) {
151 retval = -ENOMEM; 150 retval = -ENOMEM;
152 goto put_back_sb; 151 goto put_back_sb;
@@ -157,16 +156,22 @@ static struct super_block *v9fs_get_sb(struct file_system_type
157 stat_result = v9fs_t_stat(v9ses, newfid, &fcall); 156 stat_result = v9fs_t_stat(v9ses, newfid, &fcall);
158 if (stat_result < 0) { 157 if (stat_result < 0) {
159 dprintk(DEBUG_ERROR, "stat error\n"); 158 dprintk(DEBUG_ERROR, "stat error\n");
159 kfree(fcall);
160 v9fs_t_clunk(v9ses, newfid); 160 v9fs_t_clunk(v9ses, newfid);
161 v9fs_put_idpool(newfid, &v9ses->fidpool);
162 } else { 161 } else {
163 /* Setup the Root Inode */ 162 /* Setup the Root Inode */
164 root_fid = v9fs_fid_create(root, v9ses, newfid, 0); 163 root_fid = v9fs_fid_create(v9ses, newfid);
165 if (root_fid == NULL) { 164 if (root_fid == NULL) {
166 retval = -ENOMEM; 165 retval = -ENOMEM;
167 goto put_back_sb; 166 goto put_back_sb;
168 } 167 }
169 168
169 retval = v9fs_fid_insert(root_fid, root);
170 if (retval < 0) {
171 kfree(fcall);
172 goto put_back_sb;
173 }
174
170 root_fid->qid = fcall->params.rstat.stat.qid; 175 root_fid->qid = fcall->params.rstat.stat.qid;
171 root->d_inode->i_ino = 176 root->d_inode->i_ino =
172 v9fs_qid2ino(&fcall->params.rstat.stat.qid); 177 v9fs_qid2ino(&fcall->params.rstat.stat.qid);
diff --git a/fs/exec.c b/fs/exec.c
index 0e1c95074d42..0b515ac53134 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -885,6 +885,12 @@ int flush_old_exec(struct linux_binprm * bprm)
885 current->flags &= ~PF_RANDOMIZE; 885 current->flags &= ~PF_RANDOMIZE;
886 flush_thread(); 886 flush_thread();
887 887
888 /* Set the new mm task size. We have to do that late because it may
889 * depend on TIF_32BIT which is only updated in flush_thread() on
890 * some architectures like powerpc
891 */
892 current->mm->task_size = TASK_SIZE;
893
888 if (bprm->e_uid != current->euid || bprm->e_gid != current->egid || 894 if (bprm->e_uid != current->euid || bprm->e_gid != current->egid ||
889 file_permission(bprm->file, MAY_READ) || 895 file_permission(bprm->file, MAY_READ) ||
890 (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { 896 (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) {
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 21fd59c7bc24..c72a8a97935c 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -111,6 +111,8 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd)
111 111
112 /* Doesn't hurt to "reset" the validity timeout */ 112 /* Doesn't hurt to "reset" the validity timeout */
113 fuse_invalidate_entry_cache(entry); 113 fuse_invalidate_entry_cache(entry);
114
115 /* For negative dentries, always do a fresh lookup */
114 if (!inode) 116 if (!inode)
115 return 0; 117 return 0;
116 118
@@ -122,6 +124,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd)
122 fuse_lookup_init(req, entry->d_parent->d_inode, entry, &outarg); 124 fuse_lookup_init(req, entry->d_parent->d_inode, entry, &outarg);
123 request_send(fc, req); 125 request_send(fc, req);
124 err = req->out.h.error; 126 err = req->out.h.error;
127 /* Zero nodeid is same as -ENOENT */
128 if (!err && !outarg.nodeid)
129 err = -ENOENT;
125 if (!err) { 130 if (!err) {
126 struct fuse_inode *fi = get_fuse_inode(inode); 131 struct fuse_inode *fi = get_fuse_inode(inode);
127 if (outarg.nodeid != get_node_id(inode)) { 132 if (outarg.nodeid != get_node_id(inode)) {
@@ -190,8 +195,9 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
190 fuse_lookup_init(req, dir, entry, &outarg); 195 fuse_lookup_init(req, dir, entry, &outarg);
191 request_send(fc, req); 196 request_send(fc, req);
192 err = req->out.h.error; 197 err = req->out.h.error;
193 if (!err && ((outarg.nodeid && invalid_nodeid(outarg.nodeid)) || 198 /* Zero nodeid is same as -ENOENT, but with valid timeout */
194 !valid_mode(outarg.attr.mode))) 199 if (!err && outarg.nodeid &&
200 (invalid_nodeid(outarg.nodeid) || !valid_mode(outarg.attr.mode)))
195 err = -EIO; 201 err = -EIO;
196 if (!err && outarg.nodeid) { 202 if (!err && outarg.nodeid) {
197 inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation, 203 inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
diff --git a/fs/ocfs2/cluster/masklog.c b/fs/ocfs2/cluster/masklog.c
index fd741cea5705..636593bf4d17 100644
--- a/fs/ocfs2/cluster/masklog.c
+++ b/fs/ocfs2/cluster/masklog.c
@@ -74,6 +74,7 @@ struct mlog_attribute {
74#define define_mask(_name) { \ 74#define define_mask(_name) { \
75 .attr = { \ 75 .attr = { \
76 .name = #_name, \ 76 .name = #_name, \
77 .owner = THIS_MODULE, \
77 .mode = S_IRUGO | S_IWUSR, \ 78 .mode = S_IRUGO | S_IWUSR, \
78 }, \ 79 }, \
79 .mask = ML_##_name, \ 80 .mask = ML_##_name, \
diff --git a/fs/ocfs2/cluster/masklog.h b/fs/ocfs2/cluster/masklog.h
index e8c56a3d9c64..2cadc3009c83 100644
--- a/fs/ocfs2/cluster/masklog.h
+++ b/fs/ocfs2/cluster/masklog.h
@@ -256,7 +256,7 @@ extern struct mlog_bits mlog_and_bits, mlog_not_bits;
256 } \ 256 } \
257} while (0) 257} while (0)
258 258
259#if (BITS_PER_LONG == 32) || defined(CONFIG_X86_64) 259#if (BITS_PER_LONG == 32) || defined(CONFIG_X86_64) || (defined(CONFIG_UML_X86) && defined(CONFIG_64BIT))
260#define MLFi64 "lld" 260#define MLFi64 "lld"
261#define MLFu64 "llu" 261#define MLFu64 "llu"
262#define MLFx64 "llx" 262#define MLFx64 "llx"
diff --git a/fs/ocfs2/cluster/nodemanager.c b/fs/ocfs2/cluster/nodemanager.c
index cf7828f23361..e1fceb8aa32d 100644
--- a/fs/ocfs2/cluster/nodemanager.c
+++ b/fs/ocfs2/cluster/nodemanager.c
@@ -756,7 +756,7 @@ static int __init init_o2nm(void)
756 if (!ocfs2_table_header) { 756 if (!ocfs2_table_header) {
757 printk(KERN_ERR "nodemanager: unable to register sysctl\n"); 757 printk(KERN_ERR "nodemanager: unable to register sysctl\n");
758 ret = -ENOMEM; /* or something. */ 758 ret = -ENOMEM; /* or something. */
759 goto out; 759 goto out_o2net;
760 } 760 }
761 761
762 ret = o2net_register_hb_callbacks(); 762 ret = o2net_register_hb_callbacks();
@@ -780,6 +780,8 @@ out_callbacks:
780 o2net_unregister_hb_callbacks(); 780 o2net_unregister_hb_callbacks();
781out_sysctl: 781out_sysctl:
782 unregister_sysctl_table(ocfs2_table_header); 782 unregister_sysctl_table(ocfs2_table_header);
783out_o2net:
784 o2net_exit();
783out: 785out:
784 return ret; 786 return ret;
785} 787}
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index d22d4cf08db1..0f60cc0d3985 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -1318,7 +1318,7 @@ static void o2net_start_connect(void *arg)
1318{ 1318{
1319 struct o2net_node *nn = arg; 1319 struct o2net_node *nn = arg;
1320 struct o2net_sock_container *sc = NULL; 1320 struct o2net_sock_container *sc = NULL;
1321 struct o2nm_node *node = NULL; 1321 struct o2nm_node *node = NULL, *mynode = NULL;
1322 struct socket *sock = NULL; 1322 struct socket *sock = NULL;
1323 struct sockaddr_in myaddr = {0, }, remoteaddr = {0, }; 1323 struct sockaddr_in myaddr = {0, }, remoteaddr = {0, };
1324 int ret = 0; 1324 int ret = 0;
@@ -1334,6 +1334,12 @@ static void o2net_start_connect(void *arg)
1334 goto out; 1334 goto out;
1335 } 1335 }
1336 1336
1337 mynode = o2nm_get_node_by_num(o2nm_this_node());
1338 if (mynode == NULL) {
1339 ret = 0;
1340 goto out;
1341 }
1342
1337 spin_lock(&nn->nn_lock); 1343 spin_lock(&nn->nn_lock);
1338 /* see if we already have one pending or have given up */ 1344 /* see if we already have one pending or have given up */
1339 if (nn->nn_sc || nn->nn_persistent_error) 1345 if (nn->nn_sc || nn->nn_persistent_error)
@@ -1361,12 +1367,14 @@ static void o2net_start_connect(void *arg)
1361 sock->sk->sk_allocation = GFP_ATOMIC; 1367 sock->sk->sk_allocation = GFP_ATOMIC;
1362 1368
1363 myaddr.sin_family = AF_INET; 1369 myaddr.sin_family = AF_INET;
1370 myaddr.sin_addr.s_addr = (__force u32)mynode->nd_ipv4_address;
1364 myaddr.sin_port = (__force u16)htons(0); /* any port */ 1371 myaddr.sin_port = (__force u16)htons(0); /* any port */
1365 1372
1366 ret = sock->ops->bind(sock, (struct sockaddr *)&myaddr, 1373 ret = sock->ops->bind(sock, (struct sockaddr *)&myaddr,
1367 sizeof(myaddr)); 1374 sizeof(myaddr));
1368 if (ret) { 1375 if (ret) {
1369 mlog(0, "bind failed: %d\n", ret); 1376 mlog(ML_ERROR, "bind failed with %d at address %u.%u.%u.%u\n",
1377 ret, NIPQUAD(mynode->nd_ipv4_address));
1370 goto out; 1378 goto out;
1371 } 1379 }
1372 1380
@@ -1407,6 +1415,8 @@ out:
1407 sc_put(sc); 1415 sc_put(sc);
1408 if (node) 1416 if (node)
1409 o2nm_node_put(node); 1417 o2nm_node_put(node);
1418 if (mynode)
1419 o2nm_node_put(mynode);
1410 1420
1411 return; 1421 return;
1412} 1422}
diff --git a/fs/ocfs2/cluster/tcp.h b/fs/ocfs2/cluster/tcp.h
index a6f4585501c8..616ff2b8434a 100644
--- a/fs/ocfs2/cluster/tcp.h
+++ b/fs/ocfs2/cluster/tcp.h
@@ -85,13 +85,10 @@ enum {
85 O2NET_DRIVER_READY, 85 O2NET_DRIVER_READY,
86}; 86};
87 87
88int o2net_init_tcp_sock(struct inode *inode);
89int o2net_send_message(u32 msg_type, u32 key, void *data, u32 len, 88int o2net_send_message(u32 msg_type, u32 key, void *data, u32 len,
90 u8 target_node, int *status); 89 u8 target_node, int *status);
91int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *vec, 90int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *vec,
92 size_t veclen, u8 target_node, int *status); 91 size_t veclen, u8 target_node, int *status);
93int o2net_broadcast_message(u32 msg_type, u32 key, void *data, u32 len,
94 struct inode *group);
95 92
96int o2net_register_handler(u32 msg_type, u32 key, u32 max_len, 93int o2net_register_handler(u32 msg_type, u32 key, u32 max_len,
97 o2net_msg_handler_func *func, void *data, 94 o2net_msg_handler_func *func, void *data,
@@ -107,7 +104,5 @@ void o2net_disconnect_node(struct o2nm_node *node);
107 104
108int o2net_init(void); 105int o2net_init(void);
109void o2net_exit(void); 106void o2net_exit(void);
110int o2net_proc_init(struct proc_dir_entry *parent);
111void o2net_proc_exit(struct proc_dir_entry *parent);
112 107
113#endif /* O2CLUSTER_TCP_H */ 108#endif /* O2CLUSTER_TCP_H */
diff --git a/fs/ocfs2/dlm/dlmcommon.h b/fs/ocfs2/dlm/dlmcommon.h
index 23ceaa7127b4..9c772583744a 100644
--- a/fs/ocfs2/dlm/dlmcommon.h
+++ b/fs/ocfs2/dlm/dlmcommon.h
@@ -37,9 +37,7 @@
37#define DLM_THREAD_SHUFFLE_INTERVAL 5 // flush everything every 5 passes 37#define DLM_THREAD_SHUFFLE_INTERVAL 5 // flush everything every 5 passes
38#define DLM_THREAD_MS 200 // flush at least every 200 ms 38#define DLM_THREAD_MS 200 // flush at least every 200 ms
39 39
40#define DLM_HASH_BITS 7 40#define DLM_HASH_BUCKETS (PAGE_SIZE / sizeof(struct hlist_head))
41#define DLM_HASH_SIZE (1 << DLM_HASH_BITS)
42#define DLM_HASH_MASK (DLM_HASH_SIZE - 1)
43 41
44enum dlm_ast_type { 42enum dlm_ast_type {
45 DLM_AST = 0, 43 DLM_AST = 0,
@@ -87,7 +85,7 @@ enum dlm_ctxt_state {
87struct dlm_ctxt 85struct dlm_ctxt
88{ 86{
89 struct list_head list; 87 struct list_head list;
90 struct list_head *resources; 88 struct hlist_head *lockres_hash;
91 struct list_head dirty_list; 89 struct list_head dirty_list;
92 struct list_head purge_list; 90 struct list_head purge_list;
93 struct list_head pending_asts; 91 struct list_head pending_asts;
@@ -217,7 +215,7 @@ struct dlm_lock_resource
217{ 215{
218 /* WARNING: Please see the comment in dlm_init_lockres before 216 /* WARNING: Please see the comment in dlm_init_lockres before
219 * adding fields here. */ 217 * adding fields here. */
220 struct list_head list; 218 struct hlist_node hash_node;
221 struct kref refs; 219 struct kref refs;
222 220
223 /* please keep these next 3 in this order 221 /* please keep these next 3 in this order
diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
index f339fe27975a..54f61b76ab51 100644
--- a/fs/ocfs2/dlm/dlmdebug.c
+++ b/fs/ocfs2/dlm/dlmdebug.c
@@ -117,8 +117,8 @@ EXPORT_SYMBOL_GPL(dlm_print_one_lock);
117void dlm_dump_lock_resources(struct dlm_ctxt *dlm) 117void dlm_dump_lock_resources(struct dlm_ctxt *dlm)
118{ 118{
119 struct dlm_lock_resource *res; 119 struct dlm_lock_resource *res;
120 struct list_head *iter; 120 struct hlist_node *iter;
121 struct list_head *bucket; 121 struct hlist_head *bucket;
122 int i; 122 int i;
123 123
124 mlog(ML_NOTICE, "struct dlm_ctxt: %s, node=%u, key=%u\n", 124 mlog(ML_NOTICE, "struct dlm_ctxt: %s, node=%u, key=%u\n",
@@ -129,12 +129,10 @@ void dlm_dump_lock_resources(struct dlm_ctxt *dlm)
129 } 129 }
130 130
131 spin_lock(&dlm->spinlock); 131 spin_lock(&dlm->spinlock);
132 for (i=0; i<DLM_HASH_SIZE; i++) { 132 for (i=0; i<DLM_HASH_BUCKETS; i++) {
133 bucket = &(dlm->resources[i]); 133 bucket = &(dlm->lockres_hash[i]);
134 list_for_each(iter, bucket) { 134 hlist_for_each_entry(res, iter, bucket, hash_node)
135 res = list_entry(iter, struct dlm_lock_resource, list);
136 dlm_print_one_lock_resource(res); 135 dlm_print_one_lock_resource(res);
137 }
138 } 136 }
139 spin_unlock(&dlm->spinlock); 137 spin_unlock(&dlm->spinlock);
140} 138}
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
index 6ee30837389c..8f3a9e3106fd 100644
--- a/fs/ocfs2/dlm/dlmdomain.c
+++ b/fs/ocfs2/dlm/dlmdomain.c
@@ -77,26 +77,26 @@ static void dlm_unregister_domain_handlers(struct dlm_ctxt *dlm);
77 77
78void __dlm_unhash_lockres(struct dlm_lock_resource *lockres) 78void __dlm_unhash_lockres(struct dlm_lock_resource *lockres)
79{ 79{
80 list_del_init(&lockres->list); 80 hlist_del_init(&lockres->hash_node);
81 dlm_lockres_put(lockres); 81 dlm_lockres_put(lockres);
82} 82}
83 83
84void __dlm_insert_lockres(struct dlm_ctxt *dlm, 84void __dlm_insert_lockres(struct dlm_ctxt *dlm,
85 struct dlm_lock_resource *res) 85 struct dlm_lock_resource *res)
86{ 86{
87 struct list_head *bucket; 87 struct hlist_head *bucket;
88 struct qstr *q; 88 struct qstr *q;
89 89
90 assert_spin_locked(&dlm->spinlock); 90 assert_spin_locked(&dlm->spinlock);
91 91
92 q = &res->lockname; 92 q = &res->lockname;
93 q->hash = full_name_hash(q->name, q->len); 93 q->hash = full_name_hash(q->name, q->len);
94 bucket = &(dlm->resources[q->hash & DLM_HASH_MASK]); 94 bucket = &(dlm->lockres_hash[q->hash % DLM_HASH_BUCKETS]);
95 95
96 /* get a reference for our hashtable */ 96 /* get a reference for our hashtable */
97 dlm_lockres_get(res); 97 dlm_lockres_get(res);
98 98
99 list_add_tail(&res->list, bucket); 99 hlist_add_head(&res->hash_node, bucket);
100} 100}
101 101
102struct dlm_lock_resource * __dlm_lookup_lockres(struct dlm_ctxt *dlm, 102struct dlm_lock_resource * __dlm_lookup_lockres(struct dlm_ctxt *dlm,
@@ -104,9 +104,9 @@ struct dlm_lock_resource * __dlm_lookup_lockres(struct dlm_ctxt *dlm,
104 unsigned int len) 104 unsigned int len)
105{ 105{
106 unsigned int hash; 106 unsigned int hash;
107 struct list_head *iter; 107 struct hlist_node *iter;
108 struct dlm_lock_resource *tmpres=NULL; 108 struct dlm_lock_resource *tmpres=NULL;
109 struct list_head *bucket; 109 struct hlist_head *bucket;
110 110
111 mlog_entry("%.*s\n", len, name); 111 mlog_entry("%.*s\n", len, name);
112 112
@@ -114,11 +114,11 @@ struct dlm_lock_resource * __dlm_lookup_lockres(struct dlm_ctxt *dlm,
114 114
115 hash = full_name_hash(name, len); 115 hash = full_name_hash(name, len);
116 116
117 bucket = &(dlm->resources[hash & DLM_HASH_MASK]); 117 bucket = &(dlm->lockres_hash[hash % DLM_HASH_BUCKETS]);
118 118
119 /* check for pre-existing lock */ 119 /* check for pre-existing lock */
120 list_for_each(iter, bucket) { 120 hlist_for_each(iter, bucket) {
121 tmpres = list_entry(iter, struct dlm_lock_resource, list); 121 tmpres = hlist_entry(iter, struct dlm_lock_resource, hash_node);
122 if (tmpres->lockname.len == len && 122 if (tmpres->lockname.len == len &&
123 memcmp(tmpres->lockname.name, name, len) == 0) { 123 memcmp(tmpres->lockname.name, name, len) == 0) {
124 dlm_lockres_get(tmpres); 124 dlm_lockres_get(tmpres);
@@ -193,8 +193,8 @@ static int dlm_wait_on_domain_helper(const char *domain)
193 193
194static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm) 194static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm)
195{ 195{
196 if (dlm->resources) 196 if (dlm->lockres_hash)
197 free_page((unsigned long) dlm->resources); 197 free_page((unsigned long) dlm->lockres_hash);
198 198
199 if (dlm->name) 199 if (dlm->name)
200 kfree(dlm->name); 200 kfree(dlm->name);
@@ -303,10 +303,10 @@ static void dlm_migrate_all_locks(struct dlm_ctxt *dlm)
303 mlog(0, "Migrating locks from domain %s\n", dlm->name); 303 mlog(0, "Migrating locks from domain %s\n", dlm->name);
304restart: 304restart:
305 spin_lock(&dlm->spinlock); 305 spin_lock(&dlm->spinlock);
306 for (i=0; i<DLM_HASH_SIZE; i++) { 306 for (i = 0; i < DLM_HASH_BUCKETS; i++) {
307 while (!list_empty(&dlm->resources[i])) { 307 while (!hlist_empty(&dlm->lockres_hash[i])) {
308 res = list_entry(dlm->resources[i].next, 308 res = hlist_entry(dlm->lockres_hash[i].first,
309 struct dlm_lock_resource, list); 309 struct dlm_lock_resource, hash_node);
310 /* need reference when manually grabbing lockres */ 310 /* need reference when manually grabbing lockres */
311 dlm_lockres_get(res); 311 dlm_lockres_get(res);
312 /* this should unhash the lockres 312 /* this should unhash the lockres
@@ -1191,18 +1191,17 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
1191 goto leave; 1191 goto leave;
1192 } 1192 }
1193 1193
1194 dlm->resources = (struct list_head *) __get_free_page(GFP_KERNEL); 1194 dlm->lockres_hash = (struct hlist_head *) __get_free_page(GFP_KERNEL);
1195 if (!dlm->resources) { 1195 if (!dlm->lockres_hash) {
1196 mlog_errno(-ENOMEM); 1196 mlog_errno(-ENOMEM);
1197 kfree(dlm->name); 1197 kfree(dlm->name);
1198 kfree(dlm); 1198 kfree(dlm);
1199 dlm = NULL; 1199 dlm = NULL;
1200 goto leave; 1200 goto leave;
1201 } 1201 }
1202 memset(dlm->resources, 0, PAGE_SIZE);
1203 1202
1204 for (i=0; i<DLM_HASH_SIZE; i++) 1203 for (i=0; i<DLM_HASH_BUCKETS; i++)
1205 INIT_LIST_HEAD(&dlm->resources[i]); 1204 INIT_HLIST_HEAD(&dlm->lockres_hash[i]);
1206 1205
1207 strcpy(dlm->name, domain); 1206 strcpy(dlm->name, domain);
1208 dlm->key = key; 1207 dlm->key = key;
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 2e2e95e69499..847dd3cc4cf5 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -564,7 +564,7 @@ static void dlm_lockres_release(struct kref *kref)
564 564
565 /* By the time we're ready to blow this guy away, we shouldn't 565 /* By the time we're ready to blow this guy away, we shouldn't
566 * be on any lists. */ 566 * be on any lists. */
567 BUG_ON(!list_empty(&res->list)); 567 BUG_ON(!hlist_unhashed(&res->hash_node));
568 BUG_ON(!list_empty(&res->granted)); 568 BUG_ON(!list_empty(&res->granted));
569 BUG_ON(!list_empty(&res->converting)); 569 BUG_ON(!list_empty(&res->converting));
570 BUG_ON(!list_empty(&res->blocked)); 570 BUG_ON(!list_empty(&res->blocked));
@@ -605,7 +605,7 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
605 605
606 init_waitqueue_head(&res->wq); 606 init_waitqueue_head(&res->wq);
607 spin_lock_init(&res->spinlock); 607 spin_lock_init(&res->spinlock);
608 INIT_LIST_HEAD(&res->list); 608 INIT_HLIST_NODE(&res->hash_node);
609 INIT_LIST_HEAD(&res->granted); 609 INIT_LIST_HEAD(&res->granted);
610 INIT_LIST_HEAD(&res->converting); 610 INIT_LIST_HEAD(&res->converting);
611 INIT_LIST_HEAD(&res->blocked); 611 INIT_LIST_HEAD(&res->blocked);
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index ed76bda1a534..1e232000f3f7 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -1693,7 +1693,10 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm,
1693 u8 dead_node, u8 new_master) 1693 u8 dead_node, u8 new_master)
1694{ 1694{
1695 int i; 1695 int i;
1696 struct list_head *iter, *iter2, *bucket; 1696 struct list_head *iter, *iter2;
1697 struct hlist_node *hash_iter;
1698 struct hlist_head *bucket;
1699
1697 struct dlm_lock_resource *res; 1700 struct dlm_lock_resource *res;
1698 1701
1699 mlog_entry_void(); 1702 mlog_entry_void();
@@ -1717,10 +1720,9 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm,
1717 * for now we need to run the whole hash, clear 1720 * for now we need to run the whole hash, clear
1718 * the RECOVERING state and set the owner 1721 * the RECOVERING state and set the owner
1719 * if necessary */ 1722 * if necessary */
1720 for (i=0; i<DLM_HASH_SIZE; i++) { 1723 for (i = 0; i < DLM_HASH_BUCKETS; i++) {
1721 bucket = &(dlm->resources[i]); 1724 bucket = &(dlm->lockres_hash[i]);
1722 list_for_each(iter, bucket) { 1725 hlist_for_each_entry(res, hash_iter, bucket, hash_node) {
1723 res = list_entry (iter, struct dlm_lock_resource, list);
1724 if (res->state & DLM_LOCK_RES_RECOVERING) { 1726 if (res->state & DLM_LOCK_RES_RECOVERING) {
1725 if (res->owner == dead_node) { 1727 if (res->owner == dead_node) {
1726 mlog(0, "(this=%u) res %.*s owner=%u " 1728 mlog(0, "(this=%u) res %.*s owner=%u "
@@ -1852,10 +1854,10 @@ static void dlm_free_dead_locks(struct dlm_ctxt *dlm,
1852 1854
1853static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node) 1855static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
1854{ 1856{
1855 struct list_head *iter; 1857 struct hlist_node *iter;
1856 struct dlm_lock_resource *res; 1858 struct dlm_lock_resource *res;
1857 int i; 1859 int i;
1858 struct list_head *bucket; 1860 struct hlist_head *bucket;
1859 struct dlm_lock *lock; 1861 struct dlm_lock *lock;
1860 1862
1861 1863
@@ -1876,10 +1878,9 @@ static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
1876 * can be kicked again to see if any ASTs or BASTs 1878 * can be kicked again to see if any ASTs or BASTs
1877 * need to be fired as a result. 1879 * need to be fired as a result.
1878 */ 1880 */
1879 for (i=0; i<DLM_HASH_SIZE; i++) { 1881 for (i = 0; i < DLM_HASH_BUCKETS; i++) {
1880 bucket = &(dlm->resources[i]); 1882 bucket = &(dlm->lockres_hash[i]);
1881 list_for_each(iter, bucket) { 1883 hlist_for_each_entry(res, iter, bucket, hash_node) {
1882 res = list_entry (iter, struct dlm_lock_resource, list);
1883 /* always prune any $RECOVERY entries for dead nodes, 1884 /* always prune any $RECOVERY entries for dead nodes,
1884 * otherwise hangs can occur during later recovery */ 1885 * otherwise hangs can occur during later recovery */
1885 if (dlm_is_recovery_lock(res->lockname.name, 1886 if (dlm_is_recovery_lock(res->lockname.name,
diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c
index b6ba292e9544..e6f207eebab4 100644
--- a/fs/ocfs2/extent_map.c
+++ b/fs/ocfs2/extent_map.c
@@ -181,6 +181,12 @@ static int ocfs2_extent_map_find_leaf(struct inode *inode,
181 ret = -EBADR; 181 ret = -EBADR;
182 if (rec_end > OCFS2_I(inode)->ip_clusters) { 182 if (rec_end > OCFS2_I(inode)->ip_clusters) {
183 mlog_errno(ret); 183 mlog_errno(ret);
184 ocfs2_error(inode->i_sb,
185 "Extent %d at e_blkno %"MLFu64" of inode %"MLFu64" goes past ip_clusters of %u\n",
186 i,
187 le64_to_cpu(rec->e_blkno),
188 OCFS2_I(inode)->ip_blkno,
189 OCFS2_I(inode)->ip_clusters);
184 goto out_free; 190 goto out_free;
185 } 191 }
186 192
@@ -226,6 +232,12 @@ static int ocfs2_extent_map_find_leaf(struct inode *inode,
226 ret = -EBADR; 232 ret = -EBADR;
227 if (blkno) { 233 if (blkno) {
228 mlog_errno(ret); 234 mlog_errno(ret);
235 ocfs2_error(inode->i_sb,
236 "Multiple extents for (cpos = %u, clusters = %u) on inode %"MLFu64"; e_blkno %"MLFu64" and rec %d at e_blkno %"MLFu64"\n",
237 cpos, clusters,
238 OCFS2_I(inode)->ip_blkno,
239 blkno, i,
240 le64_to_cpu(rec->e_blkno));
229 goto out_free; 241 goto out_free;
230 } 242 }
231 243
@@ -238,6 +250,10 @@ static int ocfs2_extent_map_find_leaf(struct inode *inode,
238 */ 250 */
239 ret = -EBADR; 251 ret = -EBADR;
240 if (!blkno) { 252 if (!blkno) {
253 ocfs2_error(inode->i_sb,
254 "No record found for (cpos = %u, clusters = %u) on inode %"MLFu64"\n",
255 cpos, clusters,
256 OCFS2_I(inode)->ip_blkno);
241 mlog_errno(ret); 257 mlog_errno(ret);
242 goto out_free; 258 goto out_free;
243 } 259 }
@@ -266,6 +282,20 @@ static int ocfs2_extent_map_find_leaf(struct inode *inode,
266 282
267 for (i = 0; i < le16_to_cpu(el->l_next_free_rec); i++) { 283 for (i = 0; i < le16_to_cpu(el->l_next_free_rec); i++) {
268 rec = &el->l_recs[i]; 284 rec = &el->l_recs[i];
285
286 if ((le32_to_cpu(rec->e_cpos) + le32_to_cpu(rec->e_clusters)) >
287 OCFS2_I(inode)->ip_clusters) {
288 ret = -EBADR;
289 mlog_errno(ret);
290 ocfs2_error(inode->i_sb,
291 "Extent %d at e_blkno %"MLFu64" of inode %"MLFu64" goes past ip_clusters of %u\n",
292 i,
293 le64_to_cpu(rec->e_blkno),
294 OCFS2_I(inode)->ip_blkno,
295 OCFS2_I(inode)->ip_clusters);
296 return ret;
297 }
298
269 ret = ocfs2_extent_map_insert(inode, rec, 299 ret = ocfs2_extent_map_insert(inode, rec,
270 le16_to_cpu(el->l_tree_depth)); 300 le16_to_cpu(el->l_tree_depth));
271 if (ret) { 301 if (ret) {
@@ -526,6 +556,10 @@ static int ocfs2_extent_map_insert(struct inode *inode,
526 OCFS2_I(inode)->ip_map.em_clusters) { 556 OCFS2_I(inode)->ip_map.em_clusters) {
527 ret = -EBADR; 557 ret = -EBADR;
528 mlog_errno(ret); 558 mlog_errno(ret);
559 ocfs2_error(inode->i_sb,
560 "Zero e_clusters on non-tail extent record at e_blkno %"MLFu64" on inode %"MLFu64"\n",
561 le64_to_cpu(rec->e_blkno),
562 OCFS2_I(inode)->ip_blkno);
529 return ret; 563 return ret;
530 } 564 }
531 565
@@ -588,12 +622,12 @@ static int ocfs2_extent_map_insert(struct inode *inode,
588 * Existing record in the extent map: 622 * Existing record in the extent map:
589 * 623 *
590 * cpos = 10, len = 10 624 * cpos = 10, len = 10
591 * |---------| 625 * |---------|
592 * 626 *
593 * New Record: 627 * New Record:
594 * 628 *
595 * cpos = 10, len = 20 629 * cpos = 10, len = 20
596 * |------------------| 630 * |------------------|
597 * 631 *
598 * The passed record is the new on-disk record. The new_clusters value 632 * The passed record is the new on-disk record. The new_clusters value
599 * is how many clusters were added to the file. If the append is a 633 * is how many clusters were added to the file. If the append is a
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 1715bc90e705..8a4048b55fdc 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -933,9 +933,6 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
933 struct file *filp = iocb->ki_filp; 933 struct file *filp = iocb->ki_filp;
934 struct inode *inode = filp->f_dentry->d_inode; 934 struct inode *inode = filp->f_dentry->d_inode;
935 loff_t newsize, saved_pos; 935 loff_t newsize, saved_pos;
936#ifdef OCFS2_ORACORE_WORKAROUNDS
937 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
938#endif
939 936
940 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", filp, buf, 937 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", filp, buf,
941 (unsigned int)count, 938 (unsigned int)count,
@@ -951,14 +948,6 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
951 return -EIO; 948 return -EIO;
952 } 949 }
953 950
954#ifdef OCFS2_ORACORE_WORKAROUNDS
955 /* ugh, work around some applications which open everything O_DIRECT +
956 * O_APPEND and really don't mean to use O_DIRECT. */
957 if (osb->s_mount_opt & OCFS2_MOUNT_COMPAT_OCFS &&
958 (filp->f_flags & O_APPEND) && (filp->f_flags & O_DIRECT))
959 filp->f_flags &= ~O_DIRECT;
960#endif
961
962 mutex_lock(&inode->i_mutex); 951 mutex_lock(&inode->i_mutex);
963 /* to match setattr's i_mutex -> i_alloc_sem -> rw_lock ordering */ 952 /* to match setattr's i_mutex -> i_alloc_sem -> rw_lock ordering */
964 if (filp->f_flags & O_DIRECT) { 953 if (filp->f_flags & O_DIRECT) {
@@ -1079,27 +1068,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
1079 /* communicate with ocfs2_dio_end_io */ 1068 /* communicate with ocfs2_dio_end_io */
1080 ocfs2_iocb_set_rw_locked(iocb); 1069 ocfs2_iocb_set_rw_locked(iocb);
1081 1070
1082#ifdef OCFS2_ORACORE_WORKAROUNDS 1071 ret = generic_file_aio_write_nolock(iocb, &local_iov, 1, &iocb->ki_pos);
1083 if (osb->s_mount_opt & OCFS2_MOUNT_COMPAT_OCFS &&
1084 filp->f_flags & O_DIRECT) {
1085 unsigned int saved_flags = filp->f_flags;
1086 int sector_size = 1 << osb->s_sectsize_bits;
1087
1088 if ((saved_pos & (sector_size - 1)) ||
1089 (count & (sector_size - 1)) ||
1090 ((unsigned long)buf & (sector_size - 1))) {
1091 filp->f_flags |= O_SYNC;
1092 filp->f_flags &= ~O_DIRECT;
1093 }
1094
1095 ret = generic_file_aio_write_nolock(iocb, &local_iov, 1,
1096 &iocb->ki_pos);
1097
1098 filp->f_flags = saved_flags;
1099 } else
1100#endif
1101 ret = generic_file_aio_write_nolock(iocb, &local_iov, 1,
1102 &iocb->ki_pos);
1103 1072
1104 /* buffered aio wouldn't have proper lock coverage today */ 1073 /* buffered aio wouldn't have proper lock coverage today */
1105 BUG_ON(ret == -EIOCBQUEUED && !(filp->f_flags & O_DIRECT)); 1074 BUG_ON(ret == -EIOCBQUEUED && !(filp->f_flags & O_DIRECT));
@@ -1140,9 +1109,6 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
1140 int ret = 0, rw_level = -1, have_alloc_sem = 0; 1109 int ret = 0, rw_level = -1, have_alloc_sem = 0;
1141 struct file *filp = iocb->ki_filp; 1110 struct file *filp = iocb->ki_filp;
1142 struct inode *inode = filp->f_dentry->d_inode; 1111 struct inode *inode = filp->f_dentry->d_inode;
1143#ifdef OCFS2_ORACORE_WORKAROUNDS
1144 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
1145#endif
1146 1112
1147 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", filp, buf, 1113 mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", filp, buf,
1148 (unsigned int)count, 1114 (unsigned int)count,
@@ -1155,21 +1121,6 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
1155 goto bail; 1121 goto bail;
1156 } 1122 }
1157 1123
1158#ifdef OCFS2_ORACORE_WORKAROUNDS
1159 if (osb->s_mount_opt & OCFS2_MOUNT_COMPAT_OCFS) {
1160 if (filp->f_flags & O_DIRECT) {
1161 int sector_size = 1 << osb->s_sectsize_bits;
1162
1163 if ((pos & (sector_size - 1)) ||
1164 (count & (sector_size - 1)) ||
1165 ((unsigned long)buf & (sector_size - 1)) ||
1166 (i_size_read(inode) & (sector_size -1))) {
1167 filp->f_flags &= ~O_DIRECT;
1168 }
1169 }
1170 }
1171#endif
1172
1173 /* 1124 /*
1174 * buffered reads protect themselves in ->readpage(). O_DIRECT reads 1125 * buffered reads protect themselves in ->readpage(). O_DIRECT reads
1175 * need locks to protect pending reads from racing with truncate. 1126 * need locks to protect pending reads from racing with truncate.
diff --git a/fs/ocfs2/heartbeat.c b/fs/ocfs2/heartbeat.c
index 0bbd22f46c80..cbfd45a97a63 100644
--- a/fs/ocfs2/heartbeat.c
+++ b/fs/ocfs2/heartbeat.c
@@ -67,6 +67,7 @@ void ocfs2_init_node_maps(struct ocfs2_super *osb)
67 ocfs2_node_map_init(&osb->mounted_map); 67 ocfs2_node_map_init(&osb->mounted_map);
68 ocfs2_node_map_init(&osb->recovery_map); 68 ocfs2_node_map_init(&osb->recovery_map);
69 ocfs2_node_map_init(&osb->umount_map); 69 ocfs2_node_map_init(&osb->umount_map);
70 ocfs2_node_map_init(&osb->osb_recovering_orphan_dirs);
70} 71}
71 72
72static void ocfs2_do_node_down(int node_num, 73static void ocfs2_do_node_down(int node_num,
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
index 8122489c5762..315472a5c192 100644
--- a/fs/ocfs2/inode.c
+++ b/fs/ocfs2/inode.c
@@ -41,6 +41,7 @@
41#include "dlmglue.h" 41#include "dlmglue.h"
42#include "extent_map.h" 42#include "extent_map.h"
43#include "file.h" 43#include "file.h"
44#include "heartbeat.h"
44#include "inode.h" 45#include "inode.h"
45#include "journal.h" 46#include "journal.h"
46#include "namei.h" 47#include "namei.h"
@@ -544,6 +545,42 @@ bail:
544 return status; 545 return status;
545} 546}
546 547
548/*
549 * Serialize with orphan dir recovery. If the process doing
550 * recovery on this orphan dir does an iget() with the dir
551 * i_mutex held, we'll deadlock here. Instead we detect this
552 * and exit early - recovery will wipe this inode for us.
553 */
554static int ocfs2_check_orphan_recovery_state(struct ocfs2_super *osb,
555 int slot)
556{
557 int ret = 0;
558
559 spin_lock(&osb->osb_lock);
560 if (ocfs2_node_map_test_bit(osb, &osb->osb_recovering_orphan_dirs, slot)) {
561 mlog(0, "Recovery is happening on orphan dir %d, will skip "
562 "this inode\n", slot);
563 ret = -EDEADLK;
564 goto out;
565 }
566 /* This signals to the orphan recovery process that it should
567 * wait for us to handle the wipe. */
568 osb->osb_orphan_wipes[slot]++;
569out:
570 spin_unlock(&osb->osb_lock);
571 return ret;
572}
573
574static void ocfs2_signal_wipe_completion(struct ocfs2_super *osb,
575 int slot)
576{
577 spin_lock(&osb->osb_lock);
578 osb->osb_orphan_wipes[slot]--;
579 spin_unlock(&osb->osb_lock);
580
581 wake_up(&osb->osb_wipe_event);
582}
583
547static int ocfs2_wipe_inode(struct inode *inode, 584static int ocfs2_wipe_inode(struct inode *inode,
548 struct buffer_head *di_bh) 585 struct buffer_head *di_bh)
549{ 586{
@@ -555,6 +592,11 @@ static int ocfs2_wipe_inode(struct inode *inode,
555 /* We've already voted on this so it should be readonly - no 592 /* We've already voted on this so it should be readonly - no
556 * spinlock needed. */ 593 * spinlock needed. */
557 orphaned_slot = OCFS2_I(inode)->ip_orphaned_slot; 594 orphaned_slot = OCFS2_I(inode)->ip_orphaned_slot;
595
596 status = ocfs2_check_orphan_recovery_state(osb, orphaned_slot);
597 if (status)
598 return status;
599
558 orphan_dir_inode = ocfs2_get_system_file_inode(osb, 600 orphan_dir_inode = ocfs2_get_system_file_inode(osb,
559 ORPHAN_DIR_SYSTEM_INODE, 601 ORPHAN_DIR_SYSTEM_INODE,
560 orphaned_slot); 602 orphaned_slot);
@@ -597,6 +639,7 @@ bail_unlock_dir:
597 brelse(orphan_dir_bh); 639 brelse(orphan_dir_bh);
598bail: 640bail:
599 iput(orphan_dir_inode); 641 iput(orphan_dir_inode);
642 ocfs2_signal_wipe_completion(osb, orphaned_slot);
600 643
601 return status; 644 return status;
602} 645}
@@ -822,7 +865,8 @@ void ocfs2_delete_inode(struct inode *inode)
822 865
823 status = ocfs2_wipe_inode(inode, di_bh); 866 status = ocfs2_wipe_inode(inode, di_bh);
824 if (status < 0) { 867 if (status < 0) {
825 mlog_errno(status); 868 if (status != -EDEADLK)
869 mlog_errno(status);
826 goto bail_unlock_inode; 870 goto bail_unlock_inode;
827 } 871 }
828 872
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index d329c9df90ae..4be801f4559b 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -1408,21 +1408,17 @@ bail:
1408 return status; 1408 return status;
1409} 1409}
1410 1410
1411static int ocfs2_recover_orphans(struct ocfs2_super *osb, 1411static int ocfs2_queue_orphans(struct ocfs2_super *osb,
1412 int slot) 1412 int slot,
1413 struct inode **head)
1413{ 1414{
1414 int status = 0; 1415 int status;
1415 int have_disk_lock = 0;
1416 struct inode *inode = NULL;
1417 struct inode *iter;
1418 struct inode *orphan_dir_inode = NULL; 1416 struct inode *orphan_dir_inode = NULL;
1417 struct inode *iter;
1419 unsigned long offset, blk, local; 1418 unsigned long offset, blk, local;
1420 struct buffer_head *bh = NULL; 1419 struct buffer_head *bh = NULL;
1421 struct ocfs2_dir_entry *de; 1420 struct ocfs2_dir_entry *de;
1422 struct super_block *sb = osb->sb; 1421 struct super_block *sb = osb->sb;
1423 struct ocfs2_inode_info *oi;
1424
1425 mlog(0, "Recover inodes from orphan dir in slot %d\n", slot);
1426 1422
1427 orphan_dir_inode = ocfs2_get_system_file_inode(osb, 1423 orphan_dir_inode = ocfs2_get_system_file_inode(osb,
1428 ORPHAN_DIR_SYSTEM_INODE, 1424 ORPHAN_DIR_SYSTEM_INODE,
@@ -1430,17 +1426,15 @@ static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1430 if (!orphan_dir_inode) { 1426 if (!orphan_dir_inode) {
1431 status = -ENOENT; 1427 status = -ENOENT;
1432 mlog_errno(status); 1428 mlog_errno(status);
1433 goto out; 1429 return status;
1434 } 1430 }
1435 1431
1436 mutex_lock(&orphan_dir_inode->i_mutex); 1432 mutex_lock(&orphan_dir_inode->i_mutex);
1437 status = ocfs2_meta_lock(orphan_dir_inode, NULL, NULL, 0); 1433 status = ocfs2_meta_lock(orphan_dir_inode, NULL, NULL, 0);
1438 if (status < 0) { 1434 if (status < 0) {
1439 mutex_unlock(&orphan_dir_inode->i_mutex);
1440 mlog_errno(status); 1435 mlog_errno(status);
1441 goto out; 1436 goto out;
1442 } 1437 }
1443 have_disk_lock = 1;
1444 1438
1445 offset = 0; 1439 offset = 0;
1446 iter = NULL; 1440 iter = NULL;
@@ -1451,11 +1445,10 @@ static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1451 if (!bh) 1445 if (!bh)
1452 status = -EINVAL; 1446 status = -EINVAL;
1453 if (status < 0) { 1447 if (status < 0) {
1454 mutex_unlock(&orphan_dir_inode->i_mutex);
1455 if (bh) 1448 if (bh)
1456 brelse(bh); 1449 brelse(bh);
1457 mlog_errno(status); 1450 mlog_errno(status);
1458 goto out; 1451 goto out_unlock;
1459 } 1452 }
1460 1453
1461 local = 0; 1454 local = 0;
@@ -1465,11 +1458,10 @@ static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1465 1458
1466 if (!ocfs2_check_dir_entry(orphan_dir_inode, 1459 if (!ocfs2_check_dir_entry(orphan_dir_inode,
1467 de, bh, local)) { 1460 de, bh, local)) {
1468 mutex_unlock(&orphan_dir_inode->i_mutex);
1469 status = -EINVAL; 1461 status = -EINVAL;
1470 mlog_errno(status); 1462 mlog_errno(status);
1471 brelse(bh); 1463 brelse(bh);
1472 goto out; 1464 goto out_unlock;
1473 } 1465 }
1474 1466
1475 local += le16_to_cpu(de->rec_len); 1467 local += le16_to_cpu(de->rec_len);
@@ -1504,18 +1496,95 @@ static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1504 1496
1505 mlog(0, "queue orphan %"MLFu64"\n", 1497 mlog(0, "queue orphan %"MLFu64"\n",
1506 OCFS2_I(iter)->ip_blkno); 1498 OCFS2_I(iter)->ip_blkno);
1507 OCFS2_I(iter)->ip_next_orphan = inode; 1499 /* No locking is required for the next_orphan
1508 inode = iter; 1500 * queue as there is only ever a single
1501 * process doing orphan recovery. */
1502 OCFS2_I(iter)->ip_next_orphan = *head;
1503 *head = iter;
1509 } 1504 }
1510 brelse(bh); 1505 brelse(bh);
1511 } 1506 }
1512 mutex_unlock(&orphan_dir_inode->i_mutex);
1513 1507
1508out_unlock:
1514 ocfs2_meta_unlock(orphan_dir_inode, 0); 1509 ocfs2_meta_unlock(orphan_dir_inode, 0);
1515 have_disk_lock = 0; 1510out:
1516 1511 mutex_unlock(&orphan_dir_inode->i_mutex);
1517 iput(orphan_dir_inode); 1512 iput(orphan_dir_inode);
1518 orphan_dir_inode = NULL; 1513 return status;
1514}
1515
1516static int ocfs2_orphan_recovery_can_continue(struct ocfs2_super *osb,
1517 int slot)
1518{
1519 int ret;
1520
1521 spin_lock(&osb->osb_lock);
1522 ret = !osb->osb_orphan_wipes[slot];
1523 spin_unlock(&osb->osb_lock);
1524 return ret;
1525}
1526
1527static void ocfs2_mark_recovering_orphan_dir(struct ocfs2_super *osb,
1528 int slot)
1529{
1530 spin_lock(&osb->osb_lock);
1531 /* Mark ourselves such that new processes in delete_inode()
1532 * know to quit early. */
1533 ocfs2_node_map_set_bit(osb, &osb->osb_recovering_orphan_dirs, slot);
1534 while (osb->osb_orphan_wipes[slot]) {
1535 /* If any processes are already in the middle of an
1536 * orphan wipe on this dir, then we need to wait for
1537 * them. */
1538 spin_unlock(&osb->osb_lock);
1539 wait_event_interruptible(osb->osb_wipe_event,
1540 ocfs2_orphan_recovery_can_continue(osb, slot));
1541 spin_lock(&osb->osb_lock);
1542 }
1543 spin_unlock(&osb->osb_lock);
1544}
1545
1546static void ocfs2_clear_recovering_orphan_dir(struct ocfs2_super *osb,
1547 int slot)
1548{
1549 ocfs2_node_map_clear_bit(osb, &osb->osb_recovering_orphan_dirs, slot);
1550}
1551
1552/*
1553 * Orphan recovery. Each mounted node has it's own orphan dir which we
1554 * must run during recovery. Our strategy here is to build a list of
1555 * the inodes in the orphan dir and iget/iput them. The VFS does
1556 * (most) of the rest of the work.
1557 *
1558 * Orphan recovery can happen at any time, not just mount so we have a
1559 * couple of extra considerations.
1560 *
1561 * - We grab as many inodes as we can under the orphan dir lock -
1562 * doing iget() outside the orphan dir risks getting a reference on
1563 * an invalid inode.
1564 * - We must be sure not to deadlock with other processes on the
1565 * system wanting to run delete_inode(). This can happen when they go
1566 * to lock the orphan dir and the orphan recovery process attempts to
1567 * iget() inside the orphan dir lock. This can be avoided by
1568 * advertising our state to ocfs2_delete_inode().
1569 */
1570static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1571 int slot)
1572{
1573 int ret = 0;
1574 struct inode *inode = NULL;
1575 struct inode *iter;
1576 struct ocfs2_inode_info *oi;
1577
1578 mlog(0, "Recover inodes from orphan dir in slot %d\n", slot);
1579
1580 ocfs2_mark_recovering_orphan_dir(osb, slot);
1581 ret = ocfs2_queue_orphans(osb, slot, &inode);
1582 ocfs2_clear_recovering_orphan_dir(osb, slot);
1583
1584 /* Error here should be noted, but we want to continue with as
1585 * many queued inodes as we've got. */
1586 if (ret)
1587 mlog_errno(ret);
1519 1588
1520 while (inode) { 1589 while (inode) {
1521 oi = OCFS2_I(inode); 1590 oi = OCFS2_I(inode);
@@ -1541,14 +1610,7 @@ static int ocfs2_recover_orphans(struct ocfs2_super *osb,
1541 inode = iter; 1610 inode = iter;
1542 } 1611 }
1543 1612
1544out: 1613 return ret;
1545 if (have_disk_lock)
1546 ocfs2_meta_unlock(orphan_dir_inode, 0);
1547
1548 if (orphan_dir_inode)
1549 iput(orphan_dir_inode);
1550
1551 return status;
1552} 1614}
1553 1615
1554static int ocfs2_wait_on_mount(struct ocfs2_super *osb) 1616static int ocfs2_wait_on_mount(struct ocfs2_super *osb)
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index 8d8e4779df92..e89de9b6e491 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -174,9 +174,6 @@ enum ocfs2_mount_options
174 OCFS2_MOUNT_NOINTR = 1 << 2, /* Don't catch signals */ 174 OCFS2_MOUNT_NOINTR = 1 << 2, /* Don't catch signals */
175 OCFS2_MOUNT_ERRORS_PANIC = 1 << 3, /* Panic on errors */ 175 OCFS2_MOUNT_ERRORS_PANIC = 1 << 3, /* Panic on errors */
176 OCFS2_MOUNT_DATA_WRITEBACK = 1 << 4, /* No data ordering */ 176 OCFS2_MOUNT_DATA_WRITEBACK = 1 << 4, /* No data ordering */
177#ifdef OCFS2_ORACORE_WORKAROUNDS
178 OCFS2_MOUNT_COMPAT_OCFS = 1 << 30, /* ocfs1 compatibility mode */
179#endif
180}; 177};
181 178
182#define OCFS2_OSB_SOFT_RO 0x0001 179#define OCFS2_OSB_SOFT_RO 0x0001
@@ -290,6 +287,10 @@ struct ocfs2_super
290 struct inode *osb_tl_inode; 287 struct inode *osb_tl_inode;
291 struct buffer_head *osb_tl_bh; 288 struct buffer_head *osb_tl_bh;
292 struct work_struct osb_truncate_log_wq; 289 struct work_struct osb_truncate_log_wq;
290
291 struct ocfs2_node_map osb_recovering_orphan_dirs;
292 unsigned int *osb_orphan_wipes;
293 wait_queue_head_t osb_wipe_event;
293}; 294};
294 295
295#define OCFS2_SB(sb) ((struct ocfs2_super *)(sb)->s_fs_info) 296#define OCFS2_SB(sb) ((struct ocfs2_super *)(sb)->s_fs_info)
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index dfb8a5bedfc8..c5b1ac547c15 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -138,7 +138,6 @@
138 138
139/* Journal limits (in bytes) */ 139/* Journal limits (in bytes) */
140#define OCFS2_MIN_JOURNAL_SIZE (4 * 1024 * 1024) 140#define OCFS2_MIN_JOURNAL_SIZE (4 * 1024 * 1024)
141#define OCFS2_MAX_JOURNAL_SIZE (500 * 1024 * 1024)
142 141
143struct ocfs2_system_inode_info { 142struct ocfs2_system_inode_info {
144 char *si_name; 143 char *si_name;
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 046824b6b625..8dd3aafec499 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -1325,6 +1325,16 @@ static int ocfs2_initialize_super(struct super_block *sb,
1325 } 1325 }
1326 mlog(ML_NOTICE, "max_slots for this device: %u\n", osb->max_slots); 1326 mlog(ML_NOTICE, "max_slots for this device: %u\n", osb->max_slots);
1327 1327
1328 init_waitqueue_head(&osb->osb_wipe_event);
1329 osb->osb_orphan_wipes = kcalloc(osb->max_slots,
1330 sizeof(*osb->osb_orphan_wipes),
1331 GFP_KERNEL);
1332 if (!osb->osb_orphan_wipes) {
1333 status = -ENOMEM;
1334 mlog_errno(status);
1335 goto bail;
1336 }
1337
1328 osb->s_feature_compat = 1338 osb->s_feature_compat =
1329 le32_to_cpu(OCFS2_RAW_SB(di)->s_feature_compat); 1339 le32_to_cpu(OCFS2_RAW_SB(di)->s_feature_compat);
1330 osb->s_feature_ro_compat = 1340 osb->s_feature_ro_compat =
@@ -1638,6 +1648,7 @@ static void ocfs2_delete_osb(struct ocfs2_super *osb)
1638 if (osb->slot_info) 1648 if (osb->slot_info)
1639 ocfs2_free_slot_info(osb->slot_info); 1649 ocfs2_free_slot_info(osb->slot_info);
1640 1650
1651 kfree(osb->osb_orphan_wipes);
1641 /* FIXME 1652 /* FIXME
1642 * This belongs in journal shutdown, but because we have to 1653 * This belongs in journal shutdown, but because we have to
1643 * allocate osb->journal at the start of ocfs2_initalize_osb(), 1654 * allocate osb->journal at the start of ocfs2_initalize_osb(),
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index f3473176c83a..be12879bb179 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -1464,13 +1464,11 @@ static ssize_t reiserfs_file_write(struct file *file, /* the file we are going t
1464 partially overwritten pages, if needed. And lock the pages, 1464 partially overwritten pages, if needed. And lock the pages,
1465 so that nobody else can access these until we are done. 1465 so that nobody else can access these until we are done.
1466 We get number of actual blocks needed as a result. */ 1466 We get number of actual blocks needed as a result. */
1467 blocks_to_allocate = 1467 res = reiserfs_prepare_file_region_for_write(inode, pos,
1468 reiserfs_prepare_file_region_for_write(inode, pos, 1468 num_pages,
1469 num_pages, 1469 write_bytes,
1470 write_bytes, 1470 prepared_pages);
1471 prepared_pages); 1471 if (res < 0) {
1472 if (blocks_to_allocate < 0) {
1473 res = blocks_to_allocate;
1474 reiserfs_release_claimed_blocks(inode->i_sb, 1472 reiserfs_release_claimed_blocks(inode->i_sb,
1475 num_pages << 1473 num_pages <<
1476 (PAGE_CACHE_SHIFT - 1474 (PAGE_CACHE_SHIFT -
@@ -1478,6 +1476,8 @@ static ssize_t reiserfs_file_write(struct file *file, /* the file we are going t
1478 break; 1476 break;
1479 } 1477 }
1480 1478
1479 blocks_to_allocate = res;
1480
1481 /* First we correct our estimate of how many blocks we need */ 1481 /* First we correct our estimate of how many blocks we need */
1482 reiserfs_release_claimed_blocks(inode->i_sb, 1482 reiserfs_release_claimed_blocks(inode->i_sb,
1483 (num_pages << 1483 (num_pages <<
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index b33d67bba2fd..d60f6238c66a 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -627,11 +627,6 @@ int reiserfs_get_block(struct inode *inode, sector_t block,
627 reiserfs_write_lock(inode->i_sb); 627 reiserfs_write_lock(inode->i_sb);
628 version = get_inode_item_key_version(inode); 628 version = get_inode_item_key_version(inode);
629 629
630 if (block < 0) {
631 reiserfs_write_unlock(inode->i_sb);
632 return -EIO;
633 }
634
635 if (!file_capable(inode, block)) { 630 if (!file_capable(inode, block)) {
636 reiserfs_write_unlock(inode->i_sb); 631 reiserfs_write_unlock(inode->i_sb);
637 return -EFBIG; 632 return -EFBIG;
@@ -934,12 +929,13 @@ int reiserfs_get_block(struct inode *inode, sector_t block,
934 //pos_in_item * inode->i_sb->s_blocksize, 929 //pos_in_item * inode->i_sb->s_blocksize,
935 TYPE_INDIRECT, 3); // key type is unimportant 930 TYPE_INDIRECT, 3); // key type is unimportant
936 931
932 RFALSE(cpu_key_k_offset(&tmp_key) > cpu_key_k_offset(&key),
933 "green-805: invalid offset");
937 blocks_needed = 934 blocks_needed =
938 1 + 935 1 +
939 ((cpu_key_k_offset(&key) - 936 ((cpu_key_k_offset(&key) -
940 cpu_key_k_offset(&tmp_key)) >> inode->i_sb-> 937 cpu_key_k_offset(&tmp_key)) >> inode->i_sb->
941 s_blocksize_bits); 938 s_blocksize_bits);
942 RFALSE(blocks_needed < 0, "green-805: invalid offset");
943 939
944 if (blocks_needed == 1) { 940 if (blocks_needed == 1) {
945 un = &unf_single; 941 un = &unf_single;
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index b7a179560ab4..5a9d2722fa0a 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -2319,8 +2319,7 @@ static int journal_read(struct super_block *p_s_sb)
2319 return 1; 2319 return 1;
2320 } 2320 }
2321 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data); 2321 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data);
2322 if (le32_to_cpu(jh->j_first_unflushed_offset) >= 0 && 2322 if (le32_to_cpu(jh->j_first_unflushed_offset) <
2323 le32_to_cpu(jh->j_first_unflushed_offset) <
2324 SB_ONDISK_JOURNAL_SIZE(p_s_sb) 2323 SB_ONDISK_JOURNAL_SIZE(p_s_sb)
2325 && le32_to_cpu(jh->j_last_flush_trans_id) > 0) { 2324 && le32_to_cpu(jh->j_last_flush_trans_id) > 0) {
2326 oldest_start = 2325 oldest_start =
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index 8f2beec526cf..74d8be87f983 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -540,7 +540,7 @@ xfs_probe_cluster(
540 540
541 /* First sum forwards in this page */ 541 /* First sum forwards in this page */
542 do { 542 do {
543 if (mapped != buffer_mapped(bh)) 543 if (!buffer_uptodate(bh) || (mapped != buffer_mapped(bh)))
544 return total; 544 return total;
545 total += bh->b_size; 545 total += bh->b_size;
546 } while ((bh = bh->b_this_page) != head); 546 } while ((bh = bh->b_this_page) != head);
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c
index 53a00fb217fa..7c0e39dc6189 100644
--- a/fs/xfs/quota/xfs_qm.c
+++ b/fs/xfs/quota/xfs_qm.c
@@ -68,6 +68,9 @@ kmem_zone_t *qm_dqzone;
68kmem_zone_t *qm_dqtrxzone; 68kmem_zone_t *qm_dqtrxzone;
69STATIC kmem_shaker_t xfs_qm_shaker; 69STATIC kmem_shaker_t xfs_qm_shaker;
70 70
71STATIC cred_t xfs_zerocr;
72STATIC xfs_inode_t xfs_zeroino;
73
71STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); 74STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int);
72STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); 75STATIC void xfs_qm_list_destroy(xfs_dqlist_t *);
73 76
@@ -1393,8 +1396,6 @@ xfs_qm_qino_alloc(
1393 xfs_trans_t *tp; 1396 xfs_trans_t *tp;
1394 int error; 1397 int error;
1395 unsigned long s; 1398 unsigned long s;
1396 cred_t zerocr;
1397 xfs_inode_t zeroino;
1398 int committed; 1399 int committed;
1399 1400
1400 tp = xfs_trans_alloc(mp, XFS_TRANS_QM_QINOCREATE); 1401 tp = xfs_trans_alloc(mp, XFS_TRANS_QM_QINOCREATE);
@@ -1406,11 +1407,9 @@ xfs_qm_qino_alloc(
1406 xfs_trans_cancel(tp, 0); 1407 xfs_trans_cancel(tp, 0);
1407 return error; 1408 return error;
1408 } 1409 }
1409 memset(&zerocr, 0, sizeof(zerocr));
1410 memset(&zeroino, 0, sizeof(zeroino));
1411 1410
1412 if ((error = xfs_dir_ialloc(&tp, &zeroino, S_IFREG, 1, 0, 1411 if ((error = xfs_dir_ialloc(&tp, &xfs_zeroino, S_IFREG, 1, 0,
1413 &zerocr, 0, 1, ip, &committed))) { 1412 &xfs_zerocr, 0, 1, ip, &committed))) {
1414 xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | 1413 xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES |
1415 XFS_TRANS_ABORT); 1414 XFS_TRANS_ABORT);
1416 return error; 1415 return error;
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index 06fc061c50fc..5b413946b1c5 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -130,7 +130,8 @@ xfs_growfs_rt_alloc(
130 /* 130 /*
131 * Lock the inode. 131 * Lock the inode.
132 */ 132 */
133 if ((error = xfs_trans_iget(mp, tp, ino, 0, XFS_ILOCK_EXCL, &ip))) 133 if ((error = xfs_trans_iget(mp, tp, ino, 0,
134 XFS_ILOCK_EXCL, &ip)))
134 goto error_exit; 135 goto error_exit;
135 XFS_BMAP_INIT(&flist, &firstblock); 136 XFS_BMAP_INIT(&flist, &firstblock);
136 /* 137 /*
@@ -170,8 +171,8 @@ xfs_growfs_rt_alloc(
170 /* 171 /*
171 * Lock the bitmap inode. 172 * Lock the bitmap inode.
172 */ 173 */
173 if ((error = xfs_trans_iget(mp, tp, ino, 0, XFS_ILOCK_EXCL, 174 if ((error = xfs_trans_iget(mp, tp, ino, 0,
174 &ip))) 175 XFS_ILOCK_EXCL, &ip)))
175 goto error_exit; 176 goto error_exit;
176 /* 177 /*
177 * Get a buffer for the block. 178 * Get a buffer for the block.
@@ -2023,8 +2024,8 @@ xfs_growfs_rt(
2023 /* 2024 /*
2024 * Lock out other callers by grabbing the bitmap inode lock. 2025 * Lock out other callers by grabbing the bitmap inode lock.
2025 */ 2026 */
2026 if ((error = xfs_trans_iget(mp, tp, 0, mp->m_sb.sb_rbmino, 2027 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
2027 XFS_ILOCK_EXCL, &ip))) 2028 XFS_ILOCK_EXCL, &ip)))
2028 goto error_exit; 2029 goto error_exit;
2029 ASSERT(ip == mp->m_rbmip); 2030 ASSERT(ip == mp->m_rbmip);
2030 /* 2031 /*
@@ -2037,8 +2038,8 @@ xfs_growfs_rt(
2037 /* 2038 /*
2038 * Get the summary inode into the transaction. 2039 * Get the summary inode into the transaction.
2039 */ 2040 */
2040 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rsumino, 2041 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rsumino, 0,
2041 0, XFS_ILOCK_EXCL, &ip))) 2042 XFS_ILOCK_EXCL, &ip)))
2042 goto error_exit; 2043 goto error_exit;
2043 ASSERT(ip == mp->m_rsumip); 2044 ASSERT(ip == mp->m_rsumip);
2044 /* 2045 /*
@@ -2158,10 +2159,9 @@ xfs_rtallocate_extent(
2158 /* 2159 /*
2159 * Lock out other callers by grabbing the bitmap inode lock. 2160 * Lock out other callers by grabbing the bitmap inode lock.
2160 */ 2161 */
2161 error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); 2162 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
2162 if (error) { 2163 XFS_ILOCK_EXCL, &ip)))
2163 return error; 2164 return error;
2164 }
2165 sumbp = NULL; 2165 sumbp = NULL;
2166 /* 2166 /*
2167 * Allocate by size, or near another block, or exactly at some block. 2167 * Allocate by size, or near another block, or exactly at some block.
@@ -2221,10 +2221,9 @@ xfs_rtfree_extent(
2221 /* 2221 /*
2222 * Synchronize by locking the bitmap inode. 2222 * Synchronize by locking the bitmap inode.
2223 */ 2223 */
2224 error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); 2224 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
2225 if (error) { 2225 XFS_ILOCK_EXCL, &ip)))
2226 return error; 2226 return error;
2227 }
2228#if defined(__KERNEL__) && defined(DEBUG) 2227#if defined(__KERNEL__) && defined(DEBUG)
2229 /* 2228 /*
2230 * Check to see that this whole range is currently allocated. 2229 * Check to see that this whole range is currently allocated.
@@ -2365,8 +2364,8 @@ xfs_rtpick_extent(
2365 __uint64_t seq; /* sequence number of file creation */ 2364 __uint64_t seq; /* sequence number of file creation */
2366 __uint64_t *seqp; /* pointer to seqno in inode */ 2365 __uint64_t *seqp; /* pointer to seqno in inode */
2367 2366
2368 error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); 2367 if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
2369 if (error) 2368 XFS_ILOCK_EXCL, &ip)))
2370 return error; 2369 return error;
2371 ASSERT(ip == mp->m_rbmip); 2370 ASSERT(ip == mp->m_rbmip);
2372 seqp = (__uint64_t *)&ip->i_d.di_atime; 2371 seqp = (__uint64_t *)&ip->i_d.di_atime;
diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h
index 91c31be87b13..16adc93d7a72 100644
--- a/include/asm-ia64/sn/arch.h
+++ b/include/asm-ia64/sn/arch.h
@@ -31,7 +31,8 @@
31 * to ACPI3.0, this limit will be removed. The notion of "compact nodes" 31 * to ACPI3.0, this limit will be removed. The notion of "compact nodes"
32 * should be deleted and TIOs should be included in MAX_NUMNODES. 32 * should be deleted and TIOs should be included in MAX_NUMNODES.
33 */ 33 */
34#define MAX_COMPACT_NODES 512 34#define MAX_TIO_NODES MAX_NUMNODES
35#define MAX_COMPACT_NODES (MAX_NUMNODES + MAX_TIO_NODES)
35 36
36/* 37/*
37 * Maximum number of nodes in all partitions and in all coherency domains. 38 * Maximum number of nodes in all partitions and in all coherency domains.
diff --git a/include/asm-mips/atomic.h b/include/asm-mips/atomic.h
index 654b97d3e13a..2c8b853376c9 100644
--- a/include/asm-mips/atomic.h
+++ b/include/asm-mips/atomic.h
@@ -250,7 +250,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
250 " subu %0, %1, %3 \n" 250 " subu %0, %1, %3 \n"
251 " bltz %0, 1f \n" 251 " bltz %0, 1f \n"
252 " sc %0, %2 \n" 252 " sc %0, %2 \n"
253 " .set noreorder \n"
253 " beqzl %0, 1b \n" 254 " beqzl %0, 1b \n"
255 " subu %0, %1, %3 \n"
256 " .set reorder \n"
254 " sync \n" 257 " sync \n"
255 "1: \n" 258 "1: \n"
256 " .set mips0 \n" 259 " .set mips0 \n"
@@ -266,7 +269,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
266 " subu %0, %1, %3 \n" 269 " subu %0, %1, %3 \n"
267 " bltz %0, 1f \n" 270 " bltz %0, 1f \n"
268 " sc %0, %2 \n" 271 " sc %0, %2 \n"
272 " .set noreorder \n"
269 " beqz %0, 1b \n" 273 " beqz %0, 1b \n"
274 " subu %0, %1, %3 \n"
275 " .set reorder \n"
270 " sync \n" 276 " sync \n"
271 "1: \n" 277 "1: \n"
272 " .set mips0 \n" 278 " .set mips0 \n"
@@ -598,7 +604,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
598 " dsubu %0, %1, %3 \n" 604 " dsubu %0, %1, %3 \n"
599 " bltz %0, 1f \n" 605 " bltz %0, 1f \n"
600 " scd %0, %2 \n" 606 " scd %0, %2 \n"
607 " .set noreorder \n"
601 " beqzl %0, 1b \n" 608 " beqzl %0, 1b \n"
609 " dsubu %0, %1, %3 \n"
610 " .set reorder \n"
602 " sync \n" 611 " sync \n"
603 "1: \n" 612 "1: \n"
604 " .set mips0 \n" 613 " .set mips0 \n"
@@ -614,7 +623,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
614 " dsubu %0, %1, %3 \n" 623 " dsubu %0, %1, %3 \n"
615 " bltz %0, 1f \n" 624 " bltz %0, 1f \n"
616 " scd %0, %2 \n" 625 " scd %0, %2 \n"
626 " .set noreorder \n"
617 " beqz %0, 1b \n" 627 " beqz %0, 1b \n"
628 " dsubu %0, %1, %3 \n"
629 " .set reorder \n"
618 " sync \n" 630 " sync \n"
619 "1: \n" 631 "1: \n"
620 " .set mips0 \n" 632 " .set mips0 \n"
diff --git a/include/asm-mips/io.h b/include/asm-mips/io.h
index 5a4c8a54b8f4..8c011aa61afa 100644
--- a/include/asm-mips/io.h
+++ b/include/asm-mips/io.h
@@ -283,6 +283,24 @@ static inline void __iomem * __ioremap_mode(phys_t offset, unsigned long size,
283 __ioremap_mode((offset), (size), _CACHE_UNCACHED) 283 __ioremap_mode((offset), (size), _CACHE_UNCACHED)
284 284
285/* 285/*
286 * ioremap_cachable - map bus memory into CPU space
287 * @offset: bus address of the memory
288 * @size: size of the resource to map
289 *
290 * ioremap_nocache performs a platform specific sequence of operations to
291 * make bus memory CPU accessible via the readb/readw/readl/writeb/
292 * writew/writel functions and the other mmio helpers. The returned
293 * address is not guaranteed to be usable directly as a virtual
294 * address.
295 *
296 * This version of ioremap ensures that the memory is marked cachable by
297 * the CPU. Also enables full write-combining. Useful for some
298 * memory-like regions on I/O busses.
299 */
300#define ioremap_cachable(offset, size) \
301 __ioremap_mode((offset), (size), PAGE_CACHABLE_DEFAULT)
302
303/*
286 * These two are MIPS specific ioremap variant. ioremap_cacheable_cow 304 * These two are MIPS specific ioremap variant. ioremap_cacheable_cow
287 * requests a cachable mapping, ioremap_uncached_accelerated requests a 305 * requests a cachable mapping, ioremap_uncached_accelerated requests a
288 * mapping using the uncached accelerated mode which isn't supported on 306 * mapping using the uncached accelerated mode which isn't supported on
diff --git a/include/asm-mips/smp.h b/include/asm-mips/smp.h
index 5618f1e12f40..75c6fe7c2126 100644
--- a/include/asm-mips/smp.h
+++ b/include/asm-mips/smp.h
@@ -58,7 +58,9 @@ static inline int num_booting_cpus(void)
58 return cpus_weight(cpu_callout_map); 58 return cpus_weight(cpu_callout_map);
59} 59}
60 60
61/* These are defined by the board-specific code. */ 61/*
62 * These are defined by the board-specific code.
63 */
62 64
63/* 65/*
64 * Cause the function described by call_data to be executed on the passed 66 * Cause the function described by call_data to be executed on the passed
@@ -79,7 +81,12 @@ extern void prom_boot_secondary(int cpu, struct task_struct *idle);
79extern void prom_init_secondary(void); 81extern void prom_init_secondary(void);
80 82
81/* 83/*
82 * Detect available CPUs, populate phys_cpu_present_map before smp_init 84 * Populate cpu_possible_map before smp_init, called from setup_arch.
85 */
86extern void plat_smp_setup(void);
87
88/*
89 * Called after init_IRQ but before __cpu_up.
83 */ 90 */
84extern void prom_prepare_cpus(unsigned int max_cpus); 91extern void prom_prepare_cpus(unsigned int max_cpus);
85 92
diff --git a/include/asm-mips/system.h b/include/asm-mips/system.h
index e8e5d4143377..ddae9bae31af 100644
--- a/include/asm-mips/system.h
+++ b/include/asm-mips/system.h
@@ -322,7 +322,7 @@ static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old,
322#endif 322#endif
323 "2: \n" 323 "2: \n"
324 " .set pop \n" 324 " .set pop \n"
325 : "=&r" (retval), "=m" (*m) 325 : "=&r" (retval), "=R" (*m)
326 : "R" (*m), "Jr" (old), "Jr" (new) 326 : "R" (*m), "Jr" (old), "Jr" (new)
327 : "memory"); 327 : "memory");
328 } else if (cpu_has_llsc) { 328 } else if (cpu_has_llsc) {
@@ -342,7 +342,7 @@ static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old,
342#endif 342#endif
343 "2: \n" 343 "2: \n"
344 " .set pop \n" 344 " .set pop \n"
345 : "=&r" (retval), "=m" (*m) 345 : "=&r" (retval), "=R" (*m)
346 : "R" (*m), "Jr" (old), "Jr" (new) 346 : "R" (*m), "Jr" (old), "Jr" (new)
347 : "memory"); 347 : "memory");
348 } else { 348 } else {
@@ -379,7 +379,7 @@ static inline unsigned long __cmpxchg_u64(volatile int * m, unsigned long old,
379#endif 379#endif
380 "2: \n" 380 "2: \n"
381 " .set pop \n" 381 " .set pop \n"
382 : "=&r" (retval), "=m" (*m) 382 : "=&r" (retval), "=R" (*m)
383 : "R" (*m), "Jr" (old), "Jr" (new) 383 : "R" (*m), "Jr" (old), "Jr" (new)
384 : "memory"); 384 : "memory");
385 } else if (cpu_has_llsc) { 385 } else if (cpu_has_llsc) {
@@ -397,7 +397,7 @@ static inline unsigned long __cmpxchg_u64(volatile int * m, unsigned long old,
397#endif 397#endif
398 "2: \n" 398 "2: \n"
399 " .set pop \n" 399 " .set pop \n"
400 : "=&r" (retval), "=m" (*m) 400 : "=&r" (retval), "=R" (*m)
401 : "R" (*m), "Jr" (old), "Jr" (new) 401 : "R" (*m), "Jr" (old), "Jr" (new)
402 : "memory"); 402 : "memory");
403 } else { 403 } else {
diff --git a/include/asm-powerpc/eeh.h b/include/asm-powerpc/eeh.h
index b263fb2fa6e4..eb392032e19b 100644
--- a/include/asm-powerpc/eeh.h
+++ b/include/asm-powerpc/eeh.h
@@ -27,6 +27,7 @@
27#include <linux/string.h> 27#include <linux/string.h>
28 28
29struct pci_dev; 29struct pci_dev;
30struct pci_bus;
30struct device_node; 31struct device_node;
31 32
32#ifdef CONFIG_EEH 33#ifdef CONFIG_EEH
@@ -60,8 +61,9 @@ void __init pci_addr_cache_build(void);
60 * to finish the eeh setup for this device. 61 * to finish the eeh setup for this device.
61 */ 62 */
62void eeh_add_device_early(struct device_node *); 63void eeh_add_device_early(struct device_node *);
64void eeh_add_device_late(struct pci_dev *dev);
63void eeh_add_device_tree_early(struct device_node *); 65void eeh_add_device_tree_early(struct device_node *);
64void eeh_add_device_late(struct pci_dev *); 66void eeh_add_device_tree_late(struct pci_bus *);
65 67
66/** 68/**
67 * eeh_remove_device - undo EEH setup for the indicated pci device 69 * eeh_remove_device - undo EEH setup for the indicated pci device
@@ -116,12 +118,12 @@ static inline void pci_addr_cache_build(void) { }
116 118
117static inline void eeh_add_device_early(struct device_node *dn) { } 119static inline void eeh_add_device_early(struct device_node *dn) { }
118 120
119static inline void eeh_add_device_late(struct pci_dev *dev) { }
120
121static inline void eeh_remove_device(struct pci_dev *dev) { } 121static inline void eeh_remove_device(struct pci_dev *dev) { }
122 122
123static inline void eeh_add_device_tree_early(struct device_node *dn) { } 123static inline void eeh_add_device_tree_early(struct device_node *dn) { }
124 124
125static inline void eeh_add_device_tree_late(struct pci_bus *bus) { }
126
125static inline void eeh_remove_bus_device(struct pci_dev *dev) { } 127static inline void eeh_remove_bus_device(struct pci_dev *dev) { }
126#define EEH_POSSIBLE_ERROR(val, type) (0) 128#define EEH_POSSIBLE_ERROR(val, type) (0)
127#define EEH_IO_ERROR_VALUE(size) (-1UL) 129#define EEH_IO_ERROR_VALUE(size) (-1UL)
diff --git a/include/asm-sparc64/futex.h b/include/asm-sparc64/futex.h
index 6a332a9f099c..0caf60147e97 100644
--- a/include/asm-sparc64/futex.h
+++ b/include/asm-sparc64/futex.h
@@ -1,6 +1,86 @@
1#ifndef _ASM_FUTEX_H 1#ifndef _SPARC64_FUTEX_H
2#define _ASM_FUTEX_H 2#define _SPARC64_FUTEX_H
3 3
4#include <asm-generic/futex.h> 4#include <linux/futex.h>
5#include <asm/errno.h>
6#include <asm/system.h>
7#include <asm/uaccess.h>
5 8
6#endif 9#define __futex_cas_op(insn, ret, oldval, uaddr, oparg) \
10 __asm__ __volatile__( \
11 "\n1: lduwa [%3] %%asi, %2\n" \
12 " " insn "\n" \
13 "2: casa [%3] %%asi, %2, %1\n" \
14 " cmp %2, %1\n" \
15 " bne,pn %%icc, 1b\n" \
16 " mov 0, %0\n" \
17 "3:\n" \
18 " .section .fixup,#alloc,#execinstr\n" \
19 " .align 4\n" \
20 "4: ba 3b\n" \
21 " mov %5, %0\n" \
22 " .previous\n" \
23 " .section __ex_table,#alloc\n" \
24 " .align 4\n" \
25 " .word 1b, 4b\n" \
26 " .word 2b, 4b\n" \
27 " .previous\n" \
28 : "=&r" (ret), "=&r" (oldval), "=&r" (tem) \
29 : "r" (uaddr), "r" (oparg), "i" (-EFAULT) \
30 : "memory")
31
32static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
33{
34 int op = (encoded_op >> 28) & 7;
35 int cmp = (encoded_op >> 24) & 15;
36 int oparg = (encoded_op << 8) >> 20;
37 int cmparg = (encoded_op << 20) >> 20;
38 int oldval = 0, ret, tem;
39
40 if (unlikely(!access_ok(VERIFY_WRITE, uaddr, sizeof(int))))
41 return -EFAULT;
42 if (unlikely((((unsigned long) uaddr) & 0x3UL)))
43 return -EINVAL;
44
45 if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
46 oparg = 1 << oparg;
47
48 inc_preempt_count();
49
50 switch (op) {
51 case FUTEX_OP_SET:
52 __futex_cas_op("mov\t%4, %1", ret, oldval, uaddr, oparg);
53 break;
54 case FUTEX_OP_ADD:
55 __futex_cas_op("add\t%2, %4, %1", ret, oldval, uaddr, oparg);
56 break;
57 case FUTEX_OP_OR:
58 __futex_cas_op("or\t%2, %4, %1", ret, oldval, uaddr, oparg);
59 break;
60 case FUTEX_OP_ANDN:
61 __futex_cas_op("and\t%2, %4, %1", ret, oldval, uaddr, oparg);
62 break;
63 case FUTEX_OP_XOR:
64 __futex_cas_op("xor\t%2, %4, %1", ret, oldval, uaddr, oparg);
65 break;
66 default:
67 ret = -ENOSYS;
68 }
69
70 dec_preempt_count();
71
72 if (!ret) {
73 switch (cmp) {
74 case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
75 case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
76 case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
77 case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
78 case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
79 case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
80 default: ret = -ENOSYS;
81 }
82 }
83 return ret;
84}
85
86#endif /* !(_SPARC64_FUTEX_H) */
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h
index 110a2de89123..473edb2603ec 100644
--- a/include/asm-sparc64/smp.h
+++ b/include/asm-sparc64/smp.h
@@ -66,8 +66,14 @@ static __inline__ int hard_smp_processor_id(void)
66 66
67#define raw_smp_processor_id() (current_thread_info()->cpu) 67#define raw_smp_processor_id() (current_thread_info()->cpu)
68 68
69extern void smp_setup_cpu_possible_map(void);
70
69#endif /* !(__ASSEMBLY__) */ 71#endif /* !(__ASSEMBLY__) */
70 72
73#else
74
75#define smp_setup_cpu_possible_map() do { } while (0)
76
71#endif /* !(CONFIG_SMP) */ 77#endif /* !(CONFIG_SMP) */
72 78
73#define NO_PROC_ID 0xFF 79#define NO_PROC_ID 0xFF
diff --git a/include/asm-x86_64/acpi.h b/include/asm-x86_64/acpi.h
index e2b9923189a0..aa1c7b2e438c 100644
--- a/include/asm-x86_64/acpi.h
+++ b/include/asm-x86_64/acpi.h
@@ -164,20 +164,6 @@ extern u8 x86_acpiid_to_apicid[];
164 164
165extern int acpi_skip_timer_override; 165extern int acpi_skip_timer_override;
166 166
167extern int unsync_tsc_on_multicluster;
168
169static inline int acpi_madt_oem_check(char *oem, char *productid)
170{
171 /* Copied from i386. Probably has too many entries. */
172 if (!strncmp(oem, "IBM ENSW", 8) &&
173 (!strncmp(productid, "VIGIL SMP", 9)
174 || !strncmp(productid, "EXA", 3)
175 || !strncmp(productid, "RUTHLESS SMP", 12))) {
176 unsync_tsc_on_multicluster = 1;
177 }
178 return 0;
179}
180
181#endif /*__KERNEL__*/ 167#endif /*__KERNEL__*/
182 168
183#endif /*_ASM_ACPI_H*/ 169#endif /*_ASM_ACPI_H*/
diff --git a/include/linux/netfilter_bridge/ebt_log.h b/include/linux/netfilter_bridge/ebt_log.h
index 358fbc84fb59..96e231ae7554 100644
--- a/include/linux/netfilter_bridge/ebt_log.h
+++ b/include/linux/netfilter_bridge/ebt_log.h
@@ -3,6 +3,7 @@
3 3
4#define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */ 4#define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */
5#define EBT_LOG_ARP 0x02 5#define EBT_LOG_ARP 0x02
6#define EBT_LOG_NFLOG 0x04
6#define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP) 7#define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP)
7#define EBT_LOG_PREFIX_SIZE 30 8#define EBT_LOG_PREFIX_SIZE 30
8#define EBT_LOG_WATCHER "log" 9#define EBT_LOG_WATCHER "log"
diff --git a/include/linux/netfilter_ipv4/ipt_LOG.h b/include/linux/netfilter_ipv4/ipt_LOG.h
index 22d16177319b..892f9a33fea8 100644
--- a/include/linux/netfilter_ipv4/ipt_LOG.h
+++ b/include/linux/netfilter_ipv4/ipt_LOG.h
@@ -6,7 +6,8 @@
6#define IPT_LOG_TCPOPT 0x02 /* Log TCP options */ 6#define IPT_LOG_TCPOPT 0x02 /* Log TCP options */
7#define IPT_LOG_IPOPT 0x04 /* Log IP options */ 7#define IPT_LOG_IPOPT 0x04 /* Log IP options */
8#define IPT_LOG_UID 0x08 /* Log UID owning local socket */ 8#define IPT_LOG_UID 0x08 /* Log UID owning local socket */
9#define IPT_LOG_MASK 0x0f 9#define IPT_LOG_NFLOG 0x10 /* Log using nf_log backend */
10#define IPT_LOG_MASK 0x1f
10 11
11struct ipt_log_info { 12struct ipt_log_info {
12 unsigned char level; 13 unsigned char level;
diff --git a/include/linux/netfilter_ipv6/ip6t_LOG.h b/include/linux/netfilter_ipv6/ip6t_LOG.h
index 9008ff5c40ae..060c1a1c6c60 100644
--- a/include/linux/netfilter_ipv6/ip6t_LOG.h
+++ b/include/linux/netfilter_ipv6/ip6t_LOG.h
@@ -6,7 +6,8 @@
6#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */ 6#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */
7#define IP6T_LOG_IPOPT 0x04 /* Log IP options */ 7#define IP6T_LOG_IPOPT 0x04 /* Log IP options */
8#define IP6T_LOG_UID 0x08 /* Log UID owning local socket */ 8#define IP6T_LOG_UID 0x08 /* Log UID owning local socket */
9#define IP6T_LOG_MASK 0x0f 9#define IP6T_LOG_NFLOG 0x10 /* Log using nf_log backend */
10#define IP6T_LOG_MASK 0x1f
10 11
11struct ip6t_log_info { 12struct ip6t_log_info {
12 unsigned char level; 13 unsigned char level;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index b6f51e3a38ec..ff2e09c953b9 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -298,8 +298,9 @@ struct mm_struct {
298 unsigned long addr, unsigned long len, 298 unsigned long addr, unsigned long len,
299 unsigned long pgoff, unsigned long flags); 299 unsigned long pgoff, unsigned long flags);
300 void (*unmap_area) (struct mm_struct *mm, unsigned long addr); 300 void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
301 unsigned long mmap_base; /* base of mmap area */ 301 unsigned long mmap_base; /* base of mmap area */
302 unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ 302 unsigned long task_size; /* size of task vm space */
303 unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */
303 unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */ 304 unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */
304 pgd_t * pgd; 305 pgd_t * pgd;
305 atomic_t mm_users; /* How many users with user space? */ 306 atomic_t mm_users; /* How many users with user space? */
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 0e92bf7ec28e..bac61db26456 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -147,6 +147,7 @@ enum
147 KERN_SETUID_DUMPABLE=69, /* int: behaviour of dumps for setuid core */ 147 KERN_SETUID_DUMPABLE=69, /* int: behaviour of dumps for setuid core */
148 KERN_SPIN_RETRY=70, /* int: number of spinlock retries */ 148 KERN_SPIN_RETRY=70, /* int: number of spinlock retries */
149 KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */ 149 KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */
150 KERN_IA64_UNALIGNED=72, /* int: ia64 unaligned userland trap enable */
150}; 151};
151 152
152 153
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 004e645f3e18..8d362c49b8a9 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -233,7 +233,6 @@ struct xfrm_type
233 int (*init_state)(struct xfrm_state *x); 233 int (*init_state)(struct xfrm_state *x);
234 void (*destructor)(struct xfrm_state *); 234 void (*destructor)(struct xfrm_state *);
235 int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); 235 int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb);
236 int (*post_input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb);
237 int (*output)(struct xfrm_state *, struct sk_buff *pskb); 236 int (*output)(struct xfrm_state *, struct sk_buff *pskb);
238 /* Estimate maximal size of result of transformation of a dgram */ 237 /* Estimate maximal size of result of transformation of a dgram */
239 u32 (*get_max_size)(struct xfrm_state *, int size); 238 u32 (*get_max_size)(struct xfrm_state *, int size);
diff --git a/include/pcmcia/device_id.h b/include/pcmcia/device_id.h
index 346d81ece287..e04e0b0d9a25 100644
--- a/include/pcmcia/device_id.h
+++ b/include/pcmcia/device_id.h
@@ -72,6 +72,15 @@
72 .prod_id = { (v1), (v2), (v3), (v4) }, \ 72 .prod_id = { (v1), (v2), (v3), (v4) }, \
73 .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, } 73 .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, }
74 74
75#define PCMCIA_DEVICE_MANF_CARD_PROD_ID1(manf, card, v1, vh1) { \
76 .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
77 PCMCIA_DEV_ID_MATCH_CARD_ID| \
78 PCMCIA_DEV_ID_MATCH_PROD_ID1, \
79 .manf_id = (manf), \
80 .card_id = (card), \
81 .prod_id = { (v1), NULL, NULL, NULL }, \
82 .prod_id_hash = { (vh1), 0, 0, 0 }, }
83
75 84
76/* multi-function devices */ 85/* multi-function devices */
77 86
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index c05a2b7125e1..de2d9109194e 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -124,6 +124,10 @@ extern int sysctl_hz_timer;
124extern int acct_parm[]; 124extern int acct_parm[];
125#endif 125#endif
126 126
127#ifdef CONFIG_IA64
128extern int no_unaligned_warning;
129#endif
130
127static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t, 131static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t,
128 ctl_table *, void **); 132 ctl_table *, void **);
129static int proc_doutsstring(ctl_table *table, int write, struct file *filp, 133static int proc_doutsstring(ctl_table *table, int write, struct file *filp,
@@ -663,6 +667,16 @@ static ctl_table kern_table[] = {
663 .data = &acpi_video_flags, 667 .data = &acpi_video_flags,
664 .maxlen = sizeof (unsigned long), 668 .maxlen = sizeof (unsigned long),
665 .mode = 0644, 669 .mode = 0644,
670 .proc_handler = &proc_doulongvec_minmax,
671 },
672#endif
673#ifdef CONFIG_IA64
674 {
675 .ctl_name = KERN_IA64_UNALIGNED,
676 .procname = "ignore-unaligned-usertrap",
677 .data = &no_unaligned_warning,
678 .maxlen = sizeof (int),
679 .mode = 0644,
666 .proc_handler = &proc_dointvec, 680 .proc_handler = &proc_dointvec,
667 }, 681 },
668#endif 682#endif
diff --git a/kernel/timer.c b/kernel/timer.c
index fe3a9a9f8328..fc6646fd5aab 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1351,10 +1351,10 @@ static inline u64 time_interpolator_get_cycles(unsigned int src)
1351 return x(); 1351 return x();
1352 1352
1353 case TIME_SOURCE_MMIO64 : 1353 case TIME_SOURCE_MMIO64 :
1354 return readq((void __iomem *) time_interpolator->addr); 1354 return readq_relaxed((void __iomem *)time_interpolator->addr);
1355 1355
1356 case TIME_SOURCE_MMIO32 : 1356 case TIME_SOURCE_MMIO32 :
1357 return readl((void __iomem *) time_interpolator->addr); 1357 return readl_relaxed((void __iomem *)time_interpolator->addr);
1358 1358
1359 default: return get_cycles(); 1359 default: return get_cycles();
1360 } 1360 }
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 67af4cea1e23..1a210088ad80 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -954,7 +954,8 @@ asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
954 goto out; 954 goto out;
955 } 955 }
956 956
957 err = do_migrate_pages(mm, &old, &new, MPOL_MF_MOVE); 957 err = do_migrate_pages(mm, &old, &new,
958 capable(CAP_SYS_ADMIN) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
958out: 959out:
959 mmput(mm); 960 mmput(mm);
960 return err; 961 return err;
@@ -1792,7 +1793,8 @@ int show_numa_map(struct seq_file *m, void *v)
1792 if (!md) 1793 if (!md)
1793 return 0; 1794 return 0;
1794 1795
1795 check_pgd_range(vma, vma->vm_start, vma->vm_end, 1796 if (!is_vm_hugetlb_page(vma))
1797 check_pgd_range(vma, vma->vm_start, vma->vm_end,
1796 &node_online_map, MPOL_MF_STATS, md); 1798 &node_online_map, MPOL_MF_STATS, md);
1797 1799
1798 if (md->pages) { 1800 if (md->pages) {
diff --git a/mm/nommu.c b/mm/nommu.c
index 99d21020ec9d..4951f4786f28 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -53,7 +53,6 @@ DECLARE_RWSEM(nommu_vma_sem);
53struct vm_operations_struct generic_file_vm_ops = { 53struct vm_operations_struct generic_file_vm_ops = {
54}; 54};
55 55
56EXPORT_SYMBOL(vmalloc);
57EXPORT_SYMBOL(vfree); 56EXPORT_SYMBOL(vfree);
58EXPORT_SYMBOL(vmalloc_to_page); 57EXPORT_SYMBOL(vmalloc_to_page);
59EXPORT_SYMBOL(vmalloc_32); 58EXPORT_SYMBOL(vmalloc_32);
@@ -205,6 +204,13 @@ void *vmalloc(unsigned long size)
205{ 204{
206 return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL); 205 return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL);
207} 206}
207EXPORT_SYMBOL(vmalloc);
208
209void *vmalloc_node(unsigned long size, int node)
210{
211 return vmalloc(size);
212}
213EXPORT_SYMBOL(vmalloc_node);
208 214
209/* 215/*
210 * vmalloc_32 - allocate virtually continguos memory (32bit addressable) 216 * vmalloc_32 - allocate virtually continguos memory (32bit addressable)
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 8123fad5a485..78747afad6b0 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -302,7 +302,7 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask, int order)
302{ 302{
303 struct mm_struct *mm = NULL; 303 struct mm_struct *mm = NULL;
304 task_t *p; 304 task_t *p;
305 unsigned long points; 305 unsigned long points = 0;
306 306
307 if (printk_ratelimit()) { 307 if (printk_ratelimit()) {
308 printk("oom-killer: gfp_mask=0x%x, order=%d\n", 308 printk("oom-killer: gfp_mask=0x%x, order=%d\n",
@@ -355,6 +355,7 @@ retry:
355 } 355 }
356 356
357out: 357out:
358 read_unlock(&tasklist_lock);
358 cpuset_unlock(); 359 cpuset_unlock();
359 if (mm) 360 if (mm)
360 mmput(mm); 361 mmput(mm);
@@ -364,5 +365,5 @@ out:
364 * retry to allocate memory unless "p" is current 365 * retry to allocate memory unless "p" is current
365 */ 366 */
366 if (!test_thread_flag(TIF_MEMDIE)) 367 if (!test_thread_flag(TIF_MEMDIE))
367 schedule_timeout_interruptible(1); 368 schedule_timeout_uninterruptible(1);
368} 369}
diff --git a/mm/rmap.c b/mm/rmap.c
index df2c41c2a9a2..d8ce5ff61454 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -212,25 +212,33 @@ out:
212 * through real pte's pointing to valid pages and then releasing 212 * through real pte's pointing to valid pages and then releasing
213 * the page from the swap cache. 213 * the page from the swap cache.
214 * 214 *
215 * Must hold page lock on page. 215 * Must hold page lock on page and mmap_sem of one vma that contains
216 * the page.
216 */ 217 */
217void remove_from_swap(struct page *page) 218void remove_from_swap(struct page *page)
218{ 219{
219 struct anon_vma *anon_vma; 220 struct anon_vma *anon_vma;
220 struct vm_area_struct *vma; 221 struct vm_area_struct *vma;
222 unsigned long mapping;
221 223
222 if (!PageAnon(page) || !PageSwapCache(page)) 224 if (!PageSwapCache(page))
223 return; 225 return;
224 226
225 anon_vma = page_lock_anon_vma(page); 227 mapping = (unsigned long)page->mapping;
226 if (!anon_vma) 228
229 if (!mapping || (mapping & PAGE_MAPPING_ANON) == 0)
227 return; 230 return;
228 231
232 /*
233 * We hold the mmap_sem lock. So no need to call page_lock_anon_vma.
234 */
235 anon_vma = (struct anon_vma *) (mapping - PAGE_MAPPING_ANON);
236 spin_lock(&anon_vma->lock);
237
229 list_for_each_entry(vma, &anon_vma->head, anon_vma_node) 238 list_for_each_entry(vma, &anon_vma->head, anon_vma_node)
230 remove_vma_swap(vma, page); 239 remove_vma_swap(vma, page);
231 240
232 spin_unlock(&anon_vma->lock); 241 spin_unlock(&anon_vma->lock);
233
234 delete_from_swap_cache(page); 242 delete_from_swap_cache(page);
235} 243}
236EXPORT_SYMBOL(remove_from_swap); 244EXPORT_SYMBOL(remove_from_swap);
diff --git a/net/bridge/netfilter/ebt_log.c b/net/bridge/netfilter/ebt_log.c
index 0128fbbe2328..288ff1d4ccc4 100644
--- a/net/bridge/netfilter/ebt_log.c
+++ b/net/bridge/netfilter/ebt_log.c
@@ -166,7 +166,12 @@ static void ebt_log(const struct sk_buff *skb, unsigned int hooknr,
166 li.u.log.level = info->loglevel; 166 li.u.log.level = info->loglevel;
167 li.u.log.logflags = info->bitmask; 167 li.u.log.logflags = info->bitmask;
168 168
169 nf_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li, info->prefix); 169 if (info->bitmask & EBT_LOG_NFLOG)
170 nf_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
171 info->prefix);
172 else
173 ebt_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
174 info->prefix);
170} 175}
171 176
172static struct ebt_watcher log = 177static struct ebt_watcher log =
diff --git a/net/core/request_sock.c b/net/core/request_sock.c
index b8203de5ff07..98f0fc923f91 100644
--- a/net/core/request_sock.c
+++ b/net/core/request_sock.c
@@ -52,7 +52,6 @@ int reqsk_queue_alloc(struct request_sock_queue *queue,
52 get_random_bytes(&lopt->hash_rnd, sizeof(lopt->hash_rnd)); 52 get_random_bytes(&lopt->hash_rnd, sizeof(lopt->hash_rnd));
53 rwlock_init(&queue->syn_wait_lock); 53 rwlock_init(&queue->syn_wait_lock);
54 queue->rskq_accept_head = queue->rskq_accept_head = NULL; 54 queue->rskq_accept_head = queue->rskq_accept_head = NULL;
55 queue->rskq_defer_accept = 0;
56 lopt->nr_table_entries = nr_table_entries; 55 lopt->nr_table_entries = nr_table_entries;
57 56
58 write_lock_bh(&queue->syn_wait_lock); 57 write_lock_bh(&queue->syn_wait_lock);
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c
index 960aa78cdb97..b410ab8bcf7a 100644
--- a/net/ieee80211/ieee80211_rx.c
+++ b/net/ieee80211/ieee80211_rx.c
@@ -1301,7 +1301,7 @@ static void update_network(struct ieee80211_network *dst,
1301 /* dst->last_associate is not overwritten */ 1301 /* dst->last_associate is not overwritten */
1302} 1302}
1303 1303
1304static inline int is_beacon(int fc) 1304static inline int is_beacon(__le16 fc)
1305{ 1305{
1306 return (WLAN_FC_GET_STYPE(le16_to_cpu(fc)) == IEEE80211_STYPE_BEACON); 1306 return (WLAN_FC_GET_STYPE(le16_to_cpu(fc)) == IEEE80211_STYPE_BEACON);
1307} 1307}
@@ -1348,9 +1348,7 @@ static void ieee80211_process_probe_response(struct ieee80211_device
1348 escape_essid(info_element->data, 1348 escape_essid(info_element->data,
1349 info_element->len), 1349 info_element->len),
1350 MAC_ARG(beacon->header.addr3), 1350 MAC_ARG(beacon->header.addr3),
1351 is_beacon(le16_to_cpu 1351 is_beacon(beacon->header.frame_ctl) ?
1352 (beacon->header.
1353 frame_ctl)) ?
1354 "BEACON" : "PROBE RESPONSE"); 1352 "BEACON" : "PROBE RESPONSE");
1355 return; 1353 return;
1356 } 1354 }
@@ -1400,9 +1398,7 @@ static void ieee80211_process_probe_response(struct ieee80211_device
1400 escape_essid(network.ssid, 1398 escape_essid(network.ssid,
1401 network.ssid_len), 1399 network.ssid_len),
1402 MAC_ARG(network.bssid), 1400 MAC_ARG(network.bssid),
1403 is_beacon(le16_to_cpu 1401 is_beacon(beacon->header.frame_ctl) ?
1404 (beacon->header.
1405 frame_ctl)) ?
1406 "BEACON" : "PROBE RESPONSE"); 1402 "BEACON" : "PROBE RESPONSE");
1407#endif 1403#endif
1408 memcpy(target, &network, sizeof(*target)); 1404 memcpy(target, &network, sizeof(*target));
@@ -1412,16 +1408,14 @@ static void ieee80211_process_probe_response(struct ieee80211_device
1412 escape_essid(target->ssid, 1408 escape_essid(target->ssid,
1413 target->ssid_len), 1409 target->ssid_len),
1414 MAC_ARG(target->bssid), 1410 MAC_ARG(target->bssid),
1415 is_beacon(le16_to_cpu 1411 is_beacon(beacon->header.frame_ctl) ?
1416 (beacon->header.
1417 frame_ctl)) ?
1418 "BEACON" : "PROBE RESPONSE"); 1412 "BEACON" : "PROBE RESPONSE");
1419 update_network(target, &network); 1413 update_network(target, &network);
1420 } 1414 }
1421 1415
1422 spin_unlock_irqrestore(&ieee->lock, flags); 1416 spin_unlock_irqrestore(&ieee->lock, flags);
1423 1417
1424 if (is_beacon(le16_to_cpu(beacon->header.frame_ctl))) { 1418 if (is_beacon(beacon->header.frame_ctl)) {
1425 if (ieee->handle_beacon != NULL) 1419 if (ieee->handle_beacon != NULL)
1426 ieee->handle_beacon(dev, beacon, &network); 1420 ieee->handle_beacon(dev, beacon, &network);
1427 } else { 1421 } else {
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c
index 73bfcae8af9c..09590f356086 100644
--- a/net/ipv4/esp4.c
+++ b/net/ipv4/esp4.c
@@ -12,13 +12,6 @@
12#include <net/protocol.h> 12#include <net/protocol.h>
13#include <net/udp.h> 13#include <net/udp.h>
14 14
15/* decapsulation data for use when post-processing */
16struct esp_decap_data {
17 xfrm_address_t saddr;
18 __u16 sport;
19 __u8 proto;
20};
21
22static int esp_output(struct xfrm_state *x, struct sk_buff *skb) 15static int esp_output(struct xfrm_state *x, struct sk_buff *skb)
23{ 16{
24 int err; 17 int err;
@@ -150,6 +143,10 @@ static int esp_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struc
150 int elen = skb->len - sizeof(struct ip_esp_hdr) - esp->conf.ivlen - alen; 143 int elen = skb->len - sizeof(struct ip_esp_hdr) - esp->conf.ivlen - alen;
151 int nfrags; 144 int nfrags;
152 int encap_len = 0; 145 int encap_len = 0;
146 u8 nexthdr[2];
147 struct scatterlist *sg;
148 u8 workbuf[60];
149 int padlen;
153 150
154 if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr))) 151 if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr)))
155 goto out; 152 goto out;
@@ -185,122 +182,82 @@ static int esp_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struc
185 if (esp->conf.ivlen) 182 if (esp->conf.ivlen)
186 crypto_cipher_set_iv(esp->conf.tfm, esph->enc_data, crypto_tfm_alg_ivsize(esp->conf.tfm)); 183 crypto_cipher_set_iv(esp->conf.tfm, esph->enc_data, crypto_tfm_alg_ivsize(esp->conf.tfm));
187 184
188 { 185 sg = &esp->sgbuf[0];
189 u8 nexthdr[2];
190 struct scatterlist *sg = &esp->sgbuf[0];
191 u8 workbuf[60];
192 int padlen;
193
194 if (unlikely(nfrags > ESP_NUM_FAST_SG)) {
195 sg = kmalloc(sizeof(struct scatterlist)*nfrags, GFP_ATOMIC);
196 if (!sg)
197 goto out;
198 }
199 skb_to_sgvec(skb, sg, sizeof(struct ip_esp_hdr) + esp->conf.ivlen, elen);
200 crypto_cipher_decrypt(esp->conf.tfm, sg, sg, elen);
201 if (unlikely(sg != &esp->sgbuf[0]))
202 kfree(sg);
203
204 if (skb_copy_bits(skb, skb->len-alen-2, nexthdr, 2))
205 BUG();
206 186
207 padlen = nexthdr[0]; 187 if (unlikely(nfrags > ESP_NUM_FAST_SG)) {
208 if (padlen+2 >= elen) 188 sg = kmalloc(sizeof(struct scatterlist)*nfrags, GFP_ATOMIC);
189 if (!sg)
209 goto out; 190 goto out;
210
211 /* ... check padding bits here. Silly. :-) */
212
213 if (x->encap && decap && decap->decap_type) {
214 struct esp_decap_data *encap_data;
215 struct udphdr *uh = (struct udphdr *) (iph+1);
216
217 encap_data = (struct esp_decap_data *) (decap->decap_data);
218 encap_data->proto = 0;
219
220 switch (decap->decap_type) {
221 case UDP_ENCAP_ESPINUDP:
222 case UDP_ENCAP_ESPINUDP_NON_IKE:
223 encap_data->proto = AF_INET;
224 encap_data->saddr.a4 = iph->saddr;
225 encap_data->sport = uh->source;
226 encap_len = (void*)esph - (void*)uh;
227 break;
228
229 default:
230 goto out;
231 }
232 }
233
234 iph->protocol = nexthdr[1];
235 pskb_trim(skb, skb->len - alen - padlen - 2);
236 memcpy(workbuf, skb->nh.raw, iph->ihl*4);
237 skb->h.raw = skb_pull(skb, sizeof(struct ip_esp_hdr) + esp->conf.ivlen);
238 skb->nh.raw += encap_len + sizeof(struct ip_esp_hdr) + esp->conf.ivlen;
239 memcpy(skb->nh.raw, workbuf, iph->ihl*4);
240 skb->nh.iph->tot_len = htons(skb->len);
241 } 191 }
192 skb_to_sgvec(skb, sg, sizeof(struct ip_esp_hdr) + esp->conf.ivlen, elen);
193 crypto_cipher_decrypt(esp->conf.tfm, sg, sg, elen);
194 if (unlikely(sg != &esp->sgbuf[0]))
195 kfree(sg);
242 196
243 return 0; 197 if (skb_copy_bits(skb, skb->len-alen-2, nexthdr, 2))
198 BUG();
244 199
245out: 200 padlen = nexthdr[0];
246 return -EINVAL; 201 if (padlen+2 >= elen)
247} 202 goto out;
248 203
249static int esp_post_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) 204 /* ... check padding bits here. Silly. :-) */
250{
251
252 if (x->encap) {
253 struct xfrm_encap_tmpl *encap;
254 struct esp_decap_data *decap_data;
255 205
256 encap = x->encap; 206 if (x->encap) {
257 decap_data = (struct esp_decap_data *)(decap->decap_data); 207 struct xfrm_encap_tmpl *encap = x->encap;
208 struct udphdr *uh;
258 209
259 /* first, make sure that the decap type == the encap type */
260 if (encap->encap_type != decap->decap_type) 210 if (encap->encap_type != decap->decap_type)
261 return -EINVAL; 211 goto out;
262 212
263 switch (encap->encap_type) { 213 uh = (struct udphdr *)(iph + 1);
264 default: 214 encap_len = (void*)esph - (void*)uh;
265 case UDP_ENCAP_ESPINUDP: 215
266 case UDP_ENCAP_ESPINUDP_NON_IKE: 216 /*
267 /* 217 * 1) if the NAT-T peer's IP or port changed then
268 * 1) if the NAT-T peer's IP or port changed then 218 * advertize the change to the keying daemon.
269 * advertize the change to the keying daemon. 219 * This is an inbound SA, so just compare
270 * This is an inbound SA, so just compare 220 * SRC ports.
271 * SRC ports. 221 */
272 */ 222 if (iph->saddr != x->props.saddr.a4 ||
273 if (decap_data->proto == AF_INET && 223 uh->source != encap->encap_sport) {
274 (decap_data->saddr.a4 != x->props.saddr.a4 || 224 xfrm_address_t ipaddr;
275 decap_data->sport != encap->encap_sport)) { 225
276 xfrm_address_t ipaddr; 226 ipaddr.a4 = iph->saddr;
277 227 km_new_mapping(x, &ipaddr, uh->source);
278 ipaddr.a4 = decap_data->saddr.a4; 228
279 km_new_mapping(x, &ipaddr, decap_data->sport); 229 /* XXX: perhaps add an extra
280 230 * policy check here, to see
281 /* XXX: perhaps add an extra 231 * if we should allow or
282 * policy check here, to see 232 * reject a packet from a
283 * if we should allow or 233 * different source
284 * reject a packet from a 234 * address/port.
285 * different source
286 * address/port.
287 */
288 }
289
290 /*
291 * 2) ignore UDP/TCP checksums in case
292 * of NAT-T in Transport Mode, or
293 * perform other post-processing fixes
294 * as per * draft-ietf-ipsec-udp-encaps-06,
295 * section 3.1.2
296 */ 235 */
297 if (!x->props.mode)
298 skb->ip_summed = CHECKSUM_UNNECESSARY;
299
300 break;
301 } 236 }
237
238 /*
239 * 2) ignore UDP/TCP checksums in case
240 * of NAT-T in Transport Mode, or
241 * perform other post-processing fixes
242 * as per draft-ietf-ipsec-udp-encaps-06,
243 * section 3.1.2
244 */
245 if (!x->props.mode)
246 skb->ip_summed = CHECKSUM_UNNECESSARY;
302 } 247 }
248
249 iph->protocol = nexthdr[1];
250 pskb_trim(skb, skb->len - alen - padlen - 2);
251 memcpy(workbuf, skb->nh.raw, iph->ihl*4);
252 skb->h.raw = skb_pull(skb, sizeof(struct ip_esp_hdr) + esp->conf.ivlen);
253 skb->nh.raw += encap_len + sizeof(struct ip_esp_hdr) + esp->conf.ivlen;
254 memcpy(skb->nh.raw, workbuf, iph->ihl*4);
255 skb->nh.iph->tot_len = htons(skb->len);
256
303 return 0; 257 return 0;
258
259out:
260 return -EINVAL;
304} 261}
305 262
306static u32 esp4_get_max_size(struct xfrm_state *x, int mtu) 263static u32 esp4_get_max_size(struct xfrm_state *x, int mtu)
@@ -458,7 +415,6 @@ static struct xfrm_type esp_type =
458 .destructor = esp_destroy, 415 .destructor = esp_destroy,
459 .get_max_size = esp4_get_max_size, 416 .get_max_size = esp4_get_max_size,
460 .input = esp_input, 417 .input = esp_input,
461 .post_input = esp_post_input,
462 .output = esp_output 418 .output = esp_output
463}; 419};
464 420
@@ -470,15 +426,6 @@ static struct net_protocol esp4_protocol = {
470 426
471static int __init esp4_init(void) 427static int __init esp4_init(void)
472{ 428{
473 struct xfrm_decap_state decap;
474
475 if (sizeof(struct esp_decap_data) >
476 sizeof(decap.decap_data)) {
477 extern void decap_data_too_small(void);
478
479 decap_data_too_small();
480 }
481
482 if (xfrm_register_type(&esp_type, AF_INET) < 0) { 429 if (xfrm_register_type(&esp_type, AF_INET) < 0) {
483 printk(KERN_INFO "ip esp init: can't add xfrm type\n"); 430 printk(KERN_INFO "ip esp init: can't add xfrm type\n");
484 return -EAGAIN; 431 return -EAGAIN;
diff --git a/net/ipv4/netfilter/ipt_LOG.c b/net/ipv4/netfilter/ipt_LOG.c
index 6606ddb66a29..cc27545ff97f 100644
--- a/net/ipv4/netfilter/ipt_LOG.c
+++ b/net/ipv4/netfilter/ipt_LOG.c
@@ -425,7 +425,12 @@ ipt_log_target(struct sk_buff **pskb,
425 li.u.log.level = loginfo->level; 425 li.u.log.level = loginfo->level;
426 li.u.log.logflags = loginfo->logflags; 426 li.u.log.logflags = loginfo->logflags;
427 427
428 nf_log_packet(PF_INET, hooknum, *pskb, in, out, &li, loginfo->prefix); 428 if (loginfo->logflags & IPT_LOG_NFLOG)
429 nf_log_packet(PF_INET, hooknum, *pskb, in, out, &li,
430 loginfo->prefix);
431 else
432 ipt_log_packet(PF_INET, hooknum, *pskb, in, out, &li,
433 loginfo->prefix);
429 434
430 return IPT_CONTINUE; 435 return IPT_CONTINUE;
431} 436}
diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c
index 77c725832dec..6b930efa9fb9 100644
--- a/net/ipv6/netfilter/ip6t_LOG.c
+++ b/net/ipv6/netfilter/ip6t_LOG.c
@@ -436,7 +436,12 @@ ip6t_log_target(struct sk_buff **pskb,
436 li.u.log.level = loginfo->level; 436 li.u.log.level = loginfo->level;
437 li.u.log.logflags = loginfo->logflags; 437 li.u.log.logflags = loginfo->logflags;
438 438
439 nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li, loginfo->prefix); 439 if (loginfo->logflags & IP6T_LOG_NFLOG)
440 nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li,
441 loginfo->prefix);
442 else
443 ip6t_log_packet(PF_INET6, hooknum, *pskb, in, out, &li,
444 loginfo->prefix);
440 445
441 return IP6T_CONTINUE; 446 return IP6T_CONTINUE;
442} 447}
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
index d3a4f30a7f22..d9f0d7ef103b 100644
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
@@ -6,6 +6,7 @@
6#include <linux/skbuff.h> 6#include <linux/skbuff.h>
7#include <linux/netfilter.h> 7#include <linux/netfilter.h>
8#include <linux/seq_file.h> 8#include <linux/seq_file.h>
9#include <linux/rcupdate.h>
9#include <net/protocol.h> 10#include <net/protocol.h>
10 11
11#include "nf_internals.h" 12#include "nf_internals.h"
@@ -16,7 +17,7 @@
16 * for queueing and must reinject all packets it receives, no matter what. 17 * for queueing and must reinject all packets it receives, no matter what.
17 */ 18 */
18static struct nf_queue_handler *queue_handler[NPROTO]; 19static struct nf_queue_handler *queue_handler[NPROTO];
19static struct nf_queue_rerouter *queue_rerouter; 20static struct nf_queue_rerouter *queue_rerouter[NPROTO];
20 21
21static DEFINE_RWLOCK(queue_handler_lock); 22static DEFINE_RWLOCK(queue_handler_lock);
22 23
@@ -64,7 +65,7 @@ int nf_register_queue_rerouter(int pf, struct nf_queue_rerouter *rer)
64 return -EINVAL; 65 return -EINVAL;
65 66
66 write_lock_bh(&queue_handler_lock); 67 write_lock_bh(&queue_handler_lock);
67 memcpy(&queue_rerouter[pf], rer, sizeof(queue_rerouter[pf])); 68 rcu_assign_pointer(queue_rerouter[pf], rer);
68 write_unlock_bh(&queue_handler_lock); 69 write_unlock_bh(&queue_handler_lock);
69 70
70 return 0; 71 return 0;
@@ -77,8 +78,9 @@ int nf_unregister_queue_rerouter(int pf)
77 return -EINVAL; 78 return -EINVAL;
78 79
79 write_lock_bh(&queue_handler_lock); 80 write_lock_bh(&queue_handler_lock);
80 memset(&queue_rerouter[pf], 0, sizeof(queue_rerouter[pf])); 81 rcu_assign_pointer(queue_rerouter[pf], NULL);
81 write_unlock_bh(&queue_handler_lock); 82 write_unlock_bh(&queue_handler_lock);
83 synchronize_rcu();
82 return 0; 84 return 0;
83} 85}
84EXPORT_SYMBOL_GPL(nf_unregister_queue_rerouter); 86EXPORT_SYMBOL_GPL(nf_unregister_queue_rerouter);
@@ -114,16 +116,17 @@ int nf_queue(struct sk_buff **skb,
114 struct net_device *physindev = NULL; 116 struct net_device *physindev = NULL;
115 struct net_device *physoutdev = NULL; 117 struct net_device *physoutdev = NULL;
116#endif 118#endif
119 struct nf_queue_rerouter *rerouter;
117 120
118 /* QUEUE == DROP if noone is waiting, to be safe. */ 121 /* QUEUE == DROP if noone is waiting, to be safe. */
119 read_lock(&queue_handler_lock); 122 read_lock(&queue_handler_lock);
120 if (!queue_handler[pf] || !queue_handler[pf]->outfn) { 123 if (!queue_handler[pf]) {
121 read_unlock(&queue_handler_lock); 124 read_unlock(&queue_handler_lock);
122 kfree_skb(*skb); 125 kfree_skb(*skb);
123 return 1; 126 return 1;
124 } 127 }
125 128
126 info = kmalloc(sizeof(*info)+queue_rerouter[pf].rer_size, GFP_ATOMIC); 129 info = kmalloc(sizeof(*info)+queue_rerouter[pf]->rer_size, GFP_ATOMIC);
127 if (!info) { 130 if (!info) {
128 if (net_ratelimit()) 131 if (net_ratelimit())
129 printk(KERN_ERR "OOM queueing packet %p\n", 132 printk(KERN_ERR "OOM queueing packet %p\n",
@@ -155,15 +158,13 @@ int nf_queue(struct sk_buff **skb,
155 if (physoutdev) dev_hold(physoutdev); 158 if (physoutdev) dev_hold(physoutdev);
156 } 159 }
157#endif 160#endif
158 if (queue_rerouter[pf].save) 161 rerouter = rcu_dereference(queue_rerouter[pf]);
159 queue_rerouter[pf].save(*skb, info); 162 if (rerouter)
163 rerouter->save(*skb, info);
160 164
161 status = queue_handler[pf]->outfn(*skb, info, queuenum, 165 status = queue_handler[pf]->outfn(*skb, info, queuenum,
162 queue_handler[pf]->data); 166 queue_handler[pf]->data);
163 167
164 if (status >= 0 && queue_rerouter[pf].reroute)
165 status = queue_rerouter[pf].reroute(skb, info);
166
167 read_unlock(&queue_handler_lock); 168 read_unlock(&queue_handler_lock);
168 169
169 if (status < 0) { 170 if (status < 0) {
@@ -189,6 +190,7 @@ void nf_reinject(struct sk_buff *skb, struct nf_info *info,
189{ 190{
190 struct list_head *elem = &info->elem->list; 191 struct list_head *elem = &info->elem->list;
191 struct list_head *i; 192 struct list_head *i;
193 struct nf_queue_rerouter *rerouter;
192 194
193 rcu_read_lock(); 195 rcu_read_lock();
194 196
@@ -212,7 +214,7 @@ void nf_reinject(struct sk_buff *skb, struct nf_info *info,
212 break; 214 break;
213 } 215 }
214 216
215 if (elem == &nf_hooks[info->pf][info->hook]) { 217 if (i == &nf_hooks[info->pf][info->hook]) {
216 /* The module which sent it to userspace is gone. */ 218 /* The module which sent it to userspace is gone. */
217 NFDEBUG("%s: module disappeared, dropping packet.\n", 219 NFDEBUG("%s: module disappeared, dropping packet.\n",
218 __FUNCTION__); 220 __FUNCTION__);
@@ -226,6 +228,12 @@ void nf_reinject(struct sk_buff *skb, struct nf_info *info,
226 } 228 }
227 229
228 if (verdict == NF_ACCEPT) { 230 if (verdict == NF_ACCEPT) {
231 rerouter = rcu_dereference(queue_rerouter[info->pf]);
232 if (rerouter && rerouter->reroute(&skb, info) < 0)
233 verdict = NF_DROP;
234 }
235
236 if (verdict == NF_ACCEPT) {
229 next_hook: 237 next_hook:
230 verdict = nf_iterate(&nf_hooks[info->pf][info->hook], 238 verdict = nf_iterate(&nf_hooks[info->pf][info->hook],
231 &skb, info->hook, 239 &skb, info->hook,
@@ -322,22 +330,12 @@ int __init netfilter_queue_init(void)
322{ 330{
323#ifdef CONFIG_PROC_FS 331#ifdef CONFIG_PROC_FS
324 struct proc_dir_entry *pde; 332 struct proc_dir_entry *pde;
325#endif
326 queue_rerouter = kmalloc(NPROTO * sizeof(struct nf_queue_rerouter),
327 GFP_KERNEL);
328 if (!queue_rerouter)
329 return -ENOMEM;
330 333
331#ifdef CONFIG_PROC_FS
332 pde = create_proc_entry("nf_queue", S_IRUGO, proc_net_netfilter); 334 pde = create_proc_entry("nf_queue", S_IRUGO, proc_net_netfilter);
333 if (!pde) { 335 if (!pde)
334 kfree(queue_rerouter);
335 return -1; 336 return -1;
336 }
337 pde->proc_fops = &nfqueue_file_ops; 337 pde->proc_fops = &nfqueue_file_ops;
338#endif 338#endif
339 memset(queue_rerouter, 0, NPROTO * sizeof(struct nf_queue_rerouter));
340
341 return 0; 339 return 0;
342} 340}
343 341
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 8206025d8e46..ae62054a9fc4 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -996,13 +996,6 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb,
996 struct sec_decap_state *xvec = &(skb->sp->x[i]); 996 struct sec_decap_state *xvec = &(skb->sp->x[i]);
997 if (!xfrm_selector_match(&xvec->xvec->sel, &fl, family)) 997 if (!xfrm_selector_match(&xvec->xvec->sel, &fl, family))
998 return 0; 998 return 0;
999
1000 /* If there is a post_input processor, try running it */
1001 if (xvec->xvec->type->post_input &&
1002 (xvec->xvec->type->post_input)(xvec->xvec,
1003 &(xvec->decap),
1004 skb) != 0)
1005 return 0;
1006 } 999 }
1007 } 1000 }
1008 1001