diff options
Diffstat (limited to 'arch')
106 files changed, 1465 insertions, 790 deletions
diff --git a/arch/alpha/kernel/alpha_ksyms.c b/arch/alpha/kernel/alpha_ksyms.c index 1898ea79d0e2..9d6186d50245 100644 --- a/arch/alpha/kernel/alpha_ksyms.c +++ b/arch/alpha/kernel/alpha_ksyms.c | |||
@@ -216,8 +216,6 @@ EXPORT_SYMBOL(memcpy); | |||
216 | EXPORT_SYMBOL(memset); | 216 | EXPORT_SYMBOL(memset); |
217 | EXPORT_SYMBOL(memchr); | 217 | EXPORT_SYMBOL(memchr); |
218 | 218 | ||
219 | EXPORT_SYMBOL(get_wchan); | ||
220 | |||
221 | #ifdef CONFIG_ALPHA_IRONGATE | 219 | #ifdef CONFIG_ALPHA_IRONGATE |
222 | EXPORT_SYMBOL(irongate_ioremap); | 220 | EXPORT_SYMBOL(irongate_ioremap); |
223 | EXPORT_SYMBOL(irongate_iounmap); | 221 | EXPORT_SYMBOL(irongate_iounmap); |
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c index 44866cb26a80..7f6a98455e74 100644 --- a/arch/alpha/kernel/core_marvel.c +++ b/arch/alpha/kernel/core_marvel.c | |||
@@ -435,7 +435,7 @@ marvel_specify_io7(char *str) | |||
435 | str = pchar; | 435 | str = pchar; |
436 | } while(*str); | 436 | } while(*str); |
437 | 437 | ||
438 | return 0; | 438 | return 1; |
439 | } | 439 | } |
440 | __setup("io7=", marvel_specify_io7); | 440 | __setup("io7=", marvel_specify_io7); |
441 | 441 | ||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ba46d779ede7..e91db542eb01 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -839,6 +839,8 @@ source "drivers/misc/Kconfig" | |||
839 | 839 | ||
840 | source "drivers/mfd/Kconfig" | 840 | source "drivers/mfd/Kconfig" |
841 | 841 | ||
842 | source "drivers/leds/Kconfig" | ||
843 | |||
842 | source "drivers/media/Kconfig" | 844 | source "drivers/media/Kconfig" |
843 | 845 | ||
844 | source "drivers/video/Kconfig" | 846 | source "drivers/video/Kconfig" |
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c index 978d32e82d39..3cd8c9ee4510 100644 --- a/arch/arm/common/sharpsl_pm.c +++ b/arch/arm/common/sharpsl_pm.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/leds.h> | ||
25 | 26 | ||
26 | #include <asm/hardware.h> | 27 | #include <asm/hardware.h> |
27 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
@@ -75,6 +76,7 @@ static void sharpsl_battery_thread(void *private_); | |||
75 | struct sharpsl_pm_status sharpsl_pm; | 76 | struct sharpsl_pm_status sharpsl_pm; |
76 | DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL); | 77 | DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL); |
77 | DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL); | 78 | DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL); |
79 | DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger); | ||
78 | 80 | ||
79 | 81 | ||
80 | static int get_percentage(int voltage) | 82 | static int get_percentage(int voltage) |
@@ -190,10 +192,10 @@ void sharpsl_pm_led(int val) | |||
190 | dev_err(sharpsl_pm.dev, "Charging Error!\n"); | 192 | dev_err(sharpsl_pm.dev, "Charging Error!\n"); |
191 | } else if (val == SHARPSL_LED_ON) { | 193 | } else if (val == SHARPSL_LED_ON) { |
192 | dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); | 194 | dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); |
193 | 195 | led_trigger_event(sharpsl_charge_led_trigger, LED_FULL); | |
194 | } else { | 196 | } else { |
195 | dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); | 197 | dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); |
196 | 198 | led_trigger_event(sharpsl_charge_led_trigger, LED_OFF); | |
197 | } | 199 | } |
198 | } | 200 | } |
199 | 201 | ||
@@ -786,6 +788,8 @@ static int __init sharpsl_pm_probe(struct platform_device *pdev) | |||
786 | init_timer(&sharpsl_pm.chrg_full_timer); | 788 | init_timer(&sharpsl_pm.chrg_full_timer); |
787 | sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer; | 789 | sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer; |
788 | 790 | ||
791 | led_trigger_register_simple("sharpsl-charge", &sharpsl_charge_led_trigger); | ||
792 | |||
789 | sharpsl_pm.machinfo->init(); | 793 | sharpsl_pm.machinfo->init(); |
790 | 794 | ||
791 | device_create_file(&pdev->dev, &dev_attr_battery_percentage); | 795 | device_create_file(&pdev->dev, &dev_attr_battery_percentage); |
@@ -807,6 +811,8 @@ static int sharpsl_pm_remove(struct platform_device *pdev) | |||
807 | device_remove_file(&pdev->dev, &dev_attr_battery_percentage); | 811 | device_remove_file(&pdev->dev, &dev_attr_battery_percentage); |
808 | device_remove_file(&pdev->dev, &dev_attr_battery_voltage); | 812 | device_remove_file(&pdev->dev, &dev_attr_battery_voltage); |
809 | 813 | ||
814 | led_trigger_unregister_simple(sharpsl_charge_led_trigger); | ||
815 | |||
810 | sharpsl_pm.machinfo->exit(); | 816 | sharpsl_pm.machinfo->exit(); |
811 | 817 | ||
812 | del_timer_sync(&sharpsl_pm.chrg_full_timer); | 818 | del_timer_sync(&sharpsl_pm.chrg_full_timer); |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 489c069e5c3e..1ff75cee4b0d 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -474,4 +474,3 @@ unsigned long get_wchan(struct task_struct *p) | |||
474 | } while (count ++ < 16); | 474 | } while (count ++ < 16); |
475 | return 0; | 475 | return 0; |
476 | } | 476 | } |
477 | EXPORT_SYMBOL(get_wchan); | ||
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 68923b1d2b62..d6d726036361 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -141,6 +141,8 @@ struct corgissp_machinfo corgi_ssp_machinfo = { | |||
141 | */ | 141 | */ |
142 | static struct corgibl_machinfo corgi_bl_machinfo = { | 142 | static struct corgibl_machinfo corgi_bl_machinfo = { |
143 | .max_intensity = 0x2f, | 143 | .max_intensity = 0x2f, |
144 | .default_intensity = 0x1f, | ||
145 | .limit_mask = 0x0b, | ||
144 | .set_bl_intensity = corgi_bl_set_intensity, | 146 | .set_bl_intensity = corgi_bl_set_intensity, |
145 | }; | 147 | }; |
146 | 148 | ||
@@ -164,6 +166,14 @@ static struct platform_device corgikbd_device = { | |||
164 | 166 | ||
165 | 167 | ||
166 | /* | 168 | /* |
169 | * Corgi LEDs | ||
170 | */ | ||
171 | static struct platform_device corgiled_device = { | ||
172 | .name = "corgi-led", | ||
173 | .id = -1, | ||
174 | }; | ||
175 | |||
176 | /* | ||
167 | * Corgi Touch Screen Device | 177 | * Corgi Touch Screen Device |
168 | */ | 178 | */ |
169 | static struct resource corgits_resources[] = { | 179 | static struct resource corgits_resources[] = { |
@@ -297,6 +307,7 @@ static struct platform_device *devices[] __initdata = { | |||
297 | &corgikbd_device, | 307 | &corgikbd_device, |
298 | &corgibl_device, | 308 | &corgibl_device, |
299 | &corgits_device, | 309 | &corgits_device, |
310 | &corgiled_device, | ||
300 | }; | 311 | }; |
301 | 312 | ||
302 | static void __init corgi_init(void) | 313 | static void __init corgi_init(void) |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 0dbb079ecd25..19b372df544a 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -220,6 +220,8 @@ struct corgissp_machinfo spitz_ssp_machinfo = { | |||
220 | * Spitz Backlight Device | 220 | * Spitz Backlight Device |
221 | */ | 221 | */ |
222 | static struct corgibl_machinfo spitz_bl_machinfo = { | 222 | static struct corgibl_machinfo spitz_bl_machinfo = { |
223 | .default_intensity = 0x1f, | ||
224 | .limit_mask = 0x0b, | ||
223 | .max_intensity = 0x2f, | 225 | .max_intensity = 0x2f, |
224 | }; | 226 | }; |
225 | 227 | ||
@@ -242,6 +244,14 @@ static struct platform_device spitzkbd_device = { | |||
242 | 244 | ||
243 | 245 | ||
244 | /* | 246 | /* |
247 | * Spitz LEDs | ||
248 | */ | ||
249 | static struct platform_device spitzled_device = { | ||
250 | .name = "spitz-led", | ||
251 | .id = -1, | ||
252 | }; | ||
253 | |||
254 | /* | ||
245 | * Spitz Touch Screen Device | 255 | * Spitz Touch Screen Device |
246 | */ | 256 | */ |
247 | static struct resource spitzts_resources[] = { | 257 | static struct resource spitzts_resources[] = { |
@@ -418,6 +428,7 @@ static struct platform_device *devices[] __initdata = { | |||
418 | &spitzkbd_device, | 428 | &spitzkbd_device, |
419 | &spitzts_device, | 429 | &spitzts_device, |
420 | &spitzbl_device, | 430 | &spitzbl_device, |
431 | &spitzled_device, | ||
421 | }; | 432 | }; |
422 | 433 | ||
423 | static void __init common_init(void) | 434 | static void __init common_init(void) |
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 66ec71756d0f..76c0e7f0a219 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -251,10 +251,19 @@ static struct platform_device tosakbd_device = { | |||
251 | .id = -1, | 251 | .id = -1, |
252 | }; | 252 | }; |
253 | 253 | ||
254 | /* | ||
255 | * Tosa LEDs | ||
256 | */ | ||
257 | static struct platform_device tosaled_device = { | ||
258 | .name = "tosa-led", | ||
259 | .id = -1, | ||
260 | }; | ||
261 | |||
254 | static struct platform_device *devices[] __initdata = { | 262 | static struct platform_device *devices[] __initdata = { |
255 | &tosascoop_device, | 263 | &tosascoop_device, |
256 | &tosascoop_jc_device, | 264 | &tosascoop_jc_device, |
257 | &tosakbd_device, | 265 | &tosakbd_device, |
266 | &tosaled_device, | ||
258 | }; | 267 | }; |
259 | 268 | ||
260 | static void __init tosa_init(void) | 269 | static void __init tosa_init(void) |
diff --git a/arch/arm26/kernel/armksyms.c b/arch/arm26/kernel/armksyms.c index 811a6376c624..a6a1b3373444 100644 --- a/arch/arm26/kernel/armksyms.c +++ b/arch/arm26/kernel/armksyms.c | |||
@@ -212,8 +212,6 @@ EXPORT_SYMBOL(sys_open); | |||
212 | EXPORT_SYMBOL(sys_exit); | 212 | EXPORT_SYMBOL(sys_exit); |
213 | EXPORT_SYMBOL(sys_wait4); | 213 | EXPORT_SYMBOL(sys_wait4); |
214 | 214 | ||
215 | EXPORT_SYMBOL(get_wchan); | ||
216 | |||
217 | #ifdef CONFIG_PREEMPT | 215 | #ifdef CONFIG_PREEMPT |
218 | EXPORT_SYMBOL(kernel_flag); | 216 | EXPORT_SYMBOL(kernel_flag); |
219 | #endif | 217 | #endif |
diff --git a/arch/frv/kernel/frv_ksyms.c b/arch/frv/kernel/frv_ksyms.c index aa6b7d0a2109..07c8ffa0dd39 100644 --- a/arch/frv/kernel/frv_ksyms.c +++ b/arch/frv/kernel/frv_ksyms.c | |||
@@ -79,8 +79,6 @@ EXPORT_SYMBOL(memmove); | |||
79 | EXPORT_SYMBOL(__outsl_ns); | 79 | EXPORT_SYMBOL(__outsl_ns); |
80 | EXPORT_SYMBOL(__insl_ns); | 80 | EXPORT_SYMBOL(__insl_ns); |
81 | 81 | ||
82 | EXPORT_SYMBOL(get_wchan); | ||
83 | |||
84 | #ifdef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS | 82 | #ifdef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS |
85 | EXPORT_SYMBOL(atomic_test_and_ANDNOT_mask); | 83 | EXPORT_SYMBOL(atomic_test_and_ANDNOT_mask); |
86 | EXPORT_SYMBOL(atomic_test_and_OR_mask); | 84 | EXPORT_SYMBOL(atomic_test_and_OR_mask); |
diff --git a/arch/h8300/kernel/h8300_ksyms.c b/arch/h8300/kernel/h8300_ksyms.c index 69d6ad32d56c..b6cd78c972bb 100644 --- a/arch/h8300/kernel/h8300_ksyms.c +++ b/arch/h8300/kernel/h8300_ksyms.c | |||
@@ -55,8 +55,6 @@ EXPORT_SYMBOL(memcmp); | |||
55 | EXPORT_SYMBOL(memscan); | 55 | EXPORT_SYMBOL(memscan); |
56 | EXPORT_SYMBOL(memmove); | 56 | EXPORT_SYMBOL(memmove); |
57 | 57 | ||
58 | EXPORT_SYMBOL(get_wchan); | ||
59 | |||
60 | /* | 58 | /* |
61 | * libgcc functions - functions that are used internally by the | 59 | * libgcc functions - functions that are used internally by the |
62 | * compiler... (prototypes are not correct though, but that | 60 | * compiler... (prototypes are not correct though, but that |
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index eb5279d23b7f..6273bf74c203 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -415,6 +415,7 @@ void __init init_bsp_APIC(void) | |||
415 | void __devinit setup_local_APIC(void) | 415 | void __devinit setup_local_APIC(void) |
416 | { | 416 | { |
417 | unsigned long oldvalue, value, ver, maxlvt; | 417 | unsigned long oldvalue, value, ver, maxlvt; |
418 | int i, j; | ||
418 | 419 | ||
419 | /* Pound the ESR really hard over the head with a big hammer - mbligh */ | 420 | /* Pound the ESR really hard over the head with a big hammer - mbligh */ |
420 | if (esr_disable) { | 421 | if (esr_disable) { |
@@ -452,6 +453,25 @@ void __devinit setup_local_APIC(void) | |||
452 | apic_write_around(APIC_TASKPRI, value); | 453 | apic_write_around(APIC_TASKPRI, value); |
453 | 454 | ||
454 | /* | 455 | /* |
456 | * After a crash, we no longer service the interrupts and a pending | ||
457 | * interrupt from previous kernel might still have ISR bit set. | ||
458 | * | ||
459 | * Most probably by now CPU has serviced that pending interrupt and | ||
460 | * it might not have done the ack_APIC_irq() because it thought, | ||
461 | * interrupt came from i8259 as ExtInt. LAPIC did not get EOI so it | ||
462 | * does not clear the ISR bit and cpu thinks it has already serivced | ||
463 | * the interrupt. Hence a vector might get locked. It was noticed | ||
464 | * for timer irq (vector 0x31). Issue an extra EOI to clear ISR. | ||
465 | */ | ||
466 | for (i = APIC_ISR_NR - 1; i >= 0; i--) { | ||
467 | value = apic_read(APIC_ISR + i*0x10); | ||
468 | for (j = 31; j >= 0; j--) { | ||
469 | if (value & (1<<j)) | ||
470 | ack_APIC_irq(); | ||
471 | } | ||
472 | } | ||
473 | |||
474 | /* | ||
455 | * Now that we are all set up, enable the APIC | 475 | * Now that we are all set up, enable the APIC |
456 | */ | 476 | */ |
457 | value = apic_read(APIC_SPIV); | 477 | value = apic_read(APIC_SPIV); |
@@ -732,7 +752,7 @@ static int __init apic_set_verbosity(char *str) | |||
732 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" | 752 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" |
733 | " use apic=verbose or apic=debug\n", str); | 753 | " use apic=verbose or apic=debug\n", str); |
734 | 754 | ||
735 | return 0; | 755 | return 1; |
736 | } | 756 | } |
737 | 757 | ||
738 | __setup("apic=", apic_set_verbosity); | 758 | __setup("apic=", apic_set_verbosity); |
diff --git a/arch/i386/kernel/cpu/mcheck/mce.c b/arch/i386/kernel/cpu/mcheck/mce.c index 6170af3c271a..afa0888f9a1e 100644 --- a/arch/i386/kernel/cpu/mcheck/mce.c +++ b/arch/i386/kernel/cpu/mcheck/mce.c | |||
@@ -64,13 +64,13 @@ void mcheck_init(struct cpuinfo_x86 *c) | |||
64 | static int __init mcheck_disable(char *str) | 64 | static int __init mcheck_disable(char *str) |
65 | { | 65 | { |
66 | mce_disabled = 1; | 66 | mce_disabled = 1; |
67 | return 0; | 67 | return 1; |
68 | } | 68 | } |
69 | 69 | ||
70 | static int __init mcheck_enable(char *str) | 70 | static int __init mcheck_enable(char *str) |
71 | { | 71 | { |
72 | mce_disabled = -1; | 72 | mce_disabled = -1; |
73 | return 0; | 73 | return 1; |
74 | } | 74 | } |
75 | 75 | ||
76 | __setup("nomce", mcheck_disable); | 76 | __setup("nomce", mcheck_disable); |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 3b329af4afc5..f8f132aa5472 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -644,7 +644,7 @@ failed: | |||
644 | int __init irqbalance_disable(char *str) | 644 | int __init irqbalance_disable(char *str) |
645 | { | 645 | { |
646 | irqbalance_disabled = 1; | 646 | irqbalance_disabled = 1; |
647 | return 0; | 647 | return 1; |
648 | } | 648 | } |
649 | 649 | ||
650 | __setup("noirqbalance", irqbalance_disable); | 650 | __setup("noirqbalance", irqbalance_disable); |
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 24b3e745478b..6259afea46d1 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -781,7 +781,6 @@ unsigned long get_wchan(struct task_struct *p) | |||
781 | } while (count++ < 16); | 781 | } while (count++ < 16); |
782 | return 0; | 782 | return 0; |
783 | } | 783 | } |
784 | EXPORT_SYMBOL(get_wchan); | ||
785 | 784 | ||
786 | /* | 785 | /* |
787 | * sys_alloc_thread_area: get a yet unused TLS descriptor index. | 786 | * sys_alloc_thread_area: get a yet unused TLS descriptor index. |
diff --git a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S index ce3ef4fa0551..4f58b9c0efe3 100644 --- a/arch/i386/kernel/syscall_table.S +++ b/arch/i386/kernel/syscall_table.S | |||
@@ -313,3 +313,4 @@ ENTRY(sys_call_table) | |||
313 | .long sys_set_robust_list | 313 | .long sys_set_robust_list |
314 | .long sys_get_robust_list | 314 | .long sys_get_robust_list |
315 | .long sys_splice | 315 | .long sys_splice |
316 | .long sys_sync_file_range | ||
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index 6b63a5aa1e46..e38527994590 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -1193,6 +1193,6 @@ void __init trap_init(void) | |||
1193 | static int __init kstack_setup(char *s) | 1193 | static int __init kstack_setup(char *s) |
1194 | { | 1194 | { |
1195 | kstack_depth_to_print = simple_strtoul(s, NULL, 0); | 1195 | kstack_depth_to_print = simple_strtoul(s, NULL, 0); |
1196 | return 0; | 1196 | return 1; |
1197 | } | 1197 | } |
1198 | __setup("kstack=", kstack_setup); | 1198 | __setup("kstack=", kstack_setup); |
diff --git a/arch/i386/kernel/vsyscall-sigreturn.S b/arch/i386/kernel/vsyscall-sigreturn.S index fadb5bc3c374..a92262f41659 100644 --- a/arch/i386/kernel/vsyscall-sigreturn.S +++ b/arch/i386/kernel/vsyscall-sigreturn.S | |||
@@ -44,7 +44,7 @@ __kernel_rt_sigreturn: | |||
44 | .LSTARTCIEDLSI1: | 44 | .LSTARTCIEDLSI1: |
45 | .long 0 /* CIE ID */ | 45 | .long 0 /* CIE ID */ |
46 | .byte 1 /* Version number */ | 46 | .byte 1 /* Version number */ |
47 | .string "zR" /* NUL-terminated augmentation string */ | 47 | .string "zRS" /* NUL-terminated augmentation string */ |
48 | .uleb128 1 /* Code alignment factor */ | 48 | .uleb128 1 /* Code alignment factor */ |
49 | .sleb128 -4 /* Data alignment factor */ | 49 | .sleb128 -4 /* Data alignment factor */ |
50 | .byte 8 /* Return address register column */ | 50 | .byte 8 /* Return address register column */ |
diff --git a/arch/m68k/kernel/m68k_ksyms.c b/arch/m68k/kernel/m68k_ksyms.c index 3d7f2000b714..c3319514a85e 100644 --- a/arch/m68k/kernel/m68k_ksyms.c +++ b/arch/m68k/kernel/m68k_ksyms.c | |||
@@ -79,4 +79,3 @@ EXPORT_SYMBOL(__down_failed_interruptible); | |||
79 | EXPORT_SYMBOL(__down_failed_trylock); | 79 | EXPORT_SYMBOL(__down_failed_trylock); |
80 | EXPORT_SYMBOL(__up_wakeup); | 80 | EXPORT_SYMBOL(__up_wakeup); |
81 | 81 | ||
82 | EXPORT_SYMBOL(get_wchan); | ||
diff --git a/arch/m68knommu/kernel/m68k_ksyms.c b/arch/m68knommu/kernel/m68k_ksyms.c index d844c755945a..f9b4ea16c099 100644 --- a/arch/m68knommu/kernel/m68k_ksyms.c +++ b/arch/m68knommu/kernel/m68k_ksyms.c | |||
@@ -57,8 +57,6 @@ EXPORT_SYMBOL(__down_failed_interruptible); | |||
57 | EXPORT_SYMBOL(__down_failed_trylock); | 57 | EXPORT_SYMBOL(__down_failed_trylock); |
58 | EXPORT_SYMBOL(__up_wakeup); | 58 | EXPORT_SYMBOL(__up_wakeup); |
59 | 59 | ||
60 | EXPORT_SYMBOL(get_wchan); | ||
61 | |||
62 | /* | 60 | /* |
63 | * libgcc functions - functions that are used internally by the | 61 | * libgcc functions - functions that are used internally by the |
64 | * compiler... (prototypes are not correct though, but that | 62 | * compiler... (prototypes are not correct though, but that |
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index a8f435d82940..c66db5e5ab62 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -419,4 +419,3 @@ unsigned long get_wchan(struct task_struct *p) | |||
419 | return pc; | 419 | return pc; |
420 | } | 420 | } |
421 | 421 | ||
422 | EXPORT_SYMBOL(get_wchan); | ||
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 6b3c50964ca9..2fdf21989dc2 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -177,14 +177,10 @@ config ARCH_DISCONTIGMEM_DEFAULT | |||
177 | def_bool y | 177 | def_bool y |
178 | depends on ARCH_DISCONTIGMEM_ENABLE | 178 | depends on ARCH_DISCONTIGMEM_ENABLE |
179 | 179 | ||
180 | source "kernel/Kconfig.preempt" | ||
180 | source "kernel/Kconfig.hz" | 181 | source "kernel/Kconfig.hz" |
181 | source "mm/Kconfig" | 182 | source "mm/Kconfig" |
182 | 183 | ||
183 | config PREEMPT | ||
184 | bool | ||
185 | # bool "Preemptible Kernel" | ||
186 | default n | ||
187 | |||
188 | config COMPAT | 184 | config COMPAT |
189 | def_bool y | 185 | def_bool y |
190 | depends on 64BIT | 186 | depends on 64BIT |
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig index 3e013f55df64..41fd0696bbe7 100644 --- a/arch/parisc/configs/712_defconfig +++ b/arch/parisc/configs/712_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc5-pa1 | 3 | # Linux kernel version: 2.6.16-pa6 |
4 | # Fri Oct 21 23:04:34 2005 | 4 | # Sun Mar 26 19:59:51 2006 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -10,14 +10,11 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
14 | 13 | ||
15 | # | 14 | # |
16 | # Code maturity level options | 15 | # Code maturity level options |
17 | # | 16 | # |
18 | CONFIG_EXPERIMENTAL=y | 17 | CONFIG_EXPERIMENTAL=y |
19 | # CONFIG_CLEAN_COMPILE is not set | ||
20 | CONFIG_BROKEN=y | ||
21 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
22 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
23 | 20 | ||
@@ -32,17 +29,18 @@ CONFIG_POSIX_MQUEUE=y | |||
32 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
33 | CONFIG_SYSCTL=y | 30 | CONFIG_SYSCTL=y |
34 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
35 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_KOBJECT_UEVENT=y | ||
37 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
38 | CONFIG_IKCONFIG_PROC=y | 33 | CONFIG_IKCONFIG_PROC=y |
39 | CONFIG_INITRAMFS_SOURCE="" | 34 | CONFIG_INITRAMFS_SOURCE="" |
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
40 | # CONFIG_EMBEDDED is not set | 36 | # CONFIG_EMBEDDED is not set |
41 | CONFIG_KALLSYMS=y | 37 | CONFIG_KALLSYMS=y |
42 | CONFIG_KALLSYMS_ALL=y | 38 | CONFIG_KALLSYMS_ALL=y |
43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
40 | CONFIG_HOTPLUG=y | ||
44 | CONFIG_PRINTK=y | 41 | CONFIG_PRINTK=y |
45 | CONFIG_BUG=y | 42 | CONFIG_BUG=y |
43 | CONFIG_ELF_CORE=y | ||
46 | CONFIG_BASE_FULL=y | 44 | CONFIG_BASE_FULL=y |
47 | CONFIG_FUTEX=y | 45 | CONFIG_FUTEX=y |
48 | CONFIG_EPOLL=y | 46 | CONFIG_EPOLL=y |
@@ -51,8 +49,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
51 | CONFIG_CC_ALIGN_LABELS=0 | 49 | CONFIG_CC_ALIGN_LABELS=0 |
52 | CONFIG_CC_ALIGN_LOOPS=0 | 50 | CONFIG_CC_ALIGN_LOOPS=0 |
53 | CONFIG_CC_ALIGN_JUMPS=0 | 51 | CONFIG_CC_ALIGN_JUMPS=0 |
52 | CONFIG_SLAB=y | ||
54 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
55 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
56 | 56 | ||
57 | # | 57 | # |
58 | # Loadable module support | 58 | # Loadable module support |
@@ -66,6 +66,23 @@ CONFIG_OBSOLETE_MODPARM=y | |||
66 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
67 | 67 | ||
68 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | |||
72 | # | ||
73 | # IO Schedulers | ||
74 | # | ||
75 | CONFIG_IOSCHED_NOOP=y | ||
76 | CONFIG_IOSCHED_AS=y | ||
77 | CONFIG_IOSCHED_DEADLINE=y | ||
78 | CONFIG_IOSCHED_CFQ=y | ||
79 | CONFIG_DEFAULT_AS=y | ||
80 | # CONFIG_DEFAULT_DEADLINE is not set | ||
81 | # CONFIG_DEFAULT_CFQ is not set | ||
82 | # CONFIG_DEFAULT_NOOP is not set | ||
83 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
84 | |||
85 | # | ||
69 | # Processor type and features | 86 | # Processor type and features |
70 | # | 87 | # |
71 | # CONFIG_PA7000 is not set | 88 | # CONFIG_PA7000 is not set |
@@ -75,6 +92,10 @@ CONFIG_PA7100LC=y | |||
75 | # CONFIG_PA8X00 is not set | 92 | # CONFIG_PA8X00 is not set |
76 | CONFIG_PA11=y | 93 | CONFIG_PA11=y |
77 | # CONFIG_SMP is not set | 94 | # CONFIG_SMP is not set |
95 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
96 | # CONFIG_PREEMPT_NONE is not set | ||
97 | CONFIG_PREEMPT_VOLUNTARY=y | ||
98 | # CONFIG_PREEMPT is not set | ||
78 | # CONFIG_HZ_100 is not set | 99 | # CONFIG_HZ_100 is not set |
79 | CONFIG_HZ_250=y | 100 | CONFIG_HZ_250=y |
80 | # CONFIG_HZ_1000 is not set | 101 | # CONFIG_HZ_1000 is not set |
@@ -86,7 +107,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
86 | CONFIG_FLATMEM=y | 107 | CONFIG_FLATMEM=y |
87 | CONFIG_FLAT_NODE_MEM_MAP=y | 108 | CONFIG_FLAT_NODE_MEM_MAP=y |
88 | # CONFIG_SPARSEMEM_STATIC is not set | 109 | # CONFIG_SPARSEMEM_STATIC is not set |
89 | # CONFIG_PREEMPT is not set | 110 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
90 | # CONFIG_HPUX is not set | 111 | # CONFIG_HPUX is not set |
91 | 112 | ||
92 | # | 113 | # |
@@ -130,6 +151,7 @@ CONFIG_NET=y | |||
130 | # | 151 | # |
131 | # Networking options | 152 | # Networking options |
132 | # | 153 | # |
154 | # CONFIG_NETDEBUG is not set | ||
133 | CONFIG_PACKET=y | 155 | CONFIG_PACKET=y |
134 | CONFIG_PACKET_MMAP=y | 156 | CONFIG_PACKET_MMAP=y |
135 | CONFIG_UNIX=y | 157 | CONFIG_UNIX=y |
@@ -165,7 +187,12 @@ CONFIG_TCP_CONG_BIC=y | |||
165 | # CONFIG_IPV6 is not set | 187 | # CONFIG_IPV6 is not set |
166 | CONFIG_NETFILTER=y | 188 | CONFIG_NETFILTER=y |
167 | # CONFIG_NETFILTER_DEBUG is not set | 189 | # CONFIG_NETFILTER_DEBUG is not set |
190 | |||
191 | # | ||
192 | # Core Netfilter Configuration | ||
193 | # | ||
168 | # CONFIG_NETFILTER_NETLINK is not set | 194 | # CONFIG_NETFILTER_NETLINK is not set |
195 | # CONFIG_NETFILTER_XTABLES is not set | ||
169 | 196 | ||
170 | # | 197 | # |
171 | # IP: Netfilter Configuration | 198 | # IP: Netfilter Configuration |
@@ -182,64 +209,6 @@ CONFIG_IP_NF_TFTP=m | |||
182 | CONFIG_IP_NF_AMANDA=m | 209 | CONFIG_IP_NF_AMANDA=m |
183 | # CONFIG_IP_NF_PPTP is not set | 210 | # CONFIG_IP_NF_PPTP is not set |
184 | CONFIG_IP_NF_QUEUE=m | 211 | CONFIG_IP_NF_QUEUE=m |
185 | CONFIG_IP_NF_IPTABLES=m | ||
186 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
187 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
188 | CONFIG_IP_NF_MATCH_MAC=m | ||
189 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
190 | CONFIG_IP_NF_MATCH_MARK=m | ||
191 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
192 | CONFIG_IP_NF_MATCH_TOS=m | ||
193 | CONFIG_IP_NF_MATCH_RECENT=m | ||
194 | CONFIG_IP_NF_MATCH_ECN=m | ||
195 | CONFIG_IP_NF_MATCH_DSCP=m | ||
196 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
197 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
198 | CONFIG_IP_NF_MATCH_TTL=m | ||
199 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
200 | CONFIG_IP_NF_MATCH_HELPER=m | ||
201 | CONFIG_IP_NF_MATCH_STATE=m | ||
202 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
203 | CONFIG_IP_NF_MATCH_OWNER=m | ||
204 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
205 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
206 | CONFIG_IP_NF_MATCH_SCTP=m | ||
207 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
208 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
209 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
210 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
211 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
212 | CONFIG_IP_NF_FILTER=m | ||
213 | CONFIG_IP_NF_TARGET_REJECT=m | ||
214 | CONFIG_IP_NF_TARGET_LOG=m | ||
215 | CONFIG_IP_NF_TARGET_ULOG=m | ||
216 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
217 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
218 | CONFIG_IP_NF_NAT=m | ||
219 | CONFIG_IP_NF_NAT_NEEDED=y | ||
220 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
221 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
222 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
223 | CONFIG_IP_NF_TARGET_SAME=m | ||
224 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
225 | CONFIG_IP_NF_NAT_IRC=m | ||
226 | CONFIG_IP_NF_NAT_FTP=m | ||
227 | CONFIG_IP_NF_NAT_TFTP=m | ||
228 | CONFIG_IP_NF_NAT_AMANDA=m | ||
229 | CONFIG_IP_NF_MANGLE=m | ||
230 | CONFIG_IP_NF_TARGET_TOS=m | ||
231 | CONFIG_IP_NF_TARGET_ECN=m | ||
232 | CONFIG_IP_NF_TARGET_DSCP=m | ||
233 | CONFIG_IP_NF_TARGET_MARK=m | ||
234 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
235 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
236 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
237 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
238 | CONFIG_IP_NF_RAW=m | ||
239 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
240 | CONFIG_IP_NF_ARPTABLES=m | ||
241 | CONFIG_IP_NF_ARPFILTER=m | ||
242 | CONFIG_IP_NF_ARP_MANGLE=m | ||
243 | 212 | ||
244 | # | 213 | # |
245 | # DCCP Configuration (EXPERIMENTAL) | 214 | # DCCP Configuration (EXPERIMENTAL) |
@@ -250,6 +219,11 @@ CONFIG_IP_NF_ARP_MANGLE=m | |||
250 | # SCTP Configuration (EXPERIMENTAL) | 219 | # SCTP Configuration (EXPERIMENTAL) |
251 | # | 220 | # |
252 | # CONFIG_IP_SCTP is not set | 221 | # CONFIG_IP_SCTP is not set |
222 | |||
223 | # | ||
224 | # TIPC Configuration (EXPERIMENTAL) | ||
225 | # | ||
226 | # CONFIG_TIPC is not set | ||
253 | # CONFIG_ATM is not set | 227 | # CONFIG_ATM is not set |
254 | # CONFIG_BRIDGE is not set | 228 | # CONFIG_BRIDGE is not set |
255 | # CONFIG_VLAN_8021Q is not set | 229 | # CONFIG_VLAN_8021Q is not set |
@@ -263,8 +237,11 @@ CONFIG_LLC2=m | |||
263 | # CONFIG_NET_DIVERT is not set | 237 | # CONFIG_NET_DIVERT is not set |
264 | # CONFIG_ECONET is not set | 238 | # CONFIG_ECONET is not set |
265 | # CONFIG_WAN_ROUTER is not set | 239 | # CONFIG_WAN_ROUTER is not set |
240 | |||
241 | # | ||
242 | # QoS and/or fair queueing | ||
243 | # | ||
266 | # CONFIG_NET_SCHED is not set | 244 | # CONFIG_NET_SCHED is not set |
267 | # CONFIG_NET_CLS_ROUTE is not set | ||
268 | 245 | ||
269 | # | 246 | # |
270 | # Network testing | 247 | # Network testing |
@@ -304,6 +281,7 @@ CONFIG_PARPORT=y | |||
304 | CONFIG_PARPORT_PC=m | 281 | CONFIG_PARPORT_PC=m |
305 | # CONFIG_PARPORT_PC_FIFO is not set | 282 | # CONFIG_PARPORT_PC_FIFO is not set |
306 | # CONFIG_PARPORT_PC_SUPERIO is not set | 283 | # CONFIG_PARPORT_PC_SUPERIO is not set |
284 | CONFIG_PARPORT_NOT_PC=y | ||
307 | CONFIG_PARPORT_GSC=y | 285 | CONFIG_PARPORT_GSC=y |
308 | # CONFIG_PARPORT_1284 is not set | 286 | # CONFIG_PARPORT_1284 is not set |
309 | 287 | ||
@@ -314,7 +292,6 @@ CONFIG_PARPORT_GSC=y | |||
314 | # | 292 | # |
315 | # Block devices | 293 | # Block devices |
316 | # | 294 | # |
317 | # CONFIG_BLK_DEV_FD is not set | ||
318 | # CONFIG_PARIDE is not set | 295 | # CONFIG_PARIDE is not set |
319 | # CONFIG_BLK_DEV_COW_COMMON is not set | 296 | # CONFIG_BLK_DEV_COW_COMMON is not set |
320 | CONFIG_BLK_DEV_LOOP=y | 297 | CONFIG_BLK_DEV_LOOP=y |
@@ -325,14 +302,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16 | |||
325 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 302 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
326 | CONFIG_BLK_DEV_INITRD=y | 303 | CONFIG_BLK_DEV_INITRD=y |
327 | # CONFIG_CDROM_PKTCDVD is not set | 304 | # CONFIG_CDROM_PKTCDVD is not set |
328 | |||
329 | # | ||
330 | # IO Schedulers | ||
331 | # | ||
332 | CONFIG_IOSCHED_NOOP=y | ||
333 | CONFIG_IOSCHED_AS=y | ||
334 | CONFIG_IOSCHED_DEADLINE=y | ||
335 | CONFIG_IOSCHED_CFQ=y | ||
336 | CONFIG_ATA_OVER_ETH=m | 305 | CONFIG_ATA_OVER_ETH=m |
337 | 306 | ||
338 | # | 307 | # |
@@ -376,6 +345,7 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
376 | # | 345 | # |
377 | # SCSI low-level drivers | 346 | # SCSI low-level drivers |
378 | # | 347 | # |
348 | # CONFIG_ISCSI_TCP is not set | ||
379 | # CONFIG_SCSI_SATA is not set | 349 | # CONFIG_SCSI_SATA is not set |
380 | # CONFIG_SCSI_PPA is not set | 350 | # CONFIG_SCSI_PPA is not set |
381 | # CONFIG_SCSI_IMM is not set | 351 | # CONFIG_SCSI_IMM is not set |
@@ -407,7 +377,6 @@ CONFIG_MD_RAID1=m | |||
407 | # | 377 | # |
408 | # IEEE 1394 (FireWire) support | 378 | # IEEE 1394 (FireWire) support |
409 | # | 379 | # |
410 | # CONFIG_IEEE1394 is not set | ||
411 | 380 | ||
412 | # | 381 | # |
413 | # I2O device support | 382 | # I2O device support |
@@ -471,6 +440,7 @@ CONFIG_PPP_ASYNC=m | |||
471 | CONFIG_PPP_SYNC_TTY=m | 440 | CONFIG_PPP_SYNC_TTY=m |
472 | CONFIG_PPP_DEFLATE=m | 441 | CONFIG_PPP_DEFLATE=m |
473 | CONFIG_PPP_BSDCOMP=m | 442 | CONFIG_PPP_BSDCOMP=m |
443 | CONFIG_PPP_MPPE=m | ||
474 | CONFIG_PPPOE=m | 444 | CONFIG_PPPOE=m |
475 | # CONFIG_SLIP is not set | 445 | # CONFIG_SLIP is not set |
476 | # CONFIG_SHAPER is not set | 446 | # CONFIG_SHAPER is not set |
@@ -516,8 +486,8 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
516 | # CONFIG_KEYBOARD_LKKBD is not set | 486 | # CONFIG_KEYBOARD_LKKBD is not set |
517 | # CONFIG_KEYBOARD_XTKBD is not set | 487 | # CONFIG_KEYBOARD_XTKBD is not set |
518 | # CONFIG_KEYBOARD_NEWTON is not set | 488 | # CONFIG_KEYBOARD_NEWTON is not set |
519 | CONFIG_KEYBOARD_HIL_OLD=y | 489 | # CONFIG_KEYBOARD_HIL_OLD is not set |
520 | # CONFIG_KEYBOARD_HIL is not set | 490 | CONFIG_KEYBOARD_HIL=y |
521 | CONFIG_INPUT_MOUSE=y | 491 | CONFIG_INPUT_MOUSE=y |
522 | CONFIG_MOUSE_PS2=y | 492 | CONFIG_MOUSE_PS2=y |
523 | CONFIG_MOUSE_SERIAL=m | 493 | CONFIG_MOUSE_SERIAL=m |
@@ -554,6 +524,7 @@ CONFIG_HW_CONSOLE=y | |||
554 | CONFIG_SERIAL_8250=y | 524 | CONFIG_SERIAL_8250=y |
555 | CONFIG_SERIAL_8250_CONSOLE=y | 525 | CONFIG_SERIAL_8250_CONSOLE=y |
556 | CONFIG_SERIAL_8250_NR_UARTS=17 | 526 | CONFIG_SERIAL_8250_NR_UARTS=17 |
527 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
557 | CONFIG_SERIAL_8250_EXTENDED=y | 528 | CONFIG_SERIAL_8250_EXTENDED=y |
558 | CONFIG_SERIAL_8250_MANY_PORTS=y | 529 | CONFIG_SERIAL_8250_MANY_PORTS=y |
559 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 530 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
@@ -598,6 +569,8 @@ CONFIG_MAX_RAW_DEVS=256 | |||
598 | # | 569 | # |
599 | # TPM devices | 570 | # TPM devices |
600 | # | 571 | # |
572 | # CONFIG_TCG_TPM is not set | ||
573 | # CONFIG_TELCLOCK is not set | ||
601 | 574 | ||
602 | # | 575 | # |
603 | # I2C support | 576 | # I2C support |
@@ -605,6 +578,12 @@ CONFIG_MAX_RAW_DEVS=256 | |||
605 | # CONFIG_I2C is not set | 578 | # CONFIG_I2C is not set |
606 | 579 | ||
607 | # | 580 | # |
581 | # SPI support | ||
582 | # | ||
583 | # CONFIG_SPI is not set | ||
584 | # CONFIG_SPI_MASTER is not set | ||
585 | |||
586 | # | ||
608 | # Dallas's 1-wire bus | 587 | # Dallas's 1-wire bus |
609 | # | 588 | # |
610 | # CONFIG_W1 is not set | 589 | # CONFIG_W1 is not set |
@@ -640,7 +619,6 @@ CONFIG_FB=y | |||
640 | CONFIG_FB_CFB_FILLRECT=y | 619 | CONFIG_FB_CFB_FILLRECT=y |
641 | CONFIG_FB_CFB_COPYAREA=y | 620 | CONFIG_FB_CFB_COPYAREA=y |
642 | CONFIG_FB_CFB_IMAGEBLIT=y | 621 | CONFIG_FB_CFB_IMAGEBLIT=y |
643 | CONFIG_FB_SOFT_CURSOR=y | ||
644 | # CONFIG_FB_MACMODES is not set | 622 | # CONFIG_FB_MACMODES is not set |
645 | CONFIG_FB_MODE_HELPERS=y | 623 | CONFIG_FB_MODE_HELPERS=y |
646 | CONFIG_FB_TILEBLITTING=y | 624 | CONFIG_FB_TILEBLITTING=y |
@@ -655,6 +633,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
655 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 633 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
656 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 634 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
657 | CONFIG_FRAMEBUFFER_CONSOLE=y | 635 | CONFIG_FRAMEBUFFER_CONSOLE=y |
636 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
658 | CONFIG_STI_CONSOLE=y | 637 | CONFIG_STI_CONSOLE=y |
659 | CONFIG_FONTS=y | 638 | CONFIG_FONTS=y |
660 | CONFIG_FONT_8x8=y | 639 | CONFIG_FONT_8x8=y |
@@ -695,6 +674,8 @@ CONFIG_SND_OSSEMUL=y | |||
695 | CONFIG_SND_MIXER_OSS=y | 674 | CONFIG_SND_MIXER_OSS=y |
696 | CONFIG_SND_PCM_OSS=y | 675 | CONFIG_SND_PCM_OSS=y |
697 | CONFIG_SND_SEQUENCER_OSS=y | 676 | CONFIG_SND_SEQUENCER_OSS=y |
677 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
678 | CONFIG_SND_SUPPORT_OLD_API=y | ||
698 | # CONFIG_SND_VERBOSE_PRINTK is not set | 679 | # CONFIG_SND_VERBOSE_PRINTK is not set |
699 | # CONFIG_SND_DEBUG is not set | 680 | # CONFIG_SND_DEBUG is not set |
700 | 681 | ||
@@ -724,6 +705,10 @@ CONFIG_SND_HARMONY=y | |||
724 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 705 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
725 | 706 | ||
726 | # | 707 | # |
708 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
709 | # | ||
710 | |||
711 | # | ||
727 | # USB Gadget Support | 712 | # USB Gadget Support |
728 | # | 713 | # |
729 | # CONFIG_USB_GADGET is not set | 714 | # CONFIG_USB_GADGET is not set |
@@ -736,10 +721,9 @@ CONFIG_SND_HARMONY=y | |||
736 | # | 721 | # |
737 | # InfiniBand support | 722 | # InfiniBand support |
738 | # | 723 | # |
739 | # CONFIG_INFINIBAND is not set | ||
740 | 724 | ||
741 | # | 725 | # |
742 | # SN Devices | 726 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
743 | # | 727 | # |
744 | 728 | ||
745 | # | 729 | # |
@@ -765,6 +749,7 @@ CONFIG_XFS_EXPORT=y | |||
765 | # CONFIG_XFS_SECURITY is not set | 749 | # CONFIG_XFS_SECURITY is not set |
766 | # CONFIG_XFS_POSIX_ACL is not set | 750 | # CONFIG_XFS_POSIX_ACL is not set |
767 | # CONFIG_XFS_RT is not set | 751 | # CONFIG_XFS_RT is not set |
752 | # CONFIG_OCFS2_FS is not set | ||
768 | # CONFIG_MINIX_FS is not set | 753 | # CONFIG_MINIX_FS is not set |
769 | # CONFIG_ROMFS_FS is not set | 754 | # CONFIG_ROMFS_FS is not set |
770 | CONFIG_INOTIFY=y | 755 | CONFIG_INOTIFY=y |
@@ -800,10 +785,10 @@ CONFIG_PROC_FS=y | |||
800 | CONFIG_PROC_KCORE=y | 785 | CONFIG_PROC_KCORE=y |
801 | CONFIG_SYSFS=y | 786 | CONFIG_SYSFS=y |
802 | CONFIG_TMPFS=y | 787 | CONFIG_TMPFS=y |
803 | # CONFIG_HUGETLBFS is not set | ||
804 | # CONFIG_HUGETLB_PAGE is not set | 788 | # CONFIG_HUGETLB_PAGE is not set |
805 | CONFIG_RAMFS=y | 789 | CONFIG_RAMFS=y |
806 | # CONFIG_RELAYFS_FS is not set | 790 | # CONFIG_RELAYFS_FS is not set |
791 | # CONFIG_CONFIGFS_FS is not set | ||
807 | 792 | ||
808 | # | 793 | # |
809 | # Miscellaneous filesystems | 794 | # Miscellaneous filesystems |
@@ -821,7 +806,6 @@ CONFIG_RAMFS=y | |||
821 | # CONFIG_QNX4FS_FS is not set | 806 | # CONFIG_QNX4FS_FS is not set |
822 | # CONFIG_SYSV_FS is not set | 807 | # CONFIG_SYSV_FS is not set |
823 | CONFIG_UFS_FS=m | 808 | CONFIG_UFS_FS=m |
824 | # CONFIG_UFS_FS_WRITE is not set | ||
825 | 809 | ||
826 | # | 810 | # |
827 | # Network File Systems | 811 | # Network File Systems |
@@ -917,18 +901,22 @@ CONFIG_OPROFILE=m | |||
917 | # Kernel hacking | 901 | # Kernel hacking |
918 | # | 902 | # |
919 | # CONFIG_PRINTK_TIME is not set | 903 | # CONFIG_PRINTK_TIME is not set |
920 | CONFIG_DEBUG_KERNEL=y | ||
921 | CONFIG_MAGIC_SYSRQ=y | 904 | CONFIG_MAGIC_SYSRQ=y |
905 | CONFIG_DEBUG_KERNEL=y | ||
922 | CONFIG_LOG_BUF_SHIFT=16 | 906 | CONFIG_LOG_BUF_SHIFT=16 |
923 | CONFIG_DETECT_SOFTLOCKUP=y | 907 | CONFIG_DETECT_SOFTLOCKUP=y |
924 | # CONFIG_SCHEDSTATS is not set | 908 | # CONFIG_SCHEDSTATS is not set |
925 | # CONFIG_DEBUG_SLAB is not set | 909 | # CONFIG_DEBUG_SLAB is not set |
910 | CONFIG_DEBUG_MUTEXES=y | ||
926 | # CONFIG_DEBUG_SPINLOCK is not set | 911 | # CONFIG_DEBUG_SPINLOCK is not set |
927 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 912 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
928 | # CONFIG_DEBUG_KOBJECT is not set | 913 | # CONFIG_DEBUG_KOBJECT is not set |
929 | # CONFIG_DEBUG_INFO is not set | 914 | # CONFIG_DEBUG_INFO is not set |
930 | # CONFIG_DEBUG_IOREMAP is not set | ||
931 | # CONFIG_DEBUG_FS is not set | 915 | # CONFIG_DEBUG_FS is not set |
916 | # CONFIG_DEBUG_VM is not set | ||
917 | CONFIG_FORCED_INLINING=y | ||
918 | # CONFIG_RCU_TORTURE_TEST is not set | ||
919 | CONFIG_DEBUG_RODATA=y | ||
932 | 920 | ||
933 | # | 921 | # |
934 | # Security options | 922 | # Security options |
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig index 959ad3c4e372..f3b812f04592 100644 --- a/arch/parisc/configs/a500_defconfig +++ b/arch/parisc/configs/a500_defconfig | |||
@@ -1031,8 +1031,8 @@ CONFIG_NLS_CODEPAGE_850=m | |||
1031 | # CONFIG_NLS_ISO8859_8 is not set | 1031 | # CONFIG_NLS_ISO8859_8 is not set |
1032 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1032 | # CONFIG_NLS_CODEPAGE_1250 is not set |
1033 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1033 | # CONFIG_NLS_CODEPAGE_1251 is not set |
1034 | # CONFIG_NLS_ASCII is not set | 1034 | CONFIG_NLS_ASCII=m |
1035 | # CONFIG_NLS_ISO8859_1 is not set | 1035 | CONFIG_NLS_ISO8859_1=m |
1036 | # CONFIG_NLS_ISO8859_2 is not set | 1036 | # CONFIG_NLS_ISO8859_2 is not set |
1037 | # CONFIG_NLS_ISO8859_3 is not set | 1037 | # CONFIG_NLS_ISO8859_3 is not set |
1038 | # CONFIG_NLS_ISO8859_4 is not set | 1038 | # CONFIG_NLS_ISO8859_4 is not set |
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig index 37e98241ce4b..35093612ad2c 100644 --- a/arch/parisc/configs/b180_defconfig +++ b/arch/parisc/configs/b180_defconfig | |||
@@ -939,10 +939,10 @@ CONFIG_MSDOS_PARTITION=y | |||
939 | # | 939 | # |
940 | CONFIG_NLS=y | 940 | CONFIG_NLS=y |
941 | CONFIG_NLS_DEFAULT="iso8859-1" | 941 | CONFIG_NLS_DEFAULT="iso8859-1" |
942 | # CONFIG_NLS_CODEPAGE_437 is not set | 942 | CONFIG_NLS_CODEPAGE_437=m |
943 | # CONFIG_NLS_CODEPAGE_737 is not set | 943 | # CONFIG_NLS_CODEPAGE_737 is not set |
944 | # CONFIG_NLS_CODEPAGE_775 is not set | 944 | # CONFIG_NLS_CODEPAGE_775 is not set |
945 | # CONFIG_NLS_CODEPAGE_850 is not set | 945 | CONFIG_NLS_CODEPAGE_850=m |
946 | # CONFIG_NLS_CODEPAGE_852 is not set | 946 | # CONFIG_NLS_CODEPAGE_852 is not set |
947 | # CONFIG_NLS_CODEPAGE_855 is not set | 947 | # CONFIG_NLS_CODEPAGE_855 is not set |
948 | # CONFIG_NLS_CODEPAGE_857 is not set | 948 | # CONFIG_NLS_CODEPAGE_857 is not set |
@@ -962,8 +962,8 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
962 | # CONFIG_NLS_ISO8859_8 is not set | 962 | # CONFIG_NLS_ISO8859_8 is not set |
963 | # CONFIG_NLS_CODEPAGE_1250 is not set | 963 | # CONFIG_NLS_CODEPAGE_1250 is not set |
964 | # CONFIG_NLS_CODEPAGE_1251 is not set | 964 | # CONFIG_NLS_CODEPAGE_1251 is not set |
965 | # CONFIG_NLS_ASCII is not set | 965 | CONFIG_NLS_ASCII=m |
966 | # CONFIG_NLS_ISO8859_1 is not set | 966 | CONFIG_NLS_ISO8859_1=m |
967 | # CONFIG_NLS_ISO8859_2 is not set | 967 | # CONFIG_NLS_ISO8859_2 is not set |
968 | # CONFIG_NLS_ISO8859_3 is not set | 968 | # CONFIG_NLS_ISO8859_3 is not set |
969 | # CONFIG_NLS_ISO8859_4 is not set | 969 | # CONFIG_NLS_ISO8859_4 is not set |
@@ -973,10 +973,10 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
973 | # CONFIG_NLS_ISO8859_9 is not set | 973 | # CONFIG_NLS_ISO8859_9 is not set |
974 | # CONFIG_NLS_ISO8859_13 is not set | 974 | # CONFIG_NLS_ISO8859_13 is not set |
975 | # CONFIG_NLS_ISO8859_14 is not set | 975 | # CONFIG_NLS_ISO8859_14 is not set |
976 | # CONFIG_NLS_ISO8859_15 is not set | 976 | CONFIG_NLS_ISO8859_15=m |
977 | # CONFIG_NLS_KOI8_R is not set | 977 | # CONFIG_NLS_KOI8_R is not set |
978 | # CONFIG_NLS_KOI8_U is not set | 978 | # CONFIG_NLS_KOI8_U is not set |
979 | # CONFIG_NLS_UTF8 is not set | 979 | CONFIG_NLS_UTF8=m |
980 | 980 | ||
981 | # | 981 | # |
982 | # Kernel hacking | 982 | # Kernel hacking |
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig index 0b1c8c1fa8a3..782906b644dd 100644 --- a/arch/parisc/configs/c3000_defconfig +++ b/arch/parisc/configs/c3000_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc5-pa1 | 3 | # Linux kernel version: 2.6.16-pa6 |
4 | # Fri Oct 21 23:06:31 2005 | 4 | # Sun Mar 26 20:03:29 2006 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -10,14 +10,11 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
14 | 13 | ||
15 | # | 14 | # |
16 | # Code maturity level options | 15 | # Code maturity level options |
17 | # | 16 | # |
18 | CONFIG_EXPERIMENTAL=y | 17 | CONFIG_EXPERIMENTAL=y |
19 | # CONFIG_CLEAN_COMPILE is not set | ||
20 | CONFIG_BROKEN=y | ||
21 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
22 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
23 | 20 | ||
@@ -32,28 +29,30 @@ CONFIG_SYSVIPC=y | |||
32 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
33 | CONFIG_SYSCTL=y | 30 | CONFIG_SYSCTL=y |
34 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
35 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_KOBJECT_UEVENT=y | ||
37 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
38 | CONFIG_IKCONFIG_PROC=y | 33 | CONFIG_IKCONFIG_PROC=y |
39 | CONFIG_INITRAMFS_SOURCE="" | 34 | CONFIG_INITRAMFS_SOURCE="" |
35 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_EMBEDDED=y | 36 | CONFIG_EMBEDDED=y |
41 | CONFIG_KALLSYMS=y | 37 | CONFIG_KALLSYMS=y |
42 | CONFIG_KALLSYMS_ALL=y | 38 | CONFIG_KALLSYMS_ALL=y |
43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
40 | CONFIG_HOTPLUG=y | ||
44 | CONFIG_PRINTK=y | 41 | CONFIG_PRINTK=y |
45 | CONFIG_BUG=y | 42 | CONFIG_BUG=y |
43 | CONFIG_ELF_CORE=y | ||
46 | CONFIG_BASE_FULL=y | 44 | CONFIG_BASE_FULL=y |
47 | CONFIG_FUTEX=y | 45 | CONFIG_FUTEX=y |
48 | CONFIG_EPOLL=y | 46 | CONFIG_EPOLL=y |
49 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
50 | CONFIG_SHMEM=y | 47 | CONFIG_SHMEM=y |
51 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
52 | CONFIG_CC_ALIGN_LABELS=0 | 49 | CONFIG_CC_ALIGN_LABELS=0 |
53 | CONFIG_CC_ALIGN_LOOPS=0 | 50 | CONFIG_CC_ALIGN_LOOPS=0 |
54 | CONFIG_CC_ALIGN_JUMPS=0 | 51 | CONFIG_CC_ALIGN_JUMPS=0 |
52 | CONFIG_SLAB=y | ||
55 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
56 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
57 | 56 | ||
58 | # | 57 | # |
59 | # Loadable module support | 58 | # Loadable module support |
@@ -67,6 +66,23 @@ CONFIG_OBSOLETE_MODPARM=y | |||
67 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
68 | 67 | ||
69 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | |||
72 | # | ||
73 | # IO Schedulers | ||
74 | # | ||
75 | CONFIG_IOSCHED_NOOP=y | ||
76 | CONFIG_IOSCHED_AS=y | ||
77 | CONFIG_IOSCHED_DEADLINE=y | ||
78 | CONFIG_IOSCHED_CFQ=y | ||
79 | CONFIG_DEFAULT_AS=y | ||
80 | # CONFIG_DEFAULT_DEADLINE is not set | ||
81 | # CONFIG_DEFAULT_CFQ is not set | ||
82 | # CONFIG_DEFAULT_NOOP is not set | ||
83 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
84 | |||
85 | # | ||
70 | # Processor type and features | 86 | # Processor type and features |
71 | # | 87 | # |
72 | # CONFIG_PA7000 is not set | 88 | # CONFIG_PA7000 is not set |
@@ -78,6 +94,10 @@ CONFIG_PA20=y | |||
78 | CONFIG_PREFETCH=y | 94 | CONFIG_PREFETCH=y |
79 | # CONFIG_64BIT is not set | 95 | # CONFIG_64BIT is not set |
80 | # CONFIG_SMP is not set | 96 | # CONFIG_SMP is not set |
97 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
98 | # CONFIG_PREEMPT_NONE is not set | ||
99 | CONFIG_PREEMPT_VOLUNTARY=y | ||
100 | # CONFIG_PREEMPT is not set | ||
81 | # CONFIG_HZ_100 is not set | 101 | # CONFIG_HZ_100 is not set |
82 | CONFIG_HZ_250=y | 102 | CONFIG_HZ_250=y |
83 | # CONFIG_HZ_1000 is not set | 103 | # CONFIG_HZ_1000 is not set |
@@ -89,7 +109,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
89 | CONFIG_FLATMEM=y | 109 | CONFIG_FLATMEM=y |
90 | CONFIG_FLAT_NODE_MEM_MAP=y | 110 | CONFIG_FLAT_NODE_MEM_MAP=y |
91 | # CONFIG_SPARSEMEM_STATIC is not set | 111 | # CONFIG_SPARSEMEM_STATIC is not set |
92 | # CONFIG_PREEMPT is not set | 112 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
93 | # CONFIG_HPUX is not set | 113 | # CONFIG_HPUX is not set |
94 | 114 | ||
95 | # | 115 | # |
@@ -135,6 +155,7 @@ CONFIG_NET=y | |||
135 | # | 155 | # |
136 | # Networking options | 156 | # Networking options |
137 | # | 157 | # |
158 | # CONFIG_NETDEBUG is not set | ||
138 | CONFIG_PACKET=y | 159 | CONFIG_PACKET=y |
139 | CONFIG_PACKET_MMAP=y | 160 | CONFIG_PACKET_MMAP=y |
140 | CONFIG_UNIX=y | 161 | CONFIG_UNIX=y |
@@ -175,7 +196,12 @@ CONFIG_INET6_TUNNEL=m | |||
175 | CONFIG_IPV6_TUNNEL=m | 196 | CONFIG_IPV6_TUNNEL=m |
176 | CONFIG_NETFILTER=y | 197 | CONFIG_NETFILTER=y |
177 | CONFIG_NETFILTER_DEBUG=y | 198 | CONFIG_NETFILTER_DEBUG=y |
199 | |||
200 | # | ||
201 | # Core Netfilter Configuration | ||
202 | # | ||
178 | # CONFIG_NETFILTER_NETLINK is not set | 203 | # CONFIG_NETFILTER_NETLINK is not set |
204 | # CONFIG_NETFILTER_XTABLES is not set | ||
179 | 205 | ||
180 | # | 206 | # |
181 | # IP: Netfilter Configuration | 207 | # IP: Netfilter Configuration |
@@ -192,87 +218,11 @@ CONFIG_IP_NF_TFTP=m | |||
192 | CONFIG_IP_NF_AMANDA=m | 218 | CONFIG_IP_NF_AMANDA=m |
193 | # CONFIG_IP_NF_PPTP is not set | 219 | # CONFIG_IP_NF_PPTP is not set |
194 | CONFIG_IP_NF_QUEUE=m | 220 | CONFIG_IP_NF_QUEUE=m |
195 | CONFIG_IP_NF_IPTABLES=m | ||
196 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
197 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
198 | CONFIG_IP_NF_MATCH_MAC=m | ||
199 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
200 | CONFIG_IP_NF_MATCH_MARK=m | ||
201 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
202 | CONFIG_IP_NF_MATCH_TOS=m | ||
203 | CONFIG_IP_NF_MATCH_RECENT=m | ||
204 | CONFIG_IP_NF_MATCH_ECN=m | ||
205 | CONFIG_IP_NF_MATCH_DSCP=m | ||
206 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
207 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
208 | CONFIG_IP_NF_MATCH_TTL=m | ||
209 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
210 | CONFIG_IP_NF_MATCH_HELPER=m | ||
211 | CONFIG_IP_NF_MATCH_STATE=m | ||
212 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
213 | CONFIG_IP_NF_MATCH_OWNER=m | ||
214 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
215 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
216 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
217 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
218 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
219 | # CONFIG_IP_NF_MATCH_HASHLIMIT is not set | ||
220 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
221 | CONFIG_IP_NF_FILTER=m | ||
222 | CONFIG_IP_NF_TARGET_REJECT=m | ||
223 | CONFIG_IP_NF_TARGET_LOG=m | ||
224 | CONFIG_IP_NF_TARGET_ULOG=m | ||
225 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
226 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
227 | CONFIG_IP_NF_NAT=m | ||
228 | CONFIG_IP_NF_NAT_NEEDED=y | ||
229 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
230 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
231 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
232 | CONFIG_IP_NF_TARGET_SAME=m | ||
233 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
234 | CONFIG_IP_NF_NAT_IRC=m | ||
235 | CONFIG_IP_NF_NAT_FTP=m | ||
236 | CONFIG_IP_NF_NAT_TFTP=m | ||
237 | CONFIG_IP_NF_NAT_AMANDA=m | ||
238 | CONFIG_IP_NF_MANGLE=m | ||
239 | CONFIG_IP_NF_TARGET_TOS=m | ||
240 | CONFIG_IP_NF_TARGET_ECN=m | ||
241 | CONFIG_IP_NF_TARGET_DSCP=m | ||
242 | CONFIG_IP_NF_TARGET_MARK=m | ||
243 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
244 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
245 | # CONFIG_IP_NF_RAW is not set | ||
246 | CONFIG_IP_NF_ARPTABLES=m | ||
247 | CONFIG_IP_NF_ARPFILTER=m | ||
248 | CONFIG_IP_NF_ARP_MANGLE=m | ||
249 | 221 | ||
250 | # | 222 | # |
251 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 223 | # IPv6: Netfilter Configuration (EXPERIMENTAL) |
252 | # | 224 | # |
253 | # CONFIG_IP6_NF_QUEUE is not set | 225 | # CONFIG_IP6_NF_QUEUE is not set |
254 | CONFIG_IP6_NF_IPTABLES=m | ||
255 | # CONFIG_IP6_NF_MATCH_LIMIT is not set | ||
256 | CONFIG_IP6_NF_MATCH_MAC=m | ||
257 | CONFIG_IP6_NF_MATCH_RT=m | ||
258 | # CONFIG_IP6_NF_MATCH_OPTS is not set | ||
259 | # CONFIG_IP6_NF_MATCH_FRAG is not set | ||
260 | # CONFIG_IP6_NF_MATCH_HL is not set | ||
261 | # CONFIG_IP6_NF_MATCH_MULTIPORT is not set | ||
262 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
263 | # CONFIG_IP6_NF_MATCH_MARK is not set | ||
264 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
265 | # CONFIG_IP6_NF_MATCH_AHESP is not set | ||
266 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
267 | # CONFIG_IP6_NF_MATCH_EUI64 is not set | ||
268 | CONFIG_IP6_NF_FILTER=m | ||
269 | CONFIG_IP6_NF_TARGET_LOG=m | ||
270 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
271 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
272 | CONFIG_IP6_NF_MANGLE=m | ||
273 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
274 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
275 | # CONFIG_IP6_NF_RAW is not set | ||
276 | 226 | ||
277 | # | 227 | # |
278 | # DCCP Configuration (EXPERIMENTAL) | 228 | # DCCP Configuration (EXPERIMENTAL) |
@@ -283,6 +233,11 @@ CONFIG_IP6_NF_MANGLE=m | |||
283 | # SCTP Configuration (EXPERIMENTAL) | 233 | # SCTP Configuration (EXPERIMENTAL) |
284 | # | 234 | # |
285 | # 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 | ||
286 | # CONFIG_ATM is not set | 241 | # CONFIG_ATM is not set |
287 | # CONFIG_BRIDGE is not set | 242 | # CONFIG_BRIDGE is not set |
288 | # CONFIG_VLAN_8021Q is not set | 243 | # CONFIG_VLAN_8021Q is not set |
@@ -295,8 +250,11 @@ CONFIG_IP6_NF_MANGLE=m | |||
295 | # CONFIG_NET_DIVERT is not set | 250 | # CONFIG_NET_DIVERT is not set |
296 | # CONFIG_ECONET is not set | 251 | # CONFIG_ECONET is not set |
297 | # CONFIG_WAN_ROUTER is not set | 252 | # CONFIG_WAN_ROUTER is not set |
253 | |||
254 | # | ||
255 | # QoS and/or fair queueing | ||
256 | # | ||
298 | # CONFIG_NET_SCHED is not set | 257 | # CONFIG_NET_SCHED is not set |
299 | # CONFIG_NET_CLS_ROUTE is not set | ||
300 | 258 | ||
301 | # | 259 | # |
302 | # Network testing | 260 | # Network testing |
@@ -341,7 +299,6 @@ CONFIG_FW_LOADER=y | |||
341 | # | 299 | # |
342 | # Block devices | 300 | # Block devices |
343 | # | 301 | # |
344 | # CONFIG_BLK_DEV_FD is not set | ||
345 | # CONFIG_BLK_CPQ_DA is not set | 302 | # CONFIG_BLK_CPQ_DA is not set |
346 | # CONFIG_BLK_CPQ_CISS_DA is not set | 303 | # CONFIG_BLK_CPQ_CISS_DA is not set |
347 | # CONFIG_BLK_DEV_DAC960 is not set | 304 | # CONFIG_BLK_DEV_DAC960 is not set |
@@ -355,14 +312,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m | |||
355 | # CONFIG_BLK_DEV_RAM is not set | 312 | # CONFIG_BLK_DEV_RAM is not set |
356 | CONFIG_BLK_DEV_RAM_COUNT=16 | 313 | CONFIG_BLK_DEV_RAM_COUNT=16 |
357 | # CONFIG_CDROM_PKTCDVD is not set | 314 | # CONFIG_CDROM_PKTCDVD is not set |
358 | |||
359 | # | ||
360 | # IO Schedulers | ||
361 | # | ||
362 | CONFIG_IOSCHED_NOOP=y | ||
363 | CONFIG_IOSCHED_AS=y | ||
364 | CONFIG_IOSCHED_DEADLINE=y | ||
365 | CONFIG_IOSCHED_CFQ=y | ||
366 | # CONFIG_ATA_OVER_ETH is not set | 315 | # CONFIG_ATA_OVER_ETH is not set |
367 | 316 | ||
368 | # | 317 | # |
@@ -458,6 +407,7 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
458 | # | 407 | # |
459 | # SCSI low-level drivers | 408 | # SCSI low-level drivers |
460 | # | 409 | # |
410 | # CONFIG_ISCSI_TCP is not set | ||
461 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 411 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
462 | # CONFIG_SCSI_3W_9XXX is not set | 412 | # CONFIG_SCSI_3W_9XXX is not set |
463 | # CONFIG_SCSI_ACARD is not set | 413 | # CONFIG_SCSI_ACARD is not set |
@@ -466,7 +416,6 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
466 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 416 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
467 | # CONFIG_SCSI_AIC79XX is not set | 417 | # CONFIG_SCSI_AIC79XX is not set |
468 | # CONFIG_SCSI_DPT_I2O is not set | 418 | # CONFIG_SCSI_DPT_I2O is not set |
469 | # CONFIG_SCSI_ADVANSYS is not set | ||
470 | # CONFIG_MEGARAID_NEWGEN is not set | 419 | # CONFIG_MEGARAID_NEWGEN is not set |
471 | # CONFIG_MEGARAID_LEGACY is not set | 420 | # CONFIG_MEGARAID_LEGACY is not set |
472 | # CONFIG_MEGARAID_SAS is not set | 421 | # CONFIG_MEGARAID_SAS is not set |
@@ -476,18 +425,18 @@ CONFIG_SCSI_SATA=y | |||
476 | CONFIG_SCSI_ATA_PIIX=m | 425 | CONFIG_SCSI_ATA_PIIX=m |
477 | # CONFIG_SCSI_SATA_MV is not set | 426 | # CONFIG_SCSI_SATA_MV is not set |
478 | # CONFIG_SCSI_SATA_NV is not set | 427 | # CONFIG_SCSI_SATA_NV is not set |
479 | CONFIG_SCSI_SATA_PROMISE=m | 428 | # CONFIG_SCSI_PDC_ADMA is not set |
480 | # CONFIG_SCSI_SATA_QSTOR is not set | 429 | # CONFIG_SCSI_SATA_QSTOR is not set |
430 | CONFIG_SCSI_SATA_PROMISE=m | ||
481 | # CONFIG_SCSI_SATA_SX4 is not set | 431 | # CONFIG_SCSI_SATA_SX4 is not set |
482 | CONFIG_SCSI_SATA_SIL=m | 432 | CONFIG_SCSI_SATA_SIL=m |
433 | # CONFIG_SCSI_SATA_SIL24 is not set | ||
483 | # CONFIG_SCSI_SATA_SIS is not set | 434 | # CONFIG_SCSI_SATA_SIS is not set |
484 | # CONFIG_SCSI_SATA_ULI is not set | 435 | # CONFIG_SCSI_SATA_ULI is not set |
485 | CONFIG_SCSI_SATA_VIA=m | 436 | CONFIG_SCSI_SATA_VIA=m |
486 | # CONFIG_SCSI_SATA_VITESSE is not set | 437 | # CONFIG_SCSI_SATA_VITESSE is not set |
487 | CONFIG_SCSI_SATA_INTEL_COMBINED=y | 438 | CONFIG_SCSI_SATA_INTEL_COMBINED=y |
488 | # CONFIG_SCSI_CPQFCTS is not set | ||
489 | # CONFIG_SCSI_DMX3191D is not set | 439 | # CONFIG_SCSI_DMX3191D is not set |
490 | # CONFIG_SCSI_EATA_PIO is not set | ||
491 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 440 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
492 | # CONFIG_SCSI_IPS is not set | 441 | # CONFIG_SCSI_IPS is not set |
493 | # CONFIG_SCSI_INITIO is not set | 442 | # CONFIG_SCSI_INITIO is not set |
@@ -496,18 +445,11 @@ CONFIG_SCSI_SYM53C8XX_2=y | |||
496 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 445 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
497 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 446 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
498 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 447 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
499 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 448 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
500 | # CONFIG_SCSI_IPR is not set | 449 | # CONFIG_SCSI_IPR is not set |
501 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
502 | # CONFIG_SCSI_QLOGIC_FC is not set | 450 | # CONFIG_SCSI_QLOGIC_FC is not set |
503 | # CONFIG_SCSI_QLOGIC_1280 is not set | 451 | # CONFIG_SCSI_QLOGIC_1280 is not set |
504 | CONFIG_SCSI_QLA2XXX=y | 452 | # CONFIG_SCSI_QLA_FC is not set |
505 | # CONFIG_SCSI_QLA21XX is not set | ||
506 | # CONFIG_SCSI_QLA22XX is not set | ||
507 | # CONFIG_SCSI_QLA2300 is not set | ||
508 | # CONFIG_SCSI_QLA2322 is not set | ||
509 | # CONFIG_SCSI_QLA6312 is not set | ||
510 | # CONFIG_SCSI_QLA24XX is not set | ||
511 | # CONFIG_SCSI_LPFC is not set | 453 | # CONFIG_SCSI_LPFC is not set |
512 | # CONFIG_SCSI_DC395x is not set | 454 | # CONFIG_SCSI_DC395x is not set |
513 | # CONFIG_SCSI_DC390T is not set | 455 | # CONFIG_SCSI_DC390T is not set |
@@ -633,6 +575,7 @@ CONFIG_E1000=m | |||
633 | # CONFIG_R8169 is not set | 575 | # CONFIG_R8169 is not set |
634 | # CONFIG_SIS190 is not set | 576 | # CONFIG_SIS190 is not set |
635 | # CONFIG_SKGE is not set | 577 | # CONFIG_SKGE is not set |
578 | # CONFIG_SKY2 is not set | ||
636 | # CONFIG_SK98LIN is not set | 579 | # CONFIG_SK98LIN is not set |
637 | # CONFIG_VIA_VELOCITY is not set | 580 | # CONFIG_VIA_VELOCITY is not set |
638 | CONFIG_TIGON3=m | 581 | CONFIG_TIGON3=m |
@@ -668,6 +611,7 @@ CONFIG_PPP_ASYNC=m | |||
668 | CONFIG_PPP_SYNC_TTY=m | 611 | CONFIG_PPP_SYNC_TTY=m |
669 | CONFIG_PPP_DEFLATE=m | 612 | CONFIG_PPP_DEFLATE=m |
670 | CONFIG_PPP_BSDCOMP=m | 613 | CONFIG_PPP_BSDCOMP=m |
614 | # CONFIG_PPP_MPPE is not set | ||
671 | CONFIG_PPPOE=m | 615 | CONFIG_PPPOE=m |
672 | # CONFIG_SLIP is not set | 616 | # CONFIG_SLIP is not set |
673 | # CONFIG_NET_FC is not set | 617 | # CONFIG_NET_FC is not set |
@@ -744,6 +688,7 @@ CONFIG_HW_CONSOLE=y | |||
744 | CONFIG_SERIAL_8250=y | 688 | CONFIG_SERIAL_8250=y |
745 | CONFIG_SERIAL_8250_CONSOLE=y | 689 | CONFIG_SERIAL_8250_CONSOLE=y |
746 | CONFIG_SERIAL_8250_NR_UARTS=13 | 690 | CONFIG_SERIAL_8250_NR_UARTS=13 |
691 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
747 | CONFIG_SERIAL_8250_EXTENDED=y | 692 | CONFIG_SERIAL_8250_EXTENDED=y |
748 | CONFIG_SERIAL_8250_MANY_PORTS=y | 693 | CONFIG_SERIAL_8250_MANY_PORTS=y |
749 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 694 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
@@ -753,7 +698,6 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
753 | # | 698 | # |
754 | # Non-8250 serial port support | 699 | # Non-8250 serial port support |
755 | # | 700 | # |
756 | # CONFIG_SERIAL_MUX is not set | ||
757 | # CONFIG_PDC_CONSOLE is not set | 701 | # CONFIG_PDC_CONSOLE is not set |
758 | CONFIG_SERIAL_CORE=y | 702 | CONFIG_SERIAL_CORE=y |
759 | CONFIG_SERIAL_CORE_CONSOLE=y | 703 | CONFIG_SERIAL_CORE_CONSOLE=y |
@@ -788,6 +732,7 @@ CONFIG_MAX_RAW_DEVS=256 | |||
788 | # TPM devices | 732 | # TPM devices |
789 | # | 733 | # |
790 | # CONFIG_TCG_TPM is not set | 734 | # CONFIG_TCG_TPM is not set |
735 | # CONFIG_TELCLOCK is not set | ||
791 | 736 | ||
792 | # | 737 | # |
793 | # I2C support | 738 | # I2C support |
@@ -795,6 +740,12 @@ CONFIG_MAX_RAW_DEVS=256 | |||
795 | # CONFIG_I2C is not set | 740 | # CONFIG_I2C is not set |
796 | 741 | ||
797 | # | 742 | # |
743 | # SPI support | ||
744 | # | ||
745 | # CONFIG_SPI is not set | ||
746 | # CONFIG_SPI_MASTER is not set | ||
747 | |||
748 | # | ||
798 | # Dallas's 1-wire bus | 749 | # Dallas's 1-wire bus |
799 | # | 750 | # |
800 | # CONFIG_W1 is not set | 751 | # CONFIG_W1 is not set |
@@ -830,7 +781,6 @@ CONFIG_FB=y | |||
830 | CONFIG_FB_CFB_FILLRECT=y | 781 | CONFIG_FB_CFB_FILLRECT=y |
831 | CONFIG_FB_CFB_COPYAREA=y | 782 | CONFIG_FB_CFB_COPYAREA=y |
832 | CONFIG_FB_CFB_IMAGEBLIT=y | 783 | CONFIG_FB_CFB_IMAGEBLIT=y |
833 | CONFIG_FB_SOFT_CURSOR=y | ||
834 | # CONFIG_FB_MACMODES is not set | 784 | # CONFIG_FB_MACMODES is not set |
835 | # CONFIG_FB_MODE_HELPERS is not set | 785 | # CONFIG_FB_MODE_HELPERS is not set |
836 | # CONFIG_FB_TILEBLITTING is not set | 786 | # CONFIG_FB_TILEBLITTING is not set |
@@ -840,6 +790,7 @@ CONFIG_FB_SOFT_CURSOR=y | |||
840 | # CONFIG_FB_ASILIANT is not set | 790 | # CONFIG_FB_ASILIANT is not set |
841 | # CONFIG_FB_IMSTT is not set | 791 | # CONFIG_FB_IMSTT is not set |
842 | CONFIG_FB_STI=y | 792 | CONFIG_FB_STI=y |
793 | # CONFIG_FB_S1D13XXX is not set | ||
843 | # CONFIG_FB_NVIDIA is not set | 794 | # CONFIG_FB_NVIDIA is not set |
844 | # CONFIG_FB_RIVA is not set | 795 | # CONFIG_FB_RIVA is not set |
845 | # CONFIG_FB_MATROX is not set | 796 | # CONFIG_FB_MATROX is not set |
@@ -853,10 +804,7 @@ CONFIG_FB_STI=y | |||
853 | # CONFIG_FB_KYRO is not set | 804 | # CONFIG_FB_KYRO is not set |
854 | # CONFIG_FB_3DFX is not set | 805 | # CONFIG_FB_3DFX is not set |
855 | # CONFIG_FB_VOODOO1 is not set | 806 | # CONFIG_FB_VOODOO1 is not set |
856 | # CONFIG_FB_CYBLA is not set | ||
857 | # CONFIG_FB_TRIDENT is not set | 807 | # CONFIG_FB_TRIDENT is not set |
858 | # CONFIG_FB_PM3 is not set | ||
859 | # CONFIG_FB_S1D13XXX is not set | ||
860 | # CONFIG_FB_VIRTUAL is not set | 808 | # CONFIG_FB_VIRTUAL is not set |
861 | 809 | ||
862 | # | 810 | # |
@@ -866,6 +814,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
866 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 814 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
867 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 815 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
868 | CONFIG_FRAMEBUFFER_CONSOLE=y | 816 | CONFIG_FRAMEBUFFER_CONSOLE=y |
817 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
869 | CONFIG_STI_CONSOLE=y | 818 | CONFIG_STI_CONSOLE=y |
870 | # CONFIG_FONTS is not set | 819 | # CONFIG_FONTS is not set |
871 | CONFIG_FONT_8x8=y | 820 | CONFIG_FONT_8x8=y |
@@ -898,23 +847,27 @@ CONFIG_SND_OSSEMUL=y | |||
898 | CONFIG_SND_MIXER_OSS=y | 847 | CONFIG_SND_MIXER_OSS=y |
899 | CONFIG_SND_PCM_OSS=y | 848 | CONFIG_SND_PCM_OSS=y |
900 | CONFIG_SND_SEQUENCER_OSS=y | 849 | CONFIG_SND_SEQUENCER_OSS=y |
850 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
851 | CONFIG_SND_SUPPORT_OLD_API=y | ||
901 | # CONFIG_SND_VERBOSE_PRINTK is not set | 852 | # CONFIG_SND_VERBOSE_PRINTK is not set |
902 | # CONFIG_SND_DEBUG is not set | 853 | # CONFIG_SND_DEBUG is not set |
903 | 854 | ||
904 | # | 855 | # |
905 | # Generic devices | 856 | # Generic devices |
906 | # | 857 | # |
858 | CONFIG_SND_AC97_CODEC=y | ||
859 | CONFIG_SND_AC97_BUS=y | ||
907 | # CONFIG_SND_DUMMY is not set | 860 | # CONFIG_SND_DUMMY is not set |
908 | # CONFIG_SND_VIRMIDI is not set | 861 | # CONFIG_SND_VIRMIDI is not set |
909 | # CONFIG_SND_MTPAV is not set | 862 | # CONFIG_SND_MTPAV is not set |
910 | # CONFIG_SND_SERIAL_U16550 is not set | 863 | # CONFIG_SND_SERIAL_U16550 is not set |
911 | # CONFIG_SND_MPU401 is not set | 864 | # CONFIG_SND_MPU401 is not set |
912 | CONFIG_SND_AC97_CODEC=y | ||
913 | CONFIG_SND_AC97_BUS=y | ||
914 | 865 | ||
915 | # | 866 | # |
916 | # PCI devices | 867 | # PCI devices |
917 | # | 868 | # |
869 | CONFIG_SND_AD1889=y | ||
870 | # CONFIG_SND_AD1889_OPL3 is not set | ||
918 | # CONFIG_SND_ALI5451 is not set | 871 | # CONFIG_SND_ALI5451 is not set |
919 | # CONFIG_SND_ATIIXP is not set | 872 | # CONFIG_SND_ATIIXP is not set |
920 | # CONFIG_SND_ATIIXP_MODEM is not set | 873 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -923,39 +876,38 @@ CONFIG_SND_AC97_BUS=y | |||
923 | # CONFIG_SND_AU8830 is not set | 876 | # CONFIG_SND_AU8830 is not set |
924 | # CONFIG_SND_AZT3328 is not set | 877 | # CONFIG_SND_AZT3328 is not set |
925 | # CONFIG_SND_BT87X is not set | 878 | # CONFIG_SND_BT87X is not set |
926 | # CONFIG_SND_CS46XX is not set | 879 | # CONFIG_SND_CA0106 is not set |
880 | # CONFIG_SND_CMIPCI is not set | ||
927 | # CONFIG_SND_CS4281 is not set | 881 | # CONFIG_SND_CS4281 is not set |
882 | # CONFIG_SND_CS46XX is not set | ||
928 | # CONFIG_SND_EMU10K1 is not set | 883 | # CONFIG_SND_EMU10K1 is not set |
929 | # CONFIG_SND_EMU10K1X is not set | 884 | # CONFIG_SND_EMU10K1X is not set |
930 | # CONFIG_SND_CA0106 is not set | ||
931 | # CONFIG_SND_KORG1212 is not set | ||
932 | # CONFIG_SND_MIXART is not set | ||
933 | # CONFIG_SND_NM256 is not set | ||
934 | # CONFIG_SND_RME32 is not set | ||
935 | # CONFIG_SND_RME96 is not set | ||
936 | # CONFIG_SND_RME9652 is not set | ||
937 | # CONFIG_SND_HDSP is not set | ||
938 | # CONFIG_SND_HDSPM is not set | ||
939 | # CONFIG_SND_TRIDENT is not set | ||
940 | # CONFIG_SND_YMFPCI is not set | ||
941 | CONFIG_SND_AD1889=y | ||
942 | # CONFIG_SND_AD1889_OPL3 is not set | ||
943 | # CONFIG_SND_CMIPCI is not set | ||
944 | # CONFIG_SND_ENS1370 is not set | 885 | # CONFIG_SND_ENS1370 is not set |
945 | # CONFIG_SND_ENS1371 is not set | 886 | # CONFIG_SND_ENS1371 is not set |
946 | # CONFIG_SND_ES1938 is not set | 887 | # CONFIG_SND_ES1938 is not set |
947 | # CONFIG_SND_ES1968 is not set | 888 | # CONFIG_SND_ES1968 is not set |
948 | # CONFIG_SND_MAESTRO3 is not set | ||
949 | # CONFIG_SND_FM801 is not set | 889 | # CONFIG_SND_FM801 is not set |
890 | # CONFIG_SND_HDA_INTEL is not set | ||
891 | # CONFIG_SND_HDSP is not set | ||
892 | # CONFIG_SND_HDSPM is not set | ||
950 | # CONFIG_SND_ICE1712 is not set | 893 | # CONFIG_SND_ICE1712 is not set |
951 | # CONFIG_SND_ICE1724 is not set | 894 | # CONFIG_SND_ICE1724 is not set |
952 | # CONFIG_SND_INTEL8X0 is not set | 895 | # CONFIG_SND_INTEL8X0 is not set |
953 | # CONFIG_SND_INTEL8X0M is not set | 896 | # CONFIG_SND_INTEL8X0M is not set |
897 | # CONFIG_SND_KORG1212 is not set | ||
898 | # CONFIG_SND_MAESTRO3 is not set | ||
899 | # CONFIG_SND_MIXART is not set | ||
900 | # CONFIG_SND_NM256 is not set | ||
901 | # CONFIG_SND_PCXHR is not set | ||
902 | # CONFIG_SND_RME32 is not set | ||
903 | # CONFIG_SND_RME96 is not set | ||
904 | # CONFIG_SND_RME9652 is not set | ||
954 | # CONFIG_SND_SONICVIBES is not set | 905 | # CONFIG_SND_SONICVIBES is not set |
906 | # CONFIG_SND_TRIDENT is not set | ||
955 | # CONFIG_SND_VIA82XX is not set | 907 | # CONFIG_SND_VIA82XX is not set |
956 | # CONFIG_SND_VIA82XX_MODEM is not set | 908 | # CONFIG_SND_VIA82XX_MODEM is not set |
957 | # CONFIG_SND_VX222 is not set | 909 | # CONFIG_SND_VX222 is not set |
958 | # CONFIG_SND_HDA_INTEL is not set | 910 | # CONFIG_SND_YMFPCI is not set |
959 | 911 | ||
960 | # | 912 | # |
961 | # USB devices | 913 | # USB devices |
@@ -998,12 +950,15 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
998 | # USB Device Class drivers | 950 | # USB Device Class drivers |
999 | # | 951 | # |
1000 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | 952 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
1001 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
1002 | # CONFIG_USB_ACM is not set | 953 | # CONFIG_USB_ACM is not set |
1003 | CONFIG_USB_PRINTER=m | 954 | CONFIG_USB_PRINTER=m |
1004 | 955 | ||
1005 | # | 956 | # |
1006 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | 957 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
958 | # | ||
959 | |||
960 | # | ||
961 | # may also be needed; see USB_STORAGE Help for more information | ||
1007 | # | 962 | # |
1008 | CONFIG_USB_STORAGE=m | 963 | CONFIG_USB_STORAGE=m |
1009 | # CONFIG_USB_STORAGE_DEBUG is not set | 964 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1015,12 +970,15 @@ CONFIG_USB_STORAGE_USBAT=y | |||
1015 | CONFIG_USB_STORAGE_SDDR09=y | 970 | CONFIG_USB_STORAGE_SDDR09=y |
1016 | CONFIG_USB_STORAGE_SDDR55=y | 971 | CONFIG_USB_STORAGE_SDDR55=y |
1017 | CONFIG_USB_STORAGE_JUMPSHOT=y | 972 | CONFIG_USB_STORAGE_JUMPSHOT=y |
973 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
974 | # CONFIG_USB_LIBUSUAL is not set | ||
1018 | 975 | ||
1019 | # | 976 | # |
1020 | # USB Input Devices | 977 | # USB Input Devices |
1021 | # | 978 | # |
1022 | CONFIG_USB_HID=y | 979 | CONFIG_USB_HID=y |
1023 | CONFIG_USB_HIDINPUT=y | 980 | CONFIG_USB_HIDINPUT=y |
981 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
1024 | # CONFIG_HID_FF is not set | 982 | # CONFIG_HID_FF is not set |
1025 | CONFIG_USB_HIDDEV=y | 983 | CONFIG_USB_HIDDEV=y |
1026 | # CONFIG_USB_AIPTEK is not set | 984 | # CONFIG_USB_AIPTEK is not set |
@@ -1034,6 +992,7 @@ CONFIG_USB_HIDDEV=y | |||
1034 | # CONFIG_USB_YEALINK is not set | 992 | # CONFIG_USB_YEALINK is not set |
1035 | # CONFIG_USB_XPAD is not set | 993 | # CONFIG_USB_XPAD is not set |
1036 | # CONFIG_USB_ATI_REMOTE is not set | 994 | # CONFIG_USB_ATI_REMOTE is not set |
995 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
1037 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 996 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1038 | # CONFIG_USB_APPLETOUCH is not set | 997 | # CONFIG_USB_APPLETOUCH is not set |
1039 | 998 | ||
@@ -1108,7 +1067,7 @@ CONFIG_USB_LEGOTOWER=m | |||
1108 | # CONFIG_INFINIBAND is not set | 1067 | # CONFIG_INFINIBAND is not set |
1109 | 1068 | ||
1110 | # | 1069 | # |
1111 | # SN Devices | 1070 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
1112 | # | 1071 | # |
1113 | 1072 | ||
1114 | # | 1073 | # |
@@ -1130,6 +1089,7 @@ CONFIG_XFS_EXPORT=y | |||
1130 | # CONFIG_XFS_SECURITY is not set | 1089 | # CONFIG_XFS_SECURITY is not set |
1131 | # CONFIG_XFS_POSIX_ACL is not set | 1090 | # CONFIG_XFS_POSIX_ACL is not set |
1132 | # CONFIG_XFS_RT is not set | 1091 | # CONFIG_XFS_RT is not set |
1092 | # CONFIG_OCFS2_FS is not set | ||
1133 | # CONFIG_MINIX_FS is not set | 1093 | # CONFIG_MINIX_FS is not set |
1134 | # CONFIG_ROMFS_FS is not set | 1094 | # CONFIG_ROMFS_FS is not set |
1135 | CONFIG_INOTIFY=y | 1095 | CONFIG_INOTIFY=y |
@@ -1164,10 +1124,10 @@ CONFIG_PROC_FS=y | |||
1164 | CONFIG_PROC_KCORE=y | 1124 | CONFIG_PROC_KCORE=y |
1165 | CONFIG_SYSFS=y | 1125 | CONFIG_SYSFS=y |
1166 | CONFIG_TMPFS=y | 1126 | CONFIG_TMPFS=y |
1167 | # CONFIG_HUGETLBFS is not set | ||
1168 | # CONFIG_HUGETLB_PAGE is not set | 1127 | # CONFIG_HUGETLB_PAGE is not set |
1169 | CONFIG_RAMFS=y | 1128 | CONFIG_RAMFS=y |
1170 | # CONFIG_RELAYFS_FS is not set | 1129 | # CONFIG_RELAYFS_FS is not set |
1130 | # CONFIG_CONFIGFS_FS is not set | ||
1171 | 1131 | ||
1172 | # | 1132 | # |
1173 | # Miscellaneous filesystems | 1133 | # Miscellaneous filesystems |
@@ -1225,10 +1185,10 @@ CONFIG_MSDOS_PARTITION=y | |||
1225 | # | 1185 | # |
1226 | CONFIG_NLS=y | 1186 | CONFIG_NLS=y |
1227 | CONFIG_NLS_DEFAULT="iso8859-1" | 1187 | CONFIG_NLS_DEFAULT="iso8859-1" |
1228 | # CONFIG_NLS_CODEPAGE_437 is not set | 1188 | CONFIG_NLS_CODEPAGE_437=m |
1229 | # CONFIG_NLS_CODEPAGE_737 is not set | 1189 | # CONFIG_NLS_CODEPAGE_737 is not set |
1230 | # CONFIG_NLS_CODEPAGE_775 is not set | 1190 | # CONFIG_NLS_CODEPAGE_775 is not set |
1231 | # CONFIG_NLS_CODEPAGE_850 is not set | 1191 | CONFIG_NLS_CODEPAGE_850=m |
1232 | # CONFIG_NLS_CODEPAGE_852 is not set | 1192 | # CONFIG_NLS_CODEPAGE_852 is not set |
1233 | # CONFIG_NLS_CODEPAGE_855 is not set | 1193 | # CONFIG_NLS_CODEPAGE_855 is not set |
1234 | # CONFIG_NLS_CODEPAGE_857 is not set | 1194 | # CONFIG_NLS_CODEPAGE_857 is not set |
@@ -1248,8 +1208,8 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1248 | # CONFIG_NLS_ISO8859_8 is not set | 1208 | # CONFIG_NLS_ISO8859_8 is not set |
1249 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1209 | # CONFIG_NLS_CODEPAGE_1250 is not set |
1250 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1210 | # CONFIG_NLS_CODEPAGE_1251 is not set |
1251 | # CONFIG_NLS_ASCII is not set | 1211 | CONFIG_NLS_ASCII=m |
1252 | # CONFIG_NLS_ISO8859_1 is not set | 1212 | CONFIG_NLS_ISO8859_1=m |
1253 | # CONFIG_NLS_ISO8859_2 is not set | 1213 | # CONFIG_NLS_ISO8859_2 is not set |
1254 | # CONFIG_NLS_ISO8859_3 is not set | 1214 | # CONFIG_NLS_ISO8859_3 is not set |
1255 | # CONFIG_NLS_ISO8859_4 is not set | 1215 | # CONFIG_NLS_ISO8859_4 is not set |
@@ -1259,10 +1219,10 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1259 | # CONFIG_NLS_ISO8859_9 is not set | 1219 | # CONFIG_NLS_ISO8859_9 is not set |
1260 | # CONFIG_NLS_ISO8859_13 is not set | 1220 | # CONFIG_NLS_ISO8859_13 is not set |
1261 | # CONFIG_NLS_ISO8859_14 is not set | 1221 | # CONFIG_NLS_ISO8859_14 is not set |
1262 | # CONFIG_NLS_ISO8859_15 is not set | 1222 | CONFIG_NLS_ISO8859_15=m |
1263 | # CONFIG_NLS_KOI8_R is not set | 1223 | # CONFIG_NLS_KOI8_R is not set |
1264 | # CONFIG_NLS_KOI8_U is not set | 1224 | # CONFIG_NLS_KOI8_U is not set |
1265 | # CONFIG_NLS_UTF8 is not set | 1225 | CONFIG_NLS_UTF8=m |
1266 | 1226 | ||
1267 | # | 1227 | # |
1268 | # Profiling support | 1228 | # Profiling support |
@@ -1274,18 +1234,22 @@ CONFIG_OPROFILE=m | |||
1274 | # Kernel hacking | 1234 | # Kernel hacking |
1275 | # | 1235 | # |
1276 | # CONFIG_PRINTK_TIME is not set | 1236 | # CONFIG_PRINTK_TIME is not set |
1277 | CONFIG_DEBUG_KERNEL=y | ||
1278 | CONFIG_MAGIC_SYSRQ=y | 1237 | CONFIG_MAGIC_SYSRQ=y |
1238 | CONFIG_DEBUG_KERNEL=y | ||
1279 | CONFIG_LOG_BUF_SHIFT=16 | 1239 | CONFIG_LOG_BUF_SHIFT=16 |
1280 | CONFIG_DETECT_SOFTLOCKUP=y | 1240 | CONFIG_DETECT_SOFTLOCKUP=y |
1281 | # CONFIG_SCHEDSTATS is not set | 1241 | # CONFIG_SCHEDSTATS is not set |
1282 | # CONFIG_DEBUG_SLAB is not set | 1242 | # CONFIG_DEBUG_SLAB is not set |
1243 | CONFIG_DEBUG_MUTEXES=y | ||
1283 | # CONFIG_DEBUG_SPINLOCK is not set | 1244 | # CONFIG_DEBUG_SPINLOCK is not set |
1284 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1245 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1285 | # CONFIG_DEBUG_KOBJECT is not set | 1246 | # CONFIG_DEBUG_KOBJECT is not set |
1286 | # CONFIG_DEBUG_INFO is not set | 1247 | # CONFIG_DEBUG_INFO is not set |
1287 | # CONFIG_DEBUG_IOREMAP is not set | ||
1288 | # CONFIG_DEBUG_FS is not set | 1248 | # CONFIG_DEBUG_FS is not set |
1249 | # CONFIG_DEBUG_VM is not set | ||
1250 | CONFIG_FORCED_INLINING=y | ||
1251 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1252 | CONFIG_DEBUG_RODATA=y | ||
1289 | 1253 | ||
1290 | # | 1254 | # |
1291 | # Security options | 1255 | # Security options |
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig index f38a4620d24f..59f7bc38e72e 100644 --- a/arch/parisc/defconfig +++ b/arch/parisc/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc5-pa1 | 3 | # Linux kernel version: 2.6.16-pa6 |
4 | # Fri Oct 21 23:01:33 2005 | 4 | # Sun Mar 26 19:50:07 2006 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -15,7 +15,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
15 | # Code maturity level options | 15 | # Code maturity level options |
16 | # | 16 | # |
17 | CONFIG_EXPERIMENTAL=y | 17 | CONFIG_EXPERIMENTAL=y |
18 | CONFIG_CLEAN_COMPILE=y | ||
19 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
21 | 20 | ||
@@ -30,17 +29,18 @@ CONFIG_SYSVIPC=y | |||
30 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
31 | CONFIG_SYSCTL=y | 30 | CONFIG_SYSCTL=y |
32 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
33 | # CONFIG_HOTPLUG is not set | ||
34 | CONFIG_KOBJECT_UEVENT=y | ||
35 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
36 | CONFIG_IKCONFIG_PROC=y | 33 | CONFIG_IKCONFIG_PROC=y |
37 | CONFIG_INITRAMFS_SOURCE="" | 34 | CONFIG_INITRAMFS_SOURCE="" |
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
38 | # CONFIG_EMBEDDED is not set | 36 | # CONFIG_EMBEDDED is not set |
39 | CONFIG_KALLSYMS=y | 37 | CONFIG_KALLSYMS=y |
40 | # CONFIG_KALLSYMS_ALL is not set | 38 | # CONFIG_KALLSYMS_ALL is not set |
41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
40 | CONFIG_HOTPLUG=y | ||
42 | CONFIG_PRINTK=y | 41 | CONFIG_PRINTK=y |
43 | CONFIG_BUG=y | 42 | CONFIG_BUG=y |
43 | CONFIG_ELF_CORE=y | ||
44 | CONFIG_BASE_FULL=y | 44 | CONFIG_BASE_FULL=y |
45 | CONFIG_FUTEX=y | 45 | CONFIG_FUTEX=y |
46 | CONFIG_EPOLL=y | 46 | CONFIG_EPOLL=y |
@@ -49,8 +49,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0 | |||
49 | CONFIG_CC_ALIGN_LABELS=0 | 49 | CONFIG_CC_ALIGN_LABELS=0 |
50 | CONFIG_CC_ALIGN_LOOPS=0 | 50 | CONFIG_CC_ALIGN_LOOPS=0 |
51 | CONFIG_CC_ALIGN_JUMPS=0 | 51 | CONFIG_CC_ALIGN_JUMPS=0 |
52 | CONFIG_SLAB=y | ||
52 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
53 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
54 | 56 | ||
55 | # | 57 | # |
56 | # Loadable module support | 58 | # Loadable module support |
@@ -58,6 +60,23 @@ CONFIG_BASE_SMALL=0 | |||
58 | # CONFIG_MODULES is not set | 60 | # CONFIG_MODULES is not set |
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_PA7000=y | 82 | CONFIG_PA7000=y |
@@ -67,6 +86,10 @@ CONFIG_PA7000=y | |||
67 | # CONFIG_PA8X00 is not set | 86 | # CONFIG_PA8X00 is not set |
68 | CONFIG_PA11=y | 87 | CONFIG_PA11=y |
69 | # CONFIG_SMP is not set | 88 | # CONFIG_SMP is not set |
89 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
90 | CONFIG_PREEMPT_NONE=y | ||
91 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
92 | # CONFIG_PREEMPT is not set | ||
70 | # CONFIG_HZ_100 is not set | 93 | # CONFIG_HZ_100 is not set |
71 | CONFIG_HZ_250=y | 94 | CONFIG_HZ_250=y |
72 | # CONFIG_HZ_1000 is not set | 95 | # CONFIG_HZ_1000 is not set |
@@ -78,7 +101,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
78 | CONFIG_FLATMEM=y | 101 | CONFIG_FLATMEM=y |
79 | CONFIG_FLAT_NODE_MEM_MAP=y | 102 | CONFIG_FLAT_NODE_MEM_MAP=y |
80 | # CONFIG_SPARSEMEM_STATIC is not set | 103 | # CONFIG_SPARSEMEM_STATIC is not set |
81 | # CONFIG_PREEMPT is not set | 104 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
82 | # CONFIG_HPUX is not set | 105 | # CONFIG_HPUX is not set |
83 | 106 | ||
84 | # | 107 | # |
@@ -132,6 +155,7 @@ CONFIG_NET=y | |||
132 | # | 155 | # |
133 | # Networking options | 156 | # Networking options |
134 | # | 157 | # |
158 | # CONFIG_NETDEBUG is not set | ||
135 | CONFIG_PACKET=y | 159 | CONFIG_PACKET=y |
136 | CONFIG_PACKET_MMAP=y | 160 | CONFIG_PACKET_MMAP=y |
137 | CONFIG_UNIX=y | 161 | CONFIG_UNIX=y |
@@ -174,6 +198,11 @@ CONFIG_IPV6=y | |||
174 | # SCTP Configuration (EXPERIMENTAL) | 198 | # SCTP Configuration (EXPERIMENTAL) |
175 | # | 199 | # |
176 | # CONFIG_IP_SCTP is not set | 200 | # CONFIG_IP_SCTP is not set |
201 | |||
202 | # | ||
203 | # TIPC Configuration (EXPERIMENTAL) | ||
204 | # | ||
205 | # CONFIG_TIPC is not set | ||
177 | # CONFIG_ATM is not set | 206 | # CONFIG_ATM is not set |
178 | # CONFIG_BRIDGE is not set | 207 | # CONFIG_BRIDGE is not set |
179 | # CONFIG_VLAN_8021Q is not set | 208 | # CONFIG_VLAN_8021Q is not set |
@@ -186,8 +215,11 @@ CONFIG_IPV6=y | |||
186 | # CONFIG_NET_DIVERT is not set | 215 | # CONFIG_NET_DIVERT is not set |
187 | # CONFIG_ECONET is not set | 216 | # CONFIG_ECONET is not set |
188 | # CONFIG_WAN_ROUTER is not set | 217 | # CONFIG_WAN_ROUTER is not set |
218 | |||
219 | # | ||
220 | # QoS and/or fair queueing | ||
221 | # | ||
189 | # CONFIG_NET_SCHED is not set | 222 | # CONFIG_NET_SCHED is not set |
190 | # CONFIG_NET_CLS_ROUTE is not set | ||
191 | 223 | ||
192 | # | 224 | # |
193 | # Network testing | 225 | # Network testing |
@@ -228,6 +260,7 @@ CONFIG_PARPORT_PC=y | |||
228 | # CONFIG_PARPORT_SERIAL is not set | 260 | # CONFIG_PARPORT_SERIAL is not set |
229 | # CONFIG_PARPORT_PC_FIFO is not set | 261 | # CONFIG_PARPORT_PC_FIFO is not set |
230 | # CONFIG_PARPORT_PC_SUPERIO is not set | 262 | # CONFIG_PARPORT_PC_SUPERIO is not set |
263 | CONFIG_PARPORT_NOT_PC=y | ||
231 | CONFIG_PARPORT_GSC=y | 264 | CONFIG_PARPORT_GSC=y |
232 | # CONFIG_PARPORT_1284 is not set | 265 | # CONFIG_PARPORT_1284 is not set |
233 | 266 | ||
@@ -254,14 +287,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16 | |||
254 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 287 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
255 | CONFIG_BLK_DEV_INITRD=y | 288 | CONFIG_BLK_DEV_INITRD=y |
256 | # CONFIG_CDROM_PKTCDVD is not set | 289 | # CONFIG_CDROM_PKTCDVD is not set |
257 | |||
258 | # | ||
259 | # IO Schedulers | ||
260 | # | ||
261 | CONFIG_IOSCHED_NOOP=y | ||
262 | CONFIG_IOSCHED_AS=y | ||
263 | CONFIG_IOSCHED_DEADLINE=y | ||
264 | CONFIG_IOSCHED_CFQ=y | ||
265 | # CONFIG_ATA_OVER_ETH is not set | 290 | # CONFIG_ATA_OVER_ETH is not set |
266 | 291 | ||
267 | # | 292 | # |
@@ -305,6 +330,7 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
305 | # | 330 | # |
306 | # SCSI low-level drivers | 331 | # SCSI low-level drivers |
307 | # | 332 | # |
333 | # CONFIG_ISCSI_TCP is not set | ||
308 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 334 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
309 | # CONFIG_SCSI_3W_9XXX is not set | 335 | # CONFIG_SCSI_3W_9XXX is not set |
310 | # CONFIG_SCSI_ACARD is not set | 336 | # CONFIG_SCSI_ACARD is not set |
@@ -331,7 +357,7 @@ CONFIG_SCSI_SYM53C8XX_2=y | |||
331 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 357 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
332 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 358 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
333 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 359 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
334 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 360 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
335 | # CONFIG_SCSI_IPR is not set | 361 | # CONFIG_SCSI_IPR is not set |
336 | CONFIG_SCSI_ZALON=y | 362 | CONFIG_SCSI_ZALON=y |
337 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 363 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
@@ -340,13 +366,7 @@ CONFIG_SCSI_NCR53C8XX_SYNC=20 | |||
340 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | 366 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set |
341 | # CONFIG_SCSI_QLOGIC_FC is not set | 367 | # CONFIG_SCSI_QLOGIC_FC is not set |
342 | # CONFIG_SCSI_QLOGIC_1280 is not set | 368 | # CONFIG_SCSI_QLOGIC_1280 is not set |
343 | CONFIG_SCSI_QLA2XXX=y | 369 | # CONFIG_SCSI_QLA_FC is not set |
344 | # CONFIG_SCSI_QLA21XX is not set | ||
345 | # CONFIG_SCSI_QLA22XX is not set | ||
346 | # CONFIG_SCSI_QLA2300 is not set | ||
347 | # CONFIG_SCSI_QLA2322 is not set | ||
348 | # CONFIG_SCSI_QLA6312 is not set | ||
349 | # CONFIG_SCSI_QLA24XX is not set | ||
350 | # CONFIG_SCSI_LPFC is not set | 370 | # CONFIG_SCSI_LPFC is not set |
351 | # CONFIG_SCSI_SIM710 is not set | 371 | # CONFIG_SCSI_SIM710 is not set |
352 | # CONFIG_SCSI_DC395x is not set | 372 | # CONFIG_SCSI_DC395x is not set |
@@ -471,6 +491,7 @@ CONFIG_ACENIC=y | |||
471 | # CONFIG_R8169 is not set | 491 | # CONFIG_R8169 is not set |
472 | # CONFIG_SIS190 is not set | 492 | # CONFIG_SIS190 is not set |
473 | # CONFIG_SKGE is not set | 493 | # CONFIG_SKGE is not set |
494 | # CONFIG_SKY2 is not set | ||
474 | # CONFIG_SK98LIN is not set | 495 | # CONFIG_SK98LIN is not set |
475 | # CONFIG_VIA_VELOCITY is not set | 496 | # CONFIG_VIA_VELOCITY is not set |
476 | CONFIG_TIGON3=y | 497 | CONFIG_TIGON3=y |
@@ -562,13 +583,13 @@ CONFIG_INPUT_KEYBOARD=y | |||
562 | # CONFIG_KEYBOARD_LKKBD is not set | 583 | # CONFIG_KEYBOARD_LKKBD is not set |
563 | # CONFIG_KEYBOARD_XTKBD is not set | 584 | # CONFIG_KEYBOARD_XTKBD is not set |
564 | # CONFIG_KEYBOARD_NEWTON is not set | 585 | # CONFIG_KEYBOARD_NEWTON is not set |
565 | CONFIG_KEYBOARD_HIL_OLD=y | 586 | # CONFIG_KEYBOARD_HIL_OLD is not set |
566 | CONFIG_KEYBOARD_HIL=y | 587 | CONFIG_KEYBOARD_HIL=y |
567 | CONFIG_INPUT_MOUSE=y | 588 | CONFIG_INPUT_MOUSE=y |
568 | # CONFIG_MOUSE_PS2 is not set | 589 | # CONFIG_MOUSE_PS2 is not set |
569 | # CONFIG_MOUSE_SERIAL is not set | 590 | # CONFIG_MOUSE_SERIAL is not set |
570 | # CONFIG_MOUSE_VSXXXAA is not set | 591 | # CONFIG_MOUSE_VSXXXAA is not set |
571 | # CONFIG_MOUSE_HIL is not set | 592 | CONFIG_MOUSE_HIL=y |
572 | CONFIG_INPUT_JOYSTICK=y | 593 | CONFIG_INPUT_JOYSTICK=y |
573 | # CONFIG_JOYSTICK_ANALOG is not set | 594 | # CONFIG_JOYSTICK_ANALOG is not set |
574 | # CONFIG_JOYSTICK_A3D is not set | 595 | # CONFIG_JOYSTICK_A3D is not set |
@@ -628,6 +649,7 @@ CONFIG_HW_CONSOLE=y | |||
628 | CONFIG_SERIAL_8250=y | 649 | CONFIG_SERIAL_8250=y |
629 | CONFIG_SERIAL_8250_CONSOLE=y | 650 | CONFIG_SERIAL_8250_CONSOLE=y |
630 | CONFIG_SERIAL_8250_NR_UARTS=13 | 651 | CONFIG_SERIAL_8250_NR_UARTS=13 |
652 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
631 | CONFIG_SERIAL_8250_EXTENDED=y | 653 | CONFIG_SERIAL_8250_EXTENDED=y |
632 | CONFIG_SERIAL_8250_MANY_PORTS=y | 654 | CONFIG_SERIAL_8250_MANY_PORTS=y |
633 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 655 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
@@ -675,6 +697,7 @@ CONFIG_GEN_RTC=y | |||
675 | # TPM devices | 697 | # TPM devices |
676 | # | 698 | # |
677 | # CONFIG_TCG_TPM is not set | 699 | # CONFIG_TCG_TPM is not set |
700 | # CONFIG_TELCLOCK is not set | ||
678 | 701 | ||
679 | # | 702 | # |
680 | # I2C support | 703 | # I2C support |
@@ -682,6 +705,12 @@ CONFIG_GEN_RTC=y | |||
682 | # CONFIG_I2C is not set | 705 | # CONFIG_I2C is not set |
683 | 706 | ||
684 | # | 707 | # |
708 | # SPI support | ||
709 | # | ||
710 | # CONFIG_SPI is not set | ||
711 | # CONFIG_SPI_MASTER is not set | ||
712 | |||
713 | # | ||
685 | # Dallas's 1-wire bus | 714 | # Dallas's 1-wire bus |
686 | # | 715 | # |
687 | # CONFIG_W1 is not set | 716 | # CONFIG_W1 is not set |
@@ -691,6 +720,7 @@ CONFIG_GEN_RTC=y | |||
691 | # | 720 | # |
692 | CONFIG_HWMON=y | 721 | CONFIG_HWMON=y |
693 | # CONFIG_HWMON_VID is not set | 722 | # CONFIG_HWMON_VID is not set |
723 | # CONFIG_SENSORS_F71805F is not set | ||
694 | # CONFIG_HWMON_DEBUG_CHIP is not set | 724 | # CONFIG_HWMON_DEBUG_CHIP is not set |
695 | 725 | ||
696 | # | 726 | # |
@@ -718,7 +748,6 @@ CONFIG_FB=y | |||
718 | CONFIG_FB_CFB_FILLRECT=y | 748 | CONFIG_FB_CFB_FILLRECT=y |
719 | CONFIG_FB_CFB_COPYAREA=y | 749 | CONFIG_FB_CFB_COPYAREA=y |
720 | CONFIG_FB_CFB_IMAGEBLIT=y | 750 | CONFIG_FB_CFB_IMAGEBLIT=y |
721 | CONFIG_FB_SOFT_CURSOR=y | ||
722 | # CONFIG_FB_MACMODES is not set | 751 | # CONFIG_FB_MACMODES is not set |
723 | # CONFIG_FB_MODE_HELPERS is not set | 752 | # CONFIG_FB_MODE_HELPERS is not set |
724 | # CONFIG_FB_TILEBLITTING is not set | 753 | # CONFIG_FB_TILEBLITTING is not set |
@@ -728,6 +757,7 @@ CONFIG_FB_SOFT_CURSOR=y | |||
728 | # CONFIG_FB_ASILIANT is not set | 757 | # CONFIG_FB_ASILIANT is not set |
729 | # CONFIG_FB_IMSTT is not set | 758 | # CONFIG_FB_IMSTT is not set |
730 | CONFIG_FB_STI=y | 759 | CONFIG_FB_STI=y |
760 | # CONFIG_FB_S1D13XXX is not set | ||
731 | # CONFIG_FB_NVIDIA is not set | 761 | # CONFIG_FB_NVIDIA is not set |
732 | # CONFIG_FB_RIVA is not set | 762 | # CONFIG_FB_RIVA is not set |
733 | # CONFIG_FB_MATROX is not set | 763 | # CONFIG_FB_MATROX is not set |
@@ -741,9 +771,7 @@ CONFIG_FB_STI=y | |||
741 | # CONFIG_FB_KYRO is not set | 771 | # CONFIG_FB_KYRO is not set |
742 | # CONFIG_FB_3DFX is not set | 772 | # CONFIG_FB_3DFX is not set |
743 | # CONFIG_FB_VOODOO1 is not set | 773 | # CONFIG_FB_VOODOO1 is not set |
744 | # CONFIG_FB_CYBLA is not set | ||
745 | # CONFIG_FB_TRIDENT is not set | 774 | # CONFIG_FB_TRIDENT is not set |
746 | # CONFIG_FB_S1D13XXX is not set | ||
747 | # CONFIG_FB_VIRTUAL is not set | 775 | # CONFIG_FB_VIRTUAL is not set |
748 | 776 | ||
749 | # | 777 | # |
@@ -753,15 +781,28 @@ CONFIG_DUMMY_CONSOLE=y | |||
753 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 781 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
754 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 782 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
755 | CONFIG_FRAMEBUFFER_CONSOLE=y | 783 | CONFIG_FRAMEBUFFER_CONSOLE=y |
784 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
756 | CONFIG_STI_CONSOLE=y | 785 | CONFIG_STI_CONSOLE=y |
757 | # CONFIG_FONTS is not set | 786 | CONFIG_FONTS=y |
758 | CONFIG_FONT_8x8=y | 787 | # CONFIG_FONT_8x8 is not set |
759 | CONFIG_FONT_8x16=y | 788 | CONFIG_FONT_8x16=y |
789 | # CONFIG_FONT_6x11 is not set | ||
790 | # CONFIG_FONT_7x14 is not set | ||
791 | # CONFIG_FONT_PEARL_8x8 is not set | ||
792 | # CONFIG_FONT_ACORN_8x8 is not set | ||
793 | # CONFIG_FONT_MINI_4x6 is not set | ||
794 | # CONFIG_FONT_SUN8x16 is not set | ||
795 | # CONFIG_FONT_SUN12x22 is not set | ||
796 | # CONFIG_FONT_10x18 is not set | ||
760 | 797 | ||
761 | # | 798 | # |
762 | # Logo configuration | 799 | # Logo configuration |
763 | # | 800 | # |
764 | # CONFIG_LOGO is not set | 801 | CONFIG_LOGO=y |
802 | # CONFIG_LOGO_LINUX_MONO is not set | ||
803 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
804 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
805 | CONFIG_LOGO_PARISC_CLUT224=y | ||
765 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 806 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
766 | 807 | ||
767 | # | 808 | # |
@@ -781,23 +822,27 @@ CONFIG_SND_OSSEMUL=y | |||
781 | CONFIG_SND_MIXER_OSS=y | 822 | CONFIG_SND_MIXER_OSS=y |
782 | CONFIG_SND_PCM_OSS=y | 823 | CONFIG_SND_PCM_OSS=y |
783 | CONFIG_SND_SEQUENCER_OSS=y | 824 | CONFIG_SND_SEQUENCER_OSS=y |
825 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
826 | CONFIG_SND_SUPPORT_OLD_API=y | ||
784 | # CONFIG_SND_VERBOSE_PRINTK is not set | 827 | # CONFIG_SND_VERBOSE_PRINTK is not set |
785 | # CONFIG_SND_DEBUG is not set | 828 | # CONFIG_SND_DEBUG is not set |
786 | 829 | ||
787 | # | 830 | # |
788 | # Generic devices | 831 | # Generic devices |
789 | # | 832 | # |
833 | CONFIG_SND_AC97_CODEC=y | ||
834 | CONFIG_SND_AC97_BUS=y | ||
790 | # CONFIG_SND_DUMMY is not set | 835 | # CONFIG_SND_DUMMY is not set |
791 | # CONFIG_SND_VIRMIDI is not set | 836 | # CONFIG_SND_VIRMIDI is not set |
792 | # CONFIG_SND_MTPAV is not set | 837 | # CONFIG_SND_MTPAV is not set |
793 | # CONFIG_SND_SERIAL_U16550 is not set | 838 | # CONFIG_SND_SERIAL_U16550 is not set |
794 | # CONFIG_SND_MPU401 is not set | 839 | # CONFIG_SND_MPU401 is not set |
795 | CONFIG_SND_AC97_CODEC=y | ||
796 | CONFIG_SND_AC97_BUS=y | ||
797 | 840 | ||
798 | # | 841 | # |
799 | # PCI devices | 842 | # PCI devices |
800 | # | 843 | # |
844 | CONFIG_SND_AD1889=y | ||
845 | # CONFIG_SND_AD1889_OPL3 is not set | ||
801 | # CONFIG_SND_ALI5451 is not set | 846 | # CONFIG_SND_ALI5451 is not set |
802 | # CONFIG_SND_ATIIXP is not set | 847 | # CONFIG_SND_ATIIXP is not set |
803 | # CONFIG_SND_ATIIXP_MODEM is not set | 848 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -806,39 +851,38 @@ CONFIG_SND_AC97_BUS=y | |||
806 | # CONFIG_SND_AU8830 is not set | 851 | # CONFIG_SND_AU8830 is not set |
807 | # CONFIG_SND_AZT3328 is not set | 852 | # CONFIG_SND_AZT3328 is not set |
808 | # CONFIG_SND_BT87X is not set | 853 | # CONFIG_SND_BT87X is not set |
809 | # CONFIG_SND_CS46XX is not set | 854 | # CONFIG_SND_CA0106 is not set |
855 | # CONFIG_SND_CMIPCI is not set | ||
810 | # CONFIG_SND_CS4281 is not set | 856 | # CONFIG_SND_CS4281 is not set |
857 | # CONFIG_SND_CS46XX is not set | ||
811 | # CONFIG_SND_EMU10K1 is not set | 858 | # CONFIG_SND_EMU10K1 is not set |
812 | # CONFIG_SND_EMU10K1X is not set | 859 | # CONFIG_SND_EMU10K1X is not set |
813 | # CONFIG_SND_CA0106 is not set | ||
814 | # CONFIG_SND_KORG1212 is not set | ||
815 | # CONFIG_SND_MIXART is not set | ||
816 | # CONFIG_SND_NM256 is not set | ||
817 | # CONFIG_SND_RME32 is not set | ||
818 | # CONFIG_SND_RME96 is not set | ||
819 | # CONFIG_SND_RME9652 is not set | ||
820 | # CONFIG_SND_HDSP is not set | ||
821 | # CONFIG_SND_HDSPM is not set | ||
822 | # CONFIG_SND_TRIDENT is not set | ||
823 | # CONFIG_SND_YMFPCI is not set | ||
824 | CONFIG_SND_AD1889=y | ||
825 | # CONFIG_SND_AD1889_OPL3 is not set | ||
826 | # CONFIG_SND_CMIPCI is not set | ||
827 | # CONFIG_SND_ENS1370 is not set | 860 | # CONFIG_SND_ENS1370 is not set |
828 | # CONFIG_SND_ENS1371 is not set | 861 | # CONFIG_SND_ENS1371 is not set |
829 | # CONFIG_SND_ES1938 is not set | 862 | # CONFIG_SND_ES1938 is not set |
830 | # CONFIG_SND_ES1968 is not set | 863 | # CONFIG_SND_ES1968 is not set |
831 | # CONFIG_SND_MAESTRO3 is not set | ||
832 | # CONFIG_SND_FM801 is not set | 864 | # CONFIG_SND_FM801 is not set |
865 | # CONFIG_SND_HDA_INTEL is not set | ||
866 | # CONFIG_SND_HDSP is not set | ||
867 | # CONFIG_SND_HDSPM is not set | ||
833 | # CONFIG_SND_ICE1712 is not set | 868 | # CONFIG_SND_ICE1712 is not set |
834 | # CONFIG_SND_ICE1724 is not set | 869 | # CONFIG_SND_ICE1724 is not set |
835 | # CONFIG_SND_INTEL8X0 is not set | 870 | # CONFIG_SND_INTEL8X0 is not set |
836 | # CONFIG_SND_INTEL8X0M is not set | 871 | # CONFIG_SND_INTEL8X0M is not set |
872 | # CONFIG_SND_KORG1212 is not set | ||
873 | # CONFIG_SND_MAESTRO3 is not set | ||
874 | # CONFIG_SND_MIXART is not set | ||
875 | # CONFIG_SND_NM256 is not set | ||
876 | # CONFIG_SND_PCXHR is not set | ||
877 | # CONFIG_SND_RME32 is not set | ||
878 | # CONFIG_SND_RME96 is not set | ||
879 | # CONFIG_SND_RME9652 is not set | ||
837 | # CONFIG_SND_SONICVIBES is not set | 880 | # CONFIG_SND_SONICVIBES is not set |
881 | # CONFIG_SND_TRIDENT is not set | ||
838 | # CONFIG_SND_VIA82XX is not set | 882 | # CONFIG_SND_VIA82XX is not set |
839 | # CONFIG_SND_VIA82XX_MODEM is not set | 883 | # CONFIG_SND_VIA82XX_MODEM is not set |
840 | # CONFIG_SND_VX222 is not set | 884 | # CONFIG_SND_VX222 is not set |
841 | # CONFIG_SND_HDA_INTEL is not set | 885 | # CONFIG_SND_YMFPCI is not set |
842 | 886 | ||
843 | # | 887 | # |
844 | # USB devices | 888 | # USB devices |
@@ -888,14 +932,18 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
888 | # USB Device Class drivers | 932 | # USB Device Class drivers |
889 | # | 933 | # |
890 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | 934 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
891 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
892 | # CONFIG_USB_ACM is not set | 935 | # CONFIG_USB_ACM is not set |
893 | # CONFIG_USB_PRINTER is not set | 936 | # CONFIG_USB_PRINTER is not set |
894 | 937 | ||
895 | # | 938 | # |
896 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | 939 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
940 | # | ||
941 | |||
942 | # | ||
943 | # may also be needed; see USB_STORAGE Help for more information | ||
897 | # | 944 | # |
898 | # CONFIG_USB_STORAGE is not set | 945 | # CONFIG_USB_STORAGE is not set |
946 | # CONFIG_USB_LIBUSUAL is not set | ||
899 | 947 | ||
900 | # | 948 | # |
901 | # USB Input Devices | 949 | # USB Input Devices |
@@ -918,6 +966,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
918 | # CONFIG_USB_YEALINK is not set | 966 | # CONFIG_USB_YEALINK is not set |
919 | # CONFIG_USB_XPAD is not set | 967 | # CONFIG_USB_XPAD is not set |
920 | # CONFIG_USB_ATI_REMOTE is not set | 968 | # CONFIG_USB_ATI_REMOTE is not set |
969 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
921 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 970 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
922 | # CONFIG_USB_APPLETOUCH is not set | 971 | # CONFIG_USB_APPLETOUCH is not set |
923 | 972 | ||
@@ -994,7 +1043,7 @@ CONFIG_USB_MON=y | |||
994 | # CONFIG_INFINIBAND is not set | 1043 | # CONFIG_INFINIBAND is not set |
995 | 1044 | ||
996 | # | 1045 | # |
997 | # SN Devices | 1046 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
998 | # | 1047 | # |
999 | 1048 | ||
1000 | # | 1049 | # |
@@ -1011,6 +1060,7 @@ CONFIG_JBD=y | |||
1011 | # CONFIG_JFS_FS is not set | 1060 | # CONFIG_JFS_FS is not set |
1012 | # CONFIG_FS_POSIX_ACL is not set | 1061 | # CONFIG_FS_POSIX_ACL is not set |
1013 | # CONFIG_XFS_FS is not set | 1062 | # CONFIG_XFS_FS is not set |
1063 | # CONFIG_OCFS2_FS is not set | ||
1014 | # CONFIG_MINIX_FS is not set | 1064 | # CONFIG_MINIX_FS is not set |
1015 | # CONFIG_ROMFS_FS is not set | 1065 | # CONFIG_ROMFS_FS is not set |
1016 | CONFIG_INOTIFY=y | 1066 | CONFIG_INOTIFY=y |
@@ -1045,6 +1095,7 @@ CONFIG_TMPFS=y | |||
1045 | # CONFIG_HUGETLB_PAGE is not set | 1095 | # CONFIG_HUGETLB_PAGE is not set |
1046 | CONFIG_RAMFS=y | 1096 | CONFIG_RAMFS=y |
1047 | # CONFIG_RELAYFS_FS is not set | 1097 | # CONFIG_RELAYFS_FS is not set |
1098 | # CONFIG_CONFIGFS_FS is not set | ||
1048 | 1099 | ||
1049 | # | 1100 | # |
1050 | # Miscellaneous filesystems | 1101 | # Miscellaneous filesystems |
@@ -1151,18 +1202,22 @@ CONFIG_OPROFILE=y | |||
1151 | # Kernel hacking | 1202 | # Kernel hacking |
1152 | # | 1203 | # |
1153 | # CONFIG_PRINTK_TIME is not set | 1204 | # CONFIG_PRINTK_TIME is not set |
1154 | CONFIG_DEBUG_KERNEL=y | ||
1155 | CONFIG_MAGIC_SYSRQ=y | 1205 | CONFIG_MAGIC_SYSRQ=y |
1206 | CONFIG_DEBUG_KERNEL=y | ||
1156 | CONFIG_LOG_BUF_SHIFT=15 | 1207 | CONFIG_LOG_BUF_SHIFT=15 |
1157 | CONFIG_DETECT_SOFTLOCKUP=y | 1208 | CONFIG_DETECT_SOFTLOCKUP=y |
1158 | # CONFIG_SCHEDSTATS is not set | 1209 | # CONFIG_SCHEDSTATS is not set |
1159 | # CONFIG_DEBUG_SLAB is not set | 1210 | # CONFIG_DEBUG_SLAB is not set |
1211 | CONFIG_DEBUG_MUTEXES=y | ||
1160 | # CONFIG_DEBUG_SPINLOCK is not set | 1212 | # CONFIG_DEBUG_SPINLOCK is not set |
1161 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1213 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1162 | # CONFIG_DEBUG_KOBJECT is not set | 1214 | # CONFIG_DEBUG_KOBJECT is not set |
1163 | # CONFIG_DEBUG_INFO is not set | 1215 | # CONFIG_DEBUG_INFO is not set |
1164 | # CONFIG_DEBUG_IOREMAP is not set | ||
1165 | # CONFIG_DEBUG_FS is not set | 1216 | # CONFIG_DEBUG_FS is not set |
1217 | # CONFIG_DEBUG_VM is not set | ||
1218 | CONFIG_FORCED_INLINING=y | ||
1219 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1220 | CONFIG_DEBUG_RODATA=y | ||
1166 | 1221 | ||
1167 | # | 1222 | # |
1168 | # Security options | 1223 | # Security options |
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index d8a4ca021aac..360b7391cb8c 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -89,7 +89,7 @@ update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | |||
89 | if (pfn_valid(page_to_pfn(page)) && page_mapping(page) && | 89 | if (pfn_valid(page_to_pfn(page)) && page_mapping(page) && |
90 | test_bit(PG_dcache_dirty, &page->flags)) { | 90 | test_bit(PG_dcache_dirty, &page->flags)) { |
91 | 91 | ||
92 | flush_kernel_dcache_page(page_address(page)); | 92 | flush_kernel_dcache_page(page); |
93 | clear_bit(PG_dcache_dirty, &page->flags); | 93 | clear_bit(PG_dcache_dirty, &page->flags); |
94 | } | 94 | } |
95 | } | 95 | } |
@@ -278,7 +278,7 @@ void flush_dcache_page(struct page *page) | |||
278 | return; | 278 | return; |
279 | } | 279 | } |
280 | 280 | ||
281 | flush_kernel_dcache_page(page_address(page)); | 281 | flush_kernel_dcache_page(page); |
282 | 282 | ||
283 | if (!mapping) | 283 | if (!mapping) |
284 | return; | 284 | return; |
@@ -317,7 +317,7 @@ EXPORT_SYMBOL(flush_dcache_page); | |||
317 | 317 | ||
318 | /* Defined in arch/parisc/kernel/pacache.S */ | 318 | /* Defined in arch/parisc/kernel/pacache.S */ |
319 | EXPORT_SYMBOL(flush_kernel_dcache_range_asm); | 319 | EXPORT_SYMBOL(flush_kernel_dcache_range_asm); |
320 | EXPORT_SYMBOL(flush_kernel_dcache_page); | 320 | EXPORT_SYMBOL(flush_kernel_dcache_page_asm); |
321 | EXPORT_SYMBOL(flush_data_cache_local); | 321 | EXPORT_SYMBOL(flush_data_cache_local); |
322 | EXPORT_SYMBOL(flush_kernel_icache_range_asm); | 322 | EXPORT_SYMBOL(flush_kernel_icache_range_asm); |
323 | 323 | ||
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 9af4b22a6d77..7c95d7663c29 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -563,10 +563,10 @@ | |||
563 | extrd,u,*= \pte,_PAGE_GATEWAY_BIT+32,1,%r0 | 563 | extrd,u,*= \pte,_PAGE_GATEWAY_BIT+32,1,%r0 |
564 | depd %r0,11,2,\prot /* If Gateway, Set PL2 to 0 */ | 564 | depd %r0,11,2,\prot /* If Gateway, Set PL2 to 0 */ |
565 | 565 | ||
566 | /* Get rid of prot bits and convert to page addr for iitlbt */ | 566 | /* Get rid of prot bits and convert to page addr for iitlbt and idtlbt */ |
567 | 567 | ||
568 | depd %r0,63,PAGE_SHIFT,\pte | 568 | depd %r0,63,PAGE_SHIFT,\pte |
569 | extrd,u \pte,56,32,\pte | 569 | extrd,s \pte,(63-PAGE_SHIFT)+(63-58),64-PAGE_SHIFT,\pte |
570 | .endm | 570 | .endm |
571 | 571 | ||
572 | /* Identical macro to make_insert_tlb above, except it | 572 | /* Identical macro to make_insert_tlb above, except it |
@@ -584,7 +584,7 @@ | |||
584 | 584 | ||
585 | /* Get rid of prot bits and convert to page addr for iitlba */ | 585 | /* Get rid of prot bits and convert to page addr for iitlba */ |
586 | 586 | ||
587 | depi 0,31,12,\pte | 587 | depi 0,31,PAGE_SHIFT,\pte |
588 | extru \pte,24,25,\pte | 588 | extru \pte,24,25,\pte |
589 | 589 | ||
590 | .endm | 590 | .endm |
@@ -1014,14 +1014,21 @@ intr_restore: | |||
1014 | nop | 1014 | nop |
1015 | nop | 1015 | nop |
1016 | 1016 | ||
1017 | #ifndef CONFIG_PREEMPT | ||
1018 | # define intr_do_preempt intr_restore | ||
1019 | #endif /* !CONFIG_PREEMPT */ | ||
1020 | |||
1017 | .import schedule,code | 1021 | .import schedule,code |
1018 | intr_do_resched: | 1022 | intr_do_resched: |
1019 | /* Only do reschedule if we are returning to user space */ | 1023 | /* Only call schedule on return to userspace. If we're returning |
1024 | * to kernel space, we may schedule if CONFIG_PREEMPT, otherwise | ||
1025 | * we jump back to intr_restore. | ||
1026 | */ | ||
1020 | LDREG PT_IASQ0(%r16), %r20 | 1027 | LDREG PT_IASQ0(%r16), %r20 |
1021 | CMPIB= 0,%r20,intr_restore /* backward */ | 1028 | CMPIB= 0, %r20, intr_do_preempt |
1022 | nop | 1029 | nop |
1023 | LDREG PT_IASQ1(%r16), %r20 | 1030 | LDREG PT_IASQ1(%r16), %r20 |
1024 | CMPIB= 0,%r20,intr_restore /* backward */ | 1031 | CMPIB= 0, %r20, intr_do_preempt |
1025 | nop | 1032 | nop |
1026 | 1033 | ||
1027 | #ifdef CONFIG_64BIT | 1034 | #ifdef CONFIG_64BIT |
@@ -1037,6 +1044,32 @@ intr_do_resched: | |||
1037 | #endif | 1044 | #endif |
1038 | ldo R%intr_check_sig(%r2), %r2 | 1045 | ldo R%intr_check_sig(%r2), %r2 |
1039 | 1046 | ||
1047 | /* preempt the current task on returning to kernel | ||
1048 | * mode from an interrupt, iff need_resched is set, | ||
1049 | * and preempt_count is 0. otherwise, we continue on | ||
1050 | * our merry way back to the current running task. | ||
1051 | */ | ||
1052 | #ifdef CONFIG_PREEMPT | ||
1053 | .import preempt_schedule_irq,code | ||
1054 | intr_do_preempt: | ||
1055 | rsm PSW_SM_I, %r0 /* disable interrupts */ | ||
1056 | |||
1057 | /* current_thread_info()->preempt_count */ | ||
1058 | mfctl %cr30, %r1 | ||
1059 | LDREG TI_PRE_COUNT(%r1), %r19 | ||
1060 | CMPIB<> 0, %r19, intr_restore /* if preempt_count > 0 */ | ||
1061 | nop /* prev insn branched backwards */ | ||
1062 | |||
1063 | /* check if we interrupted a critical path */ | ||
1064 | LDREG PT_PSW(%r16), %r20 | ||
1065 | bb,<,n %r20, 31 - PSW_SM_I, intr_restore | ||
1066 | nop | ||
1067 | |||
1068 | BL preempt_schedule_irq, %r2 | ||
1069 | nop | ||
1070 | |||
1071 | b intr_restore /* ssm PSW_SM_I done by intr_restore */ | ||
1072 | #endif /* CONFIG_PREEMPT */ | ||
1040 | 1073 | ||
1041 | .import do_signal,code | 1074 | .import do_signal,code |
1042 | intr_do_signal: | 1075 | intr_do_signal: |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 9534ee17b9be..7a4f07e8d3c3 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -621,9 +621,9 @@ __clear_user_page_asm: | |||
621 | 621 | ||
622 | .procend | 622 | .procend |
623 | 623 | ||
624 | .export flush_kernel_dcache_page | 624 | .export flush_kernel_dcache_page_asm |
625 | 625 | ||
626 | flush_kernel_dcache_page: | 626 | flush_kernel_dcache_page_asm: |
627 | .proc | 627 | .proc |
628 | .callinfo NO_CALLS | 628 | .callinfo NO_CALLS |
629 | .entry | 629 | .entry |
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 1d00c365f2b1..47ca5c0a323b 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c | |||
@@ -30,22 +30,7 @@ | |||
30 | #include <linux/syscalls.h> | 30 | #include <linux/syscalls.h> |
31 | 31 | ||
32 | #include <linux/string.h> | 32 | #include <linux/string.h> |
33 | EXPORT_SYMBOL(memchr); | ||
34 | EXPORT_SYMBOL(memcmp); | ||
35 | EXPORT_SYMBOL(memmove); | ||
36 | EXPORT_SYMBOL(memscan); | ||
37 | EXPORT_SYMBOL(memset); | 33 | EXPORT_SYMBOL(memset); |
38 | EXPORT_SYMBOL(strcat); | ||
39 | EXPORT_SYMBOL(strchr); | ||
40 | EXPORT_SYMBOL(strcmp); | ||
41 | EXPORT_SYMBOL(strcpy); | ||
42 | EXPORT_SYMBOL(strlen); | ||
43 | EXPORT_SYMBOL(strncat); | ||
44 | EXPORT_SYMBOL(strncmp); | ||
45 | EXPORT_SYMBOL(strncpy); | ||
46 | EXPORT_SYMBOL(strnlen); | ||
47 | EXPORT_SYMBOL(strrchr); | ||
48 | EXPORT_SYMBOL(strstr); | ||
49 | EXPORT_SYMBOL(strpbrk); | 34 | EXPORT_SYMBOL(strpbrk); |
50 | 35 | ||
51 | #include <asm/atomic.h> | 36 | #include <asm/atomic.h> |
@@ -82,16 +67,12 @@ EXPORT_SYMBOL($global$); | |||
82 | #endif | 67 | #endif |
83 | 68 | ||
84 | #include <asm/io.h> | 69 | #include <asm/io.h> |
85 | EXPORT_SYMBOL(__ioremap); | ||
86 | EXPORT_SYMBOL(iounmap); | ||
87 | EXPORT_SYMBOL(memcpy_toio); | 70 | EXPORT_SYMBOL(memcpy_toio); |
88 | EXPORT_SYMBOL(memcpy_fromio); | 71 | EXPORT_SYMBOL(memcpy_fromio); |
89 | EXPORT_SYMBOL(memset_io); | 72 | EXPORT_SYMBOL(memset_io); |
90 | 73 | ||
91 | #include <asm/unistd.h> | 74 | #include <asm/unistd.h> |
92 | EXPORT_SYMBOL(sys_open); | ||
93 | EXPORT_SYMBOL(sys_lseek); | 75 | EXPORT_SYMBOL(sys_lseek); |
94 | EXPORT_SYMBOL(sys_read); | ||
95 | EXPORT_SYMBOL(sys_write); | 76 | EXPORT_SYMBOL(sys_write); |
96 | 77 | ||
97 | #include <asm/semaphore.h> | 78 | #include <asm/semaphore.h> |
diff --git a/arch/parisc/kernel/pdc_chassis.c b/arch/parisc/kernel/pdc_chassis.c index 0cea6958f427..a45e2e2ffd9f 100644 --- a/arch/parisc/kernel/pdc_chassis.c +++ b/arch/parisc/kernel/pdc_chassis.c | |||
@@ -5,9 +5,8 @@ | |||
5 | * Copyright (C) 2002-2004 Thibaut VARENE <varenet@parisc-linux.org> | 5 | * Copyright (C) 2002-2004 Thibaut VARENE <varenet@parisc-linux.org> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License as published by | 8 | * it under the terms of the GNU General Public License, version 2, as |
9 | * the Free Software Foundation; either version 2 of the License, or | 9 | * published by the Free Software Foundation. |
10 | * (at your option) any later version. | ||
11 | * | 10 | * |
12 | * This program is distributed in the hope that it will be useful, | 11 | * This program is distributed in the hope that it will be useful, |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
diff --git a/arch/parisc/kernel/perf.c b/arch/parisc/kernel/perf.c index 53f861c82f93..ac8ee205c351 100644 --- a/arch/parisc/kernel/perf.c +++ b/arch/parisc/kernel/perf.c | |||
@@ -805,7 +805,7 @@ static int perf_write_image(uint64_t *memaddr) | |||
805 | return -1; | 805 | return -1; |
806 | } | 806 | } |
807 | 807 | ||
808 | runway = ioremap(cpu_device->hpa.start, 4096); | 808 | runway = ioremap_nocache(cpu_device->hpa.start, 4096); |
809 | 809 | ||
810 | /* Merge intrigue bits into Runway STATUS 0 */ | 810 | /* Merge intrigue bits into Runway STATUS 0 */ |
811 | tmp64 = __raw_readq(runway + RUNWAY_STATUS) & 0xffecfffffffffffful; | 811 | tmp64 = __raw_readq(runway + RUNWAY_STATUS) & 0xffecfffffffffffful; |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 89b6c56ea0a8..bbeeb614cfab 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -287,7 +287,7 @@ | |||
287 | ENTRY_SAME(chown) /* 180 */ | 287 | ENTRY_SAME(chown) /* 180 */ |
288 | /* setsockopt() used by iptables: SO_SET_REPLACE/SO_SET_ADD_COUNTERS */ | 288 | /* setsockopt() used by iptables: SO_SET_REPLACE/SO_SET_ADD_COUNTERS */ |
289 | ENTRY_COMP(setsockopt) | 289 | ENTRY_COMP(setsockopt) |
290 | ENTRY_SAME(getsockopt) | 290 | ENTRY_COMP(getsockopt) |
291 | ENTRY_COMP(sendmsg) | 291 | ENTRY_COMP(sendmsg) |
292 | ENTRY_COMP(recvmsg) | 292 | ENTRY_COMP(recvmsg) |
293 | ENTRY_SAME(semop) /* 185 */ | 293 | ENTRY_SAME(semop) /* 185 */ |
diff --git a/arch/parisc/lib/iomap.c b/arch/parisc/lib/iomap.c index 01bec8fcbd0d..f4a811690ab3 100644 --- a/arch/parisc/lib/iomap.c +++ b/arch/parisc/lib/iomap.c | |||
@@ -263,11 +263,7 @@ static const struct iomap_ops iomem_ops = { | |||
263 | 263 | ||
264 | const struct iomap_ops *iomap_ops[8] = { | 264 | const struct iomap_ops *iomap_ops[8] = { |
265 | [0] = &ioport_ops, | 265 | [0] = &ioport_ops, |
266 | #ifdef CONFIG_DEBUG_IOREMAP | ||
267 | [6] = &iomem_ops, | ||
268 | #else | ||
269 | [7] = &iomem_ops | 266 | [7] = &iomem_ops |
270 | #endif | ||
271 | }; | 267 | }; |
272 | 268 | ||
273 | 269 | ||
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 852eda3953dc..3796be67cd53 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -1013,9 +1013,9 @@ void flush_tlb_all(void) | |||
1013 | #ifdef CONFIG_BLK_DEV_INITRD | 1013 | #ifdef CONFIG_BLK_DEV_INITRD |
1014 | void free_initrd_mem(unsigned long start, unsigned long end) | 1014 | void free_initrd_mem(unsigned long start, unsigned long end) |
1015 | { | 1015 | { |
1016 | #if 0 | 1016 | if (start >= end) |
1017 | if (start < end) | 1017 | return; |
1018 | printk(KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | 1018 | printk(KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10); |
1019 | for (; start < end; start += PAGE_SIZE) { | 1019 | for (; start < end; start += PAGE_SIZE) { |
1020 | ClearPageReserved(virt_to_page(start)); | 1020 | ClearPageReserved(virt_to_page(start)); |
1021 | init_page_count(virt_to_page(start)); | 1021 | init_page_count(virt_to_page(start)); |
@@ -1023,6 +1023,5 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
1023 | num_physpages++; | 1023 | num_physpages++; |
1024 | totalram_pages++; | 1024 | totalram_pages++; |
1025 | } | 1025 | } |
1026 | #endif | ||
1027 | } | 1026 | } |
1028 | #endif | 1027 | #endif |
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c index edd9a9559cba..0db12818d7bc 100644 --- a/arch/parisc/mm/ioremap.c +++ b/arch/parisc/mm/ioremap.c | |||
@@ -72,7 +72,6 @@ remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size, | |||
72 | return 0; | 72 | return 0; |
73 | } | 73 | } |
74 | 74 | ||
75 | #if USE_HPPA_IOREMAP | ||
76 | static int | 75 | static int |
77 | remap_area_pages(unsigned long address, unsigned long phys_addr, | 76 | remap_area_pages(unsigned long address, unsigned long phys_addr, |
78 | unsigned long size, unsigned long flags) | 77 | unsigned long size, unsigned long flags) |
@@ -114,31 +113,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr, | |||
114 | 113 | ||
115 | return error; | 114 | return error; |
116 | } | 115 | } |
117 | #endif /* USE_HPPA_IOREMAP */ | ||
118 | |||
119 | #ifdef CONFIG_DEBUG_IOREMAP | ||
120 | static unsigned long last = 0; | ||
121 | |||
122 | void gsc_bad_addr(unsigned long addr) | ||
123 | { | ||
124 | if (time_after(jiffies, last + HZ*10)) { | ||
125 | printk("gsc_foo() called with bad address 0x%lx\n", addr); | ||
126 | dump_stack(); | ||
127 | last = jiffies; | ||
128 | } | ||
129 | } | ||
130 | EXPORT_SYMBOL(gsc_bad_addr); | ||
131 | |||
132 | void __raw_bad_addr(const volatile void __iomem *addr) | ||
133 | { | ||
134 | if (time_after(jiffies, last + HZ*10)) { | ||
135 | printk("__raw_foo() called with bad address 0x%p\n", addr); | ||
136 | dump_stack(); | ||
137 | last = jiffies; | ||
138 | } | ||
139 | } | ||
140 | EXPORT_SYMBOL(__raw_bad_addr); | ||
141 | #endif | ||
142 | 116 | ||
143 | /* | 117 | /* |
144 | * Generic mapping function (not visible outside): | 118 | * Generic mapping function (not visible outside): |
@@ -154,26 +128,19 @@ EXPORT_SYMBOL(__raw_bad_addr); | |||
154 | */ | 128 | */ |
155 | void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) | 129 | void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) |
156 | { | 130 | { |
157 | #if !(USE_HPPA_IOREMAP) | 131 | void *addr; |
132 | struct vm_struct *area; | ||
133 | unsigned long offset, last_addr; | ||
158 | 134 | ||
135 | #ifdef CONFIG_EISA | ||
159 | unsigned long end = phys_addr + size - 1; | 136 | unsigned long end = phys_addr + size - 1; |
160 | /* Support EISA addresses */ | 137 | /* Support EISA addresses */ |
161 | if ((phys_addr >= 0x00080000 && end < 0x000fffff) | 138 | if ((phys_addr >= 0x00080000 && end < 0x000fffff) || |
162 | || (phys_addr >= 0x00500000 && end < 0x03bfffff)) { | 139 | (phys_addr >= 0x00500000 && end < 0x03bfffff)) { |
163 | phys_addr |= 0xfc000000; | 140 | phys_addr |= F_EXTEND(0xfc000000); |
164 | } | 141 | } |
165 | |||
166 | #ifdef CONFIG_DEBUG_IOREMAP | ||
167 | return (void __iomem *)(phys_addr - (0x1UL << NYBBLE_SHIFT)); | ||
168 | #else | ||
169 | return (void __iomem *)phys_addr; | ||
170 | #endif | 142 | #endif |
171 | 143 | ||
172 | #else | ||
173 | void *addr; | ||
174 | struct vm_struct *area; | ||
175 | unsigned long offset, last_addr; | ||
176 | |||
177 | /* Don't allow wraparound or zero size */ | 144 | /* Don't allow wraparound or zero size */ |
178 | last_addr = phys_addr + size - 1; | 145 | last_addr = phys_addr + size - 1; |
179 | if (!size || last_addr < phys_addr) | 146 | if (!size || last_addr < phys_addr) |
@@ -217,15 +184,12 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l | |||
217 | } | 184 | } |
218 | 185 | ||
219 | return (void __iomem *) (offset + (char *)addr); | 186 | return (void __iomem *) (offset + (char *)addr); |
220 | #endif | ||
221 | } | 187 | } |
188 | EXPORT_SYMBOL(__ioremap); | ||
222 | 189 | ||
223 | void iounmap(void __iomem *addr) | 190 | void iounmap(void __iomem *addr) |
224 | { | 191 | { |
225 | #if !(USE_HPPA_IOREMAP) | ||
226 | return; | ||
227 | #else | ||
228 | if (addr > high_memory) | 192 | if (addr > high_memory) |
229 | return vfree((void *) (PAGE_MASK & (unsigned long __force) addr)); | 193 | return vfree((void *) (PAGE_MASK & (unsigned long __force) addr)); |
230 | #endif | ||
231 | } | 194 | } |
195 | EXPORT_SYMBOL(iounmap); | ||
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c index 211d72653ea6..764d07329716 100644 --- a/arch/powerpc/kernel/crash_dump.c +++ b/arch/powerpc/kernel/crash_dump.c | |||
@@ -61,7 +61,7 @@ static int __init parse_elfcorehdr(char *p) | |||
61 | if (p) | 61 | if (p) |
62 | elfcorehdr_addr = memparse(p, &p); | 62 | elfcorehdr_addr = memparse(p, &p); |
63 | 63 | ||
64 | return 0; | 64 | return 1; |
65 | } | 65 | } |
66 | __setup("elfcorehdr=", parse_elfcorehdr); | 66 | __setup("elfcorehdr=", parse_elfcorehdr); |
67 | #endif | 67 | #endif |
@@ -71,7 +71,7 @@ static int __init parse_savemaxmem(char *p) | |||
71 | if (p) | 71 | if (p) |
72 | saved_max_pfn = (memparse(p, &p) >> PAGE_SHIFT) - 1; | 72 | saved_max_pfn = (memparse(p, &p) >> PAGE_SHIFT) - 1; |
73 | 73 | ||
74 | return 0; | 74 | return 1; |
75 | } | 75 | } |
76 | __setup("savemaxmem=", parse_savemaxmem); | 76 | __setup("savemaxmem=", parse_savemaxmem); |
77 | 77 | ||
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 706090c99f47..2dd47d2dd998 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -834,7 +834,6 @@ unsigned long get_wchan(struct task_struct *p) | |||
834 | } while (count++ < 16); | 834 | } while (count++ < 16); |
835 | return 0; | 835 | return 0; |
836 | } | 836 | } |
837 | EXPORT_SYMBOL(get_wchan); | ||
838 | 837 | ||
839 | static int kstack_depth_to_print = 64; | 838 | static int kstack_depth_to_print = 64; |
840 | 839 | ||
diff --git a/arch/powerpc/kernel/vdso32/sigtramp.S b/arch/powerpc/kernel/vdso32/sigtramp.S index e04642781917..0c6a37b29dde 100644 --- a/arch/powerpc/kernel/vdso32/sigtramp.S +++ b/arch/powerpc/kernel/vdso32/sigtramp.S | |||
@@ -261,7 +261,7 @@ V_FUNCTION_END(__kernel_sigtramp_rt32) | |||
261 | .Lcie_start: | 261 | .Lcie_start: |
262 | .long 0 /* CIE ID */ | 262 | .long 0 /* CIE ID */ |
263 | .byte 1 /* Version number */ | 263 | .byte 1 /* Version number */ |
264 | .string "zR" /* NUL-terminated augmentation string */ | 264 | .string "zRS" /* NUL-terminated augmentation string */ |
265 | .uleb128 4 /* Code alignment factor */ | 265 | .uleb128 4 /* Code alignment factor */ |
266 | .sleb128 -4 /* Data alignment factor */ | 266 | .sleb128 -4 /* Data alignment factor */ |
267 | .byte 67 /* Return address register column, ap */ | 267 | .byte 67 /* Return address register column, ap */ |
diff --git a/arch/powerpc/kernel/vdso64/sigtramp.S b/arch/powerpc/kernel/vdso64/sigtramp.S index 31b604ab56de..7479edb101b8 100644 --- a/arch/powerpc/kernel/vdso64/sigtramp.S +++ b/arch/powerpc/kernel/vdso64/sigtramp.S | |||
@@ -263,7 +263,7 @@ V_FUNCTION_END(__kernel_sigtramp_rt64) | |||
263 | .Lcie_start: | 263 | .Lcie_start: |
264 | .long 0 /* CIE ID */ | 264 | .long 0 /* CIE ID */ |
265 | .byte 1 /* Version number */ | 265 | .byte 1 /* Version number */ |
266 | .string "zR" /* NUL-terminated augmentation string */ | 266 | .string "zRS" /* NUL-terminated augmentation string */ |
267 | .uleb128 4 /* Code alignment factor */ | 267 | .uleb128 4 /* Code alignment factor */ |
268 | .sleb128 -8 /* Data alignment factor */ | 268 | .sleb128 -8 /* Data alignment factor */ |
269 | .byte 67 /* Return address register column, ap */ | 269 | .byte 67 /* Return address register column, ap */ |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 2b8841f85534..343120c9223d 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -801,7 +801,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
801 | */ | 801 | */ |
802 | print_cpu_info(&S390_lowcore.cpu_data); | 802 | print_cpu_info(&S390_lowcore.cpu_data); |
803 | 803 | ||
804 | for_each_cpu(i) { | 804 | for_each_possible_cpu(i) { |
805 | lowcore_ptr[i] = (struct _lowcore *) | 805 | lowcore_ptr[i] = (struct _lowcore *) |
806 | __get_free_pages(GFP_KERNEL|GFP_DMA, | 806 | __get_free_pages(GFP_KERNEL|GFP_DMA, |
807 | sizeof(void*) == 8 ? 1 : 0); | 807 | sizeof(void*) == 8 ? 1 : 0); |
@@ -831,7 +831,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
831 | #endif | 831 | #endif |
832 | set_prefix((u32)(unsigned long) lowcore_ptr[smp_processor_id()]); | 832 | set_prefix((u32)(unsigned long) lowcore_ptr[smp_processor_id()]); |
833 | 833 | ||
834 | for_each_cpu(cpu) | 834 | for_each_possible_cpu(cpu) |
835 | if (cpu != smp_processor_id()) | 835 | if (cpu != smp_processor_id()) |
836 | smp_create_idle(cpu); | 836 | smp_create_idle(cpu); |
837 | } | 837 | } |
@@ -868,7 +868,7 @@ static int __init topology_init(void) | |||
868 | int cpu; | 868 | int cpu; |
869 | int ret; | 869 | int ret; |
870 | 870 | ||
871 | for_each_cpu(cpu) { | 871 | for_each_possible_cpu(cpu) { |
872 | ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL); | 872 | ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL); |
873 | if (ret) | 873 | if (ret) |
874 | printk(KERN_WARNING "topology_init: register_cpu %d " | 874 | printk(KERN_WARNING "topology_init: register_cpu %d " |
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index cf94e8ef17c5..868e68b28880 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -30,7 +30,7 @@ static int x##_disabled __initdata = 0; \ | |||
30 | static int __init x##_setup(char *opts) \ | 30 | static int __init x##_setup(char *opts) \ |
31 | { \ | 31 | { \ |
32 | x##_disabled = 1; \ | 32 | x##_disabled = 1; \ |
33 | return 0; \ | 33 | return 1; \ |
34 | } \ | 34 | } \ |
35 | __setup("no" __stringify(x), x##_setup); | 35 | __setup("no" __stringify(x), x##_setup); |
36 | 36 | ||
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 7ee4ca203616..bb229ef030f3 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -401,7 +401,7 @@ static int __init topology_init(void) | |||
401 | { | 401 | { |
402 | int cpu_id; | 402 | int cpu_id; |
403 | 403 | ||
404 | for_each_cpu(cpu_id) | 404 | for_each_possible_cpu(cpu_id) |
405 | register_cpu(&cpu[cpu_id], cpu_id, NULL); | 405 | register_cpu(&cpu[cpu_id], cpu_id, NULL); |
406 | 406 | ||
407 | return 0; | 407 | return 0; |
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 5982fe2753e0..05fbb20636cb 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
@@ -22,6 +22,9 @@ config SBUS | |||
22 | config PCI | 22 | config PCI |
23 | bool | 23 | bool |
24 | 24 | ||
25 | config PCMCIA | ||
26 | bool | ||
27 | |||
25 | config GENERIC_CALIBRATE_DELAY | 28 | config GENERIC_CALIBRATE_DELAY |
26 | bool | 29 | bool |
27 | default y | 30 | default y |
diff --git a/arch/um/Makefile b/arch/um/Makefile index 8d14c7a831be..24790bed2054 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile | |||
@@ -20,7 +20,7 @@ core-y += $(ARCH_DIR)/kernel/ \ | |||
20 | 20 | ||
21 | # Have to precede the include because the included Makefiles reference them. | 21 | # Have to precede the include because the included Makefiles reference them. |
22 | SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \ | 22 | SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \ |
23 | module.h vm-flags.h elf.h ldt.h | 23 | module.h vm-flags.h elf.h host_ldt.h |
24 | SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header)) | 24 | SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header)) |
25 | 25 | ||
26 | # XXX: The "os" symlink is only used by arch/um/include/os.h, which includes | 26 | # XXX: The "os" symlink is only used by arch/um/include/os.h, which includes |
@@ -129,7 +129,7 @@ CPPFLAGS_vmlinux.lds = -U$(SUBARCH) \ | |||
129 | -DSTART=$(START) -DELF_ARCH=$(ELF_ARCH) \ | 129 | -DSTART=$(START) -DELF_ARCH=$(ELF_ARCH) \ |
130 | -DELF_FORMAT="$(ELF_FORMAT)" $(CPP_MODE-y) \ | 130 | -DELF_FORMAT="$(ELF_FORMAT)" $(CPP_MODE-y) \ |
131 | -DKERNEL_STACK_SIZE=$(STACK_SIZE) \ | 131 | -DKERNEL_STACK_SIZE=$(STACK_SIZE) \ |
132 | -DUNMAP_PATH=arch/um/sys-$(SUBARCH)/unmap_fin.o | 132 | -DUNMAP_PATH=arch/um/sys-$(SUBARCH)/unmap.o |
133 | 133 | ||
134 | #The wrappers will select whether using "malloc" or the kernel allocator. | 134 | #The wrappers will select whether using "malloc" or the kernel allocator. |
135 | LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc | 135 | LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc |
@@ -150,8 +150,7 @@ CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/include/uml-config.h \ | |||
150 | $(ARCH_DIR)/include/user_constants.h \ | 150 | $(ARCH_DIR)/include/user_constants.h \ |
151 | $(ARCH_DIR)/include/kern_constants.h $(ARCH_DIR)/Kconfig.arch | 151 | $(ARCH_DIR)/include/kern_constants.h $(ARCH_DIR)/Kconfig.arch |
152 | 152 | ||
153 | MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \ | 153 | MRPROPER_FILES += $(ARCH_SYMLINKS) |
154 | $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) $(ARCH_DIR)/os | ||
155 | 154 | ||
156 | archclean: | 155 | archclean: |
157 | @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ | 156 | @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ |
diff --git a/arch/um/Makefile-x86_64 b/arch/um/Makefile-x86_64 index 38df311e75dc..dfd88b652fbe 100644 --- a/arch/um/Makefile-x86_64 +++ b/arch/um/Makefile-x86_64 | |||
@@ -1,7 +1,7 @@ | |||
1 | # Copyright 2003 - 2004 Pathscale, Inc | 1 | # Copyright 2003 - 2004 Pathscale, Inc |
2 | # Released under the GPL | 2 | # Released under the GPL |
3 | 3 | ||
4 | libs-y += arch/um/sys-x86_64/ | 4 | core-y += arch/um/sys-x86_64/ |
5 | START := 0x60000000 | 5 | START := 0x60000000 |
6 | 6 | ||
7 | #We #undef __x86_64__ for kernelspace, not for userspace where | 7 | #We #undef __x86_64__ for kernelspace, not for userspace where |
diff --git a/arch/um/drivers/daemon_kern.c b/arch/um/drivers/daemon_kern.c index a61b7b46bc02..53d09ed78b42 100644 --- a/arch/um/drivers/daemon_kern.c +++ b/arch/um/drivers/daemon_kern.c | |||
@@ -95,18 +95,7 @@ static struct transport daemon_transport = { | |||
95 | static int register_daemon(void) | 95 | static int register_daemon(void) |
96 | { | 96 | { |
97 | register_transport(&daemon_transport); | 97 | register_transport(&daemon_transport); |
98 | return(1); | 98 | return 0; |
99 | } | 99 | } |
100 | 100 | ||
101 | __initcall(register_daemon); | 101 | __initcall(register_daemon); |
102 | |||
103 | /* | ||
104 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
105 | * Emacs will notice this stuff at the end of the file and automatically | ||
106 | * adjust the settings for this buffer only. This must remain at the end | ||
107 | * of the file. | ||
108 | * --------------------------------------------------------------------------- | ||
109 | * Local variables: | ||
110 | * c-file-style: "linux" | ||
111 | * End: | ||
112 | */ | ||
diff --git a/arch/um/drivers/harddog_kern.c b/arch/um/drivers/harddog_kern.c index 49acb2badf32..d18a974735e6 100644 --- a/arch/um/drivers/harddog_kern.c +++ b/arch/um/drivers/harddog_kern.c | |||
@@ -104,7 +104,7 @@ static int harddog_release(struct inode *inode, struct file *file) | |||
104 | 104 | ||
105 | extern int ping_watchdog(int fd); | 105 | extern int ping_watchdog(int fd); |
106 | 106 | ||
107 | static ssize_t harddog_write(struct file *file, const char *data, size_t len, | 107 | static ssize_t harddog_write(struct file *file, const char __user *data, size_t len, |
108 | loff_t *ppos) | 108 | loff_t *ppos) |
109 | { | 109 | { |
110 | /* | 110 | /* |
@@ -118,6 +118,7 @@ static ssize_t harddog_write(struct file *file, const char *data, size_t len, | |||
118 | static int harddog_ioctl(struct inode *inode, struct file *file, | 118 | static int harddog_ioctl(struct inode *inode, struct file *file, |
119 | unsigned int cmd, unsigned long arg) | 119 | unsigned int cmd, unsigned long arg) |
120 | { | 120 | { |
121 | void __user *argp= (void __user *)arg; | ||
121 | static struct watchdog_info ident = { | 122 | static struct watchdog_info ident = { |
122 | WDIOC_SETTIMEOUT, | 123 | WDIOC_SETTIMEOUT, |
123 | 0, | 124 | 0, |
@@ -127,13 +128,12 @@ static int harddog_ioctl(struct inode *inode, struct file *file, | |||
127 | default: | 128 | default: |
128 | return -ENOTTY; | 129 | return -ENOTTY; |
129 | case WDIOC_GETSUPPORT: | 130 | case WDIOC_GETSUPPORT: |
130 | if(copy_to_user((struct harddog_info *)arg, &ident, | 131 | if(copy_to_user(argp, &ident, sizeof(ident))) |
131 | sizeof(ident))) | ||
132 | return -EFAULT; | 132 | return -EFAULT; |
133 | return 0; | 133 | return 0; |
134 | case WDIOC_GETSTATUS: | 134 | case WDIOC_GETSTATUS: |
135 | case WDIOC_GETBOOTSTATUS: | 135 | case WDIOC_GETBOOTSTATUS: |
136 | return put_user(0,(int *)arg); | 136 | return put_user(0,(int __user *)argp); |
137 | case WDIOC_KEEPALIVE: | 137 | case WDIOC_KEEPALIVE: |
138 | return(ping_watchdog(harddog_out_fd)); | 138 | return(ping_watchdog(harddog_out_fd)); |
139 | } | 139 | } |
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index 59602b81b240..37232f908cd7 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c | |||
@@ -67,8 +67,8 @@ MODULE_PARM_DESC(mixer, MIXER_HELP); | |||
67 | 67 | ||
68 | /* /dev/dsp file operations */ | 68 | /* /dev/dsp file operations */ |
69 | 69 | ||
70 | static ssize_t hostaudio_read(struct file *file, char *buffer, size_t count, | 70 | static ssize_t hostaudio_read(struct file *file, char __user *buffer, |
71 | loff_t *ppos) | 71 | size_t count, loff_t *ppos) |
72 | { | 72 | { |
73 | struct hostaudio_state *state = file->private_data; | 73 | struct hostaudio_state *state = file->private_data; |
74 | void *kbuf; | 74 | void *kbuf; |
@@ -94,7 +94,7 @@ static ssize_t hostaudio_read(struct file *file, char *buffer, size_t count, | |||
94 | return(err); | 94 | return(err); |
95 | } | 95 | } |
96 | 96 | ||
97 | static ssize_t hostaudio_write(struct file *file, const char *buffer, | 97 | static ssize_t hostaudio_write(struct file *file, const char __user *buffer, |
98 | size_t count, loff_t *ppos) | 98 | size_t count, loff_t *ppos) |
99 | { | 99 | { |
100 | struct hostaudio_state *state = file->private_data; | 100 | struct hostaudio_state *state = file->private_data; |
@@ -152,7 +152,7 @@ static int hostaudio_ioctl(struct inode *inode, struct file *file, | |||
152 | case SNDCTL_DSP_CHANNELS: | 152 | case SNDCTL_DSP_CHANNELS: |
153 | case SNDCTL_DSP_SUBDIVIDE: | 153 | case SNDCTL_DSP_SUBDIVIDE: |
154 | case SNDCTL_DSP_SETFRAGMENT: | 154 | case SNDCTL_DSP_SETFRAGMENT: |
155 | if(get_user(data, (int *) arg)) | 155 | if(get_user(data, (int __user *) arg)) |
156 | return(-EFAULT); | 156 | return(-EFAULT); |
157 | break; | 157 | break; |
158 | default: | 158 | default: |
@@ -168,7 +168,7 @@ static int hostaudio_ioctl(struct inode *inode, struct file *file, | |||
168 | case SNDCTL_DSP_CHANNELS: | 168 | case SNDCTL_DSP_CHANNELS: |
169 | case SNDCTL_DSP_SUBDIVIDE: | 169 | case SNDCTL_DSP_SUBDIVIDE: |
170 | case SNDCTL_DSP_SETFRAGMENT: | 170 | case SNDCTL_DSP_SETFRAGMENT: |
171 | if(put_user(data, (int *) arg)) | 171 | if(put_user(data, (int __user *) arg)) |
172 | return(-EFAULT); | 172 | return(-EFAULT); |
173 | break; | 173 | break; |
174 | default: | 174 | default: |
diff --git a/arch/um/drivers/mcast_kern.c b/arch/um/drivers/mcast_kern.c index c9b078fba03e..3a7af18cf944 100644 --- a/arch/um/drivers/mcast_kern.c +++ b/arch/um/drivers/mcast_kern.c | |||
@@ -124,18 +124,7 @@ static struct transport mcast_transport = { | |||
124 | static int register_mcast(void) | 124 | static int register_mcast(void) |
125 | { | 125 | { |
126 | register_transport(&mcast_transport); | 126 | register_transport(&mcast_transport); |
127 | return(1); | 127 | return 0; |
128 | } | 128 | } |
129 | 129 | ||
130 | __initcall(register_mcast); | 130 | __initcall(register_mcast); |
131 | |||
132 | /* | ||
133 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
134 | * Emacs will notice this stuff at the end of the file and automatically | ||
135 | * adjust the settings for this buffer only. This must remain at the end | ||
136 | * of the file. | ||
137 | * --------------------------------------------------------------------------- | ||
138 | * Local variables: | ||
139 | * c-file-style: "linux" | ||
140 | * End: | ||
141 | */ | ||
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 1488816588ea..28e3760e8b98 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "linux/namei.h" | 20 | #include "linux/namei.h" |
21 | #include "linux/proc_fs.h" | 21 | #include "linux/proc_fs.h" |
22 | #include "linux/syscalls.h" | 22 | #include "linux/syscalls.h" |
23 | #include "linux/list.h" | ||
24 | #include "linux/mm.h" | ||
23 | #include "linux/console.h" | 25 | #include "linux/console.h" |
24 | #include "asm/irq.h" | 26 | #include "asm/irq.h" |
25 | #include "asm/uaccess.h" | 27 | #include "asm/uaccess.h" |
@@ -347,6 +349,142 @@ static struct mc_device *mconsole_find_dev(char *name) | |||
347 | return(NULL); | 349 | return(NULL); |
348 | } | 350 | } |
349 | 351 | ||
352 | #define UNPLUGGED_PER_PAGE \ | ||
353 | ((PAGE_SIZE - sizeof(struct list_head)) / sizeof(unsigned long)) | ||
354 | |||
355 | struct unplugged_pages { | ||
356 | struct list_head list; | ||
357 | void *pages[UNPLUGGED_PER_PAGE]; | ||
358 | }; | ||
359 | |||
360 | static unsigned long long unplugged_pages_count = 0; | ||
361 | static struct list_head unplugged_pages = LIST_HEAD_INIT(unplugged_pages); | ||
362 | static int unplug_index = UNPLUGGED_PER_PAGE; | ||
363 | |||
364 | static int mem_config(char *str) | ||
365 | { | ||
366 | unsigned long long diff; | ||
367 | int err = -EINVAL, i, add; | ||
368 | char *ret; | ||
369 | |||
370 | if(str[0] != '=') | ||
371 | goto out; | ||
372 | |||
373 | str++; | ||
374 | if(str[0] == '-') | ||
375 | add = 0; | ||
376 | else if(str[0] == '+'){ | ||
377 | add = 1; | ||
378 | } | ||
379 | else goto out; | ||
380 | |||
381 | str++; | ||
382 | diff = memparse(str, &ret); | ||
383 | if(*ret != '\0') | ||
384 | goto out; | ||
385 | |||
386 | diff /= PAGE_SIZE; | ||
387 | |||
388 | for(i = 0; i < diff; i++){ | ||
389 | struct unplugged_pages *unplugged; | ||
390 | void *addr; | ||
391 | |||
392 | if(add){ | ||
393 | if(list_empty(&unplugged_pages)) | ||
394 | break; | ||
395 | |||
396 | unplugged = list_entry(unplugged_pages.next, | ||
397 | struct unplugged_pages, list); | ||
398 | if(unplug_index > 0) | ||
399 | addr = unplugged->pages[--unplug_index]; | ||
400 | else { | ||
401 | list_del(&unplugged->list); | ||
402 | addr = unplugged; | ||
403 | unplug_index = UNPLUGGED_PER_PAGE; | ||
404 | } | ||
405 | |||
406 | free_page((unsigned long) addr); | ||
407 | unplugged_pages_count--; | ||
408 | } | ||
409 | else { | ||
410 | struct page *page; | ||
411 | |||
412 | page = alloc_page(GFP_ATOMIC); | ||
413 | if(page == NULL) | ||
414 | break; | ||
415 | |||
416 | unplugged = page_address(page); | ||
417 | if(unplug_index == UNPLUGGED_PER_PAGE){ | ||
418 | INIT_LIST_HEAD(&unplugged->list); | ||
419 | list_add(&unplugged->list, &unplugged_pages); | ||
420 | unplug_index = 0; | ||
421 | } | ||
422 | else { | ||
423 | struct list_head *entry = unplugged_pages.next; | ||
424 | addr = unplugged; | ||
425 | |||
426 | unplugged = list_entry(entry, | ||
427 | struct unplugged_pages, | ||
428 | list); | ||
429 | unplugged->pages[unplug_index++] = addr; | ||
430 | err = os_drop_memory(addr, PAGE_SIZE); | ||
431 | if(err) | ||
432 | printk("Failed to release memory - " | ||
433 | "errno = %d\n", err); | ||
434 | } | ||
435 | |||
436 | unplugged_pages_count++; | ||
437 | } | ||
438 | } | ||
439 | |||
440 | err = 0; | ||
441 | out: | ||
442 | return err; | ||
443 | } | ||
444 | |||
445 | static int mem_get_config(char *name, char *str, int size, char **error_out) | ||
446 | { | ||
447 | char buf[sizeof("18446744073709551615")]; | ||
448 | int len = 0; | ||
449 | |||
450 | sprintf(buf, "%ld", uml_physmem); | ||
451 | CONFIG_CHUNK(str, size, len, buf, 1); | ||
452 | |||
453 | return len; | ||
454 | } | ||
455 | |||
456 | static int mem_id(char **str, int *start_out, int *end_out) | ||
457 | { | ||
458 | *start_out = 0; | ||
459 | *end_out = 0; | ||
460 | |||
461 | return 0; | ||
462 | } | ||
463 | |||
464 | static int mem_remove(int n) | ||
465 | { | ||
466 | return -EBUSY; | ||
467 | } | ||
468 | |||
469 | static struct mc_device mem_mc = { | ||
470 | .name = "mem", | ||
471 | .config = mem_config, | ||
472 | .get_config = mem_get_config, | ||
473 | .id = mem_id, | ||
474 | .remove = mem_remove, | ||
475 | }; | ||
476 | |||
477 | static int mem_mc_init(void) | ||
478 | { | ||
479 | if(can_drop_memory()) | ||
480 | mconsole_register_dev(&mem_mc); | ||
481 | else printk("Can't release memory to the host - memory hotplug won't " | ||
482 | "be supported\n"); | ||
483 | return 0; | ||
484 | } | ||
485 | |||
486 | __initcall(mem_mc_init); | ||
487 | |||
350 | #define CONFIG_BUF_SIZE 64 | 488 | #define CONFIG_BUF_SIZE 64 |
351 | 489 | ||
352 | static void mconsole_get_config(int (*get_config)(char *, char *, int, | 490 | static void mconsole_get_config(int (*get_config)(char *, char *, int, |
@@ -478,7 +616,7 @@ static void console_write(struct console *console, const char *string, | |||
478 | return; | 616 | return; |
479 | 617 | ||
480 | while(1){ | 618 | while(1){ |
481 | n = min(len, ARRAY_SIZE(console_buf) - console_index); | 619 | n = min((size_t)len, ARRAY_SIZE(console_buf) - console_index); |
482 | strncpy(&console_buf[console_index], string, n); | 620 | strncpy(&console_buf[console_index], string, n); |
483 | console_index += n; | 621 | console_index += n; |
484 | string += n; | 622 | string += n; |
diff --git a/arch/um/drivers/pcap_kern.c b/arch/um/drivers/pcap_kern.c index 07c80f2156ef..466ff2c2f918 100644 --- a/arch/um/drivers/pcap_kern.c +++ b/arch/um/drivers/pcap_kern.c | |||
@@ -106,18 +106,7 @@ static struct transport pcap_transport = { | |||
106 | static int register_pcap(void) | 106 | static int register_pcap(void) |
107 | { | 107 | { |
108 | register_transport(&pcap_transport); | 108 | register_transport(&pcap_transport); |
109 | return(1); | 109 | return 0; |
110 | } | 110 | } |
111 | 111 | ||
112 | __initcall(register_pcap); | 112 | __initcall(register_pcap); |
113 | |||
114 | /* | ||
115 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
116 | * Emacs will notice this stuff at the end of the file and automatically | ||
117 | * adjust the settings for this buffer only. This must remain at the end | ||
118 | * of the file. | ||
119 | * --------------------------------------------------------------------------- | ||
120 | * Local variables: | ||
121 | * c-file-style: "linux" | ||
122 | * End: | ||
123 | */ | ||
diff --git a/arch/um/drivers/slip_kern.c b/arch/um/drivers/slip_kern.c index a62f5ef445cf..163ee0d5f75e 100644 --- a/arch/um/drivers/slip_kern.c +++ b/arch/um/drivers/slip_kern.c | |||
@@ -93,18 +93,7 @@ static struct transport slip_transport = { | |||
93 | static int register_slip(void) | 93 | static int register_slip(void) |
94 | { | 94 | { |
95 | register_transport(&slip_transport); | 95 | register_transport(&slip_transport); |
96 | return(1); | 96 | return 0; |
97 | } | 97 | } |
98 | 98 | ||
99 | __initcall(register_slip); | 99 | __initcall(register_slip); |
100 | |||
101 | /* | ||
102 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
103 | * Emacs will notice this stuff at the end of the file and automatically | ||
104 | * adjust the settings for this buffer only. This must remain at the end | ||
105 | * of the file. | ||
106 | * --------------------------------------------------------------------------- | ||
107 | * Local variables: | ||
108 | * c-file-style: "linux" | ||
109 | * End: | ||
110 | */ | ||
diff --git a/arch/um/drivers/slirp_kern.c b/arch/um/drivers/slirp_kern.c index 33d7982be5d3..95e50c943e14 100644 --- a/arch/um/drivers/slirp_kern.c +++ b/arch/um/drivers/slirp_kern.c | |||
@@ -77,7 +77,7 @@ static int slirp_setup(char *str, char **mac_out, void *data) | |||
77 | int i=0; | 77 | int i=0; |
78 | 78 | ||
79 | *init = ((struct slirp_init) | 79 | *init = ((struct slirp_init) |
80 | { argw : { { "slirp", NULL } } }); | 80 | { .argw = { { "slirp", NULL } } }); |
81 | 81 | ||
82 | str = split_if_spec(str, mac_out, NULL); | 82 | str = split_if_spec(str, mac_out, NULL); |
83 | 83 | ||
@@ -116,18 +116,7 @@ static struct transport slirp_transport = { | |||
116 | static int register_slirp(void) | 116 | static int register_slirp(void) |
117 | { | 117 | { |
118 | register_transport(&slirp_transport); | 118 | register_transport(&slirp_transport); |
119 | return(1); | 119 | return 0; |
120 | } | 120 | } |
121 | 121 | ||
122 | __initcall(register_slirp); | 122 | __initcall(register_slirp); |
123 | |||
124 | /* | ||
125 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
126 | * Emacs will notice this stuff at the end of the file and automatically | ||
127 | * adjust the settings for this buffer only. This must remain at the end | ||
128 | * of the file. | ||
129 | * --------------------------------------------------------------------------- | ||
130 | * Local variables: | ||
131 | * c-file-style: "linux" | ||
132 | * End: | ||
133 | */ | ||
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 0336575d2448..0897852b09a3 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -891,7 +891,7 @@ int ubd_driver_init(void){ | |||
891 | SA_INTERRUPT, "ubd", ubd_dev); | 891 | SA_INTERRUPT, "ubd", ubd_dev); |
892 | if(err != 0) | 892 | if(err != 0) |
893 | printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); | 893 | printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); |
894 | return(err); | 894 | return 0; |
895 | } | 895 | } |
896 | 896 | ||
897 | device_initcall(ubd_driver_init); | 897 | device_initcall(ubd_driver_init); |
diff --git a/arch/um/include/kern_util.h b/arch/um/include/kern_util.h index 07176d92e1c9..42557130a408 100644 --- a/arch/um/include/kern_util.h +++ b/arch/um/include/kern_util.h | |||
@@ -116,7 +116,11 @@ extern void *get_current(void); | |||
116 | extern struct task_struct *get_task(int pid, int require); | 116 | extern struct task_struct *get_task(int pid, int require); |
117 | extern void machine_halt(void); | 117 | extern void machine_halt(void); |
118 | extern int is_syscall(unsigned long addr); | 118 | extern int is_syscall(unsigned long addr); |
119 | extern void arch_switch(void); | 119 | |
120 | extern void arch_switch_to_tt(struct task_struct *from, struct task_struct *to); | ||
121 | |||
122 | extern void arch_switch_to_skas(struct task_struct *from, struct task_struct *to); | ||
123 | |||
120 | extern void free_irq(unsigned int, void *); | 124 | extern void free_irq(unsigned int, void *); |
121 | extern int cpu(void); | 125 | extern int cpu(void); |
122 | 126 | ||
diff --git a/arch/um/include/line.h b/arch/um/include/line.h index 6f4d680dc1d4..6ac0f8252e21 100644 --- a/arch/um/include/line.h +++ b/arch/um/include/line.h | |||
@@ -58,23 +58,17 @@ struct line { | |||
58 | }; | 58 | }; |
59 | 59 | ||
60 | #define LINE_INIT(str, d) \ | 60 | #define LINE_INIT(str, d) \ |
61 | { init_str : str, \ | 61 | { .init_str = str, \ |
62 | init_pri : INIT_STATIC, \ | 62 | .init_pri = INIT_STATIC, \ |
63 | valid : 1, \ | 63 | .valid = 1, \ |
64 | throttled : 0, \ | 64 | .lock = SPIN_LOCK_UNLOCKED, \ |
65 | lock : SPIN_LOCK_UNLOCKED, \ | 65 | .driver = d } |
66 | buffer : NULL, \ | ||
67 | head : NULL, \ | ||
68 | tail : NULL, \ | ||
69 | sigio : 0, \ | ||
70 | driver : d, \ | ||
71 | have_irq : 0 } | ||
72 | 66 | ||
73 | struct lines { | 67 | struct lines { |
74 | int num; | 68 | int num; |
75 | }; | 69 | }; |
76 | 70 | ||
77 | #define LINES_INIT(n) { num : n } | 71 | #define LINES_INIT(n) { .num = n } |
78 | 72 | ||
79 | extern void line_close(struct tty_struct *tty, struct file * filp); | 73 | extern void line_close(struct tty_struct *tty, struct file * filp); |
80 | extern int line_open(struct line *lines, struct tty_struct *tty); | 74 | extern int line_open(struct line *lines, struct tty_struct *tty); |
diff --git a/arch/um/include/mem_user.h b/arch/um/include/mem_user.h index a1064c5823bf..a54514d2cc3a 100644 --- a/arch/um/include/mem_user.h +++ b/arch/um/include/mem_user.h | |||
@@ -49,7 +49,6 @@ extern int iomem_size; | |||
49 | extern unsigned long host_task_size; | 49 | extern unsigned long host_task_size; |
50 | extern unsigned long task_size; | 50 | extern unsigned long task_size; |
51 | 51 | ||
52 | extern void check_devanon(void); | ||
53 | extern int init_mem_user(void); | 52 | extern int init_mem_user(void); |
54 | extern void setup_memory(void *entry); | 53 | extern void setup_memory(void *entry); |
55 | extern unsigned long find_iomem(char *driver, unsigned long *len_out); | 54 | extern unsigned long find_iomem(char *driver, unsigned long *len_out); |
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index d3d1bc6074ef..f88856c28a66 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #include "kern_util.h" | 13 | #include "kern_util.h" |
14 | #include "skas/mm_id.h" | 14 | #include "skas/mm_id.h" |
15 | #include "irq_user.h" | 15 | #include "irq_user.h" |
16 | #include "sysdep/tls.h" | ||
16 | 17 | ||
17 | #define OS_TYPE_FILE 1 | 18 | #define OS_TYPE_FILE 1 |
18 | #define OS_TYPE_DIR 2 | 19 | #define OS_TYPE_DIR 2 |
@@ -172,6 +173,7 @@ extern int os_fchange_dir(int fd); | |||
172 | extern void os_early_checks(void); | 173 | extern void os_early_checks(void); |
173 | extern int can_do_skas(void); | 174 | extern int can_do_skas(void); |
174 | extern void os_check_bugs(void); | 175 | extern void os_check_bugs(void); |
176 | extern void check_host_supports_tls(int *supports_tls, int *tls_min); | ||
175 | 177 | ||
176 | /* Make sure they are clear when running in TT mode. Required by | 178 | /* Make sure they are clear when running in TT mode. Required by |
177 | * SEGV_MAYBE_FIXABLE */ | 179 | * SEGV_MAYBE_FIXABLE */ |
@@ -205,6 +207,8 @@ extern int os_map_memory(void *virt, int fd, unsigned long long off, | |||
205 | extern int os_protect_memory(void *addr, unsigned long len, | 207 | extern int os_protect_memory(void *addr, unsigned long len, |
206 | int r, int w, int x); | 208 | int r, int w, int x); |
207 | extern int os_unmap_memory(void *addr, int len); | 209 | extern int os_unmap_memory(void *addr, int len); |
210 | extern int os_drop_memory(void *addr, int length); | ||
211 | extern int can_drop_memory(void); | ||
208 | extern void os_flush_stdout(void); | 212 | extern void os_flush_stdout(void); |
209 | 213 | ||
210 | /* tt.c | 214 | /* tt.c |
@@ -234,8 +238,12 @@ extern int run_helper_thread(int (*proc)(void *), void *arg, | |||
234 | int stack_order); | 238 | int stack_order); |
235 | extern int helper_wait(int pid); | 239 | extern int helper_wait(int pid); |
236 | 240 | ||
237 | /* umid.c */ | ||
238 | 241 | ||
242 | /* tls.c */ | ||
243 | extern int os_set_thread_area(user_desc_t *info, int pid); | ||
244 | extern int os_get_thread_area(user_desc_t *info, int pid); | ||
245 | |||
246 | /* umid.c */ | ||
239 | extern int umid_file_name(char *name, char *buf, int len); | 247 | extern int umid_file_name(char *name, char *buf, int len); |
240 | extern int set_umid(char *name); | 248 | extern int set_umid(char *name); |
241 | extern char *get_umid(void); | 249 | extern char *get_umid(void); |
diff --git a/arch/um/include/sysdep-i386/checksum.h b/arch/um/include/sysdep-i386/checksum.h index 7d3d202d7fff..052bb061a978 100644 --- a/arch/um/include/sysdep-i386/checksum.h +++ b/arch/um/include/sysdep-i386/checksum.h | |||
@@ -48,7 +48,8 @@ unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char * | |||
48 | */ | 48 | */ |
49 | 49 | ||
50 | static __inline__ | 50 | static __inline__ |
51 | unsigned int csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, | 51 | unsigned int csum_partial_copy_from_user(const unsigned char __user *src, |
52 | unsigned char *dst, | ||
52 | int len, int sum, int *err_ptr) | 53 | int len, int sum, int *err_ptr) |
53 | { | 54 | { |
54 | if(copy_from_user(dst, src, len)){ | 55 | if(copy_from_user(dst, src, len)){ |
@@ -192,7 +193,7 @@ static __inline__ unsigned short int csum_ipv6_magic(struct in6_addr *saddr, | |||
192 | */ | 193 | */ |
193 | #define HAVE_CSUM_COPY_USER | 194 | #define HAVE_CSUM_COPY_USER |
194 | static __inline__ unsigned int csum_and_copy_to_user(const unsigned char *src, | 195 | static __inline__ unsigned int csum_and_copy_to_user(const unsigned char *src, |
195 | unsigned char *dst, | 196 | unsigned char __user *dst, |
196 | int len, int sum, int *err_ptr) | 197 | int len, int sum, int *err_ptr) |
197 | { | 198 | { |
198 | if (access_ok(VERIFY_WRITE, dst, len)){ | 199 | if (access_ok(VERIFY_WRITE, dst, len)){ |
diff --git a/arch/um/include/sysdep-i386/ptrace.h b/arch/um/include/sysdep-i386/ptrace.h index c8ee9559f3ab..6670cc992ecb 100644 --- a/arch/um/include/sysdep-i386/ptrace.h +++ b/arch/um/include/sysdep-i386/ptrace.h | |||
@@ -14,7 +14,12 @@ | |||
14 | #define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long)) | 14 | #define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long)) |
15 | #define MAX_REG_OFFSET (UM_FRAME_SIZE) | 15 | #define MAX_REG_OFFSET (UM_FRAME_SIZE) |
16 | 16 | ||
17 | #ifdef UML_CONFIG_PT_PROXY | ||
17 | extern void update_debugregs(int seq); | 18 | extern void update_debugregs(int seq); |
19 | #else | ||
20 | static inline void update_debugregs(int seq) {} | ||
21 | #endif | ||
22 | |||
18 | 23 | ||
19 | /* syscall emulation path in ptrace */ | 24 | /* syscall emulation path in ptrace */ |
20 | 25 | ||
diff --git a/arch/um/include/sysdep-i386/tls.h b/arch/um/include/sysdep-i386/tls.h new file mode 100644 index 000000000000..918fd3c5ff9c --- /dev/null +++ b/arch/um/include/sysdep-i386/tls.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef _SYSDEP_TLS_H | ||
2 | #define _SYSDEP_TLS_H | ||
3 | |||
4 | # ifndef __KERNEL__ | ||
5 | |||
6 | /* Change name to avoid conflicts with the original one from <asm/ldt.h>, which | ||
7 | * may be named user_desc (but in 2.4 and in header matching its API was named | ||
8 | * modify_ldt_ldt_s). */ | ||
9 | |||
10 | typedef struct um_dup_user_desc { | ||
11 | unsigned int entry_number; | ||
12 | unsigned int base_addr; | ||
13 | unsigned int limit; | ||
14 | unsigned int seg_32bit:1; | ||
15 | unsigned int contents:2; | ||
16 | unsigned int read_exec_only:1; | ||
17 | unsigned int limit_in_pages:1; | ||
18 | unsigned int seg_not_present:1; | ||
19 | unsigned int useable:1; | ||
20 | } user_desc_t; | ||
21 | |||
22 | # else /* __KERNEL__ */ | ||
23 | |||
24 | # include <asm/ldt.h> | ||
25 | typedef struct user_desc user_desc_t; | ||
26 | |||
27 | # endif /* __KERNEL__ */ | ||
28 | |||
29 | #define GDT_ENTRY_TLS_MIN_I386 6 | ||
30 | #define GDT_ENTRY_TLS_MIN_X86_64 12 | ||
31 | |||
32 | #endif /* _SYSDEP_TLS_H */ | ||
diff --git a/arch/um/include/sysdep-x86_64/tls.h b/arch/um/include/sysdep-x86_64/tls.h new file mode 100644 index 000000000000..35f19f25bd3b --- /dev/null +++ b/arch/um/include/sysdep-x86_64/tls.h | |||
@@ -0,0 +1,29 @@ | |||
1 | #ifndef _SYSDEP_TLS_H | ||
2 | #define _SYSDEP_TLS_H | ||
3 | |||
4 | # ifndef __KERNEL__ | ||
5 | |||
6 | /* Change name to avoid conflicts with the original one from <asm/ldt.h>, which | ||
7 | * may be named user_desc (but in 2.4 and in header matching its API was named | ||
8 | * modify_ldt_ldt_s). */ | ||
9 | |||
10 | typedef struct um_dup_user_desc { | ||
11 | unsigned int entry_number; | ||
12 | unsigned int base_addr; | ||
13 | unsigned int limit; | ||
14 | unsigned int seg_32bit:1; | ||
15 | unsigned int contents:2; | ||
16 | unsigned int read_exec_only:1; | ||
17 | unsigned int limit_in_pages:1; | ||
18 | unsigned int seg_not_present:1; | ||
19 | unsigned int useable:1; | ||
20 | unsigned int lm:1; | ||
21 | } user_desc_t; | ||
22 | |||
23 | # else /* __KERNEL__ */ | ||
24 | |||
25 | # include <asm/ldt.h> | ||
26 | typedef struct user_desc user_desc_t; | ||
27 | |||
28 | # endif /* __KERNEL__ */ | ||
29 | #endif /* _SYSDEP_TLS_H */ | ||
diff --git a/arch/um/include/user_util.h b/arch/um/include/user_util.h index 992a7e1e0fca..fe0c29b5144d 100644 --- a/arch/um/include/user_util.h +++ b/arch/um/include/user_util.h | |||
@@ -8,6 +8,9 @@ | |||
8 | 8 | ||
9 | #include "sysdep/ptrace.h" | 9 | #include "sysdep/ptrace.h" |
10 | 10 | ||
11 | /* Copied from kernel.h */ | ||
12 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | ||
13 | |||
11 | #define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR)) | 14 | #define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR)) |
12 | 15 | ||
13 | extern int mode_tt; | 16 | extern int mode_tt; |
@@ -31,7 +34,7 @@ extern unsigned long uml_physmem; | |||
31 | extern unsigned long uml_reserved; | 34 | extern unsigned long uml_reserved; |
32 | extern unsigned long end_vm; | 35 | extern unsigned long end_vm; |
33 | extern unsigned long start_vm; | 36 | extern unsigned long start_vm; |
34 | extern unsigned long highmem; | 37 | extern unsigned long long highmem; |
35 | 38 | ||
36 | extern char host_info[]; | 39 | extern char host_info[]; |
37 | 40 | ||
diff --git a/arch/um/kernel/exec_kern.c b/arch/um/kernel/exec_kern.c index 1ca84319317d..c0cb627bf594 100644 --- a/arch/um/kernel/exec_kern.c +++ b/arch/um/kernel/exec_kern.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | void flush_thread(void) | 23 | void flush_thread(void) |
24 | { | 24 | { |
25 | arch_flush_thread(¤t->thread.arch); | ||
25 | CHOOSE_MODE(flush_thread_tt(), flush_thread_skas()); | 26 | CHOOSE_MODE(flush_thread_tt(), flush_thread_skas()); |
26 | } | 27 | } |
27 | 28 | ||
@@ -58,14 +59,14 @@ long um_execve(char *file, char __user *__user *argv, char __user *__user *env) | |||
58 | return(err); | 59 | return(err); |
59 | } | 60 | } |
60 | 61 | ||
61 | long sys_execve(char *file, char __user *__user *argv, | 62 | long sys_execve(char __user *file, char __user *__user *argv, |
62 | char __user *__user *env) | 63 | char __user *__user *env) |
63 | { | 64 | { |
64 | long error; | 65 | long error; |
65 | char *filename; | 66 | char *filename; |
66 | 67 | ||
67 | lock_kernel(); | 68 | lock_kernel(); |
68 | filename = getname((char __user *) file); | 69 | filename = getname(file); |
69 | error = PTR_ERR(filename); | 70 | error = PTR_ERR(filename); |
70 | if (IS_ERR(filename)) goto out; | 71 | if (IS_ERR(filename)) goto out; |
71 | error = execve1(filename, argv, env); | 72 | error = execve1(filename, argv, env); |
@@ -74,14 +75,3 @@ long sys_execve(char *file, char __user *__user *argv, | |||
74 | unlock_kernel(); | 75 | unlock_kernel(); |
75 | return(error); | 76 | return(error); |
76 | } | 77 | } |
77 | |||
78 | /* | ||
79 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
80 | * Emacs will notice this stuff at the end of the file and automatically | ||
81 | * adjust the settings for this buffer only. This must remain at the end | ||
82 | * of the file. | ||
83 | * --------------------------------------------------------------------------- | ||
84 | * Local variables: | ||
85 | * c-file-style: "linux" | ||
86 | * End: | ||
87 | */ | ||
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index 92cce96b5e24..44e41a35f000 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c | |||
@@ -30,7 +30,7 @@ extern char __binary_start; | |||
30 | unsigned long *empty_zero_page = NULL; | 30 | unsigned long *empty_zero_page = NULL; |
31 | unsigned long *empty_bad_page = NULL; | 31 | unsigned long *empty_bad_page = NULL; |
32 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 32 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
33 | unsigned long highmem; | 33 | unsigned long long highmem; |
34 | int kmalloc_ok = 0; | 34 | int kmalloc_ok = 0; |
35 | 35 | ||
36 | static unsigned long brk_end; | 36 | static unsigned long brk_end; |
diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c index 3113cab8675e..f6a5a502120b 100644 --- a/arch/um/kernel/process_kern.c +++ b/arch/um/kernel/process_kern.c | |||
@@ -156,9 +156,25 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | |||
156 | unsigned long stack_top, struct task_struct * p, | 156 | unsigned long stack_top, struct task_struct * p, |
157 | struct pt_regs *regs) | 157 | struct pt_regs *regs) |
158 | { | 158 | { |
159 | int ret; | ||
160 | |||
159 | p->thread = (struct thread_struct) INIT_THREAD; | 161 | p->thread = (struct thread_struct) INIT_THREAD; |
160 | return(CHOOSE_MODE_PROC(copy_thread_tt, copy_thread_skas, nr, | 162 | ret = CHOOSE_MODE_PROC(copy_thread_tt, copy_thread_skas, nr, |
161 | clone_flags, sp, stack_top, p, regs)); | 163 | clone_flags, sp, stack_top, p, regs); |
164 | |||
165 | if (ret || !current->thread.forking) | ||
166 | goto out; | ||
167 | |||
168 | clear_flushed_tls(p); | ||
169 | |||
170 | /* | ||
171 | * Set a new TLS for the child thread? | ||
172 | */ | ||
173 | if (clone_flags & CLONE_SETTLS) | ||
174 | ret = arch_copy_tls(p); | ||
175 | |||
176 | out: | ||
177 | return ret; | ||
162 | } | 178 | } |
163 | 179 | ||
164 | void initial_thread_cb(void (*proc)(void *), void *arg) | 180 | void initial_thread_cb(void (*proc)(void *), void *arg) |
@@ -185,10 +201,6 @@ void default_idle(void) | |||
185 | { | 201 | { |
186 | CHOOSE_MODE(uml_idle_timer(), (void) 0); | 202 | CHOOSE_MODE(uml_idle_timer(), (void) 0); |
187 | 203 | ||
188 | atomic_inc(&init_mm.mm_count); | ||
189 | current->mm = &init_mm; | ||
190 | current->active_mm = &init_mm; | ||
191 | |||
192 | while(1){ | 204 | while(1){ |
193 | /* endless idle loop with no priority at all */ | 205 | /* endless idle loop with no priority at all */ |
194 | 206 | ||
@@ -407,7 +419,7 @@ static int proc_read_sysemu(char *buf, char **start, off_t offset, int size,int | |||
407 | return strlen(buf); | 419 | return strlen(buf); |
408 | } | 420 | } |
409 | 421 | ||
410 | static int proc_write_sysemu(struct file *file,const char *buf, unsigned long count,void *data) | 422 | static int proc_write_sysemu(struct file *file,const char __user *buf, unsigned long count,void *data) |
411 | { | 423 | { |
412 | char tmp[2]; | 424 | char tmp[2]; |
413 | 425 | ||
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index 98e09395c093..60d2eda995c1 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -46,6 +46,7 @@ extern int poke_user(struct task_struct * child, long addr, long data); | |||
46 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 46 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
47 | { | 47 | { |
48 | int i, ret; | 48 | int i, ret; |
49 | unsigned long __user *p = (void __user *)(unsigned long)data; | ||
49 | 50 | ||
50 | switch (request) { | 51 | switch (request) { |
51 | /* when I and D space are separate, these will need to be fixed. */ | 52 | /* when I and D space are separate, these will need to be fixed. */ |
@@ -58,7 +59,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
58 | copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); | 59 | copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); |
59 | if (copied != sizeof(tmp)) | 60 | if (copied != sizeof(tmp)) |
60 | break; | 61 | break; |
61 | ret = put_user(tmp, (unsigned long __user *) data); | 62 | ret = put_user(tmp, p); |
62 | break; | 63 | break; |
63 | } | 64 | } |
64 | 65 | ||
@@ -136,15 +137,13 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
136 | 137 | ||
137 | #ifdef PTRACE_GETREGS | 138 | #ifdef PTRACE_GETREGS |
138 | case PTRACE_GETREGS: { /* Get all gp regs from the child. */ | 139 | case PTRACE_GETREGS: { /* Get all gp regs from the child. */ |
139 | if (!access_ok(VERIFY_WRITE, (unsigned long *)data, | 140 | if (!access_ok(VERIFY_WRITE, p, MAX_REG_OFFSET)) { |
140 | MAX_REG_OFFSET)) { | ||
141 | ret = -EIO; | 141 | ret = -EIO; |
142 | break; | 142 | break; |
143 | } | 143 | } |
144 | for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { | 144 | for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { |
145 | __put_user(getreg(child, i), | 145 | __put_user(getreg(child, i), p); |
146 | (unsigned long __user *) data); | 146 | p++; |
147 | data += sizeof(long); | ||
148 | } | 147 | } |
149 | ret = 0; | 148 | ret = 0; |
150 | break; | 149 | break; |
@@ -153,15 +152,14 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
153 | #ifdef PTRACE_SETREGS | 152 | #ifdef PTRACE_SETREGS |
154 | case PTRACE_SETREGS: { /* Set all gp regs in the child. */ | 153 | case PTRACE_SETREGS: { /* Set all gp regs in the child. */ |
155 | unsigned long tmp = 0; | 154 | unsigned long tmp = 0; |
156 | if (!access_ok(VERIFY_READ, (unsigned *)data, | 155 | if (!access_ok(VERIFY_READ, p, MAX_REG_OFFSET)) { |
157 | MAX_REG_OFFSET)) { | ||
158 | ret = -EIO; | 156 | ret = -EIO; |
159 | break; | 157 | break; |
160 | } | 158 | } |
161 | for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { | 159 | for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) { |
162 | __get_user(tmp, (unsigned long __user *) data); | 160 | __get_user(tmp, p); |
163 | putreg(child, i, tmp); | 161 | putreg(child, i, tmp); |
164 | data += sizeof(long); | 162 | p++; |
165 | } | 163 | } |
166 | ret = 0; | 164 | ret = 0; |
167 | break; | 165 | break; |
@@ -187,14 +185,23 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
187 | ret = set_fpxregs(data, child); | 185 | ret = set_fpxregs(data, child); |
188 | break; | 186 | break; |
189 | #endif | 187 | #endif |
188 | case PTRACE_GET_THREAD_AREA: | ||
189 | ret = ptrace_get_thread_area(child, addr, | ||
190 | (struct user_desc __user *) data); | ||
191 | break; | ||
192 | |||
193 | case PTRACE_SET_THREAD_AREA: | ||
194 | ret = ptrace_set_thread_area(child, addr, | ||
195 | (struct user_desc __user *) data); | ||
196 | break; | ||
197 | |||
190 | case PTRACE_FAULTINFO: { | 198 | case PTRACE_FAULTINFO: { |
191 | /* Take the info from thread->arch->faultinfo, | 199 | /* Take the info from thread->arch->faultinfo, |
192 | * but transfer max. sizeof(struct ptrace_faultinfo). | 200 | * but transfer max. sizeof(struct ptrace_faultinfo). |
193 | * On i386, ptrace_faultinfo is smaller! | 201 | * On i386, ptrace_faultinfo is smaller! |
194 | */ | 202 | */ |
195 | ret = copy_to_user((unsigned long __user *) data, | 203 | ret = copy_to_user(p, &child->thread.arch.faultinfo, |
196 | &child->thread.arch.faultinfo, | 204 | sizeof(struct ptrace_faultinfo)); |
197 | sizeof(struct ptrace_faultinfo)); | ||
198 | if(ret) | 205 | if(ret) |
199 | break; | 206 | break; |
200 | break; | 207 | break; |
@@ -204,8 +211,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
204 | case PTRACE_LDT: { | 211 | case PTRACE_LDT: { |
205 | struct ptrace_ldt ldt; | 212 | struct ptrace_ldt ldt; |
206 | 213 | ||
207 | if(copy_from_user(&ldt, (unsigned long __user *) data, | 214 | if(copy_from_user(&ldt, p, sizeof(ldt))){ |
208 | sizeof(ldt))){ | ||
209 | ret = -EIO; | 215 | ret = -EIO; |
210 | break; | 216 | break; |
211 | } | 217 | } |
diff --git a/arch/um/kernel/skas/process_kern.c b/arch/um/kernel/skas/process_kern.c index 3f70a2e12f06..2135eaf98a93 100644 --- a/arch/um/kernel/skas/process_kern.c +++ b/arch/um/kernel/skas/process_kern.c | |||
@@ -35,6 +35,8 @@ void switch_to_skas(void *prev, void *next) | |||
35 | switch_threads(&from->thread.mode.skas.switch_buf, | 35 | switch_threads(&from->thread.mode.skas.switch_buf, |
36 | to->thread.mode.skas.switch_buf); | 36 | to->thread.mode.skas.switch_buf); |
37 | 37 | ||
38 | arch_switch_to_skas(current->thread.prev_sched, current); | ||
39 | |||
38 | if(current->pid == 0) | 40 | if(current->pid == 0) |
39 | switch_timers(1); | 41 | switch_timers(1); |
40 | } | 42 | } |
@@ -89,10 +91,17 @@ void fork_handler(int sig) | |||
89 | panic("blech"); | 91 | panic("blech"); |
90 | 92 | ||
91 | schedule_tail(current->thread.prev_sched); | 93 | schedule_tail(current->thread.prev_sched); |
94 | |||
95 | /* XXX: if interrupt_end() calls schedule, this call to | ||
96 | * arch_switch_to_skas isn't needed. We could want to apply this to | ||
97 | * improve performance. -bb */ | ||
98 | arch_switch_to_skas(current->thread.prev_sched, current); | ||
99 | |||
92 | current->thread.prev_sched = NULL; | 100 | current->thread.prev_sched = NULL; |
93 | 101 | ||
94 | /* Handle any immediate reschedules or signals */ | 102 | /* Handle any immediate reschedules or signals */ |
95 | interrupt_end(); | 103 | interrupt_end(); |
104 | |||
96 | userspace(¤t->thread.regs.regs); | 105 | userspace(¤t->thread.regs.regs); |
97 | } | 106 | } |
98 | 107 | ||
@@ -109,6 +118,8 @@ int copy_thread_skas(int nr, unsigned long clone_flags, unsigned long sp, | |||
109 | if(sp != 0) REGS_SP(p->thread.regs.regs.skas.regs) = sp; | 118 | if(sp != 0) REGS_SP(p->thread.regs.regs.skas.regs) = sp; |
110 | 119 | ||
111 | handler = fork_handler; | 120 | handler = fork_handler; |
121 | |||
122 | arch_copy_thread(¤t->thread.arch, &p->thread.arch); | ||
112 | } | 123 | } |
113 | else { | 124 | else { |
114 | init_thread_registers(&p->thread.regs.regs); | 125 | init_thread_registers(&p->thread.regs.regs); |
diff --git a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c index 8e1a3501ff46..37d3978337d8 100644 --- a/arch/um/kernel/syscall_kern.c +++ b/arch/um/kernel/syscall_kern.c | |||
@@ -104,7 +104,7 @@ long sys_pipe(unsigned long __user * fildes) | |||
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | long sys_uname(struct old_utsname * name) | 107 | long sys_uname(struct old_utsname __user * name) |
108 | { | 108 | { |
109 | long err; | 109 | long err; |
110 | if (!name) | 110 | if (!name) |
@@ -115,7 +115,7 @@ long sys_uname(struct old_utsname * name) | |||
115 | return err?-EFAULT:0; | 115 | return err?-EFAULT:0; |
116 | } | 116 | } |
117 | 117 | ||
118 | long sys_olduname(struct oldold_utsname * name) | 118 | long sys_olduname(struct oldold_utsname __user * name) |
119 | { | 119 | { |
120 | long error; | 120 | long error; |
121 | 121 | ||
diff --git a/arch/um/kernel/trap_kern.c b/arch/um/kernel/trap_kern.c index d56046c2aba2..02f6d4d8dc3a 100644 --- a/arch/um/kernel/trap_kern.c +++ b/arch/um/kernel/trap_kern.c | |||
@@ -198,7 +198,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, void *sc) | |||
198 | si.si_signo = SIGBUS; | 198 | si.si_signo = SIGBUS; |
199 | si.si_errno = 0; | 199 | si.si_errno = 0; |
200 | si.si_code = BUS_ADRERR; | 200 | si.si_code = BUS_ADRERR; |
201 | si.si_addr = (void *)address; | 201 | si.si_addr = (void __user *)address; |
202 | current->thread.arch.faultinfo = fi; | 202 | current->thread.arch.faultinfo = fi; |
203 | force_sig_info(SIGBUS, &si, current); | 203 | force_sig_info(SIGBUS, &si, current); |
204 | } else if (err == -ENOMEM) { | 204 | } else if (err == -ENOMEM) { |
@@ -207,7 +207,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, void *sc) | |||
207 | } else { | 207 | } else { |
208 | BUG_ON(err != -EFAULT); | 208 | BUG_ON(err != -EFAULT); |
209 | si.si_signo = SIGSEGV; | 209 | si.si_signo = SIGSEGV; |
210 | si.si_addr = (void *) address; | 210 | si.si_addr = (void __user *) address; |
211 | current->thread.arch.faultinfo = fi; | 211 | current->thread.arch.faultinfo = fi; |
212 | force_sig_info(SIGSEGV, &si, current); | 212 | force_sig_info(SIGSEGV, &si, current); |
213 | } | 213 | } |
@@ -220,8 +220,8 @@ void bad_segv(struct faultinfo fi, unsigned long ip) | |||
220 | 220 | ||
221 | si.si_signo = SIGSEGV; | 221 | si.si_signo = SIGSEGV; |
222 | si.si_code = SEGV_ACCERR; | 222 | si.si_code = SEGV_ACCERR; |
223 | si.si_addr = (void *) FAULT_ADDRESS(fi); | 223 | si.si_addr = (void __user *) FAULT_ADDRESS(fi); |
224 | current->thread.arch.faultinfo = fi; | 224 | current->thread.arch.faultinfo = fi; |
225 | force_sig_info(SIGSEGV, &si, current); | 225 | force_sig_info(SIGSEGV, &si, current); |
226 | } | 226 | } |
227 | 227 | ||
diff --git a/arch/um/kernel/tt/process_kern.c b/arch/um/kernel/tt/process_kern.c index 295c1ac817b3..a9c1443fc548 100644 --- a/arch/um/kernel/tt/process_kern.c +++ b/arch/um/kernel/tt/process_kern.c | |||
@@ -51,6 +51,13 @@ void switch_to_tt(void *prev, void *next) | |||
51 | 51 | ||
52 | c = 0; | 52 | c = 0; |
53 | 53 | ||
54 | /* Notice that here we "up" the semaphore on which "to" is waiting, and | ||
55 | * below (the read) we wait on this semaphore (which is implemented by | ||
56 | * switch_pipe) and go sleeping. Thus, after that, we have resumed in | ||
57 | * "to", and can't use any more the value of "from" (which is outdated), | ||
58 | * nor the value in "to" (since it was the task which stole us the CPU, | ||
59 | * which we don't care about). */ | ||
60 | |||
54 | err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); | 61 | err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); |
55 | if(err != sizeof(c)) | 62 | if(err != sizeof(c)) |
56 | panic("write of switch_pipe failed, err = %d", -err); | 63 | panic("write of switch_pipe failed, err = %d", -err); |
@@ -77,7 +84,7 @@ void switch_to_tt(void *prev, void *next) | |||
77 | change_sig(SIGALRM, alrm); | 84 | change_sig(SIGALRM, alrm); |
78 | change_sig(SIGPROF, prof); | 85 | change_sig(SIGPROF, prof); |
79 | 86 | ||
80 | arch_switch(); | 87 | arch_switch_to_tt(prev_sched, current); |
81 | 88 | ||
82 | flush_tlb_all(); | 89 | flush_tlb_all(); |
83 | local_irq_restore(flags); | 90 | local_irq_restore(flags); |
@@ -141,7 +148,6 @@ static void new_thread_handler(int sig) | |||
141 | set_cmdline("(kernel thread)"); | 148 | set_cmdline("(kernel thread)"); |
142 | 149 | ||
143 | change_sig(SIGUSR1, 1); | 150 | change_sig(SIGUSR1, 1); |
144 | change_sig(SIGVTALRM, 1); | ||
145 | change_sig(SIGPROF, 1); | 151 | change_sig(SIGPROF, 1); |
146 | local_irq_enable(); | 152 | local_irq_enable(); |
147 | if(!run_kernel_thread(fn, arg, ¤t->thread.exec_buf)) | 153 | if(!run_kernel_thread(fn, arg, ¤t->thread.exec_buf)) |
diff --git a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile index 1659386b42bb..f4bfc4c7ccac 100644 --- a/arch/um/os-Linux/Makefile +++ b/arch/um/os-Linux/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y = aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o sigio.o \ | 6 | obj-y = aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o sigio.o \ |
7 | signal.o start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o \ | 7 | signal.o start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o tls.o \ |
8 | user_syms.o util.o drivers/ sys-$(SUBARCH)/ | 8 | user_syms.o util.o drivers/ sys-$(SUBARCH)/ |
9 | 9 | ||
10 | obj-$(CONFIG_MODE_SKAS) += skas/ | 10 | obj-$(CONFIG_MODE_SKAS) += skas/ |
@@ -12,12 +12,9 @@ obj-$(CONFIG_TTY_LOG) += tty_log.o | |||
12 | user-objs-$(CONFIG_TTY_LOG) += tty_log.o | 12 | user-objs-$(CONFIG_TTY_LOG) += tty_log.o |
13 | 13 | ||
14 | USER_OBJS := $(user-objs-y) aio.o elf_aux.o file.o helper.o irq.o main.o mem.o \ | 14 | USER_OBJS := $(user-objs-y) aio.o elf_aux.o file.o helper.o irq.o main.o mem.o \ |
15 | process.o sigio.o signal.o start_up.o time.o trap.o tt.o tty.o \ | 15 | process.o sigio.o signal.o start_up.o time.o trap.o tt.o tty.o tls.o \ |
16 | uaccess.o umid.o util.o | 16 | uaccess.o umid.o util.o |
17 | 17 | ||
18 | elf_aux.o: $(ARCH_DIR)/kernel-offsets.h | ||
19 | CFLAGS_elf_aux.o += -I$(objtree)/arch/um | ||
20 | |||
21 | CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH) | 18 | CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH) |
22 | 19 | ||
23 | HAVE_AIO_ABI := $(shell [ -r /usr/include/linux/aio_abi.h ] && \ | 20 | HAVE_AIO_ABI := $(shell [ -r /usr/include/linux/aio_abi.h ] && \ |
diff --git a/arch/um/os-Linux/drivers/ethertap_kern.c b/arch/um/os-Linux/drivers/ethertap_kern.c index 6ae4b19d9f50..768606bec233 100644 --- a/arch/um/os-Linux/drivers/ethertap_kern.c +++ b/arch/um/os-Linux/drivers/ethertap_kern.c | |||
@@ -102,18 +102,7 @@ static struct transport ethertap_transport = { | |||
102 | static int register_ethertap(void) | 102 | static int register_ethertap(void) |
103 | { | 103 | { |
104 | register_transport(ðertap_transport); | 104 | register_transport(ðertap_transport); |
105 | return(1); | 105 | return 0; |
106 | } | 106 | } |
107 | 107 | ||
108 | __initcall(register_ethertap); | 108 | __initcall(register_ethertap); |
109 | |||
110 | /* | ||
111 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
112 | * Emacs will notice this stuff at the end of the file and automatically | ||
113 | * adjust the settings for this buffer only. This must remain at the end | ||
114 | * of the file. | ||
115 | * --------------------------------------------------------------------------- | ||
116 | * Local variables: | ||
117 | * c-file-style: "linux" | ||
118 | * End: | ||
119 | */ | ||
diff --git a/arch/um/os-Linux/drivers/tuntap_kern.c b/arch/um/os-Linux/drivers/tuntap_kern.c index 4202b9ebad4c..190009a6f89c 100644 --- a/arch/um/os-Linux/drivers/tuntap_kern.c +++ b/arch/um/os-Linux/drivers/tuntap_kern.c | |||
@@ -87,18 +87,7 @@ static struct transport tuntap_transport = { | |||
87 | static int register_tuntap(void) | 87 | static int register_tuntap(void) |
88 | { | 88 | { |
89 | register_transport(&tuntap_transport); | 89 | register_transport(&tuntap_transport); |
90 | return(1); | 90 | return 0; |
91 | } | 91 | } |
92 | 92 | ||
93 | __initcall(register_tuntap); | 93 | __initcall(register_tuntap); |
94 | |||
95 | /* | ||
96 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
97 | * Emacs will notice this stuff at the end of the file and automatically | ||
98 | * adjust the settings for this buffer only. This must remain at the end | ||
99 | * of the file. | ||
100 | * --------------------------------------------------------------------------- | ||
101 | * Local variables: | ||
102 | * c-file-style: "linux" | ||
103 | * End: | ||
104 | */ | ||
diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c index 9d7d69a523bb..6ab372da9657 100644 --- a/arch/um/os-Linux/mem.c +++ b/arch/um/os-Linux/mem.c | |||
@@ -121,36 +121,11 @@ int create_tmp_file(unsigned long long len) | |||
121 | return(fd); | 121 | return(fd); |
122 | } | 122 | } |
123 | 123 | ||
124 | static int create_anon_file(unsigned long long len) | ||
125 | { | ||
126 | void *addr; | ||
127 | int fd; | ||
128 | |||
129 | fd = open("/dev/anon", O_RDWR); | ||
130 | if(fd < 0) { | ||
131 | perror("opening /dev/anon"); | ||
132 | exit(1); | ||
133 | } | ||
134 | |||
135 | addr = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); | ||
136 | if(addr == MAP_FAILED){ | ||
137 | perror("mapping physmem file"); | ||
138 | exit(1); | ||
139 | } | ||
140 | munmap(addr, len); | ||
141 | |||
142 | return(fd); | ||
143 | } | ||
144 | |||
145 | extern int have_devanon; | ||
146 | |||
147 | int create_mem_file(unsigned long long len) | 124 | int create_mem_file(unsigned long long len) |
148 | { | 125 | { |
149 | int err, fd; | 126 | int err, fd; |
150 | 127 | ||
151 | if(have_devanon) | 128 | fd = create_tmp_file(len); |
152 | fd = create_anon_file(len); | ||
153 | else fd = create_tmp_file(len); | ||
154 | 129 | ||
155 | err = os_set_exec_close(fd, 1); | 130 | err = os_set_exec_close(fd, 1); |
156 | if(err < 0){ | 131 | if(err < 0){ |
diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index d261888f39c4..8176b0b52047 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/unistd.h> | 11 | #include <linux/unistd.h> |
12 | #include <sys/mman.h> | 12 | #include <sys/mman.h> |
13 | #include <sys/wait.h> | 13 | #include <sys/wait.h> |
14 | #include <sys/mman.h> | ||
14 | #include "ptrace_user.h" | 15 | #include "ptrace_user.h" |
15 | #include "os.h" | 16 | #include "os.h" |
16 | #include "user.h" | 17 | #include "user.h" |
@@ -20,6 +21,7 @@ | |||
20 | #include "kern_util.h" | 21 | #include "kern_util.h" |
21 | #include "longjmp.h" | 22 | #include "longjmp.h" |
22 | #include "skas_ptrace.h" | 23 | #include "skas_ptrace.h" |
24 | #include "kern_constants.h" | ||
23 | 25 | ||
24 | #define ARBITRARY_ADDR -1 | 26 | #define ARBITRARY_ADDR -1 |
25 | #define FAILURE_PID -1 | 27 | #define FAILURE_PID -1 |
@@ -187,6 +189,48 @@ int os_unmap_memory(void *addr, int len) | |||
187 | return(0); | 189 | return(0); |
188 | } | 190 | } |
189 | 191 | ||
192 | #ifndef MADV_REMOVE | ||
193 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
194 | #endif | ||
195 | |||
196 | int os_drop_memory(void *addr, int length) | ||
197 | { | ||
198 | int err; | ||
199 | |||
200 | err = madvise(addr, length, MADV_REMOVE); | ||
201 | if(err < 0) | ||
202 | err = -errno; | ||
203 | return err; | ||
204 | } | ||
205 | |||
206 | int can_drop_memory(void) | ||
207 | { | ||
208 | void *addr; | ||
209 | int fd; | ||
210 | |||
211 | printk("Checking host MADV_REMOVE support..."); | ||
212 | fd = create_mem_file(UM_KERN_PAGE_SIZE); | ||
213 | if(fd < 0){ | ||
214 | printk("Creating test memory file failed, err = %d\n", -fd); | ||
215 | return 0; | ||
216 | } | ||
217 | |||
218 | addr = mmap64(NULL, UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, | ||
219 | MAP_PRIVATE, fd, 0); | ||
220 | if(addr == MAP_FAILED){ | ||
221 | printk("Mapping test memory file failed, err = %d\n", -errno); | ||
222 | return 0; | ||
223 | } | ||
224 | |||
225 | if(madvise(addr, UM_KERN_PAGE_SIZE, MADV_REMOVE) != 0){ | ||
226 | printk("MADV_REMOVE failed, err = %d\n", -errno); | ||
227 | return 0; | ||
228 | } | ||
229 | |||
230 | printk("OK\n"); | ||
231 | return 1; | ||
232 | } | ||
233 | |||
190 | void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int)) | 234 | void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int)) |
191 | { | 235 | { |
192 | int flags = 0, pages; | 236 | int flags = 0, pages; |
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 32753131f8d8..387e26af301a 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c | |||
@@ -470,25 +470,6 @@ int can_do_skas(void) | |||
470 | } | 470 | } |
471 | #endif | 471 | #endif |
472 | 472 | ||
473 | int have_devanon = 0; | ||
474 | |||
475 | /* Runs on boot kernel stack - already safe to use printk. */ | ||
476 | |||
477 | void check_devanon(void) | ||
478 | { | ||
479 | int fd; | ||
480 | |||
481 | printk("Checking for /dev/anon on the host..."); | ||
482 | fd = open("/dev/anon", O_RDWR); | ||
483 | if(fd < 0){ | ||
484 | printk("Not available (open failed with errno %d)\n", errno); | ||
485 | return; | ||
486 | } | ||
487 | |||
488 | printk("OK\n"); | ||
489 | have_devanon = 1; | ||
490 | } | ||
491 | |||
492 | int __init parse_iomem(char *str, int *add) | 473 | int __init parse_iomem(char *str, int *add) |
493 | { | 474 | { |
494 | struct iomem_region *new; | 475 | struct iomem_region *new; |
@@ -664,6 +645,5 @@ void os_check_bugs(void) | |||
664 | { | 645 | { |
665 | check_ptrace(); | 646 | check_ptrace(); |
666 | check_sigio(); | 647 | check_sigio(); |
667 | check_devanon(); | ||
668 | } | 648 | } |
669 | 649 | ||
diff --git a/arch/um/os-Linux/sys-i386/Makefile b/arch/um/os-Linux/sys-i386/Makefile index 340ef26f5944..b3213613c41c 100644 --- a/arch/um/os-Linux/sys-i386/Makefile +++ b/arch/um/os-Linux/sys-i386/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-$(CONFIG_MODE_SKAS) = registers.o | 6 | obj-$(CONFIG_MODE_SKAS) = registers.o tls.o |
7 | 7 | ||
8 | USER_OBJS := $(obj-y) | 8 | USER_OBJS := $(obj-y) |
9 | 9 | ||
diff --git a/arch/um/os-Linux/sys-i386/tls.c b/arch/um/os-Linux/sys-i386/tls.c new file mode 100644 index 000000000000..ba21f0e04a2f --- /dev/null +++ b/arch/um/os-Linux/sys-i386/tls.c | |||
@@ -0,0 +1,33 @@ | |||
1 | #include <linux/unistd.h> | ||
2 | #include "sysdep/tls.h" | ||
3 | #include "user_util.h" | ||
4 | |||
5 | static _syscall1(int, get_thread_area, user_desc_t *, u_info); | ||
6 | |||
7 | /* Checks whether host supports TLS, and sets *tls_min according to the value | ||
8 | * valid on the host. | ||
9 | * i386 host have it == 6; x86_64 host have it == 12, for i386 emulation. */ | ||
10 | void check_host_supports_tls(int *supports_tls, int *tls_min) { | ||
11 | /* Values for x86 and x86_64.*/ | ||
12 | int val[] = {GDT_ENTRY_TLS_MIN_I386, GDT_ENTRY_TLS_MIN_X86_64}; | ||
13 | int i; | ||
14 | |||
15 | for (i = 0; i < ARRAY_SIZE(val); i++) { | ||
16 | user_desc_t info; | ||
17 | info.entry_number = val[i]; | ||
18 | |||
19 | if (get_thread_area(&info) == 0) { | ||
20 | *tls_min = val[i]; | ||
21 | *supports_tls = 1; | ||
22 | return; | ||
23 | } else { | ||
24 | if (errno == EINVAL) | ||
25 | continue; | ||
26 | else if (errno == ENOSYS) | ||
27 | *supports_tls = 0; | ||
28 | return; | ||
29 | } | ||
30 | } | ||
31 | |||
32 | *supports_tls = 0; | ||
33 | } | ||
diff --git a/arch/um/os-Linux/tls.c b/arch/um/os-Linux/tls.c new file mode 100644 index 000000000000..9cb09a45546b --- /dev/null +++ b/arch/um/os-Linux/tls.c | |||
@@ -0,0 +1,76 @@ | |||
1 | #include <errno.h> | ||
2 | #include <sys/ptrace.h> | ||
3 | #include <asm/ldt.h> | ||
4 | #include "sysdep/tls.h" | ||
5 | #include "uml-config.h" | ||
6 | |||
7 | /* TLS support - we basically rely on the host's one.*/ | ||
8 | |||
9 | /* In TT mode, this should be called only by the tracing thread, and makes sense | ||
10 | * only for PTRACE_SET_THREAD_AREA. In SKAS mode, it's used normally. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #ifndef PTRACE_GET_THREAD_AREA | ||
15 | #define PTRACE_GET_THREAD_AREA 25 | ||
16 | #endif | ||
17 | |||
18 | #ifndef PTRACE_SET_THREAD_AREA | ||
19 | #define PTRACE_SET_THREAD_AREA 26 | ||
20 | #endif | ||
21 | |||
22 | int os_set_thread_area(user_desc_t *info, int pid) | ||
23 | { | ||
24 | int ret; | ||
25 | |||
26 | ret = ptrace(PTRACE_SET_THREAD_AREA, pid, info->entry_number, | ||
27 | (unsigned long) info); | ||
28 | if (ret < 0) | ||
29 | ret = -errno; | ||
30 | return ret; | ||
31 | } | ||
32 | |||
33 | #ifdef UML_CONFIG_MODE_SKAS | ||
34 | |||
35 | int os_get_thread_area(user_desc_t *info, int pid) | ||
36 | { | ||
37 | int ret; | ||
38 | |||
39 | ret = ptrace(PTRACE_GET_THREAD_AREA, pid, info->entry_number, | ||
40 | (unsigned long) info); | ||
41 | if (ret < 0) | ||
42 | ret = -errno; | ||
43 | return ret; | ||
44 | } | ||
45 | |||
46 | #endif | ||
47 | |||
48 | #ifdef UML_CONFIG_MODE_TT | ||
49 | #include "linux/unistd.h" | ||
50 | |||
51 | static _syscall1(int, get_thread_area, user_desc_t *, u_info); | ||
52 | static _syscall1(int, set_thread_area, user_desc_t *, u_info); | ||
53 | |||
54 | int do_set_thread_area_tt(user_desc_t *info) | ||
55 | { | ||
56 | int ret; | ||
57 | |||
58 | ret = set_thread_area(info); | ||
59 | if (ret < 0) { | ||
60 | ret = -errno; | ||
61 | } | ||
62 | return ret; | ||
63 | } | ||
64 | |||
65 | int do_get_thread_area_tt(user_desc_t *info) | ||
66 | { | ||
67 | int ret; | ||
68 | |||
69 | ret = get_thread_area(info); | ||
70 | if (ret < 0) { | ||
71 | ret = -errno; | ||
72 | } | ||
73 | return ret; | ||
74 | } | ||
75 | |||
76 | #endif /* UML_CONFIG_MODE_TT */ | ||
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index 2e41cabd3d93..b696b451774c 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
@@ -20,25 +20,7 @@ define unprofile | |||
20 | $(patsubst -pg,,$(patsubst -fprofile-arcs -ftest-coverage,,$(1))) | 20 | $(patsubst -pg,,$(patsubst -fprofile-arcs -ftest-coverage,,$(1))) |
21 | endef | 21 | endef |
22 | 22 | ||
23 | 23 | ifdef subarch-obj-y | |
24 | # cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If | 24 | obj-y += subarch.o |
25 | # so, it's considered to be a path relative to $(srcdir) rather than | 25 | subarch-y = $(addprefix ../../$(SUBARCH)/,$(subarch-obj-y)) |
26 | # $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from | 26 | endif |
27 | # arch/um/sys-i386 rather than arch/i386 like the other borrowed files. So, | ||
28 | # it sets $(ldt.c-dir) to /arch/um/sys-i386. | ||
29 | quiet_cmd_make_link = SYMLINK $@ | ||
30 | cmd_make_link = rm -f $@; ln -sf $(srctree)$(if $(filter-out /%,$($(notdir $@)-dir)),/arch/$(SUBARCH))/$($(notdir $@)-dir)/$(notdir $@) $@ | ||
31 | |||
32 | # this needs to be before the foreach, because targets does not accept | ||
33 | # complete paths like $(obj)/$(f). To make sure this works, use a := assignment | ||
34 | # or we will get $(obj)/$(f) in the "targets" value. | ||
35 | # Also, this forces you to use the := syntax when assigning to targets. | ||
36 | # Otherwise the line below will cause an infinite loop (if you don't know why, | ||
37 | # just do it). | ||
38 | |||
39 | targets := $(targets) $(SYMLINKS) | ||
40 | |||
41 | SYMLINKS := $(foreach f,$(SYMLINKS),$(obj)/$(f)) | ||
42 | |||
43 | $(SYMLINKS): FORCE | ||
44 | $(call if_changed,make_link) | ||
diff --git a/arch/um/scripts/Makefile.unmap b/arch/um/scripts/Makefile.unmap deleted file mode 100644 index b2165188d942..000000000000 --- a/arch/um/scripts/Makefile.unmap +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | clean-files += unmap_tmp.o unmap_fin.o unmap.o | ||
2 | |||
3 | ifdef CONFIG_MODE_TT | ||
4 | |||
5 | #Always build unmap_fin.o | ||
6 | extra-y += unmap_fin.o | ||
7 | #Do dependency tracking for unmap.o (it will be always built, but won't get the tracking unless we use this). | ||
8 | targets += unmap.o | ||
9 | |||
10 | #XXX: partially copied from arch/um/scripts/Makefile.rules | ||
11 | $(obj)/unmap.o: _c_flags = $(call unprofile,$(CFLAGS)) | ||
12 | |||
13 | quiet_cmd_wrapld = LD $@ | ||
14 | define cmd_wrapld | ||
15 | $(LD) $(LDFLAGS) -r -o $(obj)/unmap_tmp.o $< ; \ | ||
16 | $(OBJCOPY) $(UML_OBJCOPYFLAGS) $(obj)/unmap_tmp.o $@ -G switcheroo | ||
17 | endef | ||
18 | |||
19 | $(obj)/unmap_fin.o : $(obj)/unmap.o FORCE | ||
20 | $(call if_changed,wrapld) | ||
21 | |||
22 | endif | ||
diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile index f5fd5b0156d0..98b20b7bba4f 100644 --- a/arch/um/sys-i386/Makefile +++ b/arch/um/sys-i386/Makefile | |||
@@ -1,23 +1,18 @@ | |||
1 | obj-y := bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ | 1 | obj-y = bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ |
2 | ptrace_user.o semaphore.o signal.o sigcontext.o syscalls.o sysrq.o \ | 2 | ptrace_user.o signal.o sigcontext.o syscalls.o sysrq.o \ |
3 | sys_call_table.o | 3 | sys_call_table.o tls.o |
4 | 4 | ||
5 | obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o | 5 | obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o |
6 | 6 | ||
7 | obj-$(CONFIG_HIGHMEM) += highmem.o | 7 | subarch-obj-y = lib/bitops.o kernel/semaphore.o |
8 | obj-$(CONFIG_MODULES) += module.o | 8 | subarch-obj-$(CONFIG_HIGHMEM) += mm/highmem.o |
9 | subarch-obj-$(CONFIG_MODULES) += kernel/module.o | ||
9 | 10 | ||
10 | USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o | 11 | USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o |
11 | 12 | ||
12 | SYMLINKS = bitops.c semaphore.c highmem.c module.c | ||
13 | |||
14 | include arch/um/scripts/Makefile.rules | 13 | include arch/um/scripts/Makefile.rules |
15 | 14 | ||
16 | bitops.c-dir = lib | 15 | extra-$(CONFIG_MODE_TT) += unmap.o |
17 | semaphore.c-dir = kernel | ||
18 | highmem.c-dir = mm | ||
19 | module.c-dir = kernel | ||
20 | |||
21 | $(obj)/stub_segv.o : _c_flags = $(call unprofile,$(CFLAGS)) | ||
22 | 16 | ||
23 | include arch/um/scripts/Makefile.unmap | 17 | $(obj)/stub_segv.o $(obj)/unmap.o: \ |
18 | _c_flags = $(call unprofile,$(CFLAGS)) | ||
diff --git a/arch/um/sys-i386/ptrace.c b/arch/um/sys-i386/ptrace.c index 8032a105949a..6028bc7cc01b 100644 --- a/arch/um/sys-i386/ptrace.c +++ b/arch/um/sys-i386/ptrace.c | |||
@@ -15,9 +15,22 @@ | |||
15 | #include "sysdep/sigcontext.h" | 15 | #include "sysdep/sigcontext.h" |
16 | #include "sysdep/sc.h" | 16 | #include "sysdep/sc.h" |
17 | 17 | ||
18 | void arch_switch(void) | 18 | void arch_switch_to_tt(struct task_struct *from, struct task_struct *to) |
19 | { | 19 | { |
20 | update_debugregs(current->thread.arch.debugregs_seq); | 20 | update_debugregs(to->thread.arch.debugregs_seq); |
21 | arch_switch_tls_tt(from, to); | ||
22 | } | ||
23 | |||
24 | void arch_switch_to_skas(struct task_struct *from, struct task_struct *to) | ||
25 | { | ||
26 | int err = arch_switch_tls_skas(from, to); | ||
27 | if (!err) | ||
28 | return; | ||
29 | |||
30 | if (err != -EINVAL) | ||
31 | printk(KERN_WARNING "arch_switch_tls_skas failed, errno %d, not EINVAL\n", -err); | ||
32 | else | ||
33 | printk(KERN_WARNING "arch_switch_tls_skas failed, errno = EINVAL\n"); | ||
21 | } | 34 | } |
22 | 35 | ||
23 | int is_syscall(unsigned long addr) | 36 | int is_syscall(unsigned long addr) |
@@ -124,22 +137,22 @@ unsigned long getreg(struct task_struct *child, int regno) | |||
124 | int peek_user(struct task_struct *child, long addr, long data) | 137 | int peek_user(struct task_struct *child, long addr, long data) |
125 | { | 138 | { |
126 | /* read the word at location addr in the USER area. */ | 139 | /* read the word at location addr in the USER area. */ |
127 | unsigned long tmp; | 140 | unsigned long tmp; |
128 | 141 | ||
129 | if ((addr & 3) || addr < 0) | 142 | if ((addr & 3) || addr < 0) |
130 | return -EIO; | 143 | return -EIO; |
131 | 144 | ||
132 | tmp = 0; /* Default return condition */ | 145 | tmp = 0; /* Default return condition */ |
133 | if(addr < MAX_REG_OFFSET){ | 146 | if(addr < MAX_REG_OFFSET){ |
134 | tmp = getreg(child, addr); | 147 | tmp = getreg(child, addr); |
135 | } | 148 | } |
136 | else if((addr >= offsetof(struct user, u_debugreg[0])) && | 149 | else if((addr >= offsetof(struct user, u_debugreg[0])) && |
137 | (addr <= offsetof(struct user, u_debugreg[7]))){ | 150 | (addr <= offsetof(struct user, u_debugreg[7]))){ |
138 | addr -= offsetof(struct user, u_debugreg[0]); | 151 | addr -= offsetof(struct user, u_debugreg[0]); |
139 | addr = addr >> 2; | 152 | addr = addr >> 2; |
140 | tmp = child->thread.arch.debugregs[addr]; | 153 | tmp = child->thread.arch.debugregs[addr]; |
141 | } | 154 | } |
142 | return put_user(tmp, (unsigned long *) data); | 155 | return put_user(tmp, (unsigned long __user *) data); |
143 | } | 156 | } |
144 | 157 | ||
145 | struct i387_fxsave_struct { | 158 | struct i387_fxsave_struct { |
diff --git a/arch/um/sys-i386/ptrace_user.c b/arch/um/sys-i386/ptrace_user.c index 7c376c95de50..9f3bd8ed78f5 100644 --- a/arch/um/sys-i386/ptrace_user.c +++ b/arch/um/sys-i386/ptrace_user.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include "sysdep/thread.h" | 14 | #include "sysdep/thread.h" |
15 | #include "user.h" | 15 | #include "user.h" |
16 | #include "os.h" | 16 | #include "os.h" |
17 | #include "uml-config.h" | ||
17 | 18 | ||
18 | int ptrace_getregs(long pid, unsigned long *regs_out) | 19 | int ptrace_getregs(long pid, unsigned long *regs_out) |
19 | { | 20 | { |
@@ -43,6 +44,7 @@ int ptrace_setfpregs(long pid, unsigned long *regs) | |||
43 | return 0; | 44 | return 0; |
44 | } | 45 | } |
45 | 46 | ||
47 | /* All the below stuff is of interest for TT mode only */ | ||
46 | static void write_debugregs(int pid, unsigned long *regs) | 48 | static void write_debugregs(int pid, unsigned long *regs) |
47 | { | 49 | { |
48 | struct user *dummy; | 50 | struct user *dummy; |
@@ -75,7 +77,6 @@ static void read_debugregs(int pid, unsigned long *regs) | |||
75 | 77 | ||
76 | /* Accessed only by the tracing thread */ | 78 | /* Accessed only by the tracing thread */ |
77 | static unsigned long kernel_debugregs[8] = { [ 0 ... 7 ] = 0 }; | 79 | static unsigned long kernel_debugregs[8] = { [ 0 ... 7 ] = 0 }; |
78 | static int debugregs_seq = 0; | ||
79 | 80 | ||
80 | void arch_enter_kernel(void *task, int pid) | 81 | void arch_enter_kernel(void *task, int pid) |
81 | { | 82 | { |
@@ -89,6 +90,11 @@ void arch_leave_kernel(void *task, int pid) | |||
89 | write_debugregs(pid, TASK_DEBUGREGS(task)); | 90 | write_debugregs(pid, TASK_DEBUGREGS(task)); |
90 | } | 91 | } |
91 | 92 | ||
93 | #ifdef UML_CONFIG_PT_PROXY | ||
94 | /* Accessed only by the tracing thread */ | ||
95 | static int debugregs_seq; | ||
96 | |||
97 | /* Only called by the ptrace proxy */ | ||
92 | void ptrace_pokeuser(unsigned long addr, unsigned long data) | 98 | void ptrace_pokeuser(unsigned long addr, unsigned long data) |
93 | { | 99 | { |
94 | if((addr < offsetof(struct user, u_debugreg[0])) || | 100 | if((addr < offsetof(struct user, u_debugreg[0])) || |
@@ -109,6 +115,7 @@ static void update_debugregs_cb(void *arg) | |||
109 | write_debugregs(pid, kernel_debugregs); | 115 | write_debugregs(pid, kernel_debugregs); |
110 | } | 116 | } |
111 | 117 | ||
118 | /* Optimized out in its header when not defined */ | ||
112 | void update_debugregs(int seq) | 119 | void update_debugregs(int seq) |
113 | { | 120 | { |
114 | int me; | 121 | int me; |
@@ -118,6 +125,7 @@ void update_debugregs(int seq) | |||
118 | me = os_getpid(); | 125 | me = os_getpid(); |
119 | initial_thread_cb(update_debugregs_cb, &me); | 126 | initial_thread_cb(update_debugregs_cb, &me); |
120 | } | 127 | } |
128 | #endif | ||
121 | 129 | ||
122 | /* | 130 | /* |
123 | * Overrides for Emacs so that we follow Linus's tabbing style. | 131 | * Overrides for Emacs so that we follow Linus's tabbing style. |
diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c index 33a40f5ef0d2..f5d0e1c37ea2 100644 --- a/arch/um/sys-i386/signal.c +++ b/arch/um/sys-i386/signal.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include "skas.h" | 19 | #include "skas.h" |
20 | 20 | ||
21 | static int copy_sc_from_user_skas(struct pt_regs *regs, | 21 | static int copy_sc_from_user_skas(struct pt_regs *regs, |
22 | struct sigcontext *from) | 22 | struct sigcontext __user *from) |
23 | { | 23 | { |
24 | struct sigcontext sc; | 24 | struct sigcontext sc; |
25 | unsigned long fpregs[HOST_FP_SIZE]; | 25 | unsigned long fpregs[HOST_FP_SIZE]; |
@@ -57,7 +57,7 @@ static int copy_sc_from_user_skas(struct pt_regs *regs, | |||
57 | return(0); | 57 | return(0); |
58 | } | 58 | } |
59 | 59 | ||
60 | int copy_sc_to_user_skas(struct sigcontext *to, struct _fpstate *to_fp, | 60 | int copy_sc_to_user_skas(struct sigcontext *to, struct _fpstate __user *to_fp, |
61 | struct pt_regs *regs, unsigned long sp) | 61 | struct pt_regs *regs, unsigned long sp) |
62 | { | 62 | { |
63 | struct sigcontext sc; | 63 | struct sigcontext sc; |
@@ -92,7 +92,7 @@ int copy_sc_to_user_skas(struct sigcontext *to, struct _fpstate *to_fp, | |||
92 | "errno = %d\n", err); | 92 | "errno = %d\n", err); |
93 | return(1); | 93 | return(1); |
94 | } | 94 | } |
95 | to_fp = (to_fp ? to_fp : (struct _fpstate *) (to + 1)); | 95 | to_fp = (to_fp ? to_fp : (struct _fpstate __user *) (to + 1)); |
96 | sc.fpstate = to_fp; | 96 | sc.fpstate = to_fp; |
97 | 97 | ||
98 | if(err) | 98 | if(err) |
@@ -113,10 +113,11 @@ int copy_sc_to_user_skas(struct sigcontext *to, struct _fpstate *to_fp, | |||
113 | * saved pointer is in the kernel, but the sigcontext is in userspace, so we | 113 | * saved pointer is in the kernel, but the sigcontext is in userspace, so we |
114 | * copy_to_user it. | 114 | * copy_to_user it. |
115 | */ | 115 | */ |
116 | int copy_sc_from_user_tt(struct sigcontext *to, struct sigcontext *from, | 116 | int copy_sc_from_user_tt(struct sigcontext *to, struct sigcontext __user *from, |
117 | int fpsize) | 117 | int fpsize) |
118 | { | 118 | { |
119 | struct _fpstate *to_fp, *from_fp; | 119 | struct _fpstate *to_fp; |
120 | struct _fpstate __user *from_fp; | ||
120 | unsigned long sigs; | 121 | unsigned long sigs; |
121 | int err; | 122 | int err; |
122 | 123 | ||
@@ -131,13 +132,14 @@ int copy_sc_from_user_tt(struct sigcontext *to, struct sigcontext *from, | |||
131 | return(err); | 132 | return(err); |
132 | } | 133 | } |
133 | 134 | ||
134 | int copy_sc_to_user_tt(struct sigcontext *to, struct _fpstate *fp, | 135 | int copy_sc_to_user_tt(struct sigcontext *to, struct _fpstate __user *fp, |
135 | struct sigcontext *from, int fpsize, unsigned long sp) | 136 | struct sigcontext *from, int fpsize, unsigned long sp) |
136 | { | 137 | { |
137 | struct _fpstate *to_fp, *from_fp; | 138 | struct _fpstate __user *to_fp; |
139 | struct _fpstate *from_fp; | ||
138 | int err; | 140 | int err; |
139 | 141 | ||
140 | to_fp = (fp ? fp : (struct _fpstate *) (to + 1)); | 142 | to_fp = (fp ? fp : (struct _fpstate __user *) (to + 1)); |
141 | from_fp = from->fpstate; | 143 | from_fp = from->fpstate; |
142 | err = copy_to_user(to, from, sizeof(*to)); | 144 | err = copy_to_user(to, from, sizeof(*to)); |
143 | 145 | ||
@@ -165,7 +167,7 @@ static int copy_sc_from_user(struct pt_regs *to, void __user *from) | |||
165 | return(ret); | 167 | return(ret); |
166 | } | 168 | } |
167 | 169 | ||
168 | static int copy_sc_to_user(struct sigcontext *to, struct _fpstate *fp, | 170 | static int copy_sc_to_user(struct sigcontext *to, struct _fpstate __user *fp, |
169 | struct pt_regs *from, unsigned long sp) | 171 | struct pt_regs *from, unsigned long sp) |
170 | { | 172 | { |
171 | return(CHOOSE_MODE(copy_sc_to_user_tt(to, fp, UPT_SC(&from->regs), | 173 | return(CHOOSE_MODE(copy_sc_to_user_tt(to, fp, UPT_SC(&from->regs), |
@@ -173,7 +175,7 @@ static int copy_sc_to_user(struct sigcontext *to, struct _fpstate *fp, | |||
173 | copy_sc_to_user_skas(to, fp, from, sp))); | 175 | copy_sc_to_user_skas(to, fp, from, sp))); |
174 | } | 176 | } |
175 | 177 | ||
176 | static int copy_ucontext_to_user(struct ucontext *uc, struct _fpstate *fp, | 178 | static int copy_ucontext_to_user(struct ucontext __user *uc, struct _fpstate __user *fp, |
177 | sigset_t *set, unsigned long sp) | 179 | sigset_t *set, unsigned long sp) |
178 | { | 180 | { |
179 | int err = 0; | 181 | int err = 0; |
@@ -188,7 +190,7 @@ static int copy_ucontext_to_user(struct ucontext *uc, struct _fpstate *fp, | |||
188 | 190 | ||
189 | struct sigframe | 191 | struct sigframe |
190 | { | 192 | { |
191 | char *pretcode; | 193 | char __user *pretcode; |
192 | int sig; | 194 | int sig; |
193 | struct sigcontext sc; | 195 | struct sigcontext sc; |
194 | struct _fpstate fpstate; | 196 | struct _fpstate fpstate; |
@@ -198,10 +200,10 @@ struct sigframe | |||
198 | 200 | ||
199 | struct rt_sigframe | 201 | struct rt_sigframe |
200 | { | 202 | { |
201 | char *pretcode; | 203 | char __user *pretcode; |
202 | int sig; | 204 | int sig; |
203 | struct siginfo *pinfo; | 205 | struct siginfo __user *pinfo; |
204 | void *puc; | 206 | void __user *puc; |
205 | struct siginfo info; | 207 | struct siginfo info; |
206 | struct ucontext uc; | 208 | struct ucontext uc; |
207 | struct _fpstate fpstate; | 209 | struct _fpstate fpstate; |
@@ -213,16 +215,16 @@ int setup_signal_stack_sc(unsigned long stack_top, int sig, | |||
213 | sigset_t *mask) | 215 | sigset_t *mask) |
214 | { | 216 | { |
215 | struct sigframe __user *frame; | 217 | struct sigframe __user *frame; |
216 | void *restorer; | 218 | void __user *restorer; |
217 | unsigned long save_sp = PT_REGS_SP(regs); | 219 | unsigned long save_sp = PT_REGS_SP(regs); |
218 | int err = 0; | 220 | int err = 0; |
219 | 221 | ||
220 | stack_top &= -8UL; | 222 | stack_top &= -8UL; |
221 | frame = (struct sigframe *) stack_top - 1; | 223 | frame = (struct sigframe __user *) stack_top - 1; |
222 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 224 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
223 | return 1; | 225 | return 1; |
224 | 226 | ||
225 | restorer = (void *) frame->retcode; | 227 | restorer = frame->retcode; |
226 | if(ka->sa.sa_flags & SA_RESTORER) | 228 | if(ka->sa.sa_flags & SA_RESTORER) |
227 | restorer = ka->sa.sa_restorer; | 229 | restorer = ka->sa.sa_restorer; |
228 | 230 | ||
@@ -278,16 +280,16 @@ int setup_signal_stack_si(unsigned long stack_top, int sig, | |||
278 | siginfo_t *info, sigset_t *mask) | 280 | siginfo_t *info, sigset_t *mask) |
279 | { | 281 | { |
280 | struct rt_sigframe __user *frame; | 282 | struct rt_sigframe __user *frame; |
281 | void *restorer; | 283 | void __user *restorer; |
282 | unsigned long save_sp = PT_REGS_SP(regs); | 284 | unsigned long save_sp = PT_REGS_SP(regs); |
283 | int err = 0; | 285 | int err = 0; |
284 | 286 | ||
285 | stack_top &= -8UL; | 287 | stack_top &= -8UL; |
286 | frame = (struct rt_sigframe *) stack_top - 1; | 288 | frame = (struct rt_sigframe __user *) stack_top - 1; |
287 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 289 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
288 | return 1; | 290 | return 1; |
289 | 291 | ||
290 | restorer = (void *) frame->retcode; | 292 | restorer = frame->retcode; |
291 | if(ka->sa.sa_flags & SA_RESTORER) | 293 | if(ka->sa.sa_flags & SA_RESTORER) |
292 | restorer = ka->sa.sa_restorer; | 294 | restorer = ka->sa.sa_restorer; |
293 | 295 | ||
@@ -333,7 +335,7 @@ err: | |||
333 | long sys_sigreturn(struct pt_regs regs) | 335 | long sys_sigreturn(struct pt_regs regs) |
334 | { | 336 | { |
335 | unsigned long sp = PT_REGS_SP(¤t->thread.regs); | 337 | unsigned long sp = PT_REGS_SP(¤t->thread.regs); |
336 | struct sigframe __user *frame = (struct sigframe *)(sp - 8); | 338 | struct sigframe __user *frame = (struct sigframe __user *)(sp - 8); |
337 | sigset_t set; | 339 | sigset_t set; |
338 | struct sigcontext __user *sc = &frame->sc; | 340 | struct sigcontext __user *sc = &frame->sc; |
339 | unsigned long __user *oldmask = &sc->oldmask; | 341 | unsigned long __user *oldmask = &sc->oldmask; |
@@ -365,8 +367,8 @@ long sys_sigreturn(struct pt_regs regs) | |||
365 | 367 | ||
366 | long sys_rt_sigreturn(struct pt_regs regs) | 368 | long sys_rt_sigreturn(struct pt_regs regs) |
367 | { | 369 | { |
368 | unsigned long __user sp = PT_REGS_SP(¤t->thread.regs); | 370 | unsigned long sp = PT_REGS_SP(¤t->thread.regs); |
369 | struct rt_sigframe __user *frame = (struct rt_sigframe *) (sp - 4); | 371 | struct rt_sigframe __user *frame = (struct rt_sigframe __user *) (sp - 4); |
370 | sigset_t set; | 372 | sigset_t set; |
371 | struct ucontext __user *uc = &frame->uc; | 373 | struct ucontext __user *uc = &frame->uc; |
372 | int sig_size = _NSIG_WORDS * sizeof(unsigned long); | 374 | int sig_size = _NSIG_WORDS * sizeof(unsigned long); |
diff --git a/arch/um/sys-i386/sys_call_table.S b/arch/um/sys-i386/sys_call_table.S index ad75c27afe38..1ff61474b25c 100644 --- a/arch/um/sys-i386/sys_call_table.S +++ b/arch/um/sys-i386/sys_call_table.S | |||
@@ -6,8 +6,6 @@ | |||
6 | 6 | ||
7 | #define sys_vm86old sys_ni_syscall | 7 | #define sys_vm86old sys_ni_syscall |
8 | #define sys_vm86 sys_ni_syscall | 8 | #define sys_vm86 sys_ni_syscall |
9 | #define sys_set_thread_area sys_ni_syscall | ||
10 | #define sys_get_thread_area sys_ni_syscall | ||
11 | 9 | ||
12 | #define sys_stime um_stime | 10 | #define sys_stime um_stime |
13 | #define sys_time um_time | 11 | #define sys_time um_time |
diff --git a/arch/um/sys-i386/syscalls.c b/arch/um/sys-i386/syscalls.c index 83e9be820a86..749dd1bfe60f 100644 --- a/arch/um/sys-i386/syscalls.c +++ b/arch/um/sys-i386/syscalls.c | |||
@@ -61,21 +61,27 @@ long old_select(struct sel_arg_struct __user *arg) | |||
61 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); | 61 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); |
62 | } | 62 | } |
63 | 63 | ||
64 | /* The i386 version skips reading from %esi, the fourth argument. So we must do | 64 | /* |
65 | * this, too. | 65 | * The prototype on i386 is: |
66 | * | ||
67 | * int clone(int flags, void * child_stack, int * parent_tidptr, struct user_desc * newtls, int * child_tidptr) | ||
68 | * | ||
69 | * and the "newtls" arg. on i386 is read by copy_thread directly from the | ||
70 | * register saved on the stack. | ||
66 | */ | 71 | */ |
67 | long sys_clone(unsigned long clone_flags, unsigned long newsp, | 72 | long sys_clone(unsigned long clone_flags, unsigned long newsp, |
68 | int __user *parent_tid, int unused, int __user *child_tid) | 73 | int __user *parent_tid, void *newtls, int __user *child_tid) |
69 | { | 74 | { |
70 | long ret; | 75 | long ret; |
71 | 76 | ||
72 | if (!newsp) | 77 | if (!newsp) |
73 | newsp = UPT_SP(¤t->thread.regs.regs); | 78 | newsp = UPT_SP(¤t->thread.regs.regs); |
79 | |||
74 | current->thread.forking = 1; | 80 | current->thread.forking = 1; |
75 | ret = do_fork(clone_flags, newsp, ¤t->thread.regs, 0, parent_tid, | 81 | ret = do_fork(clone_flags, newsp, ¤t->thread.regs, 0, parent_tid, |
76 | child_tid); | 82 | child_tid); |
77 | current->thread.forking = 0; | 83 | current->thread.forking = 0; |
78 | return(ret); | 84 | return ret; |
79 | } | 85 | } |
80 | 86 | ||
81 | /* | 87 | /* |
@@ -104,7 +110,7 @@ long sys_ipc (uint call, int first, int second, | |||
104 | union semun fourth; | 110 | union semun fourth; |
105 | if (!ptr) | 111 | if (!ptr) |
106 | return -EINVAL; | 112 | return -EINVAL; |
107 | if (get_user(fourth.__pad, (void **) ptr)) | 113 | if (get_user(fourth.__pad, (void __user * __user *) ptr)) |
108 | return -EFAULT; | 114 | return -EFAULT; |
109 | return sys_semctl (first, second, third, fourth); | 115 | return sys_semctl (first, second, third, fourth); |
110 | } | 116 | } |
diff --git a/arch/um/sys-i386/tls.c b/arch/um/sys-i386/tls.c new file mode 100644 index 000000000000..a3188e861cc7 --- /dev/null +++ b/arch/um/sys-i386/tls.c | |||
@@ -0,0 +1,384 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #include "linux/config.h" | ||
7 | #include "linux/kernel.h" | ||
8 | #include "linux/sched.h" | ||
9 | #include "linux/slab.h" | ||
10 | #include "linux/types.h" | ||
11 | #include "asm/uaccess.h" | ||
12 | #include "asm/ptrace.h" | ||
13 | #include "asm/segment.h" | ||
14 | #include "asm/smp.h" | ||
15 | #include "asm/desc.h" | ||
16 | #include "choose-mode.h" | ||
17 | #include "kern.h" | ||
18 | #include "kern_util.h" | ||
19 | #include "mode_kern.h" | ||
20 | #include "os.h" | ||
21 | #include "mode.h" | ||
22 | |||
23 | #ifdef CONFIG_MODE_SKAS | ||
24 | #include "skas.h" | ||
25 | #endif | ||
26 | |||
27 | /* If needed we can detect when it's uninitialized. */ | ||
28 | static int host_supports_tls = -1; | ||
29 | int host_gdt_entry_tls_min = -1; | ||
30 | |||
31 | #ifdef CONFIG_MODE_SKAS | ||
32 | int do_set_thread_area_skas(struct user_desc *info) | ||
33 | { | ||
34 | int ret; | ||
35 | u32 cpu; | ||
36 | |||
37 | cpu = get_cpu(); | ||
38 | ret = os_set_thread_area(info, userspace_pid[cpu]); | ||
39 | put_cpu(); | ||
40 | return ret; | ||
41 | } | ||
42 | |||
43 | int do_get_thread_area_skas(struct user_desc *info) | ||
44 | { | ||
45 | int ret; | ||
46 | u32 cpu; | ||
47 | |||
48 | cpu = get_cpu(); | ||
49 | ret = os_get_thread_area(info, userspace_pid[cpu]); | ||
50 | put_cpu(); | ||
51 | return ret; | ||
52 | } | ||
53 | #endif | ||
54 | |||
55 | /* | ||
56 | * sys_get_thread_area: get a yet unused TLS descriptor index. | ||
57 | * XXX: Consider leaving one free slot for glibc usage at first place. This must | ||
58 | * be done here (and by changing GDT_ENTRY_TLS_* macros) and nowhere else. | ||
59 | * | ||
60 | * Also, this must be tested when compiling in SKAS mode with dinamic linking | ||
61 | * and running against NPTL. | ||
62 | */ | ||
63 | static int get_free_idx(struct task_struct* task) | ||
64 | { | ||
65 | struct thread_struct *t = &task->thread; | ||
66 | int idx; | ||
67 | |||
68 | if (!t->arch.tls_array) | ||
69 | return GDT_ENTRY_TLS_MIN; | ||
70 | |||
71 | for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++) | ||
72 | if (!t->arch.tls_array[idx].present) | ||
73 | return idx + GDT_ENTRY_TLS_MIN; | ||
74 | return -ESRCH; | ||
75 | } | ||
76 | |||
77 | static inline void clear_user_desc(struct user_desc* info) | ||
78 | { | ||
79 | /* Postcondition: LDT_empty(info) returns true. */ | ||
80 | memset(info, 0, sizeof(*info)); | ||
81 | |||
82 | /* Check the LDT_empty or the i386 sys_get_thread_area code - we obtain | ||
83 | * indeed an empty user_desc. | ||
84 | */ | ||
85 | info->read_exec_only = 1; | ||
86 | info->seg_not_present = 1; | ||
87 | } | ||
88 | |||
89 | #define O_FORCE 1 | ||
90 | |||
91 | static int load_TLS(int flags, struct task_struct *to) | ||
92 | { | ||
93 | int ret = 0; | ||
94 | int idx; | ||
95 | |||
96 | for (idx = GDT_ENTRY_TLS_MIN; idx < GDT_ENTRY_TLS_MAX; idx++) { | ||
97 | struct uml_tls_struct* curr = &to->thread.arch.tls_array[idx - GDT_ENTRY_TLS_MIN]; | ||
98 | |||
99 | /* Actually, now if it wasn't flushed it gets cleared and | ||
100 | * flushed to the host, which will clear it.*/ | ||
101 | if (!curr->present) { | ||
102 | if (!curr->flushed) { | ||
103 | clear_user_desc(&curr->tls); | ||
104 | curr->tls.entry_number = idx; | ||
105 | } else { | ||
106 | WARN_ON(!LDT_empty(&curr->tls)); | ||
107 | continue; | ||
108 | } | ||
109 | } | ||
110 | |||
111 | if (!(flags & O_FORCE) && curr->flushed) | ||
112 | continue; | ||
113 | |||
114 | ret = do_set_thread_area(&curr->tls); | ||
115 | if (ret) | ||
116 | goto out; | ||
117 | |||
118 | curr->flushed = 1; | ||
119 | } | ||
120 | out: | ||
121 | return ret; | ||
122 | } | ||
123 | |||
124 | /* Verify if we need to do a flush for the new process, i.e. if there are any | ||
125 | * present desc's, only if they haven't been flushed. | ||
126 | */ | ||
127 | static inline int needs_TLS_update(struct task_struct *task) | ||
128 | { | ||
129 | int i; | ||
130 | int ret = 0; | ||
131 | |||
132 | for (i = GDT_ENTRY_TLS_MIN; i < GDT_ENTRY_TLS_MAX; i++) { | ||
133 | struct uml_tls_struct* curr = &task->thread.arch.tls_array[i - GDT_ENTRY_TLS_MIN]; | ||
134 | |||
135 | /* Can't test curr->present, we may need to clear a descriptor | ||
136 | * which had a value. */ | ||
137 | if (curr->flushed) | ||
138 | continue; | ||
139 | ret = 1; | ||
140 | break; | ||
141 | } | ||
142 | return ret; | ||
143 | } | ||
144 | |||
145 | /* On a newly forked process, the TLS descriptors haven't yet been flushed. So | ||
146 | * we mark them as such and the first switch_to will do the job. | ||
147 | */ | ||
148 | void clear_flushed_tls(struct task_struct *task) | ||
149 | { | ||
150 | int i; | ||
151 | |||
152 | for (i = GDT_ENTRY_TLS_MIN; i < GDT_ENTRY_TLS_MAX; i++) { | ||
153 | struct uml_tls_struct* curr = &task->thread.arch.tls_array[i - GDT_ENTRY_TLS_MIN]; | ||
154 | |||
155 | /* Still correct to do this, if it wasn't present on the host it | ||
156 | * will remain as flushed as it was. */ | ||
157 | if (!curr->present) | ||
158 | continue; | ||
159 | |||
160 | curr->flushed = 0; | ||
161 | } | ||
162 | } | ||
163 | |||
164 | /* In SKAS0 mode, currently, multiple guest threads sharing the same ->mm have a | ||
165 | * common host process. So this is needed in SKAS0 too. | ||
166 | * | ||
167 | * However, if each thread had a different host process (and this was discussed | ||
168 | * for SMP support) this won't be needed. | ||
169 | * | ||
170 | * And this will not need be used when (and if) we'll add support to the host | ||
171 | * SKAS patch. */ | ||
172 | |||
173 | int arch_switch_tls_skas(struct task_struct *from, struct task_struct *to) | ||
174 | { | ||
175 | if (!host_supports_tls) | ||
176 | return 0; | ||
177 | |||
178 | /* We have no need whatsoever to switch TLS for kernel threads; beyond | ||
179 | * that, that would also result in us calling os_set_thread_area with | ||
180 | * userspace_pid[cpu] == 0, which gives an error. */ | ||
181 | if (likely(to->mm)) | ||
182 | return load_TLS(O_FORCE, to); | ||
183 | |||
184 | return 0; | ||
185 | } | ||
186 | |||
187 | int arch_switch_tls_tt(struct task_struct *from, struct task_struct *to) | ||
188 | { | ||
189 | if (!host_supports_tls) | ||
190 | return 0; | ||
191 | |||
192 | if (needs_TLS_update(to)) | ||
193 | return load_TLS(0, to); | ||
194 | |||
195 | return 0; | ||
196 | } | ||
197 | |||
198 | static int set_tls_entry(struct task_struct* task, struct user_desc *info, | ||
199 | int idx, int flushed) | ||
200 | { | ||
201 | struct thread_struct *t = &task->thread; | ||
202 | |||
203 | if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) | ||
204 | return -EINVAL; | ||
205 | |||
206 | t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].tls = *info; | ||
207 | t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].present = 1; | ||
208 | t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed = flushed; | ||
209 | |||
210 | return 0; | ||
211 | } | ||
212 | |||
213 | int arch_copy_tls(struct task_struct *new) | ||
214 | { | ||
215 | struct user_desc info; | ||
216 | int idx, ret = -EFAULT; | ||
217 | |||
218 | if (copy_from_user(&info, | ||
219 | (void __user *) UPT_ESI(&new->thread.regs.regs), | ||
220 | sizeof(info))) | ||
221 | goto out; | ||
222 | |||
223 | ret = -EINVAL; | ||
224 | if (LDT_empty(&info)) | ||
225 | goto out; | ||
226 | |||
227 | idx = info.entry_number; | ||
228 | |||
229 | ret = set_tls_entry(new, &info, idx, 0); | ||
230 | out: | ||
231 | return ret; | ||
232 | } | ||
233 | |||
234 | /* XXX: use do_get_thread_area to read the host value? I'm not at all sure! */ | ||
235 | static int get_tls_entry(struct task_struct* task, struct user_desc *info, int idx) | ||
236 | { | ||
237 | struct thread_struct *t = &task->thread; | ||
238 | |||
239 | if (!t->arch.tls_array) | ||
240 | goto clear; | ||
241 | |||
242 | if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) | ||
243 | return -EINVAL; | ||
244 | |||
245 | if (!t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].present) | ||
246 | goto clear; | ||
247 | |||
248 | *info = t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].tls; | ||
249 | |||
250 | out: | ||
251 | /* Temporary debugging check, to make sure that things have been | ||
252 | * flushed. This could be triggered if load_TLS() failed. | ||
253 | */ | ||
254 | if (unlikely(task == current && !t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed)) { | ||
255 | printk(KERN_ERR "get_tls_entry: task with pid %d got here " | ||
256 | "without flushed TLS.", current->pid); | ||
257 | } | ||
258 | |||
259 | return 0; | ||
260 | clear: | ||
261 | /* When the TLS entry has not been set, the values read to user in the | ||
262 | * tls_array are 0 (because it's cleared at boot, see | ||
263 | * arch/i386/kernel/head.S:cpu_gdt_table). Emulate that. | ||
264 | */ | ||
265 | clear_user_desc(info); | ||
266 | info->entry_number = idx; | ||
267 | goto out; | ||
268 | } | ||
269 | |||
270 | asmlinkage int sys_set_thread_area(struct user_desc __user *user_desc) | ||
271 | { | ||
272 | struct user_desc info; | ||
273 | int idx, ret; | ||
274 | |||
275 | if (!host_supports_tls) | ||
276 | return -ENOSYS; | ||
277 | |||
278 | if (copy_from_user(&info, user_desc, sizeof(info))) | ||
279 | return -EFAULT; | ||
280 | |||
281 | idx = info.entry_number; | ||
282 | |||
283 | if (idx == -1) { | ||
284 | idx = get_free_idx(current); | ||
285 | if (idx < 0) | ||
286 | return idx; | ||
287 | info.entry_number = idx; | ||
288 | /* Tell the user which slot we chose for him.*/ | ||
289 | if (put_user(idx, &user_desc->entry_number)) | ||
290 | return -EFAULT; | ||
291 | } | ||
292 | |||
293 | ret = CHOOSE_MODE_PROC(do_set_thread_area_tt, do_set_thread_area_skas, &info); | ||
294 | if (ret) | ||
295 | return ret; | ||
296 | return set_tls_entry(current, &info, idx, 1); | ||
297 | } | ||
298 | |||
299 | /* | ||
300 | * Perform set_thread_area on behalf of the traced child. | ||
301 | * Note: error handling is not done on the deferred load, and this differ from | ||
302 | * i386. However the only possible error are caused by bugs. | ||
303 | */ | ||
304 | int ptrace_set_thread_area(struct task_struct *child, int idx, | ||
305 | struct user_desc __user *user_desc) | ||
306 | { | ||
307 | struct user_desc info; | ||
308 | |||
309 | if (!host_supports_tls) | ||
310 | return -EIO; | ||
311 | |||
312 | if (copy_from_user(&info, user_desc, sizeof(info))) | ||
313 | return -EFAULT; | ||
314 | |||
315 | return set_tls_entry(child, &info, idx, 0); | ||
316 | } | ||
317 | |||
318 | asmlinkage int sys_get_thread_area(struct user_desc __user *user_desc) | ||
319 | { | ||
320 | struct user_desc info; | ||
321 | int idx, ret; | ||
322 | |||
323 | if (!host_supports_tls) | ||
324 | return -ENOSYS; | ||
325 | |||
326 | if (get_user(idx, &user_desc->entry_number)) | ||
327 | return -EFAULT; | ||
328 | |||
329 | ret = get_tls_entry(current, &info, idx); | ||
330 | if (ret < 0) | ||
331 | goto out; | ||
332 | |||
333 | if (copy_to_user(user_desc, &info, sizeof(info))) | ||
334 | ret = -EFAULT; | ||
335 | |||
336 | out: | ||
337 | return ret; | ||
338 | } | ||
339 | |||
340 | /* | ||
341 | * Perform get_thread_area on behalf of the traced child. | ||
342 | */ | ||
343 | int ptrace_get_thread_area(struct task_struct *child, int idx, | ||
344 | struct user_desc __user *user_desc) | ||
345 | { | ||
346 | struct user_desc info; | ||
347 | int ret; | ||
348 | |||
349 | if (!host_supports_tls) | ||
350 | return -EIO; | ||
351 | |||
352 | ret = get_tls_entry(child, &info, idx); | ||
353 | if (ret < 0) | ||
354 | goto out; | ||
355 | |||
356 | if (copy_to_user(user_desc, &info, sizeof(info))) | ||
357 | ret = -EFAULT; | ||
358 | out: | ||
359 | return ret; | ||
360 | } | ||
361 | |||
362 | |||
363 | /* XXX: This part is probably common to i386 and x86-64. Don't create a common | ||
364 | * file for now, do that when implementing x86-64 support.*/ | ||
365 | static int __init __setup_host_supports_tls(void) { | ||
366 | check_host_supports_tls(&host_supports_tls, &host_gdt_entry_tls_min); | ||
367 | if (host_supports_tls) { | ||
368 | printk(KERN_INFO "Host TLS support detected\n"); | ||
369 | printk(KERN_INFO "Detected host type: "); | ||
370 | switch (host_gdt_entry_tls_min) { | ||
371 | case GDT_ENTRY_TLS_MIN_I386: | ||
372 | printk("i386\n"); | ||
373 | break; | ||
374 | case GDT_ENTRY_TLS_MIN_X86_64: | ||
375 | printk("x86_64\n"); | ||
376 | break; | ||
377 | } | ||
378 | } else | ||
379 | printk(KERN_ERR " Host TLS support NOT detected! " | ||
380 | "TLS support inside UML will not work\n"); | ||
381 | return 1; | ||
382 | } | ||
383 | |||
384 | __initcall(__setup_host_supports_tls); | ||
diff --git a/arch/um/sys-x86_64/Makefile b/arch/um/sys-x86_64/Makefile index a351091fbd99..b5fc22babddf 100644 --- a/arch/um/sys-x86_64/Makefile +++ b/arch/um/sys-x86_64/Makefile | |||
@@ -4,31 +4,23 @@ | |||
4 | # Licensed under the GPL | 4 | # Licensed under the GPL |
5 | # | 5 | # |
6 | 6 | ||
7 | #XXX: why into lib-y? | 7 | obj-y = bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \ |
8 | lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \ | 8 | sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o ksyms.o \ |
9 | ptrace.o ptrace_user.o sigcontext.o signal.o syscalls.o \ | 9 | tls.o |
10 | syscall_table.o sysrq.o thunk.o | ||
11 | lib-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o | ||
12 | 10 | ||
13 | obj-y := ksyms.o | 11 | obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o |
14 | obj-$(CONFIG_MODULES) += module.o um_module.o | 12 | obj-$(CONFIG_MODULES) += um_module.o |
15 | 13 | ||
16 | USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o | 14 | subarch-obj-y = lib/bitops.o lib/csum-partial.o lib/memcpy.o lib/thunk.o |
15 | subarch-obj-$(CONFIG_MODULES) += kernel/module.o | ||
17 | 16 | ||
18 | SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c ldt.c memcpy.S \ | 17 | ldt-y = ../sys-i386/ldt.o |
19 | thunk.S module.c | ||
20 | 18 | ||
21 | include arch/um/scripts/Makefile.rules | 19 | USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o |
22 | 20 | ||
23 | bitops.c-dir = lib | 21 | include arch/um/scripts/Makefile.rules |
24 | csum-copy.S-dir = lib | ||
25 | csum-partial.c-dir = lib | ||
26 | csum-wrappers.c-dir = lib | ||
27 | ldt.c-dir = /arch/um/sys-i386 | ||
28 | memcpy.S-dir = lib | ||
29 | thunk.S-dir = lib | ||
30 | module.c-dir = kernel | ||
31 | 22 | ||
32 | $(obj)/stub_segv.o: _c_flags = $(call unprofile,$(CFLAGS)) | 23 | extra-$(CONFIG_MODE_TT) += unmap.o |
33 | 24 | ||
34 | include arch/um/scripts/Makefile.unmap | 25 | $(obj)/stub_segv.o $(obj)/unmap.o: \ |
26 | _c_flags = $(call unprofile,$(CFLAGS)) | ||
diff --git a/arch/um/sys-x86_64/tls.c b/arch/um/sys-x86_64/tls.c new file mode 100644 index 000000000000..ce1bf1b81c43 --- /dev/null +++ b/arch/um/sys-x86_64/tls.c | |||
@@ -0,0 +1,14 @@ | |||
1 | #include "linux/sched.h" | ||
2 | |||
3 | void debug_arch_force_load_TLS(void) | ||
4 | { | ||
5 | } | ||
6 | |||
7 | void clear_flushed_tls(struct task_struct *task) | ||
8 | { | ||
9 | } | ||
10 | |||
11 | int arch_copy_tls(struct task_struct *t) | ||
12 | { | ||
13 | return 0; | ||
14 | } | ||
diff --git a/arch/x86_64/ia32/vsyscall-sigreturn.S b/arch/x86_64/ia32/vsyscall-sigreturn.S index d90321fe9bba..1384367cdbe1 100644 --- a/arch/x86_64/ia32/vsyscall-sigreturn.S +++ b/arch/x86_64/ia32/vsyscall-sigreturn.S | |||
@@ -32,9 +32,28 @@ __kernel_rt_sigreturn: | |||
32 | .size __kernel_rt_sigreturn,.-.LSTART_rt_sigreturn | 32 | .size __kernel_rt_sigreturn,.-.LSTART_rt_sigreturn |
33 | 33 | ||
34 | .section .eh_frame,"a",@progbits | 34 | .section .eh_frame,"a",@progbits |
35 | .LSTARTFRAMES: | ||
36 | .long .LENDCIES-.LSTARTCIES | ||
37 | .LSTARTCIES: | ||
38 | .long 0 /* CIE ID */ | ||
39 | .byte 1 /* Version number */ | ||
40 | .string "zRS" /* NUL-terminated augmentation string */ | ||
41 | .uleb128 1 /* Code alignment factor */ | ||
42 | .sleb128 -4 /* Data alignment factor */ | ||
43 | .byte 8 /* Return address register column */ | ||
44 | .uleb128 1 /* Augmentation value length */ | ||
45 | .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ | ||
46 | .byte 0x0c /* DW_CFA_def_cfa */ | ||
47 | .uleb128 4 | ||
48 | .uleb128 4 | ||
49 | .byte 0x88 /* DW_CFA_offset, column 0x8 */ | ||
50 | .uleb128 1 | ||
51 | .align 4 | ||
52 | .LENDCIES: | ||
53 | |||
35 | .long .LENDFDE2-.LSTARTFDE2 /* Length FDE */ | 54 | .long .LENDFDE2-.LSTARTFDE2 /* Length FDE */ |
36 | .LSTARTFDE2: | 55 | .LSTARTFDE2: |
37 | .long .LSTARTFDE2-.LSTARTFRAME /* CIE pointer */ | 56 | .long .LSTARTFDE2-.LSTARTFRAMES /* CIE pointer */ |
38 | /* HACK: The dwarf2 unwind routines will subtract 1 from the | 57 | /* HACK: The dwarf2 unwind routines will subtract 1 from the |
39 | return address to get an address in the middle of the | 58 | return address to get an address in the middle of the |
40 | presumed call instruction. Since we didn't get here via | 59 | presumed call instruction. Since we didn't get here via |
@@ -97,7 +116,7 @@ __kernel_rt_sigreturn: | |||
97 | 116 | ||
98 | .long .LENDFDE3-.LSTARTFDE3 /* Length FDE */ | 117 | .long .LENDFDE3-.LSTARTFDE3 /* Length FDE */ |
99 | .LSTARTFDE3: | 118 | .LSTARTFDE3: |
100 | .long .LSTARTFDE3-.LSTARTFRAME /* CIE pointer */ | 119 | .long .LSTARTFDE3-.LSTARTFRAMES /* CIE pointer */ |
101 | /* HACK: See above wrt unwind library assumptions. */ | 120 | /* HACK: See above wrt unwind library assumptions. */ |
102 | .long .LSTART_rt_sigreturn-1-. /* PC-relative start address */ | 121 | .long .LSTART_rt_sigreturn-1-. /* PC-relative start address */ |
103 | .long .LEND_rt_sigreturn-.LSTART_rt_sigreturn+1 | 122 | .long .LEND_rt_sigreturn-.LSTART_rt_sigreturn+1 |
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index d54620147e8e..100a30c40044 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -615,7 +615,7 @@ static int __init apic_set_verbosity(char *str) | |||
615 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" | 615 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" |
616 | " use apic=verbose or apic=debug", str); | 616 | " use apic=verbose or apic=debug", str); |
617 | 617 | ||
618 | return 0; | 618 | return 1; |
619 | } | 619 | } |
620 | 620 | ||
621 | __setup("apic=", apic_set_verbosity); | 621 | __setup("apic=", apic_set_verbosity); |
@@ -1137,35 +1137,35 @@ int __init APIC_init_uniprocessor (void) | |||
1137 | static __init int setup_disableapic(char *str) | 1137 | static __init int setup_disableapic(char *str) |
1138 | { | 1138 | { |
1139 | disable_apic = 1; | 1139 | disable_apic = 1; |
1140 | return 0; | 1140 | return 1; |
1141 | } | 1141 | } |
1142 | 1142 | ||
1143 | static __init int setup_nolapic(char *str) | 1143 | static __init int setup_nolapic(char *str) |
1144 | { | 1144 | { |
1145 | disable_apic = 1; | 1145 | disable_apic = 1; |
1146 | return 0; | 1146 | return 1; |
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | static __init int setup_noapictimer(char *str) | 1149 | static __init int setup_noapictimer(char *str) |
1150 | { | 1150 | { |
1151 | if (str[0] != ' ' && str[0] != 0) | 1151 | if (str[0] != ' ' && str[0] != 0) |
1152 | return -1; | 1152 | return 0; |
1153 | disable_apic_timer = 1; | 1153 | disable_apic_timer = 1; |
1154 | return 0; | 1154 | return 1; |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | static __init int setup_apicmaintimer(char *str) | 1157 | static __init int setup_apicmaintimer(char *str) |
1158 | { | 1158 | { |
1159 | apic_runs_main_timer = 1; | 1159 | apic_runs_main_timer = 1; |
1160 | nohpet = 1; | 1160 | nohpet = 1; |
1161 | return 0; | 1161 | return 1; |
1162 | } | 1162 | } |
1163 | __setup("apicmaintimer", setup_apicmaintimer); | 1163 | __setup("apicmaintimer", setup_apicmaintimer); |
1164 | 1164 | ||
1165 | static __init int setup_noapicmaintimer(char *str) | 1165 | static __init int setup_noapicmaintimer(char *str) |
1166 | { | 1166 | { |
1167 | apic_runs_main_timer = -1; | 1167 | apic_runs_main_timer = -1; |
1168 | return 0; | 1168 | return 1; |
1169 | } | 1169 | } |
1170 | __setup("noapicmaintimer", setup_noapicmaintimer); | 1170 | __setup("noapicmaintimer", setup_noapicmaintimer); |
1171 | 1171 | ||
diff --git a/arch/x86_64/kernel/early_printk.c b/arch/x86_64/kernel/early_printk.c index 13af920b6594..b93ef5b51980 100644 --- a/arch/x86_64/kernel/early_printk.c +++ b/arch/x86_64/kernel/early_printk.c | |||
@@ -221,7 +221,7 @@ int __init setup_early_printk(char *opt) | |||
221 | char buf[256]; | 221 | char buf[256]; |
222 | 222 | ||
223 | if (early_console_initialized) | 223 | if (early_console_initialized) |
224 | return -1; | 224 | return 1; |
225 | 225 | ||
226 | strlcpy(buf,opt,sizeof(buf)); | 226 | strlcpy(buf,opt,sizeof(buf)); |
227 | space = strchr(buf, ' '); | 227 | space = strchr(buf, ' '); |
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c index 04282ef9fbd4..10b3e348fc99 100644 --- a/arch/x86_64/kernel/mce.c +++ b/arch/x86_64/kernel/mce.c | |||
@@ -501,7 +501,7 @@ static struct miscdevice mce_log_device = { | |||
501 | static int __init mcheck_disable(char *str) | 501 | static int __init mcheck_disable(char *str) |
502 | { | 502 | { |
503 | mce_dont_init = 1; | 503 | mce_dont_init = 1; |
504 | return 0; | 504 | return 1; |
505 | } | 505 | } |
506 | 506 | ||
507 | /* mce=off disables machine check. Note you can reenable it later | 507 | /* mce=off disables machine check. Note you can reenable it later |
@@ -521,7 +521,7 @@ static int __init mcheck_enable(char *str) | |||
521 | get_option(&str, &tolerant); | 521 | get_option(&str, &tolerant); |
522 | else | 522 | else |
523 | printk("mce= argument %s ignored. Please use /sys", str); | 523 | printk("mce= argument %s ignored. Please use /sys", str); |
524 | return 0; | 524 | return 1; |
525 | } | 525 | } |
526 | 526 | ||
527 | __setup("nomce", mcheck_disable); | 527 | __setup("nomce", mcheck_disable); |
diff --git a/arch/x86_64/kernel/pmtimer.c b/arch/x86_64/kernel/pmtimer.c index ee5ee4891f3d..b0444a415bd6 100644 --- a/arch/x86_64/kernel/pmtimer.c +++ b/arch/x86_64/kernel/pmtimer.c | |||
@@ -121,7 +121,7 @@ unsigned int do_gettimeoffset_pm(void) | |||
121 | static int __init nopmtimer_setup(char *s) | 121 | static int __init nopmtimer_setup(char *s) |
122 | { | 122 | { |
123 | pmtmr_ioport = 0; | 123 | pmtmr_ioport = 0; |
124 | return 0; | 124 | return 1; |
125 | } | 125 | } |
126 | 126 | ||
127 | __setup("nopmtimer", nopmtimer_setup); | 127 | __setup("nopmtimer", nopmtimer_setup); |
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index d1f3e9272c05..0856ad444f90 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -540,7 +540,7 @@ void __init alternative_instructions(void) | |||
540 | static int __init noreplacement_setup(char *s) | 540 | static int __init noreplacement_setup(char *s) |
541 | { | 541 | { |
542 | no_replacement = 1; | 542 | no_replacement = 1; |
543 | return 0; | 543 | return 1; |
544 | } | 544 | } |
545 | 545 | ||
546 | __setup("noreplacement", noreplacement_setup); | 546 | __setup("noreplacement", noreplacement_setup); |
diff --git a/arch/x86_64/kernel/setup64.c b/arch/x86_64/kernel/setup64.c index eabdb63fec31..8a691fa6d393 100644 --- a/arch/x86_64/kernel/setup64.c +++ b/arch/x86_64/kernel/setup64.c | |||
@@ -55,7 +55,7 @@ int __init nonx_setup(char *str) | |||
55 | do_not_nx = 1; | 55 | do_not_nx = 1; |
56 | __supported_pte_mask &= ~_PAGE_NX; | 56 | __supported_pte_mask &= ~_PAGE_NX; |
57 | } | 57 | } |
58 | return 0; | 58 | return 1; |
59 | } | 59 | } |
60 | __setup("noexec=", nonx_setup); /* parsed early actually */ | 60 | __setup("noexec=", nonx_setup); /* parsed early actually */ |
61 | 61 | ||
@@ -74,7 +74,7 @@ static int __init nonx32_setup(char *str) | |||
74 | force_personality32 &= ~READ_IMPLIES_EXEC; | 74 | force_personality32 &= ~READ_IMPLIES_EXEC; |
75 | else if (!strcmp(str, "off")) | 75 | else if (!strcmp(str, "off")) |
76 | force_personality32 |= READ_IMPLIES_EXEC; | 76 | force_personality32 |= READ_IMPLIES_EXEC; |
77 | return 0; | 77 | return 1; |
78 | } | 78 | } |
79 | __setup("noexec32=", nonx32_setup); | 79 | __setup("noexec32=", nonx32_setup); |
80 | 80 | ||
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index ea48fa638070..71a7222cf9ce 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
@@ -353,7 +353,7 @@ static void __cpuinit tsc_sync_wait(void) | |||
353 | static __init int notscsync_setup(char *s) | 353 | static __init int notscsync_setup(char *s) |
354 | { | 354 | { |
355 | notscsync = 1; | 355 | notscsync = 1; |
356 | return 0; | 356 | return 1; |
357 | } | 357 | } |
358 | __setup("notscsync", notscsync_setup); | 358 | __setup("notscsync", notscsync_setup); |
359 | 359 | ||
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c index 473b514b66e4..ef8bc46dc140 100644 --- a/arch/x86_64/kernel/time.c +++ b/arch/x86_64/kernel/time.c | |||
@@ -1306,7 +1306,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
1306 | static int __init nohpet_setup(char *s) | 1306 | static int __init nohpet_setup(char *s) |
1307 | { | 1307 | { |
1308 | nohpet = 1; | 1308 | nohpet = 1; |
1309 | return 0; | 1309 | return 1; |
1310 | } | 1310 | } |
1311 | 1311 | ||
1312 | __setup("nohpet", nohpet_setup); | 1312 | __setup("nohpet", nohpet_setup); |
@@ -1314,7 +1314,7 @@ __setup("nohpet", nohpet_setup); | |||
1314 | int __init notsc_setup(char *s) | 1314 | int __init notsc_setup(char *s) |
1315 | { | 1315 | { |
1316 | notsc = 1; | 1316 | notsc = 1; |
1317 | return 0; | 1317 | return 1; |
1318 | } | 1318 | } |
1319 | 1319 | ||
1320 | __setup("notsc", notsc_setup); | 1320 | __setup("notsc", notsc_setup); |
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c index edaa9fe654dc..6bda322d3caf 100644 --- a/arch/x86_64/kernel/traps.c +++ b/arch/x86_64/kernel/traps.c | |||
@@ -973,14 +973,14 @@ void __init trap_init(void) | |||
973 | static int __init oops_dummy(char *s) | 973 | static int __init oops_dummy(char *s) |
974 | { | 974 | { |
975 | panic_on_oops = 1; | 975 | panic_on_oops = 1; |
976 | return -1; | 976 | return 1; |
977 | } | 977 | } |
978 | __setup("oops=", oops_dummy); | 978 | __setup("oops=", oops_dummy); |
979 | 979 | ||
980 | static int __init kstack_setup(char *s) | 980 | static int __init kstack_setup(char *s) |
981 | { | 981 | { |
982 | kstack_depth_to_print = simple_strtoul(s,NULL,0); | 982 | kstack_depth_to_print = simple_strtoul(s,NULL,0); |
983 | return 0; | 983 | return 1; |
984 | } | 984 | } |
985 | __setup("kstack=", kstack_setup); | 985 | __setup("kstack=", kstack_setup); |
986 | 986 | ||
diff --git a/arch/x86_64/kernel/x8664_ksyms.c b/arch/x86_64/kernel/x8664_ksyms.c index d96a9348e5a2..d78f46056bda 100644 --- a/arch/x86_64/kernel/x8664_ksyms.c +++ b/arch/x86_64/kernel/x8664_ksyms.c | |||
@@ -102,8 +102,6 @@ EXPORT_SYMBOL(cpu_callout_map); | |||
102 | EXPORT_SYMBOL(screen_info); | 102 | EXPORT_SYMBOL(screen_info); |
103 | #endif | 103 | #endif |
104 | 104 | ||
105 | EXPORT_SYMBOL(get_wchan); | ||
106 | |||
107 | EXPORT_SYMBOL(rtc_lock); | 105 | EXPORT_SYMBOL(rtc_lock); |
108 | 106 | ||
109 | EXPORT_SYMBOL_GPL(set_nmi_callback); | 107 | EXPORT_SYMBOL_GPL(set_nmi_callback); |
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 316c53de47bd..55250593d8c9 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
@@ -623,6 +623,6 @@ void vmalloc_sync_all(void) | |||
623 | static int __init enable_pagefaulttrace(char *str) | 623 | static int __init enable_pagefaulttrace(char *str) |
624 | { | 624 | { |
625 | page_fault_trace = 1; | 625 | page_fault_trace = 1; |
626 | return 0; | 626 | return 1; |
627 | } | 627 | } |
628 | __setup("pagefaulttrace", enable_pagefaulttrace); | 628 | __setup("pagefaulttrace", enable_pagefaulttrace); |
diff --git a/arch/xtensa/kernel/xtensa_ksyms.c b/arch/xtensa/kernel/xtensa_ksyms.c index efae56a51475..152b9370789b 100644 --- a/arch/xtensa/kernel/xtensa_ksyms.c +++ b/arch/xtensa/kernel/xtensa_ksyms.c | |||
@@ -113,8 +113,6 @@ EXPORT_SYMBOL(__xtensa_copy_user); | |||
113 | // FIXME EXPORT_SYMBOL(screen_info); | 113 | // FIXME EXPORT_SYMBOL(screen_info); |
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | EXPORT_SYMBOL(get_wchan); | ||
117 | |||
118 | EXPORT_SYMBOL(outsb); | 116 | EXPORT_SYMBOL(outsb); |
119 | EXPORT_SYMBOL(outsw); | 117 | EXPORT_SYMBOL(outsw); |
120 | EXPORT_SYMBOL(outsl); | 118 | EXPORT_SYMBOL(outsl); |