diff options
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 |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 16 | 3 | SUBLEVEL = 16 |
4 | EXTRAVERSION =-rc4 | 4 | EXTRAVERSION =-rc5 |
5 | NAME=Sliding Snow Leopard | 5 | NAME=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 | ||
734 | config HOTPLUG_CPU | 734 | config 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 | ||
1061 | config KPROBES | 1061 | config 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); | |||
44 | extern int gsi_irq_sharing(int gsi); | 44 | extern int gsi_irq_sharing(int gsi); |
45 | #include <asm/proto.h> | 45 | #include <asm/proto.h> |
46 | 46 | ||
47 | static 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 | ||
417 | out_free: | 420 | out_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 | |||
335 | static struct i386_cpu cpu_devices[NR_CPUS]; | ||
336 | |||
337 | static 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 | |||
346 | subsys_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 | ||
454 | config KPROBES | 454 | config 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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CLEAN_COMPILE=y | ||
12 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
24 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
25 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
26 | CONFIG_HOTPLUG=y | ||
27 | CONFIG_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 |
30 | CONFIG_INITRAMFS_SOURCE="" | 27 | CONFIG_INITRAMFS_SOURCE="" |
28 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
31 | # CONFIG_EMBEDDED is not set | 29 | # CONFIG_EMBEDDED is not set |
32 | CONFIG_KALLSYMS=y | 30 | CONFIG_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 |
33 | CONFIG_HOTPLUG=y | ||
35 | CONFIG_PRINTK=y | 34 | CONFIG_PRINTK=y |
36 | CONFIG_BUG=y | 35 | CONFIG_BUG=y |
36 | CONFIG_ELF_CORE=y | ||
37 | CONFIG_BASE_FULL=y | 37 | CONFIG_BASE_FULL=y |
38 | CONFIG_FUTEX=y | 38 | CONFIG_FUTEX=y |
39 | CONFIG_EPOLL=y | 39 | CONFIG_EPOLL=y |
@@ -42,8 +42,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
42 | CONFIG_CC_ALIGN_LABELS=0 | 42 | CONFIG_CC_ALIGN_LABELS=0 |
43 | CONFIG_CC_ALIGN_LOOPS=0 | 43 | CONFIG_CC_ALIGN_LOOPS=0 |
44 | CONFIG_CC_ALIGN_JUMPS=0 | 44 | CONFIG_CC_ALIGN_JUMPS=0 |
45 | CONFIG_SLAB=y | ||
45 | # CONFIG_TINY_SHMEM is not set | 46 | # CONFIG_TINY_SHMEM is not set |
46 | CONFIG_BASE_SMALL=0 | 47 | CONFIG_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 | |||
58 | CONFIG_STOP_MACHINE=y | 60 | CONFIG_STOP_MACHINE=y |
59 | 61 | ||
60 | # | 62 | # |
63 | # Block layer | ||
64 | # | ||
65 | |||
66 | # | ||
67 | # IO Schedulers | ||
68 | # | ||
69 | CONFIG_IOSCHED_NOOP=y | ||
70 | CONFIG_IOSCHED_AS=y | ||
71 | CONFIG_IOSCHED_DEADLINE=y | ||
72 | CONFIG_IOSCHED_CFQ=y | ||
73 | CONFIG_DEFAULT_AS=y | ||
74 | # CONFIG_DEFAULT_DEADLINE is not set | ||
75 | # CONFIG_DEFAULT_CFQ is not set | ||
76 | # CONFIG_DEFAULT_NOOP is not set | ||
77 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
78 | |||
79 | # | ||
61 | # Processor type and features | 80 | # Processor type and features |
62 | # | 81 | # |
63 | CONFIG_IA64=y | 82 | CONFIG_IA64=y |
64 | CONFIG_64BIT=y | 83 | CONFIG_64BIT=y |
65 | CONFIG_MMU=y | 84 | CONFIG_MMU=y |
85 | CONFIG_SWIOTLB=y | ||
66 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 86 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
67 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 87 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
68 | CONFIG_TIME_INTERPOLATION=y | 88 | CONFIG_TIME_INTERPOLATION=y |
69 | CONFIG_EFI=y | 89 | CONFIG_EFI=y |
70 | CONFIG_GENERIC_IOMAP=y | 90 | CONFIG_GENERIC_IOMAP=y |
71 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 91 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
92 | CONFIG_DMA_IS_DMA32=y | ||
72 | # CONFIG_IA64_GENERIC is not set | 93 | # CONFIG_IA64_GENERIC is not set |
73 | CONFIG_IA64_DIG=y | 94 | CONFIG_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 |
82 | CONFIG_IA64_PAGE_SIZE_16KB=y | 103 | CONFIG_IA64_PAGE_SIZE_16KB=y |
83 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 104 | # CONFIG_IA64_PAGE_SIZE_64KB is not set |
105 | CONFIG_PGTABLE_3=y | ||
106 | # CONFIG_PGTABLE_4 is not set | ||
84 | # CONFIG_HZ_100 is not set | 107 | # CONFIG_HZ_100 is not set |
85 | CONFIG_HZ_250=y | 108 | CONFIG_HZ_250=y |
86 | # CONFIG_HZ_1000 is not set | 109 | # CONFIG_HZ_1000 is not set |
87 | CONFIG_HZ=250 | 110 | CONFIG_HZ=250 |
88 | CONFIG_IA64_BRL_EMU=y | 111 | CONFIG_IA64_BRL_EMU=y |
89 | CONFIG_IA64_L1_CACHE_SHIFT=6 | 112 | CONFIG_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 |
93 | CONFIG_IOSAPIC=y | 114 | CONFIG_IOSAPIC=y |
94 | # CONFIG_IA64_SGI_SN_XP is not set | 115 | CONFIG_FORCE_MAX_ZONEORDER=17 |
95 | CONFIG_FORCE_MAX_ZONEORDER=18 | ||
96 | CONFIG_SMP=y | 116 | CONFIG_SMP=y |
97 | CONFIG_NR_CPUS=2 | 117 | CONFIG_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 | |||
105 | CONFIG_FLATMEM=y | 125 | CONFIG_FLATMEM=y |
106 | CONFIG_FLAT_NODE_MEM_MAP=y | 126 | CONFIG_FLAT_NODE_MEM_MAP=y |
107 | # CONFIG_SPARSEMEM_STATIC is not set | 127 | # CONFIG_SPARSEMEM_STATIC is not set |
108 | CONFIG_HAVE_DEC_LOCK=y | 128 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
129 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
130 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
131 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
132 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
133 | # CONFIG_VIRTUAL_MEM_MAP is not set | ||
109 | CONFIG_IA32_SUPPORT=y | 134 | CONFIG_IA32_SUPPORT=y |
110 | CONFIG_COMPAT=y | 135 | CONFIG_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 | # |
118 | CONFIG_EFI_VARS=y | 143 | CONFIG_EFI_VARS=y |
119 | CONFIG_EFI_PCDP=y | 144 | CONFIG_EFI_PCDP=y |
120 | # CONFIG_DELL_RBU is not set | ||
121 | CONFIG_BINFMT_ELF=y | 145 | CONFIG_BINFMT_ELF=y |
122 | CONFIG_BINFMT_MISC=m | 146 | CONFIG_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 | # |
127 | CONFIG_PM=y | 151 | CONFIG_PM=y |
152 | CONFIG_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 | |||
137 | CONFIG_ACPI_THERMAL=m | 162 | CONFIG_ACPI_THERMAL=m |
138 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 163 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
139 | # CONFIG_ACPI_DEBUG is not set | 164 | # CONFIG_ACPI_DEBUG is not set |
165 | CONFIG_ACPI_EC=y | ||
140 | CONFIG_ACPI_POWER=y | 166 | CONFIG_ACPI_POWER=y |
141 | CONFIG_ACPI_SYSTEM=y | 167 | CONFIG_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 | ||
176 | CONFIG_PACKET=y | 203 | CONFIG_PACKET=y |
177 | CONFIG_PACKET_MMAP=y | 204 | CONFIG_PACKET_MMAP=y |
178 | CONFIG_UNIX=y | 205 | CONFIG_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 | |||
286 | CONFIG_BLK_DEV_RAM_COUNT=16 | 320 | CONFIG_BLK_DEV_RAM_COUNT=16 |
287 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 321 | CONFIG_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 | # | ||
293 | CONFIG_IOSCHED_NOOP=y | ||
294 | CONFIG_IOSCHED_AS=y | ||
295 | CONFIG_IOSCHED_DEADLINE=y | ||
296 | CONFIG_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 | # |
302 | CONFIG_IDE=m | 328 | CONFIG_IDE=m |
329 | CONFIG_IDE_MAX_HWIFS=4 | ||
303 | CONFIG_BLK_DEV_IDE=m | 330 | CONFIG_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 |
411 | CONFIG_SCSI_QLOGIC_1280=y | 440 | CONFIG_SCSI_QLOGIC_1280=y |
412 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 441 | # CONFIG_SCSI_QLA_FC is not set |
413 | CONFIG_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 | |||
486 | CONFIG_MII=y | 509 | CONFIG_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 | |||
630 | CONFIG_SERIAL_8250_CONSOLE=y | 655 | CONFIG_SERIAL_8250_CONSOLE=y |
631 | CONFIG_SERIAL_8250_ACPI=y | 656 | CONFIG_SERIAL_8250_ACPI=y |
632 | CONFIG_SERIAL_8250_NR_UARTS=4 | 657 | CONFIG_SERIAL_8250_NR_UARTS=4 |
658 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
633 | CONFIG_SERIAL_8250_EXTENDED=y | 659 | CONFIG_SERIAL_8250_EXTENDED=y |
634 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 660 | CONFIG_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 | |||
830 | CONFIG_SND_MIXER_OSS=m | 866 | CONFIG_SND_MIXER_OSS=m |
831 | CONFIG_SND_PCM_OSS=m | 867 | CONFIG_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 | ||
870 | CONFIG_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 | # |
839 | CONFIG_SND_OPL3_LIB=m | 877 | CONFIG_SND_OPL3_LIB=m |
878 | CONFIG_SND_AC97_CODEC=m | ||
879 | CONFIG_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 |
845 | CONFIG_SND_AC97_CODEC=m | ||
846 | CONFIG_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 | ||
860 | CONFIG_SND_CS4281=m | 900 | CONFIG_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 |
932 | CONFIG_USB_BLUETOOTH_TTY=m | ||
933 | CONFIG_USB_ACM=m | 971 | CONFIG_USB_ACM=m |
934 | CONFIG_USB_PRINTER=m | 972 | CONFIG_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 | # |
939 | CONFIG_USB_STORAGE=m | 981 | CONFIG_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 | # |
954 | CONFIG_USB_HID=m | 997 | CONFIG_USB_HID=m |
955 | CONFIG_USB_HIDINPUT=y | 998 | CONFIG_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 |
957 | CONFIG_USB_HIDDEV=y | 1001 | CONFIG_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 | |||
1071 | CONFIG_XFS_SECURITY=y | 1116 | CONFIG_XFS_SECURITY=y |
1072 | CONFIG_XFS_POSIX_ACL=y | 1117 | CONFIG_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 |
1076 | CONFIG_INOTIFY=y | 1122 | CONFIG_INOTIFY=y |
@@ -1111,6 +1157,7 @@ CONFIG_HUGETLBFS=y | |||
1111 | CONFIG_HUGETLB_PAGE=y | 1157 | CONFIG_HUGETLB_PAGE=y |
1112 | CONFIG_RAMFS=y | 1158 | CONFIG_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 |
1154 | CONFIG_CIFS=m | 1201 | CONFIG_CIFS=m |
1155 | CONFIG_CIFS_STATS=y | 1202 | CONFIG_CIFS_STATS=y |
1203 | # CONFIG_CIFS_STATS2 is not set | ||
1156 | CONFIG_CIFS_XATTR=y | 1204 | CONFIG_CIFS_XATTR=y |
1157 | CONFIG_CIFS_POSIX=y | 1205 | CONFIG_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 | |||
1179 | CONFIG_SGI_PARTITION=y | 1227 | CONFIG_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 | ||
1182 | CONFIG_EFI_PARTITION=y | 1231 | CONFIG_EFI_PARTITION=y |
1183 | 1232 | ||
1184 | # | 1233 | # |
@@ -1237,28 +1286,32 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
1237 | CONFIG_GENERIC_PENDING_IRQ=y | 1286 | CONFIG_GENERIC_PENDING_IRQ=y |
1238 | 1287 | ||
1239 | # | 1288 | # |
1240 | # Profiling support | 1289 | # Instrumentation Support |
1241 | # | 1290 | # |
1242 | CONFIG_PROFILING=y | 1291 | CONFIG_PROFILING=y |
1243 | CONFIG_OPROFILE=y | 1292 | CONFIG_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 |
1249 | CONFIG_DEBUG_KERNEL=y | ||
1250 | CONFIG_MAGIC_SYSRQ=y | 1299 | CONFIG_MAGIC_SYSRQ=y |
1300 | CONFIG_DEBUG_KERNEL=y | ||
1251 | CONFIG_LOG_BUF_SHIFT=16 | 1301 | CONFIG_LOG_BUF_SHIFT=16 |
1252 | CONFIG_DETECT_SOFTLOCKUP=y | 1302 | CONFIG_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 |
1255 | CONFIG_DEBUG_PREEMPT=y | 1305 | CONFIG_DEBUG_PREEMPT=y |
1306 | CONFIG_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 |
1313 | CONFIG_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 |
1263 | CONFIG_IA64_GRANULE_64MB=y | 1316 | CONFIG_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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CLEAN_COMPILE=y | ||
12 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
24 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
25 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
26 | CONFIG_HOTPLUG=y | ||
27 | CONFIG_KOBJECT_UEVENT=y | ||
28 | CONFIG_IKCONFIG=y | 25 | CONFIG_IKCONFIG=y |
29 | CONFIG_IKCONFIG_PROC=y | 26 | CONFIG_IKCONFIG_PROC=y |
30 | # CONFIG_CPUSETS is not set | 27 | # CONFIG_CPUSETS is not set |
31 | CONFIG_INITRAMFS_SOURCE="" | 28 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
32 | # CONFIG_EMBEDDED is not set | 30 | # CONFIG_EMBEDDED is not set |
33 | CONFIG_KALLSYMS=y | 31 | CONFIG_KALLSYMS=y |
34 | CONFIG_KALLSYMS_ALL=y | 32 | CONFIG_KALLSYMS_ALL=y |
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
34 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_PRINTK=y | 35 | CONFIG_PRINTK=y |
37 | CONFIG_BUG=y | 36 | CONFIG_BUG=y |
37 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | 38 | CONFIG_BASE_FULL=y |
39 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
43 | CONFIG_CC_ALIGN_LABELS=0 | 43 | CONFIG_CC_ALIGN_LABELS=0 |
44 | CONFIG_CC_ALIGN_LOOPS=0 | 44 | CONFIG_CC_ALIGN_LOOPS=0 |
45 | CONFIG_CC_ALIGN_JUMPS=0 | 45 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | CONFIG_SLAB=y | ||
46 | # CONFIG_TINY_SHMEM is not set | 47 | # CONFIG_TINY_SHMEM is not set |
47 | CONFIG_BASE_SMALL=0 | 48 | CONFIG_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 | |||
59 | CONFIG_STOP_MACHINE=y | 61 | CONFIG_STOP_MACHINE=y |
60 | 62 | ||
61 | # | 63 | # |
64 | # Block layer | ||
65 | # | ||
66 | |||
67 | # | ||
68 | # IO Schedulers | ||
69 | # | ||
70 | CONFIG_IOSCHED_NOOP=y | ||
71 | CONFIG_IOSCHED_AS=y | ||
72 | CONFIG_IOSCHED_DEADLINE=y | ||
73 | CONFIG_IOSCHED_CFQ=y | ||
74 | CONFIG_DEFAULT_AS=y | ||
75 | # CONFIG_DEFAULT_DEADLINE is not set | ||
76 | # CONFIG_DEFAULT_CFQ is not set | ||
77 | # CONFIG_DEFAULT_NOOP is not set | ||
78 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
79 | |||
80 | # | ||
62 | # Processor type and features | 81 | # Processor type and features |
63 | # | 82 | # |
64 | CONFIG_IA64=y | 83 | CONFIG_IA64=y |
65 | CONFIG_64BIT=y | 84 | CONFIG_64BIT=y |
66 | CONFIG_MMU=y | 85 | CONFIG_MMU=y |
86 | CONFIG_SWIOTLB=y | ||
67 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 87 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
68 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 88 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
69 | CONFIG_TIME_INTERPOLATION=y | 89 | CONFIG_TIME_INTERPOLATION=y |
70 | CONFIG_EFI=y | 90 | CONFIG_EFI=y |
71 | CONFIG_GENERIC_IOMAP=y | 91 | CONFIG_GENERIC_IOMAP=y |
72 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
93 | CONFIG_DMA_IS_DMA32=y | ||
73 | CONFIG_IA64_GENERIC=y | 94 | CONFIG_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 |
83 | CONFIG_IA64_PAGE_SIZE_16KB=y | 104 | CONFIG_IA64_PAGE_SIZE_16KB=y |
84 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 105 | # CONFIG_IA64_PAGE_SIZE_64KB is not set |
106 | CONFIG_PGTABLE_3=y | ||
107 | # CONFIG_PGTABLE_4 is not set | ||
85 | # CONFIG_HZ_100 is not set | 108 | # CONFIG_HZ_100 is not set |
86 | CONFIG_HZ_250=y | 109 | CONFIG_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 | |||
105 | CONFIG_HAVE_MEMORY_PRESENT=y | 128 | CONFIG_HAVE_MEMORY_PRESENT=y |
106 | # CONFIG_SPARSEMEM_STATIC is not set | 129 | # CONFIG_SPARSEMEM_STATIC is not set |
107 | CONFIG_SPARSEMEM_EXTREME=y | 130 | CONFIG_SPARSEMEM_EXTREME=y |
131 | # CONFIG_MEMORY_HOTPLUG is not set | ||
132 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
133 | CONFIG_MIGRATION=y | ||
108 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 134 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
109 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 135 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
110 | CONFIG_ARCH_FLATMEM_ENABLE=y | 136 | CONFIG_ARCH_FLATMEM_ENABLE=y |
@@ -117,13 +143,13 @@ CONFIG_COMPAT=y | |||
117 | CONFIG_IA64_MCA_RECOVERY=y | 143 | CONFIG_IA64_MCA_RECOVERY=y |
118 | CONFIG_PERFMON=y | 144 | CONFIG_PERFMON=y |
119 | CONFIG_IA64_PALINFO=y | 145 | CONFIG_IA64_PALINFO=y |
146 | CONFIG_SGI_SN=y | ||
120 | 147 | ||
121 | # | 148 | # |
122 | # Firmware Drivers | 149 | # Firmware Drivers |
123 | # | 150 | # |
124 | CONFIG_EFI_VARS=y | 151 | CONFIG_EFI_VARS=y |
125 | CONFIG_EFI_PCDP=y | 152 | CONFIG_EFI_PCDP=y |
126 | # CONFIG_DELL_RBU is not set | ||
127 | CONFIG_BINFMT_ELF=y | 153 | CONFIG_BINFMT_ELF=y |
128 | CONFIG_BINFMT_MISC=m | 154 | CONFIG_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 | # |
133 | CONFIG_PM=y | 159 | CONFIG_PM=y |
160 | CONFIG_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 | |||
145 | CONFIG_ACPI_NUMA=y | 172 | CONFIG_ACPI_NUMA=y |
146 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 173 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
147 | # CONFIG_ACPI_DEBUG is not set | 174 | # CONFIG_ACPI_DEBUG is not set |
175 | CONFIG_ACPI_EC=y | ||
148 | CONFIG_ACPI_POWER=y | 176 | CONFIG_ACPI_POWER=y |
149 | CONFIG_ACPI_SYSTEM=y | 177 | CONFIG_ACPI_SYSTEM=y |
150 | CONFIG_ACPI_CONTAINER=m | 178 | CONFIG_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 | ||
190 | CONFIG_PACKET=y | 219 | CONFIG_PACKET=y |
191 | # CONFIG_PACKET_MMAP is not set | 220 | # CONFIG_PACKET_MMAP is not set |
192 | CONFIG_UNIX=y | 221 | CONFIG_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 | |||
295 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 332 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
296 | CONFIG_BLK_DEV_INITRD=y | 333 | CONFIG_BLK_DEV_INITRD=y |
297 | # CONFIG_CDROM_PKTCDVD is not set | 334 | # CONFIG_CDROM_PKTCDVD is not set |
298 | |||
299 | # | ||
300 | # IO Schedulers | ||
301 | # | ||
302 | CONFIG_IOSCHED_NOOP=y | ||
303 | CONFIG_IOSCHED_AS=y | ||
304 | CONFIG_IOSCHED_DEADLINE=y | ||
305 | CONFIG_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 | # |
311 | CONFIG_IDE=y | 340 | CONFIG_IDE=y |
341 | CONFIG_IDE_MAX_HWIFS=4 | ||
312 | CONFIG_BLK_DEV_IDE=y | 342 | CONFIG_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 | ||
412 | CONFIG_SCSI_SATA=y | 444 | CONFIG_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 |
438 | CONFIG_SCSI_QLOGIC_1280=y | 472 | CONFIG_SCSI_QLOGIC_1280=y |
439 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 473 | # CONFIG_SCSI_QLA_FC is not set |
440 | CONFIG_SCSI_QLA2XXX=y | ||
441 | CONFIG_SCSI_QLA21XX=m | ||
442 | CONFIG_SCSI_QLA22XX=m | ||
443 | CONFIG_SCSI_QLA2300=m | ||
444 | CONFIG_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 | |||
476 | CONFIG_FUSION=y | 503 | CONFIG_FUSION=y |
477 | CONFIG_FUSION_SPI=y | 504 | CONFIG_FUSION_SPI=y |
478 | CONFIG_FUSION_FC=m | 505 | CONFIG_FUSION_FC=m |
506 | # CONFIG_FUSION_SAS is not set | ||
479 | CONFIG_FUSION_MAX_SGE=128 | 507 | CONFIG_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 | |||
515 | CONFIG_MII=m | 543 | CONFIG_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 |
569 | CONFIG_TIGON3=y | 599 | CONFIG_TIGON3=y |
@@ -668,12 +698,15 @@ CONFIG_VT=y | |||
668 | CONFIG_VT_CONSOLE=y | 698 | CONFIG_VT_CONSOLE=y |
669 | CONFIG_HW_CONSOLE=y | 699 | CONFIG_HW_CONSOLE=y |
670 | CONFIG_SERIAL_NONSTANDARD=y | 700 | CONFIG_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 | |||
689 | CONFIG_SERIAL_8250_CONSOLE=y | 722 | CONFIG_SERIAL_8250_CONSOLE=y |
690 | CONFIG_SERIAL_8250_ACPI=y | 723 | CONFIG_SERIAL_8250_ACPI=y |
691 | CONFIG_SERIAL_8250_NR_UARTS=6 | 724 | CONFIG_SERIAL_8250_NR_UARTS=6 |
725 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
692 | CONFIG_SERIAL_8250_EXTENDED=y | 726 | CONFIG_SERIAL_8250_EXTENDED=y |
693 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 727 | CONFIG_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 |
740 | CONFIG_RAW_DRIVER=m | 774 | CONFIG_RAW_DRIVER=m |
775 | CONFIG_MAX_RAW_DEVS=256 | ||
741 | CONFIG_HPET=y | 776 | CONFIG_HPET=y |
742 | # CONFIG_HPET_RTC_IRQ is not set | 777 | # CONFIG_HPET_RTC_IRQ is not set |
743 | CONFIG_HPET_MMAP=y | 778 | CONFIG_HPET_MMAP=y |
744 | CONFIG_MAX_RAW_DEVS=256 | ||
745 | # CONFIG_HANGCHECK_TIMER is not set | 779 | # CONFIG_HANGCHECK_TIMER is not set |
746 | CONFIG_MMTIMER=y | 780 | CONFIG_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 | # |
766 | CONFIG_HWMON=y | 807 | CONFIG_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 | |||
815 | CONFIG_SND_MIXER_OSS=m | 857 | CONFIG_SND_MIXER_OSS=m |
816 | CONFIG_SND_PCM_OSS=m | 858 | CONFIG_SND_PCM_OSS=m |
817 | CONFIG_SND_SEQUENCER_OSS=y | 859 | CONFIG_SND_SEQUENCER_OSS=y |
860 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
861 | CONFIG_SND_SUPPORT_OLD_API=y | ||
818 | CONFIG_SND_VERBOSE_PRINTK=y | 862 | CONFIG_SND_VERBOSE_PRINTK=y |
819 | # CONFIG_SND_DEBUG is not set | 863 | # CONFIG_SND_DEBUG is not set |
820 | CONFIG_SND_GENERIC_DRIVER=y | ||
821 | 864 | ||
822 | # | 865 | # |
823 | # Generic devices | 866 | # Generic devices |
824 | # | 867 | # |
825 | CONFIG_SND_MPU401_UART=m | 868 | CONFIG_SND_MPU401_UART=m |
826 | CONFIG_SND_OPL3_LIB=m | 869 | CONFIG_SND_OPL3_LIB=m |
870 | CONFIG_SND_AC97_CODEC=m | ||
871 | CONFIG_SND_AC97_BUS=m | ||
827 | CONFIG_SND_DUMMY=m | 872 | CONFIG_SND_DUMMY=m |
828 | CONFIG_SND_VIRMIDI=m | 873 | CONFIG_SND_VIRMIDI=m |
829 | CONFIG_SND_MTPAV=m | 874 | CONFIG_SND_MTPAV=m |
830 | CONFIG_SND_SERIAL_U16550=m | 875 | CONFIG_SND_SERIAL_U16550=m |
831 | CONFIG_SND_MPU401=m | 876 | CONFIG_SND_MPU401=m |
832 | CONFIG_SND_AC97_CODEC=m | ||
833 | CONFIG_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 | ||
892 | CONFIG_SND_CS4281=m | ||
846 | CONFIG_SND_CS46XX=m | 893 | CONFIG_SND_CS46XX=m |
847 | CONFIG_SND_CS46XX_NEW_DSP=y | 894 | CONFIG_SND_CS46XX_NEW_DSP=y |
848 | CONFIG_SND_CS4281=m | ||
849 | CONFIG_SND_EMU10K1=m | 895 | CONFIG_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 | ||
869 | CONFIG_SND_FM801=m | 901 | CONFIG_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 | # |
932 | CONFIG_USB_STORAGE=m | 979 | CONFIG_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 | # |
946 | CONFIG_USB_HID=m | 995 | CONFIG_USB_HID=m |
947 | CONFIG_USB_HIDINPUT=y | 996 | CONFIG_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 |
1044 | CONFIG_INFINIBAND_IPOIB=m | 1095 | CONFIG_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 | |||
1051 | CONFIG_SGI_IOC3=y | 1103 | CONFIG_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 | # |
1056 | CONFIG_EXT2_FS=y | 1112 | CONFIG_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 |
1084 | CONFIG_INOTIFY=y | 1141 | CONFIG_INOTIFY=y |
@@ -1120,6 +1177,7 @@ CONFIG_HUGETLBFS=y | |||
1120 | CONFIG_HUGETLB_PAGE=y | 1177 | CONFIG_HUGETLB_PAGE=y |
1121 | CONFIG_RAMFS=y | 1178 | CONFIG_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 | |||
1189 | CONFIG_SGI_PARTITION=y | 1247 | CONFIG_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 | ||
1192 | CONFIG_EFI_PARTITION=y | 1251 | CONFIG_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 |
1265 | CONFIG_DEBUG_KERNEL=y | ||
1266 | CONFIG_MAGIC_SYSRQ=y | 1325 | CONFIG_MAGIC_SYSRQ=y |
1326 | CONFIG_DEBUG_KERNEL=y | ||
1267 | CONFIG_LOG_BUF_SHIFT=20 | 1327 | CONFIG_LOG_BUF_SHIFT=20 |
1268 | CONFIG_DETECT_SOFTLOCKUP=y | 1328 | CONFIG_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 |
1331 | CONFIG_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 |
1338 | CONFIG_FORCED_INLINING=y | ||
1339 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1277 | CONFIG_IA64_GRANULE_16MB=y | 1340 | CONFIG_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 | # |
8 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
9 | # CONFIG_CLEAN_COMPILE is not set | 11 | CONFIG_LOCK_KERNEL=y |
10 | # CONFIG_STANDALONE is not set | 12 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
11 | CONFIG_BROKEN=y | ||
12 | CONFIG_BROKEN_ON_SMP=y | ||
13 | 13 | ||
14 | # | 14 | # |
15 | # General setup | 15 | # General setup |
16 | # | 16 | # |
17 | CONFIG_LOCALVERSION="" | ||
18 | CONFIG_LOCALVERSION_AUTO=y | ||
17 | CONFIG_SWAP=y | 19 | CONFIG_SWAP=y |
18 | CONFIG_SYSVIPC=y | 20 | CONFIG_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 |
21 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
22 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
23 | CONFIG_LOG_BUF_SHIFT=16 | ||
24 | # CONFIG_HOTPLUG is not set | ||
25 | CONFIG_IKCONFIG=y | 25 | CONFIG_IKCONFIG=y |
26 | CONFIG_IKCONFIG_PROC=y | 26 | CONFIG_IKCONFIG_PROC=y |
27 | # CONFIG_CPUSETS is not set | ||
28 | CONFIG_INITRAMFS_SOURCE="" | ||
29 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
27 | # CONFIG_EMBEDDED is not set | 30 | # CONFIG_EMBEDDED is not set |
28 | CONFIG_KALLSYMS=y | 31 | CONFIG_KALLSYMS=y |
29 | # CONFIG_KALLSYMS_ALL is not set | 32 | # CONFIG_KALLSYMS_ALL is not set |
33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
34 | CONFIG_HOTPLUG=y | ||
35 | CONFIG_PRINTK=y | ||
36 | CONFIG_BUG=y | ||
37 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | ||
30 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
31 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
32 | CONFIG_IOSCHED_NOOP=y | 41 | CONFIG_SHMEM=y |
33 | CONFIG_IOSCHED_AS=y | 42 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
34 | CONFIG_IOSCHED_DEADLINE=y | 43 | CONFIG_CC_ALIGN_LABELS=0 |
35 | CONFIG_IOSCHED_CFQ=y | 44 | CONFIG_CC_ALIGN_LOOPS=0 |
36 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 45 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | CONFIG_SLAB=y | ||
47 | # CONFIG_TINY_SHMEM is not set | ||
48 | CONFIG_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 | |||
43 | CONFIG_MODULE_FORCE_UNLOAD=y | 56 | CONFIG_MODULE_FORCE_UNLOAD=y |
44 | CONFIG_OBSOLETE_MODPARM=y | 57 | CONFIG_OBSOLETE_MODPARM=y |
45 | CONFIG_MODVERSIONS=y | 58 | CONFIG_MODVERSIONS=y |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
46 | CONFIG_KMOD=y | 60 | CONFIG_KMOD=y |
47 | CONFIG_STOP_MACHINE=y | 61 | CONFIG_STOP_MACHINE=y |
48 | 62 | ||
49 | # | 63 | # |
64 | # Block layer | ||
65 | # | ||
66 | |||
67 | # | ||
68 | # IO Schedulers | ||
69 | # | ||
70 | CONFIG_IOSCHED_NOOP=y | ||
71 | CONFIG_IOSCHED_AS=y | ||
72 | CONFIG_IOSCHED_DEADLINE=y | ||
73 | CONFIG_IOSCHED_CFQ=y | ||
74 | CONFIG_DEFAULT_AS=y | ||
75 | # CONFIG_DEFAULT_DEADLINE is not set | ||
76 | # CONFIG_DEFAULT_CFQ is not set | ||
77 | # CONFIG_DEFAULT_NOOP is not set | ||
78 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
79 | |||
80 | # | ||
50 | # Processor type and features | 81 | # Processor type and features |
51 | # | 82 | # |
52 | CONFIG_IA64=y | 83 | CONFIG_IA64=y |
53 | CONFIG_64BIT=y | 84 | CONFIG_64BIT=y |
54 | CONFIG_MMU=y | 85 | CONFIG_MMU=y |
86 | CONFIG_SWIOTLB=y | ||
55 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 87 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
88 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
56 | CONFIG_TIME_INTERPOLATION=y | 89 | CONFIG_TIME_INTERPOLATION=y |
57 | CONFIG_EFI=y | 90 | CONFIG_EFI=y |
91 | CONFIG_GENERIC_IOMAP=y | ||
92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
93 | CONFIG_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 |
62 | CONFIG_IA64_HP_SIM=y | 99 | CONFIG_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 |
68 | CONFIG_IA64_PAGE_SIZE_64KB=y | 105 | CONFIG_IA64_PAGE_SIZE_64KB=y |
106 | CONFIG_PGTABLE_3=y | ||
107 | # CONFIG_PGTABLE_4 is not set | ||
108 | # CONFIG_HZ_100 is not set | ||
109 | CONFIG_HZ_250=y | ||
110 | # CONFIG_HZ_1000 is not set | ||
111 | CONFIG_HZ=250 | ||
69 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 112 | CONFIG_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 |
73 | CONFIG_FORCE_MAX_ZONEORDER=18 | 114 | CONFIG_FORCE_MAX_ZONEORDER=17 |
74 | CONFIG_SMP=y | 115 | CONFIG_SMP=y |
75 | CONFIG_NR_CPUS=64 | 116 | CONFIG_NR_CPUS=64 |
117 | # CONFIG_HOTPLUG_CPU is not set | ||
118 | # CONFIG_SCHED_SMT is not set | ||
76 | CONFIG_PREEMPT=y | 119 | CONFIG_PREEMPT=y |
77 | CONFIG_HAVE_DEC_LOCK=y | 120 | CONFIG_SELECT_MEMORY_MODEL=y |
121 | CONFIG_FLATMEM_MANUAL=y | ||
122 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
123 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
124 | CONFIG_FLATMEM=y | ||
125 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
126 | # CONFIG_SPARSEMEM_STATIC is not set | ||
127 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
128 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
129 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
130 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
131 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
132 | # CONFIG_VIRTUAL_MEM_MAP is not set | ||
78 | CONFIG_IA32_SUPPORT=y | 133 | CONFIG_IA32_SUPPORT=y |
79 | CONFIG_COMPAT=y | 134 | CONFIG_COMPAT=y |
135 | # CONFIG_IA64_MCA_RECOVERY is not set | ||
80 | # CONFIG_PERFMON is not set | 136 | # CONFIG_PERFMON is not set |
81 | CONFIG_IA64_PALINFO=m | 137 | CONFIG_IA64_PALINFO=m |
82 | 138 | ||
@@ -84,7 +140,6 @@ CONFIG_IA64_PALINFO=m | |||
84 | # Firmware Drivers | 140 | # Firmware Drivers |
85 | # | 141 | # |
86 | CONFIG_EFI_VARS=y | 142 | CONFIG_EFI_VARS=y |
87 | # CONFIG_SMBIOS is not set | ||
88 | CONFIG_BINFMT_ELF=y | 143 | CONFIG_BINFMT_ELF=y |
89 | CONFIG_BINFMT_MISC=y | 144 | CONFIG_BINFMT_MISC=y |
90 | 145 | ||
@@ -93,15 +148,98 @@ CONFIG_BINFMT_MISC=y | |||
93 | # | 148 | # |
94 | 149 | ||
95 | # | 150 | # |
151 | # Networking | ||
152 | # | ||
153 | CONFIG_NET=y | ||
154 | |||
155 | # | ||
156 | # Networking options | ||
157 | # | ||
158 | # CONFIG_NETDEBUG is not set | ||
159 | CONFIG_PACKET=y | ||
160 | # CONFIG_PACKET_MMAP is not set | ||
161 | # CONFIG_UNIX is not set | ||
162 | # CONFIG_NET_KEY is not set | ||
163 | CONFIG_INET=y | ||
164 | CONFIG_IP_MULTICAST=y | ||
165 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
166 | CONFIG_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 | ||
177 | CONFIG_INET_DIAG=y | ||
178 | CONFIG_INET_TCP_DIAG=y | ||
179 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
180 | CONFIG_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 | ||
233 | CONFIG_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 | ||
121 | CONFIG_BLK_DEV_LOOP=y | 260 | CONFIG_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 |
124 | CONFIG_BLK_DEV_RAM=y | 263 | CONFIG_BLK_DEV_RAM=y |
264 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
125 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 265 | CONFIG_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 | ||
136 | CONFIG_SCSI=y | 279 | CONFIG_SCSI=y |
137 | CONFIG_SCSI_PROC_FS=y | 280 | CONFIG_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 | # |
158 | CONFIG_SCSI_SPI_ATTRS=y | 302 | CONFIG_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 | # |
190 | CONFIG_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 | # |
195 | CONFIG_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 | ||
200 | CONFIG_INET=y | ||
201 | CONFIG_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 | ||
280 | CONFIG_SOUND_GAMEPORT=y | ||
281 | CONFIG_SERIO=y | ||
282 | # CONFIG_SERIO_I8042 is not set | ||
283 | CONFIG_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 | # | ||
403 | CONFIG_SERIO=y | ||
404 | # CONFIG_SERIO_I8042 is not set | ||
405 | CONFIG_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 | # |
298 | CONFIG_VT=y | 412 | CONFIG_VT=y |
@@ -310,7 +424,6 @@ CONFIG_HW_CONSOLE=y | |||
310 | # | 424 | # |
311 | CONFIG_UNIX98_PTYS=y | 425 | CONFIG_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 | |||
324 | CONFIG_EFI_RTC=y | 437 | CONFIG_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 | # | ||
473 | CONFIG_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 | ||
366 | CONFIG_DUMMY_CONSOLE=y | 505 | CONFIG_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 | # |
385 | CONFIG_EXT2_FS=y | 543 | CONFIG_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 | ||
387 | CONFIG_EXT3_FS=y | 546 | CONFIG_EXT3_FS=y |
388 | # CONFIG_EXT3_FS_XATTR is not set | 547 | # CONFIG_EXT3_FS_XATTR is not set |
389 | CONFIG_JBD=y | 548 | CONFIG_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 |
557 | CONFIG_INOTIFY=y | ||
396 | # CONFIG_QUOTA is not set | 558 | # CONFIG_QUOTA is not set |
559 | CONFIG_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 | |||
415 | CONFIG_PROC_FS=y | 580 | CONFIG_PROC_FS=y |
416 | CONFIG_PROC_KCORE=y | 581 | CONFIG_PROC_KCORE=y |
417 | CONFIG_SYSFS=y | 582 | CONFIG_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 |
421 | CONFIG_HUGETLBFS=y | 584 | CONFIG_HUGETLBFS=y |
422 | CONFIG_HUGETLB_PAGE=y | 585 | CONFIG_HUGETLB_PAGE=y |
423 | CONFIG_RAMFS=y | 586 | CONFIG_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 | |||
448 | CONFIG_NFS_DIRECTIO=y | 613 | CONFIG_NFS_DIRECTIO=y |
449 | CONFIG_NFSD=y | 614 | CONFIG_NFSD=y |
450 | CONFIG_NFSD_V3=y | 615 | CONFIG_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 |
453 | CONFIG_LOCKD=y | 619 | CONFIG_LOCKD=y |
454 | CONFIG_LOCKD_V4=y | 620 | CONFIG_LOCKD_V4=y |
455 | CONFIG_EXPORTFS=y | 621 | CONFIG_EXPORTFS=y |
622 | CONFIG_NFS_COMMON=y | ||
456 | CONFIG_SUNRPC=y | 623 | CONFIG_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 | ||
483 | CONFIG_EFI_PARTITION=y | 652 | CONFIG_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 | ||
493 | CONFIG_CRC32=y | 664 | CONFIG_CRC32=y |
494 | # CONFIG_LIBCRC32C is not set | 665 | # CONFIG_LIBCRC32C is not set |
666 | CONFIG_GENERIC_HARDIRQS=y | ||
667 | CONFIG_GENERIC_IRQ_PROBE=y | ||
668 | CONFIG_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 | |||
502 | CONFIG_HP_SIMSCSI=y | 676 | CONFIG_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 |
513 | CONFIG_IA64_GRANULE_64MB=y | ||
514 | CONFIG_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 |
689 | CONFIG_DEBUG_KERNEL=y | ||
690 | CONFIG_LOG_BUF_SHIFT=16 | ||
691 | CONFIG_DETECT_SOFTLOCKUP=y | ||
692 | # CONFIG_SCHEDSTATS is not set | ||
518 | # CONFIG_DEBUG_SLAB is not set | 693 | # CONFIG_DEBUG_SLAB is not set |
694 | CONFIG_DEBUG_PREEMPT=y | ||
695 | CONFIG_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 | ||
699 | CONFIG_DEBUG_INFO=y | ||
700 | # CONFIG_DEBUG_FS is not set | ||
701 | # CONFIG_DEBUG_VM is not set | ||
702 | CONFIG_FORCED_INLINING=y | ||
703 | # CONFIG_RCU_TORTURE_TEST is not set | ||
704 | # CONFIG_IA64_GRANULE_16MB is not set | ||
705 | CONFIG_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 |
523 | CONFIG_DEBUG_INFO=y | ||
524 | CONFIG_SYSVIPC_COMPAT=y | 710 | CONFIG_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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CLEAN_COMPILE=y | ||
12 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
24 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
25 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
26 | CONFIG_HOTPLUG=y | ||
27 | CONFIG_KOBJECT_UEVENT=y | ||
28 | # CONFIG_IKCONFIG is not set | 25 | # CONFIG_IKCONFIG is not set |
29 | CONFIG_CPUSETS=y | 26 | CONFIG_CPUSETS=y |
30 | CONFIG_INITRAMFS_SOURCE="" | 27 | CONFIG_INITRAMFS_SOURCE="" |
28 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
31 | # CONFIG_EMBEDDED is not set | 29 | # CONFIG_EMBEDDED is not set |
32 | CONFIG_KALLSYMS=y | 30 | CONFIG_KALLSYMS=y |
33 | CONFIG_KALLSYMS_ALL=y | 31 | CONFIG_KALLSYMS_ALL=y |
34 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 32 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
33 | CONFIG_HOTPLUG=y | ||
35 | CONFIG_PRINTK=y | 34 | CONFIG_PRINTK=y |
36 | CONFIG_BUG=y | 35 | CONFIG_BUG=y |
36 | CONFIG_ELF_CORE=y | ||
37 | CONFIG_BASE_FULL=y | 37 | CONFIG_BASE_FULL=y |
38 | CONFIG_FUTEX=y | 38 | CONFIG_FUTEX=y |
39 | CONFIG_EPOLL=y | 39 | CONFIG_EPOLL=y |
@@ -42,8 +42,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
42 | CONFIG_CC_ALIGN_LABELS=0 | 42 | CONFIG_CC_ALIGN_LABELS=0 |
43 | CONFIG_CC_ALIGN_LOOPS=0 | 43 | CONFIG_CC_ALIGN_LOOPS=0 |
44 | CONFIG_CC_ALIGN_JUMPS=0 | 44 | CONFIG_CC_ALIGN_JUMPS=0 |
45 | CONFIG_SLAB=y | ||
45 | # CONFIG_TINY_SHMEM is not set | 46 | # CONFIG_TINY_SHMEM is not set |
46 | CONFIG_BASE_SMALL=0 | 47 | CONFIG_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 | |||
88 | CONFIG_GENERIC_IOMAP=y | 90 | CONFIG_GENERIC_IOMAP=y |
89 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 91 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
90 | CONFIG_IA64_UNCACHED_ALLOCATOR=y | 92 | CONFIG_IA64_UNCACHED_ALLOCATOR=y |
91 | CONFIG_ZONE_DMA_IS_DMA32=y | 93 | CONFIG_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 | |||
126 | CONFIG_NEED_MULTIPLE_NODES=y | 128 | CONFIG_NEED_MULTIPLE_NODES=y |
127 | # CONFIG_SPARSEMEM_STATIC is not set | 129 | # CONFIG_SPARSEMEM_STATIC is not set |
128 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 130 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
131 | CONFIG_MIGRATION=y | ||
129 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 132 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
130 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
131 | CONFIG_ARCH_FLATMEM_ENABLE=y | 134 | CONFIG_ARCH_FLATMEM_ENABLE=y |
@@ -140,6 +143,7 @@ CONFIG_COMPAT=y | |||
140 | CONFIG_IA64_MCA_RECOVERY=y | 143 | CONFIG_IA64_MCA_RECOVERY=y |
141 | CONFIG_PERFMON=y | 144 | CONFIG_PERFMON=y |
142 | CONFIG_IA64_PALINFO=y | 145 | CONFIG_IA64_PALINFO=y |
146 | CONFIG_SGI_SN=y | ||
143 | 147 | ||
144 | # | 148 | # |
145 | # Firmware Drivers | 149 | # Firmware Drivers |
@@ -166,6 +170,7 @@ CONFIG_ACPI=y | |||
166 | CONFIG_ACPI_NUMA=y | 170 | CONFIG_ACPI_NUMA=y |
167 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 171 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
168 | # CONFIG_ACPI_DEBUG is not set | 172 | # CONFIG_ACPI_DEBUG is not set |
173 | CONFIG_ACPI_EC=y | ||
169 | CONFIG_ACPI_POWER=y | 174 | CONFIG_ACPI_POWER=y |
170 | CONFIG_ACPI_SYSTEM=y | 175 | CONFIG_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 | ||
210 | CONFIG_PACKET=y | 216 | CONFIG_PACKET=y |
211 | CONFIG_PACKET_MMAP=y | 217 | CONFIG_PACKET_MMAP=y |
212 | CONFIG_UNIX=y | 218 | CONFIG_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 | # |
332 | CONFIG_IDE=y | 343 | CONFIG_IDE=y |
344 | CONFIG_IDE_MAX_HWIFS=4 | ||
333 | CONFIG_BLK_DEV_IDE=y | 345 | CONFIG_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 |
459 | CONFIG_SCSI_QLOGIC_1280=y | 471 | CONFIG_SCSI_QLOGIC_1280=y |
460 | CONFIG_SCSI_QLA2XXX=y | 472 | # CONFIG_SCSI_QLA_FC is not set |
461 | # CONFIG_SCSI_QLA21XX is not set | ||
462 | CONFIG_SCSI_QLA22XX=y | ||
463 | CONFIG_SCSI_QLA2300=y | ||
464 | CONFIG_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 |
549 | CONFIG_TIGON3=y | 556 | CONFIG_TIGON3=y |
550 | # CONFIG_BNX2 is not set | 557 | # CONFIG_BNX2 is not set |
@@ -632,12 +639,15 @@ CONFIG_VT=y | |||
632 | CONFIG_VT_CONSOLE=y | 639 | CONFIG_VT_CONSOLE=y |
633 | CONFIG_HW_CONSOLE=y | 640 | CONFIG_HW_CONSOLE=y |
634 | CONFIG_SERIAL_NONSTANDARD=y | 641 | CONFIG_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 | |||
686 | CONFIG_AGP_SGI_TIOCA=y | 696 | CONFIG_AGP_SGI_TIOCA=y |
687 | # CONFIG_DRM is not set | 697 | # CONFIG_DRM is not set |
688 | CONFIG_RAW_DRIVER=m | 698 | CONFIG_RAW_DRIVER=m |
689 | # CONFIG_HPET is not set | ||
690 | CONFIG_MAX_RAW_DEVS=256 | 699 | CONFIG_MAX_RAW_DEVS=256 |
700 | # CONFIG_HPET is not set | ||
691 | # CONFIG_HANGCHECK_TIMER is not set | 701 | # CONFIG_HANGCHECK_TIMER is not set |
692 | CONFIG_MMTIMER=y | 702 | CONFIG_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 | # |
798 | CONFIG_USB_HID=m | 815 | CONFIG_USB_HID=m |
799 | CONFIG_USB_HIDINPUT=y | 816 | CONFIG_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 | |||
903 | CONFIG_SGI_IOC3=y | 922 | CONFIG_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 | # |
908 | CONFIG_EXT2_FS=y | 931 | CONFIG_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 |
932 | CONFIG_XFS_POSIX_ACL=y | 955 | CONFIG_XFS_POSIX_ACL=y |
933 | CONFIG_XFS_RT=y | 956 | CONFIG_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 |
936 | CONFIG_INOTIFY=y | 960 | CONFIG_INOTIFY=y |
@@ -973,6 +997,7 @@ CONFIG_HUGETLBFS=y | |||
973 | CONFIG_HUGETLB_PAGE=y | 997 | CONFIG_HUGETLB_PAGE=y |
974 | CONFIG_RAMFS=y | 998 | CONFIG_RAMFS=y |
975 | CONFIG_RELAYFS_FS=m | 999 | CONFIG_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 | |||
1041 | CONFIG_SGI_PARTITION=y | 1066 | CONFIG_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 | ||
1044 | CONFIG_EFI_PARTITION=y | 1070 | CONFIG_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 |
1114 | CONFIG_DEBUG_KERNEL=y | ||
1115 | CONFIG_MAGIC_SYSRQ=y | 1140 | CONFIG_MAGIC_SYSRQ=y |
1141 | CONFIG_DEBUG_KERNEL=y | ||
1116 | CONFIG_LOG_BUF_SHIFT=20 | 1142 | CONFIG_LOG_BUF_SHIFT=20 |
1117 | CONFIG_DETECT_SOFTLOCKUP=y | 1143 | CONFIG_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 |
1120 | CONFIG_DEBUG_PREEMPT=y | 1146 | CONFIG_DEBUG_PREEMPT=y |
1147 | CONFIG_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 |
1124 | CONFIG_DEBUG_INFO=y | 1151 | CONFIG_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 |
1154 | CONFIG_FORCED_INLINING=y | ||
1127 | # CONFIG_RCU_TORTURE_TEST is not set | 1155 | # CONFIG_RCU_TORTURE_TEST is not set |
1128 | CONFIG_IA64_GRANULE_16MB=y | 1156 | CONFIG_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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CLEAN_COMPILE=y | ||
12 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
24 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
25 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
26 | CONFIG_HOTPLUG=y | ||
27 | CONFIG_KOBJECT_UEVENT=y | ||
28 | CONFIG_IKCONFIG=y | 25 | CONFIG_IKCONFIG=y |
29 | CONFIG_IKCONFIG_PROC=y | 26 | CONFIG_IKCONFIG_PROC=y |
30 | # CONFIG_CPUSETS is not set | 27 | # CONFIG_CPUSETS is not set |
31 | CONFIG_INITRAMFS_SOURCE="" | 28 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
32 | # CONFIG_EMBEDDED is not set | 30 | # CONFIG_EMBEDDED is not set |
33 | CONFIG_KALLSYMS=y | 31 | CONFIG_KALLSYMS=y |
34 | CONFIG_KALLSYMS_ALL=y | 32 | CONFIG_KALLSYMS_ALL=y |
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
34 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_PRINTK=y | 35 | CONFIG_PRINTK=y |
37 | CONFIG_BUG=y | 36 | CONFIG_BUG=y |
37 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | 38 | CONFIG_BASE_FULL=y |
39 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
43 | CONFIG_CC_ALIGN_LABELS=0 | 43 | CONFIG_CC_ALIGN_LABELS=0 |
44 | CONFIG_CC_ALIGN_LOOPS=0 | 44 | CONFIG_CC_ALIGN_LOOPS=0 |
45 | CONFIG_CC_ALIGN_JUMPS=0 | 45 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | CONFIG_SLAB=y | ||
46 | # CONFIG_TINY_SHMEM is not set | 47 | # CONFIG_TINY_SHMEM is not set |
47 | CONFIG_BASE_SMALL=0 | 48 | CONFIG_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 | |||
88 | CONFIG_EFI=y | 90 | CONFIG_EFI=y |
89 | CONFIG_GENERIC_IOMAP=y | 91 | CONFIG_GENERIC_IOMAP=y |
90 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
91 | CONFIG_ZONE_DMA_IS_DMA32=y | 93 | CONFIG_DMA_IS_DMA32=y |
92 | # CONFIG_IA64_GENERIC is not set | 94 | # CONFIG_IA64_GENERIC is not set |
93 | CONFIG_IA64_DIG=y | 95 | CONFIG_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 | |||
162 | CONFIG_ACPI_THERMAL=m | 164 | CONFIG_ACPI_THERMAL=m |
163 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 165 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
164 | # CONFIG_ACPI_DEBUG is not set | 166 | # CONFIG_ACPI_DEBUG is not set |
167 | CONFIG_ACPI_EC=y | ||
165 | CONFIG_ACPI_POWER=y | 168 | CONFIG_ACPI_POWER=y |
166 | CONFIG_ACPI_SYSTEM=y | 169 | CONFIG_ACPI_SYSTEM=y |
167 | CONFIG_ACPI_CONTAINER=m | 170 | CONFIG_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 | ||
206 | CONFIG_PACKET=y | 210 | CONFIG_PACKET=y |
207 | # CONFIG_PACKET_MMAP is not set | 211 | # CONFIG_PACKET_MMAP is not set |
208 | CONFIG_UNIX=y | 212 | CONFIG_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 | # |
328 | CONFIG_IDE=y | 337 | CONFIG_IDE=y |
338 | CONFIG_IDE_MAX_HWIFS=4 | ||
329 | CONFIG_BLK_DEV_IDE=y | 339 | CONFIG_BLK_DEV_IDE=y |
330 | 340 | ||
331 | # | 341 | # |
@@ -443,13 +453,7 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | |||
443 | CONFIG_SCSI_QLOGIC_FC=y | 453 | CONFIG_SCSI_QLOGIC_FC=y |
444 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | 454 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set |
445 | CONFIG_SCSI_QLOGIC_1280=y | 455 | CONFIG_SCSI_QLOGIC_1280=y |
446 | CONFIG_SCSI_QLA2XXX=y | 456 | # CONFIG_SCSI_QLA_FC is not set |
447 | CONFIG_SCSI_QLA21XX=m | ||
448 | CONFIG_SCSI_QLA22XX=m | ||
449 | CONFIG_SCSI_QLA2300=m | ||
450 | CONFIG_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 |
577 | CONFIG_TIGON3=y | 582 | CONFIG_TIGON3=y |
@@ -676,12 +681,15 @@ CONFIG_VT=y | |||
676 | CONFIG_VT_CONSOLE=y | 681 | CONFIG_VT_CONSOLE=y |
677 | CONFIG_HW_CONSOLE=y | 682 | CONFIG_HW_CONSOLE=y |
678 | CONFIG_SERIAL_NONSTANDARD=y | 683 | CONFIG_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 | |||
694 | CONFIG_SERIAL_8250_CONSOLE=y | 702 | CONFIG_SERIAL_8250_CONSOLE=y |
695 | CONFIG_SERIAL_8250_ACPI=y | 703 | CONFIG_SERIAL_8250_ACPI=y |
696 | CONFIG_SERIAL_8250_NR_UARTS=6 | 704 | CONFIG_SERIAL_8250_NR_UARTS=6 |
705 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
697 | CONFIG_SERIAL_8250_EXTENDED=y | 706 | CONFIG_SERIAL_8250_EXTENDED=y |
698 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 707 | CONFIG_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 |
740 | CONFIG_RAW_DRIVER=m | 749 | CONFIG_RAW_DRIVER=m |
750 | CONFIG_MAX_RAW_DEVS=256 | ||
741 | CONFIG_HPET=y | 751 | CONFIG_HPET=y |
742 | # CONFIG_HPET_RTC_IRQ is not set | 752 | # CONFIG_HPET_RTC_IRQ is not set |
743 | CONFIG_HPET_MMAP=y | 753 | CONFIG_HPET_MMAP=y |
744 | CONFIG_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 | # |
766 | CONFIG_HWMON=y | 781 | CONFIG_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 | # |
861 | CONFIG_USB_HID=y | 879 | CONFIG_USB_HID=y |
862 | CONFIG_USB_HIDINPUT=y | 880 | CONFIG_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 |
985 | CONFIG_INOTIFY=y | 1006 | CONFIG_INOTIFY=y |
@@ -1021,6 +1042,7 @@ CONFIG_HUGETLBFS=y | |||
1021 | CONFIG_HUGETLB_PAGE=y | 1042 | CONFIG_HUGETLB_PAGE=y |
1022 | CONFIG_RAMFS=y | 1043 | CONFIG_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 | |||
1090 | CONFIG_SGI_PARTITION=y | 1112 | CONFIG_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 | ||
1093 | CONFIG_EFI_PARTITION=y | 1116 | CONFIG_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 |
1160 | CONFIG_DEBUG_KERNEL=y | ||
1161 | CONFIG_MAGIC_SYSRQ=y | 1183 | CONFIG_MAGIC_SYSRQ=y |
1184 | CONFIG_DEBUG_KERNEL=y | ||
1162 | CONFIG_LOG_BUF_SHIFT=20 | 1185 | CONFIG_LOG_BUF_SHIFT=20 |
1163 | CONFIG_DETECT_SOFTLOCKUP=y | 1186 | CONFIG_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 |
1189 | CONFIG_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 |
1196 | CONFIG_FORCED_INLINING=y | ||
1172 | # CONFIG_RCU_TORTURE_TEST is not set | 1197 | # CONFIG_RCU_TORTURE_TEST is not set |
1173 | CONFIG_IA64_GRANULE_16MB=y | 1198 | CONFIG_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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | # CONFIG_CLEAN_COMPILE is not set | ||
12 | CONFIG_BROKEN=y | ||
13 | CONFIG_BROKEN_ON_SMP=y | ||
14 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
15 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
27 | CONFIG_SYSCTL=y | 24 | CONFIG_SYSCTL=y |
28 | # CONFIG_AUDIT is not set | 25 | # CONFIG_AUDIT is not set |
29 | CONFIG_HOTPLUG=y | ||
30 | CONFIG_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 |
33 | CONFIG_INITRAMFS_SOURCE="" | 28 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
34 | # CONFIG_EMBEDDED is not set | 30 | # CONFIG_EMBEDDED is not set |
35 | CONFIG_KALLSYMS=y | 31 | CONFIG_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 |
34 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 35 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 36 | CONFIG_BUG=y |
37 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 38 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
42 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
@@ -45,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
45 | CONFIG_CC_ALIGN_LABELS=0 | 43 | CONFIG_CC_ALIGN_LABELS=0 |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 44 | CONFIG_CC_ALIGN_LOOPS=0 |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 45 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | CONFIG_SLAB=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 47 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 48 | CONFIG_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 | # | ||
68 | CONFIG_IOSCHED_NOOP=y | ||
69 | CONFIG_IOSCHED_AS=y | ||
70 | CONFIG_IOSCHED_DEADLINE=y | ||
71 | CONFIG_IOSCHED_CFQ=y | ||
72 | CONFIG_DEFAULT_AS=y | ||
73 | # CONFIG_DEFAULT_DEADLINE is not set | ||
74 | # CONFIG_DEFAULT_CFQ is not set | ||
75 | # CONFIG_DEFAULT_NOOP is not set | ||
76 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
77 | |||
78 | # | ||
62 | # Processor type and features | 79 | # Processor type and features |
63 | # | 80 | # |
64 | CONFIG_IA64=y | 81 | CONFIG_IA64=y |
65 | CONFIG_64BIT=y | 82 | CONFIG_64BIT=y |
66 | CONFIG_MMU=y | 83 | CONFIG_MMU=y |
84 | CONFIG_SWIOTLB=y | ||
67 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 85 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
68 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 86 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
69 | CONFIG_TIME_INTERPOLATION=y | 87 | CONFIG_TIME_INTERPOLATION=y |
70 | CONFIG_EFI=y | 88 | CONFIG_EFI=y |
71 | CONFIG_GENERIC_IOMAP=y | 89 | CONFIG_GENERIC_IOMAP=y |
72 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 90 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
91 | CONFIG_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 |
75 | CONFIG_IA64_HP_ZX1=y | 94 | CONFIG_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 |
83 | CONFIG_IA64_PAGE_SIZE_16KB=y | 102 | CONFIG_IA64_PAGE_SIZE_16KB=y |
84 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 103 | # CONFIG_IA64_PAGE_SIZE_64KB is not set |
104 | CONFIG_PGTABLE_3=y | ||
105 | # CONFIG_PGTABLE_4 is not set | ||
85 | # CONFIG_HZ_100 is not set | 106 | # CONFIG_HZ_100 is not set |
86 | CONFIG_HZ_250=y | 107 | CONFIG_HZ_250=y |
87 | # CONFIG_HZ_1000 is not set | 108 | # CONFIG_HZ_1000 is not set |
88 | CONFIG_HZ=250 | 109 | CONFIG_HZ=250 |
89 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 110 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
90 | # CONFIG_NUMA is not set | ||
91 | CONFIG_VIRTUAL_MEM_MAP=y | ||
92 | CONFIG_HOLES_IN_ZONE=y | ||
93 | # CONFIG_IA64_CYCLONE is not set | 111 | # CONFIG_IA64_CYCLONE is not set |
94 | CONFIG_IOSAPIC=y | 112 | CONFIG_IOSAPIC=y |
95 | # CONFIG_IA64_SGI_SN_XP is not set | 113 | CONFIG_FORCE_MAX_ZONEORDER=17 |
96 | CONFIG_FORCE_MAX_ZONEORDER=18 | ||
97 | CONFIG_SMP=y | 114 | CONFIG_SMP=y |
98 | CONFIG_NR_CPUS=16 | 115 | CONFIG_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 | |||
106 | CONFIG_FLATMEM=y | 123 | CONFIG_FLATMEM=y |
107 | CONFIG_FLAT_NODE_MEM_MAP=y | 124 | CONFIG_FLAT_NODE_MEM_MAP=y |
108 | # CONFIG_SPARSEMEM_STATIC is not set | 125 | # CONFIG_SPARSEMEM_STATIC is not set |
109 | CONFIG_HAVE_DEC_LOCK=y | 126 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
127 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
128 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
129 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
130 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
131 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | ||
132 | CONFIG_VIRTUAL_MEM_MAP=y | ||
133 | CONFIG_HOLES_IN_ZONE=y | ||
110 | CONFIG_IA32_SUPPORT=y | 134 | CONFIG_IA32_SUPPORT=y |
111 | CONFIG_COMPAT=y | 135 | CONFIG_COMPAT=y |
112 | CONFIG_IA64_MCA_RECOVERY=y | 136 | CONFIG_IA64_MCA_RECOVERY=y |
@@ -118,7 +142,6 @@ CONFIG_IA64_PALINFO=y | |||
118 | # | 142 | # |
119 | CONFIG_EFI_VARS=y | 143 | CONFIG_EFI_VARS=y |
120 | CONFIG_EFI_PCDP=y | 144 | CONFIG_EFI_PCDP=y |
121 | # CONFIG_DELL_RBU is not set | ||
122 | CONFIG_BINFMT_ELF=y | 145 | CONFIG_BINFMT_ELF=y |
123 | CONFIG_BINFMT_MISC=y | 146 | CONFIG_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 | # |
128 | CONFIG_PM=y | 151 | CONFIG_PM=y |
152 | CONFIG_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 | |||
138 | CONFIG_ACPI_THERMAL=y | 162 | CONFIG_ACPI_THERMAL=y |
139 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 163 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
140 | # CONFIG_ACPI_DEBUG is not set | 164 | # CONFIG_ACPI_DEBUG is not set |
165 | CONFIG_ACPI_EC=y | ||
141 | CONFIG_ACPI_POWER=y | 166 | CONFIG_ACPI_POWER=y |
142 | CONFIG_ACPI_SYSTEM=y | 167 | CONFIG_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 | ||
182 | CONFIG_PACKET=y | 208 | CONFIG_PACKET=y |
183 | # CONFIG_PACKET_MMAP is not set | 209 | # CONFIG_PACKET_MMAP is not set |
184 | CONFIG_UNIX=y | 210 | CONFIG_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 | ||
219 | CONFIG_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 | |||
310 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 346 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
311 | CONFIG_BLK_DEV_INITRD=y | 347 | CONFIG_BLK_DEV_INITRD=y |
312 | # CONFIG_CDROM_PKTCDVD is not set | 348 | # CONFIG_CDROM_PKTCDVD is not set |
313 | |||
314 | # | ||
315 | # IO Schedulers | ||
316 | # | ||
317 | CONFIG_IOSCHED_NOOP=y | ||
318 | CONFIG_IOSCHED_AS=y | ||
319 | CONFIG_IOSCHED_DEADLINE=y | ||
320 | CONFIG_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 | # |
326 | CONFIG_IDE=y | 354 | CONFIG_IDE=y |
355 | CONFIG_IDE_MAX_HWIFS=4 | ||
327 | CONFIG_BLK_DEV_IDE=y | 356 | CONFIG_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 | # |
409 | CONFIG_SCSI_SPI_ATTRS=y | 438 | CONFIG_SCSI_SPI_ATTRS=y |
410 | # CONFIG_SCSI_FC_ATTRS is not set | 439 | CONFIG_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 | |||
438 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 466 | CONFIG_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 |
443 | CONFIG_SCSI_QLOGIC_1280=y | 470 | CONFIG_SCSI_QLOGIC_1280=y |
444 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 471 | # CONFIG_SCSI_QLA_FC is not set |
445 | CONFIG_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 | |||
465 | CONFIG_FUSION=y | 485 | CONFIG_FUSION=y |
466 | CONFIG_FUSION_SPI=y | 486 | CONFIG_FUSION_SPI=y |
467 | CONFIG_FUSION_FC=y | 487 | CONFIG_FUSION_FC=y |
488 | # CONFIG_FUSION_SAS is not set | ||
468 | CONFIG_FUSION_MAX_SGE=128 | 489 | CONFIG_FUSION_MAX_SGE=128 |
469 | CONFIG_FUSION_CTL=m | 490 | CONFIG_FUSION_CTL=m |
470 | 491 | ||
@@ -505,6 +526,7 @@ CONFIG_NET_ETHERNET=y | |||
505 | CONFIG_MII=y | 526 | CONFIG_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 |
560 | CONFIG_TIGON3=y | 583 | CONFIG_TIGON3=y |
@@ -652,6 +675,7 @@ CONFIG_SERIAL_8250=y | |||
652 | CONFIG_SERIAL_8250_CONSOLE=y | 675 | CONFIG_SERIAL_8250_CONSOLE=y |
653 | CONFIG_SERIAL_8250_ACPI=y | 676 | CONFIG_SERIAL_8250_ACPI=y |
654 | CONFIG_SERIAL_8250_NR_UARTS=8 | 677 | CONFIG_SERIAL_8250_NR_UARTS=8 |
678 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
655 | CONFIG_SERIAL_8250_EXTENDED=y | 679 | CONFIG_SERIAL_8250_EXTENDED=y |
656 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 680 | CONFIG_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 | |||
824 | CONFIG_FB_CFB_FILLRECT=y | 859 | CONFIG_FB_CFB_FILLRECT=y |
825 | CONFIG_FB_CFB_COPYAREA=y | 860 | CONFIG_FB_CFB_COPYAREA=y |
826 | CONFIG_FB_CFB_IMAGEBLIT=y | 861 | CONFIG_FB_CFB_IMAGEBLIT=y |
827 | CONFIG_FB_SOFT_CURSOR=y | ||
828 | # CONFIG_FB_MACMODES is not set | 862 | # CONFIG_FB_MACMODES is not set |
829 | CONFIG_FB_MODE_HELPERS=y | 863 | CONFIG_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 | |||
860 | CONFIG_VGA_CONSOLE=y | 892 | CONFIG_VGA_CONSOLE=y |
861 | CONFIG_DUMMY_CONSOLE=y | 893 | CONFIG_DUMMY_CONSOLE=y |
862 | CONFIG_FRAMEBUFFER_CONSOLE=y | 894 | CONFIG_FRAMEBUFFER_CONSOLE=y |
895 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
863 | # CONFIG_FONTS is not set | 896 | # CONFIG_FONTS is not set |
864 | CONFIG_FONT_8x8=y | 897 | CONFIG_FONT_8x8=y |
865 | CONFIG_FONT_8x16=y | 898 | CONFIG_FONT_8x16=y |
@@ -892,6 +925,8 @@ CONFIG_SND_OSSEMUL=y | |||
892 | CONFIG_SND_MIXER_OSS=y | 925 | CONFIG_SND_MIXER_OSS=y |
893 | CONFIG_SND_PCM_OSS=y | 926 | CONFIG_SND_PCM_OSS=y |
894 | CONFIG_SND_SEQUENCER_OSS=y | 927 | CONFIG_SND_SEQUENCER_OSS=y |
928 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
929 | CONFIG_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 | # |
901 | CONFIG_SND_MPU401_UART=y | 936 | CONFIG_SND_MPU401_UART=y |
902 | CONFIG_SND_OPL3_LIB=y | 937 | CONFIG_SND_OPL3_LIB=y |
938 | CONFIG_SND_AC97_CODEC=y | ||
939 | CONFIG_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 |
908 | CONFIG_SND_AC97_CODEC=y | ||
909 | CONFIG_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 | ||
944 | CONFIG_SND_FM801=y | 968 | CONFIG_SND_FM801=y |
945 | CONFIG_SND_FM801_TEA575X=y | 969 | CONFIG_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 | # |
1007 | CONFIG_USB_STORAGE=y | 1046 | CONFIG_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 | # |
1022 | CONFIG_USB_HID=y | 1062 | CONFIG_USB_HID=y |
1023 | CONFIG_USB_HIDINPUT=y | 1063 | CONFIG_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 |
1025 | CONFIG_USB_HIDDEV=y | 1066 | CONFIG_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 | |||
1174 | CONFIG_HUGETLB_PAGE=y | 1218 | CONFIG_HUGETLB_PAGE=y |
1175 | CONFIG_RAMFS=y | 1219 | CONFIG_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 | ||
1241 | CONFIG_EFI_PARTITION=y | 1287 | CONFIG_EFI_PARTITION=y |
1242 | 1288 | ||
1243 | # | 1289 | # |
@@ -1296,26 +1342,30 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
1296 | CONFIG_GENERIC_PENDING_IRQ=y | 1342 | CONFIG_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 |
1348 | CONFIG_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 |
1307 | CONFIG_DEBUG_KERNEL=y | ||
1308 | CONFIG_MAGIC_SYSRQ=y | 1354 | CONFIG_MAGIC_SYSRQ=y |
1355 | CONFIG_DEBUG_KERNEL=y | ||
1309 | CONFIG_LOG_BUF_SHIFT=17 | 1356 | CONFIG_LOG_BUF_SHIFT=17 |
1310 | CONFIG_DETECT_SOFTLOCKUP=y | 1357 | CONFIG_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 |
1360 | CONFIG_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 |
1318 | CONFIG_KPROBES=y | 1366 | # CONFIG_DEBUG_VM is not set |
1367 | CONFIG_FORCED_INLINING=y | ||
1368 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1319 | CONFIG_IA64_GRANULE_16MB=y | 1369 | CONFIG_IA64_GRANULE_16MB=y |
1320 | # CONFIG_IA64_GRANULE_64MB is not set | 1370 | # CONFIG_IA64_GRANULE_64MB is not set |
1321 | CONFIG_IA64_PRINT_HAZARDS=y | 1371 | CONFIG_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 | # |
10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
11 | CONFIG_CLEAN_COMPILE=y | ||
12 | CONFIG_LOCK_KERNEL=y | 11 | CONFIG_LOCK_KERNEL=y |
13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 12 | CONFIG_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 |
24 | CONFIG_SYSCTL=y | 23 | CONFIG_SYSCTL=y |
25 | # CONFIG_AUDIT is not set | 24 | # CONFIG_AUDIT is not set |
26 | CONFIG_HOTPLUG=y | ||
27 | CONFIG_KOBJECT_UEVENT=y | ||
28 | CONFIG_IKCONFIG=y | 25 | CONFIG_IKCONFIG=y |
29 | CONFIG_IKCONFIG_PROC=y | 26 | CONFIG_IKCONFIG_PROC=y |
30 | # CONFIG_CPUSETS is not set | 27 | # CONFIG_CPUSETS is not set |
31 | CONFIG_INITRAMFS_SOURCE="" | 28 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
32 | # CONFIG_EMBEDDED is not set | 30 | # CONFIG_EMBEDDED is not set |
33 | CONFIG_KALLSYMS=y | 31 | CONFIG_KALLSYMS=y |
34 | CONFIG_KALLSYMS_ALL=y | 32 | CONFIG_KALLSYMS_ALL=y |
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
34 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_PRINTK=y | 35 | CONFIG_PRINTK=y |
37 | CONFIG_BUG=y | 36 | CONFIG_BUG=y |
37 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | 38 | CONFIG_BASE_FULL=y |
39 | CONFIG_FUTEX=y | 39 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 40 | CONFIG_EPOLL=y |
@@ -43,8 +43,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
43 | CONFIG_CC_ALIGN_LABELS=0 | 43 | CONFIG_CC_ALIGN_LABELS=0 |
44 | CONFIG_CC_ALIGN_LOOPS=0 | 44 | CONFIG_CC_ALIGN_LOOPS=0 |
45 | CONFIG_CC_ALIGN_JUMPS=0 | 45 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | CONFIG_SLAB=y | ||
46 | # CONFIG_TINY_SHMEM is not set | 47 | # CONFIG_TINY_SHMEM is not set |
47 | CONFIG_BASE_SMALL=0 | 48 | CONFIG_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 | |||
59 | CONFIG_STOP_MACHINE=y | 61 | CONFIG_STOP_MACHINE=y |
60 | 62 | ||
61 | # | 63 | # |
64 | # Block layer | ||
65 | # | ||
66 | |||
67 | # | ||
68 | # IO Schedulers | ||
69 | # | ||
70 | CONFIG_IOSCHED_NOOP=y | ||
71 | CONFIG_IOSCHED_AS=y | ||
72 | CONFIG_IOSCHED_DEADLINE=y | ||
73 | CONFIG_IOSCHED_CFQ=y | ||
74 | CONFIG_DEFAULT_AS=y | ||
75 | # CONFIG_DEFAULT_DEADLINE is not set | ||
76 | # CONFIG_DEFAULT_CFQ is not set | ||
77 | # CONFIG_DEFAULT_NOOP is not set | ||
78 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
79 | |||
80 | # | ||
62 | # Processor type and features | 81 | # Processor type and features |
63 | # | 82 | # |
64 | CONFIG_IA64=y | 83 | CONFIG_IA64=y |
65 | CONFIG_64BIT=y | 84 | CONFIG_64BIT=y |
66 | CONFIG_MMU=y | 85 | CONFIG_MMU=y |
86 | CONFIG_SWIOTLB=y | ||
67 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 87 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
68 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 88 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
69 | CONFIG_TIME_INTERPOLATION=y | 89 | CONFIG_TIME_INTERPOLATION=y |
70 | CONFIG_EFI=y | 90 | CONFIG_EFI=y |
71 | CONFIG_GENERIC_IOMAP=y | 91 | CONFIG_GENERIC_IOMAP=y |
72 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
93 | CONFIG_DMA_IS_DMA32=y | ||
73 | CONFIG_IA64_GENERIC=y | 94 | CONFIG_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 |
90 | CONFIG_HZ=250 | 111 | CONFIG_HZ=250 |
91 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 112 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
92 | CONFIG_NUMA=y | ||
93 | CONFIG_VIRTUAL_MEM_MAP=y | ||
94 | CONFIG_HOLES_IN_ZONE=y | ||
95 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
96 | CONFIG_IA64_CYCLONE=y | 113 | CONFIG_IA64_CYCLONE=y |
97 | CONFIG_IOSAPIC=y | 114 | CONFIG_IOSAPIC=y |
98 | # CONFIG_IA64_SGI_SN_XP is not set | 115 | # CONFIG_IA64_SGI_SN_XP is not set |
99 | CONFIG_FORCE_MAX_ZONEORDER=18 | 116 | CONFIG_FORCE_MAX_ZONEORDER=17 |
100 | CONFIG_SMP=y | 117 | CONFIG_SMP=y |
101 | CONFIG_NR_CPUS=512 | 118 | CONFIG_NR_CPUS=512 |
102 | CONFIG_HOTPLUG_CPU=y | 119 | CONFIG_HOTPLUG_CPU=y |
@@ -110,19 +127,29 @@ CONFIG_DISCONTIGMEM=y | |||
110 | CONFIG_FLAT_NODE_MEM_MAP=y | 127 | CONFIG_FLAT_NODE_MEM_MAP=y |
111 | CONFIG_NEED_MULTIPLE_NODES=y | 128 | CONFIG_NEED_MULTIPLE_NODES=y |
112 | # CONFIG_SPARSEMEM_STATIC is not set | 129 | # CONFIG_SPARSEMEM_STATIC is not set |
113 | CONFIG_HAVE_DEC_LOCK=y | 130 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
131 | CONFIG_MIGRATION=y | ||
132 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
134 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
135 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
136 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | ||
137 | CONFIG_NUMA=y | ||
138 | CONFIG_VIRTUAL_MEM_MAP=y | ||
139 | CONFIG_HOLES_IN_ZONE=y | ||
140 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | ||
114 | CONFIG_IA32_SUPPORT=y | 141 | CONFIG_IA32_SUPPORT=y |
115 | CONFIG_COMPAT=y | 142 | CONFIG_COMPAT=y |
116 | CONFIG_IA64_MCA_RECOVERY=y | 143 | CONFIG_IA64_MCA_RECOVERY=y |
117 | CONFIG_PERFMON=y | 144 | CONFIG_PERFMON=y |
118 | CONFIG_IA64_PALINFO=y | 145 | CONFIG_IA64_PALINFO=y |
146 | CONFIG_SGI_SN=y | ||
119 | 147 | ||
120 | # | 148 | # |
121 | # Firmware Drivers | 149 | # Firmware Drivers |
122 | # | 150 | # |
123 | CONFIG_EFI_VARS=y | 151 | CONFIG_EFI_VARS=y |
124 | CONFIG_EFI_PCDP=y | 152 | CONFIG_EFI_PCDP=y |
125 | # CONFIG_DELL_RBU is not set | ||
126 | CONFIG_BINFMT_ELF=y | 153 | CONFIG_BINFMT_ELF=y |
127 | CONFIG_BINFMT_MISC=m | 154 | CONFIG_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 | # |
132 | CONFIG_PM=y | 159 | CONFIG_PM=y |
160 | CONFIG_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 | |||
144 | CONFIG_ACPI_NUMA=y | 172 | CONFIG_ACPI_NUMA=y |
145 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 173 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
146 | # CONFIG_ACPI_DEBUG is not set | 174 | # CONFIG_ACPI_DEBUG is not set |
175 | CONFIG_ACPI_EC=y | ||
147 | CONFIG_ACPI_POWER=y | 176 | CONFIG_ACPI_POWER=y |
148 | CONFIG_ACPI_SYSTEM=y | 177 | CONFIG_ACPI_SYSTEM=y |
149 | CONFIG_ACPI_CONTAINER=m | 178 | CONFIG_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 | ||
189 | CONFIG_PACKET=y | 219 | CONFIG_PACKET=y |
190 | # CONFIG_PACKET_MMAP is not set | 220 | # CONFIG_PACKET_MMAP is not set |
191 | CONFIG_UNIX=y | 221 | CONFIG_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 | |||
301 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 338 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
302 | CONFIG_BLK_DEV_INITRD=y | 339 | CONFIG_BLK_DEV_INITRD=y |
303 | # CONFIG_CDROM_PKTCDVD is not set | 340 | # CONFIG_CDROM_PKTCDVD is not set |
304 | |||
305 | # | ||
306 | # IO Schedulers | ||
307 | # | ||
308 | CONFIG_IOSCHED_NOOP=y | ||
309 | CONFIG_IOSCHED_AS=y | ||
310 | CONFIG_IOSCHED_DEADLINE=y | ||
311 | CONFIG_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 | # |
317 | CONFIG_IDE=y | 346 | CONFIG_IDE=y |
347 | CONFIG_IDE_MAX_HWIFS=4 | ||
318 | CONFIG_BLK_DEV_IDE=y | 348 | CONFIG_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 | ||
419 | CONFIG_SCSI_SATA=y | 451 | CONFIG_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 |
445 | CONFIG_SCSI_QLOGIC_1280=y | 479 | CONFIG_SCSI_QLOGIC_1280=y |
446 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 480 | # CONFIG_SCSI_QLA_FC is not set |
447 | CONFIG_SCSI_QLA2XXX=y | ||
448 | CONFIG_SCSI_QLA21XX=m | ||
449 | CONFIG_SCSI_QLA22XX=m | ||
450 | CONFIG_SCSI_QLA2300=m | ||
451 | CONFIG_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 | |||
483 | CONFIG_FUSION=y | 510 | CONFIG_FUSION=y |
484 | CONFIG_FUSION_SPI=y | 511 | CONFIG_FUSION_SPI=y |
485 | CONFIG_FUSION_FC=m | 512 | CONFIG_FUSION_FC=m |
513 | # CONFIG_FUSION_SAS is not set | ||
486 | CONFIG_FUSION_MAX_SGE=128 | 514 | CONFIG_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 | |||
523 | CONFIG_MII=m | 551 | CONFIG_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 |
577 | CONFIG_TIGON3=y | 607 | CONFIG_TIGON3=y |
@@ -676,12 +706,15 @@ CONFIG_VT=y | |||
676 | CONFIG_VT_CONSOLE=y | 706 | CONFIG_VT_CONSOLE=y |
677 | CONFIG_HW_CONSOLE=y | 707 | CONFIG_HW_CONSOLE=y |
678 | CONFIG_SERIAL_NONSTANDARD=y | 708 | CONFIG_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 | |||
697 | CONFIG_SERIAL_8250_CONSOLE=y | 730 | CONFIG_SERIAL_8250_CONSOLE=y |
698 | CONFIG_SERIAL_8250_ACPI=y | 731 | CONFIG_SERIAL_8250_ACPI=y |
699 | CONFIG_SERIAL_8250_NR_UARTS=6 | 732 | CONFIG_SERIAL_8250_NR_UARTS=6 |
733 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
700 | CONFIG_SERIAL_8250_EXTENDED=y | 734 | CONFIG_SERIAL_8250_EXTENDED=y |
701 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 735 | CONFIG_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 | |||
710 | CONFIG_SERIAL_SGI_L1_CONSOLE=y | 744 | CONFIG_SERIAL_SGI_L1_CONSOLE=y |
711 | # CONFIG_SERIAL_JSM is not set | 745 | # CONFIG_SERIAL_JSM is not set |
712 | CONFIG_SERIAL_SGI_IOC4=y | 746 | CONFIG_SERIAL_SGI_IOC4=y |
747 | # CONFIG_SERIAL_SGI_IOC3 is not set | ||
713 | CONFIG_UNIX98_PTYS=y | 748 | CONFIG_UNIX98_PTYS=y |
714 | CONFIG_LEGACY_PTYS=y | 749 | CONFIG_LEGACY_PTYS=y |
715 | CONFIG_LEGACY_PTY_COUNT=256 | 750 | CONFIG_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 |
747 | CONFIG_RAW_DRIVER=m | 782 | CONFIG_RAW_DRIVER=m |
783 | CONFIG_MAX_RAW_DEVS=256 | ||
748 | CONFIG_HPET=y | 784 | CONFIG_HPET=y |
749 | # CONFIG_HPET_RTC_IRQ is not set | 785 | # CONFIG_HPET_RTC_IRQ is not set |
750 | CONFIG_HPET_MMAP=y | 786 | CONFIG_HPET_MMAP=y |
751 | CONFIG_MAX_RAW_DEVS=256 | ||
752 | # CONFIG_HANGCHECK_TIMER is not set | 787 | # CONFIG_HANGCHECK_TIMER is not set |
753 | CONFIG_MMTIMER=y | 788 | CONFIG_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 | # |
773 | CONFIG_HWMON=y | 815 | CONFIG_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 | |||
822 | CONFIG_SND_MIXER_OSS=m | 865 | CONFIG_SND_MIXER_OSS=m |
823 | CONFIG_SND_PCM_OSS=m | 866 | CONFIG_SND_PCM_OSS=m |
824 | CONFIG_SND_SEQUENCER_OSS=y | 867 | CONFIG_SND_SEQUENCER_OSS=y |
868 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
869 | CONFIG_SND_SUPPORT_OLD_API=y | ||
825 | CONFIG_SND_VERBOSE_PRINTK=y | 870 | CONFIG_SND_VERBOSE_PRINTK=y |
826 | # CONFIG_SND_DEBUG is not set | 871 | # CONFIG_SND_DEBUG is not set |
827 | CONFIG_SND_GENERIC_DRIVER=y | ||
828 | 872 | ||
829 | # | 873 | # |
830 | # Generic devices | 874 | # Generic devices |
831 | # | 875 | # |
832 | CONFIG_SND_MPU401_UART=m | 876 | CONFIG_SND_MPU401_UART=m |
833 | CONFIG_SND_OPL3_LIB=m | 877 | CONFIG_SND_OPL3_LIB=m |
878 | CONFIG_SND_AC97_CODEC=m | ||
879 | CONFIG_SND_AC97_BUS=m | ||
834 | CONFIG_SND_DUMMY=m | 880 | CONFIG_SND_DUMMY=m |
835 | CONFIG_SND_VIRMIDI=m | 881 | CONFIG_SND_VIRMIDI=m |
836 | CONFIG_SND_MTPAV=m | 882 | CONFIG_SND_MTPAV=m |
837 | CONFIG_SND_SERIAL_U16550=m | 883 | CONFIG_SND_SERIAL_U16550=m |
838 | CONFIG_SND_MPU401=m | 884 | CONFIG_SND_MPU401=m |
839 | CONFIG_SND_AC97_CODEC=m | ||
840 | CONFIG_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 | ||
900 | CONFIG_SND_CS4281=m | ||
853 | CONFIG_SND_CS46XX=m | 901 | CONFIG_SND_CS46XX=m |
854 | CONFIG_SND_CS46XX_NEW_DSP=y | 902 | CONFIG_SND_CS46XX_NEW_DSP=y |
855 | CONFIG_SND_CS4281=m | ||
856 | CONFIG_SND_EMU10K1=m | 903 | CONFIG_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 | ||
876 | CONFIG_SND_FM801=m | 909 | CONFIG_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 | # |
939 | CONFIG_USB_STORAGE=m | 987 | CONFIG_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 | # |
953 | CONFIG_USB_HID=m | 1003 | CONFIG_USB_HID=m |
954 | CONFIG_USB_HIDINPUT=y | 1004 | CONFIG_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 |
1051 | CONFIG_INFINIBAND_IPOIB=m | 1103 | CONFIG_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 | # |
1057 | CONFIG_SGI_IOC4=y | 1110 | CONFIG_SGI_IOC4=y |
1111 | CONFIG_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 |
1090 | CONFIG_INOTIFY=y | 1149 | CONFIG_INOTIFY=y |
@@ -1126,6 +1185,7 @@ CONFIG_HUGETLBFS=y | |||
1126 | CONFIG_HUGETLB_PAGE=y | 1185 | CONFIG_HUGETLB_PAGE=y |
1127 | CONFIG_RAMFS=y | 1186 | CONFIG_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 | |||
1195 | CONFIG_SGI_PARTITION=y | 1255 | CONFIG_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 | ||
1198 | CONFIG_EFI_PARTITION=y | 1259 | CONFIG_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 |
1271 | CONFIG_DEBUG_KERNEL=y | ||
1272 | CONFIG_MAGIC_SYSRQ=y | 1333 | CONFIG_MAGIC_SYSRQ=y |
1334 | CONFIG_DEBUG_KERNEL=y | ||
1273 | CONFIG_LOG_BUF_SHIFT=20 | 1335 | CONFIG_LOG_BUF_SHIFT=20 |
1274 | CONFIG_DETECT_SOFTLOCKUP=y | 1336 | CONFIG_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 |
1339 | CONFIG_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 |
1346 | CONFIG_FORCED_INLINING=y | ||
1347 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1283 | CONFIG_IA64_GRANULE_16MB=y | 1348 | CONFIG_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) |
1363 | ENTRY(unaligned_access) | 1363 | ENTRY(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 | ||
27 | extern void die_if_kernel(char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); | 27 | extern 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 | */ | ||
61 | int no_unaligned_warning; | ||
62 | static 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, | |||
579 | char * __init | 579 | char * __init |
580 | pcibios_setup (char *str) | 580 | pcibios_setup (char *str) |
581 | { | 581 | { |
582 | return NULL; | 582 | return str; |
583 | } | 583 | } |
584 | 584 | ||
585 | int | 585 | int |
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); | |||
716 | EXPORT_SYMBOL(sn_pci_controller_fixup); | 716 | EXPORT_SYMBOL(sn_pci_controller_fixup); |
717 | EXPORT_SYMBOL(sn_bus_store_sysdata); | 717 | EXPORT_SYMBOL(sn_bus_store_sysdata); |
718 | EXPORT_SYMBOL(sn_bus_free_sysdata); | 718 | EXPORT_SYMBOL(sn_bus_free_sysdata); |
719 | EXPORT_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 | ||
164 | struct 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 | |||
171 | static void | ||
172 | xlate_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 | |||
191 | asmlinkage long | ||
192 | sys32_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 | |||
204 | asmlinkage int old_readdir(unsigned int fd, void * dirent, unsigned int count); | ||
205 | |||
206 | asmlinkage int | ||
207 | sys32_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 | |||
218 | asmlinkage int | 164 | asmlinkage int |
219 | sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options) | 165 | sys32_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 | ||
545 | int __init fpu_disable(char *s) | 548 | int __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 | */ |
146 | void prom_prepare_cpus(unsigned int max_cpus) | 146 | void 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 | ||
244 | void __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 | */ |
53 | static char maxcpus_string[] __initdata = | 53 | void __init plat_smp_setup(void) |
54 | KERN_WARNING "max_cpus set to 0; using 1 instead\n"; | ||
55 | |||
56 | void __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 | ||
66 | void __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 | ||
143 | void __init prom_prepare_cpus(unsigned int max_cpus) | 143 | void __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 | ||
164 | void __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 | */ |
34 | void __init prom_prepare_cpus(unsigned int max_cpus) | 34 | void __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 | |||
53 | void __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 | ||
964 | config KPROBES | 964 | config 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 */ |
227 | 1: ld r8,CFG_TB_UPDATE_COUNT(r3) | 227 | 1: 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 | } |
894 | EXPORT_SYMBOL_GPL(eeh_add_device_tree_early); | 894 | EXPORT_SYMBOL_GPL(eeh_add_device_tree_early); |
895 | 895 | ||
896 | void 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 | ||
38 | static inline const char * pcid_name (struct pci_dev *pdev) | 38 | static 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 | } |
110 | EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices); | 112 | EXPORT_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 | } |
177 | EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); | 181 | EXPORT_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 | ||
384 | config KPROBES | 384 | config 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. */ | ||
1082 | void __init smp_prepare_cpus(unsigned int max_cpus) | 1083 | void __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 | */ | ||
1106 | void __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 | |||
1108 | void __devinit smp_prepare_boot_cpu(void) | 1118 | void __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 | ||
578 | config KPROBES | 578 | config 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 | ||
965 | int __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); | |||
264 | CFQ_CFQQ_FNS(fifo_expire); | 263 | CFQ_CFQQ_FNS(fifo_expire); |
265 | CFQ_CFQQ_FNS(idle_window); | 264 | CFQ_CFQQ_FNS(idle_window); |
266 | CFQ_CFQQ_FNS(prio_changed); | 265 | CFQ_CFQQ_FNS(prio_changed); |
267 | CFQ_CFQQ_FNS(expired); | ||
268 | #undef CFQ_CFQQ_FNS | 266 | #undef CFQ_CFQQ_FNS |
269 | 267 | ||
270 | enum cfq_rq_state_flags { | 268 | enum cfq_rq_state_flags { |
@@ -336,7 +334,7 @@ static struct request *cfq_find_rq_hash(struct cfq_data *cfqd, sector_t offset) | |||
336 | */ | 334 | */ |
337 | static inline void cfq_schedule_dispatch(struct cfq_data *cfqd) | 335 | static 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 | */ | ||
745 | static 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 | |||
785 | static 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 | ||
802 | static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd) | 850 | static 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 | */ | ||
843 | static 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 | |||
881 | static 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 | |||
897 | static int cfq_arm_slice_timer(struct cfq_data *cfqd, struct cfq_queue *cfqq) | 879 | static 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 |
59 | static char *version = "cm4000_cs.c v2.4.0gm5 - All bugs added by Harald Welte"; | 60 | static 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 | ||
158 | static dev_link_t *dev_table[CM4000_MAX_DEV]; | 159 | static dev_link_t *dev_table[CM4000_MAX_DEV]; |
160 | static 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 | ||
1996 | static int __init cmm_init(void) | 2003 | static 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 | ||
2017 | module_init(cmm_init); | 2035 | module_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 | ||
55 | static char *version = | 56 | static 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 = | |||
67 | static void reader_release(dev_link_t *link); | 68 | static void reader_release(dev_link_t *link); |
68 | 69 | ||
69 | static int major; | 70 | static int major; |
71 | static 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 | ||
756 | static int __init cm4040_init(void) | 763 | static 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 | ||
776 | module_init(cm4040_init); | 793 | module_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 | ||
1121 | static 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 | |||
1121 | static int cp_init_rings (struct cp_private *cp) | 1127 | static 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 | ||
1897 | static int cp_resume (struct pci_dev *pdev) | 1901 | static 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 |
107 | char e1000_driver_version[] = DRV_VERSION; | 107 | char e1000_driver_version[] = DRV_VERSION; |
108 | static char e1000_copyright[] = "Copyright (c) 1999-2005 Intel Corporation."; | 108 | static 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; | |||
96 | module_param(copybreak, int, 0); | 96 | module_param(copybreak, int, 0); |
97 | MODULE_PARM_DESC(copybreak, "Receive copy threshold"); | 97 | MODULE_PARM_DESC(copybreak, "Receive copy threshold"); |
98 | 98 | ||
99 | static int disable_msi = 0; | ||
100 | module_param(disable_msi, int, 0); | ||
101 | MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)"); | ||
102 | |||
103 | static const struct pci_device_id sky2_id_table[] = { | 99 | static 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 */ | ||
3130 | static 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 */ | ||
3150 | static 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 | |||
3184 | static int __devinit sky2_probe(struct pci_dev *pdev, | 3125 | static 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 | ||
3334 | err_out_unregister: | 3261 | err_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 | ||
355 | static 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 | ||
356 | static int pcmcia_device_probe(struct device * dev) | 364 | static 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 | ||
663 | static 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 | |||
672 | static int pcmcia_requery(struct device *dev, void * _data) | 685 | static 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 | */ |
1263 | static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) | 1263 | static 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 | */ | ||
1301 | static 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 | */ |
1340 | int aha152x_host_reset(Scsi_Cmnd * SCpnt) | 1347 | int 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 | */ | ||
1363 | static 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 | |||
1447 | static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) | 1454 | static 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 | ||
333 | struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); | 333 | struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); |
334 | void aha152x_release(struct Scsi_Host *); | 334 | void aha152x_release(struct Scsi_Host *); |
335 | int aha152x_host_reset(Scsi_Cmnd *); | 335 | int 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 | ||
68 | static 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 */ |
90 | static int jazz_esp_detect(struct scsi_host_template *tpnt) | 69 | static 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; | |||
82 | module_param(atapi_enabled, int, 0444); | 82 | module_param(atapi_enabled, int, 0444); |
83 | MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)"); | 83 | MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)"); |
84 | 84 | ||
85 | int libata_fua = 0; | ||
86 | module_param_named(fua, libata_fua, int, 0444); | ||
87 | MODULE_PARM_DESC(fua, "FUA support (0=off, 1=on)"); | ||
88 | |||
85 | MODULE_AUTHOR("Jeff Garzik"); | 89 | MODULE_AUTHOR("Jeff Garzik"); |
86 | MODULE_DESCRIPTION("Library module for ATA devices"); | 90 | MODULE_DESCRIPTION("Library module for ATA devices"); |
87 | MODULE_LICENSE("GPL"); | 91 | MODULE_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 */ |
43 | extern int atapi_enabled; | 43 | extern int atapi_enabled; |
44 | extern int libata_fua; | ||
44 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, | 45 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, |
45 | struct ata_device *dev); | 46 | struct ata_device *dev); |
46 | extern int ata_rwcmd_protocol(struct ata_queued_cmd *qc); | 47 | extern 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 | ||
796 | static 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 | ||
51 | enum { | 51 | enum { |
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); | |||
90 | static const struct pci_device_id sil_pci_tbl[] = { | 92 | static 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) | |||
1498 | static void scsi_softirq_done(struct request *rq) | 1498 | static 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) | |||
299 | static void sunsu_stop_rx(struct uart_port *port) | 299 | static 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 | ||
311 | static void sunsu_enable_ms(struct uart_port *port) | 308 | static 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 | ||
5 | menu "SN Devices" | 5 | menu "SN Devices" |
6 | depends on SGI_SN | ||
6 | 7 | ||
7 | config SGI_IOC4 | 8 | config 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 | ||
20 | config SGI_IOC3 | 21 | config 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 | ||
65 | static inline int nic_read_bit(struct ioc3_driver_data *idd) | 65 | static 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 | ||
80 | static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit) | 80 | static 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 | ||
374 | static inline void | 374 | static void write_ireg(struct ioc3_driver_data *idd, uint32_t val, int which) |
375 | write_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> */ | ||
757 | UNUSUAL_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 | |||
756 | UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, | 763 | UNUSUAL_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 | ||
43 | static int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry) | 43 | int 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 | ||
71 | struct v9fs_fid *v9fs_fid_create(struct dentry *dentry, | 70 | struct 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 | */ | ||
119 | static 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 | |||
163 | clunk_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 | ||
179 | struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry) | 116 | struct 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 | |||
232 | struct 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 { | |||
56 | struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry); | 54 | struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry); |
57 | struct v9fs_fid *v9fs_fid_get_created(struct dentry *); | 55 | struct v9fs_fid *v9fs_fid_get_created(struct dentry *); |
58 | void v9fs_fid_destroy(struct v9fs_fid *fid); | 56 | void v9fs_fid_destroy(struct v9fs_fid *fid); |
59 | struct v9fs_fid *v9fs_fid_create(struct dentry *, | 57 | struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *, int fid); |
60 | struct v9fs_session_info *v9ses, int fid, int create); | 58 | int 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); | |||
51 | int v9fs_file_open(struct inode *inode, struct file *file); | 51 | int v9fs_file_open(struct inode *inode, struct file *file); |
52 | void v9fs_inode2stat(struct inode *inode, struct v9fs_stat *stat); | 52 | void v9fs_inode2stat(struct inode *inode, struct v9fs_stat *stat); |
53 | void v9fs_dentry_release(struct dentry *); | 53 | void v9fs_dentry_release(struct dentry *); |
54 | int 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 | ||
64 | static int v9fs_dentry_validate(struct dentry *dentry, struct nameidata *nd) | 54 | int 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 | ||
120 | struct dentry_operations v9fs_dentry_operations = { | 91 | struct 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 @@ | |||
53 | int v9fs_file_open(struct inode *inode, struct file *file) | 53 | int 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) | 109 | destroy_vfid: |
116 | open_mode |= V9FS_OAPPEND; | 110 | v9fs_fid_destroy(vfid); |
117 | } | ||
118 | 111 | ||
119 | result = v9fs_t_open(v9ses, newfid, open_mode, &fcall); | 112 | clunk_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; | 115 | put_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 | ||
128 | int 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 | ||
164 | struct inode *v9fs_get_inode(struct super_block *sb, int mode) | 196 | struct 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 | |||
234 | static int | 257 | static int |
235 | v9fs_create(struct inode *dir, | 258 | v9fs_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)) { | 297 | error: |
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; | 305 | static struct v9fs_fid* |
318 | if (err < 0) | 306 | v9fs_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); | 345 | clunk_fid: |
352 | if (result < 0) { | 346 | v9fs_t_clunk(v9ses, nfid); |
353 | PRINT_FCALL_ERROR("stat error", fcall); | 347 | |
354 | goto CleanUpFid; | 348 | error: |
355 | } | 349 | kfree(fcall); |
350 | return ERR_PTR(err); | ||
351 | } | ||
356 | 352 | ||
353 | struct inode * | ||
354 | v9fs_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: | 380 | error: |
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 | ||
439 | static int | ||
440 | v9fs_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 | ||
452 | static int | 454 | static int |
453 | v9fs_vfs_create(struct inode *inode, struct dentry *dentry, int perm, | 455 | v9fs_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 | |||
522 | error: | ||
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 | ||
467 | static int v9fs_vfs_mkdir(struct inode *inode, struct dentry *dentry, int mode) | 540 | static 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 | |||
586 | error: | ||
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 | |||
983 | static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry, | 1107 | static 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 | ||
1030 | free_mem: | 1169 | error: |
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); |
@@ -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(); |
781 | out_sysctl: | 781 | out_sysctl: |
782 | unregister_sysctl_table(ocfs2_table_header); | 782 | unregister_sysctl_table(ocfs2_table_header); |
783 | out_o2net: | ||
784 | o2net_exit(); | ||
783 | out: | 785 | out: |
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 | ||
88 | int o2net_init_tcp_sock(struct inode *inode); | ||
89 | int o2net_send_message(u32 msg_type, u32 key, void *data, u32 len, | 88 | int o2net_send_message(u32 msg_type, u32 key, void *data, u32 len, |
90 | u8 target_node, int *status); | 89 | u8 target_node, int *status); |
91 | int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *vec, | 90 | int 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); |
93 | int o2net_broadcast_message(u32 msg_type, u32 key, void *data, u32 len, | ||
94 | struct inode *group); | ||
95 | 92 | ||
96 | int o2net_register_handler(u32 msg_type, u32 key, u32 max_len, | 93 | int 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 | ||
108 | int o2net_init(void); | 105 | int o2net_init(void); |
109 | void o2net_exit(void); | 106 | void o2net_exit(void); |
110 | int o2net_proc_init(struct proc_dir_entry *parent); | ||
111 | void 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 | ||
44 | enum dlm_ast_type { | 42 | enum dlm_ast_type { |
45 | DLM_AST = 0, | 43 | DLM_AST = 0, |
@@ -87,7 +85,7 @@ enum dlm_ctxt_state { | |||
87 | struct dlm_ctxt | 85 | struct 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); | |||
117 | void dlm_dump_lock_resources(struct dlm_ctxt *dlm) | 117 | void 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 | ||
78 | void __dlm_unhash_lockres(struct dlm_lock_resource *lockres) | 78 | void __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 | ||
84 | void __dlm_insert_lockres(struct dlm_ctxt *dlm, | 84 | void __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 | ||
102 | struct dlm_lock_resource * __dlm_lookup_lockres(struct dlm_ctxt *dlm, | 102 | struct 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 | ||
194 | static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm) | 194 | static 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); |
304 | restart: | 304 | restart: |
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 | ||
1853 | static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node) | 1855 | static 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 | ||
72 | static void ocfs2_do_node_down(int node_num, | 73 | static 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 | */ | ||
554 | static 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]++; | ||
569 | out: | ||
570 | spin_unlock(&osb->osb_lock); | ||
571 | return ret; | ||
572 | } | ||
573 | |||
574 | static 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 | |||
547 | static int ocfs2_wipe_inode(struct inode *inode, | 584 | static 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); |
598 | bail: | 640 | bail: |
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 | ||
1411 | static int ocfs2_recover_orphans(struct ocfs2_super *osb, | 1411 | static 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 | ||
1508 | out_unlock: | ||
1514 | ocfs2_meta_unlock(orphan_dir_inode, 0); | 1509 | ocfs2_meta_unlock(orphan_dir_inode, 0); |
1515 | have_disk_lock = 0; | 1510 | out: |
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 | |||
1516 | static 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 | |||
1527 | static 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 | |||
1546 | static 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 | */ | ||
1570 | static 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 | ||
1544 | out: | 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 | ||
1554 | static int ocfs2_wait_on_mount(struct ocfs2_super *osb) | 1616 | static 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 | ||
143 | struct ocfs2_system_inode_info { | 142 | struct 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; | |||
68 | kmem_zone_t *qm_dqtrxzone; | 68 | kmem_zone_t *qm_dqtrxzone; |
69 | STATIC kmem_shaker_t xfs_qm_shaker; | 69 | STATIC kmem_shaker_t xfs_qm_shaker; |
70 | 70 | ||
71 | STATIC cred_t xfs_zerocr; | ||
72 | STATIC xfs_inode_t xfs_zeroino; | ||
73 | |||
71 | STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); | 74 | STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); |
72 | STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); | 75 | STATIC 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); | |||
79 | extern void prom_init_secondary(void); | 81 | extern 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 | */ | ||
86 | extern void plat_smp_setup(void); | ||
87 | |||
88 | /* | ||
89 | * Called after init_IRQ but before __cpu_up. | ||
83 | */ | 90 | */ |
84 | extern void prom_prepare_cpus(unsigned int max_cpus); | 91 | extern 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 | ||
29 | struct pci_dev; | 29 | struct pci_dev; |
30 | struct pci_bus; | ||
30 | struct device_node; | 31 | struct 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 | */ |
62 | void eeh_add_device_early(struct device_node *); | 63 | void eeh_add_device_early(struct device_node *); |
64 | void eeh_add_device_late(struct pci_dev *dev); | ||
63 | void eeh_add_device_tree_early(struct device_node *); | 65 | void eeh_add_device_tree_early(struct device_node *); |
64 | void eeh_add_device_late(struct pci_dev *); | 66 | void 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 | ||
117 | static inline void eeh_add_device_early(struct device_node *dn) { } | 119 | static inline void eeh_add_device_early(struct device_node *dn) { } |
118 | 120 | ||
119 | static inline void eeh_add_device_late(struct pci_dev *dev) { } | ||
120 | |||
121 | static inline void eeh_remove_device(struct pci_dev *dev) { } | 121 | static inline void eeh_remove_device(struct pci_dev *dev) { } |
122 | 122 | ||
123 | static inline void eeh_add_device_tree_early(struct device_node *dn) { } | 123 | static inline void eeh_add_device_tree_early(struct device_node *dn) { } |
124 | 124 | ||
125 | static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } | ||
126 | |||
125 | static inline void eeh_remove_bus_device(struct pci_dev *dev) { } | 127 | static 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 | |||
32 | static 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 | ||
69 | extern 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 | ||
165 | extern int acpi_skip_timer_override; | 165 | extern int acpi_skip_timer_override; |
166 | 166 | ||
167 | extern int unsync_tsc_on_multicluster; | ||
168 | |||
169 | static 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 | ||
11 | struct ipt_log_info { | 12 | struct 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 | ||
11 | struct ip6t_log_info { | 12 | struct 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; | |||
124 | extern int acct_parm[]; | 124 | extern int acct_parm[]; |
125 | #endif | 125 | #endif |
126 | 126 | ||
127 | #ifdef CONFIG_IA64 | ||
128 | extern int no_unaligned_warning; | ||
129 | #endif | ||
130 | |||
127 | static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t, | 131 | static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t, |
128 | ctl_table *, void **); | 132 | ctl_table *, void **); |
129 | static int proc_doutsstring(ctl_table *table, int write, struct file *filp, | 133 | static 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); | ||
958 | out: | 959 | out: |
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); | |||
53 | struct vm_operations_struct generic_file_vm_ops = { | 53 | struct vm_operations_struct generic_file_vm_ops = { |
54 | }; | 54 | }; |
55 | 55 | ||
56 | EXPORT_SYMBOL(vmalloc); | ||
57 | EXPORT_SYMBOL(vfree); | 56 | EXPORT_SYMBOL(vfree); |
58 | EXPORT_SYMBOL(vmalloc_to_page); | 57 | EXPORT_SYMBOL(vmalloc_to_page); |
59 | EXPORT_SYMBOL(vmalloc_32); | 58 | EXPORT_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 | } |
207 | EXPORT_SYMBOL(vmalloc); | ||
208 | |||
209 | void *vmalloc_node(unsigned long size, int node) | ||
210 | { | ||
211 | return vmalloc(size); | ||
212 | } | ||
213 | EXPORT_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 | ||
357 | out: | 357 | out: |
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 | } |
@@ -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 | */ |
217 | void remove_from_swap(struct page *page) | 218 | void 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 | } |
236 | EXPORT_SYMBOL(remove_from_swap); | 244 | EXPORT_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 | ||
172 | static struct ebt_watcher log = | 177 | static 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 | ||
1304 | static inline int is_beacon(int fc) | 1304 | static 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 */ | ||
16 | struct esp_decap_data { | ||
17 | xfrm_address_t saddr; | ||
18 | __u16 sport; | ||
19 | __u8 proto; | ||
20 | }; | ||
21 | |||
22 | static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | 15 | static 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 | ||
245 | out: | 200 | padlen = nexthdr[0]; |
246 | return -EINVAL; | 201 | if (padlen+2 >= elen) |
247 | } | 202 | goto out; |
248 | 203 | ||
249 | static 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 | |||
259 | out: | ||
260 | return -EINVAL; | ||
304 | } | 261 | } |
305 | 262 | ||
306 | static u32 esp4_get_max_size(struct xfrm_state *x, int mtu) | 263 | static 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 | ||
471 | static int __init esp4_init(void) | 427 | static 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 | */ |
18 | static struct nf_queue_handler *queue_handler[NPROTO]; | 19 | static struct nf_queue_handler *queue_handler[NPROTO]; |
19 | static struct nf_queue_rerouter *queue_rerouter; | 20 | static struct nf_queue_rerouter *queue_rerouter[NPROTO]; |
20 | 21 | ||
21 | static DEFINE_RWLOCK(queue_handler_lock); | 22 | static 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 | } |
84 | EXPORT_SYMBOL_GPL(nf_unregister_queue_rerouter); | 86 | EXPORT_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 | ||