aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/alpha_ksyms.c2
-rw-r--r--arch/alpha/kernel/core_marvel.c2
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/common/sharpsl_pm.c10
-rw-r--r--arch/arm/kernel/process.c1
-rw-r--r--arch/arm/mach-pxa/corgi.c11
-rw-r--r--arch/arm/mach-pxa/spitz.c11
-rw-r--r--arch/arm/mach-pxa/tosa.c9
-rw-r--r--arch/arm26/kernel/armksyms.c2
-rw-r--r--arch/frv/kernel/frv_ksyms.c2
-rw-r--r--arch/h8300/kernel/h8300_ksyms.c2
-rw-r--r--arch/i386/kernel/apic.c22
-rw-r--r--arch/i386/kernel/cpu/mcheck/mce.c4
-rw-r--r--arch/i386/kernel/io_apic.c2
-rw-r--r--arch/i386/kernel/process.c1
-rw-r--r--arch/i386/kernel/syscall_table.S1
-rw-r--r--arch/i386/kernel/traps.c2
-rw-r--r--arch/i386/kernel/vsyscall-sigreturn.S2
-rw-r--r--arch/m68k/kernel/m68k_ksyms.c1
-rw-r--r--arch/m68knommu/kernel/m68k_ksyms.c2
-rw-r--r--arch/mips/kernel/process.c1
-rw-r--r--arch/parisc/Kconfig6
-rw-r--r--arch/parisc/configs/712_defconfig160
-rw-r--r--arch/parisc/configs/a500_defconfig4
-rw-r--r--arch/parisc/configs/b180_defconfig12
-rw-r--r--arch/parisc/configs/c3000_defconfig252
-rw-r--r--arch/parisc/defconfig165
-rw-r--r--arch/parisc/kernel/cache.c6
-rw-r--r--arch/parisc/kernel/entry.S45
-rw-r--r--arch/parisc/kernel/pacache.S4
-rw-r--r--arch/parisc/kernel/parisc_ksyms.c19
-rw-r--r--arch/parisc/kernel/pdc_chassis.c5
-rw-r--r--arch/parisc/kernel/perf.c2
-rw-r--r--arch/parisc/kernel/syscall_table.S2
-rw-r--r--arch/parisc/lib/iomap.c4
-rw-r--r--arch/parisc/mm/init.c7
-rw-r--r--arch/parisc/mm/ioremap.c54
-rw-r--r--arch/powerpc/kernel/crash_dump.c4
-rw-r--r--arch/powerpc/kernel/process.c1
-rw-r--r--arch/powerpc/kernel/vdso32/sigtramp.S2
-rw-r--r--arch/powerpc/kernel/vdso64/sigtramp.S2
-rw-r--r--arch/s390/kernel/smp.c6
-rw-r--r--arch/sh/kernel/cpu/init.c2
-rw-r--r--arch/sh/kernel/setup.c2
-rw-r--r--arch/um/Kconfig3
-rw-r--r--arch/um/Makefile7
-rw-r--r--arch/um/Makefile-x86_642
-rw-r--r--arch/um/drivers/daemon_kern.c13
-rw-r--r--arch/um/drivers/harddog_kern.c8
-rw-r--r--arch/um/drivers/hostaudio_kern.c10
-rw-r--r--arch/um/drivers/mcast_kern.c13
-rw-r--r--arch/um/drivers/mconsole_kern.c140
-rw-r--r--arch/um/drivers/pcap_kern.c13
-rw-r--r--arch/um/drivers/slip_kern.c13
-rw-r--r--arch/um/drivers/slirp_kern.c15
-rw-r--r--arch/um/drivers/ubd_kern.c2
-rw-r--r--arch/um/include/kern_util.h6
-rw-r--r--arch/um/include/line.h18
-rw-r--r--arch/um/include/mem_user.h1
-rw-r--r--arch/um/include/os.h10
-rw-r--r--arch/um/include/sysdep-i386/checksum.h5
-rw-r--r--arch/um/include/sysdep-i386/ptrace.h5
-rw-r--r--arch/um/include/sysdep-i386/tls.h32
-rw-r--r--arch/um/include/sysdep-x86_64/tls.h29
-rw-r--r--arch/um/include/user_util.h5
-rw-r--r--arch/um/kernel/exec_kern.c16
-rw-r--r--arch/um/kernel/mem.c2
-rw-r--r--arch/um/kernel/process_kern.c26
-rw-r--r--arch/um/kernel/ptrace.c44
-rw-r--r--arch/um/kernel/skas/process_kern.c11
-rw-r--r--arch/um/kernel/syscall_kern.c4
-rw-r--r--arch/um/kernel/trap_kern.c8
-rw-r--r--arch/um/kernel/tt/process_kern.c10
-rw-r--r--arch/um/os-Linux/Makefile7
-rw-r--r--arch/um/os-Linux/drivers/ethertap_kern.c13
-rw-r--r--arch/um/os-Linux/drivers/tuntap_kern.c13
-rw-r--r--arch/um/os-Linux/mem.c27
-rw-r--r--arch/um/os-Linux/process.c44
-rw-r--r--arch/um/os-Linux/start_up.c20
-rw-r--r--arch/um/os-Linux/sys-i386/Makefile2
-rw-r--r--arch/um/os-Linux/sys-i386/tls.c33
-rw-r--r--arch/um/os-Linux/tls.c76
-rw-r--r--arch/um/scripts/Makefile.rules26
-rw-r--r--arch/um/scripts/Makefile.unmap22
-rw-r--r--arch/um/sys-i386/Makefile23
-rw-r--r--arch/um/sys-i386/ptrace.c45
-rw-r--r--arch/um/sys-i386/ptrace_user.c10
-rw-r--r--arch/um/sys-i386/signal.c48
-rw-r--r--arch/um/sys-i386/sys_call_table.S2
-rw-r--r--arch/um/sys-i386/syscalls.c16
-rw-r--r--arch/um/sys-i386/tls.c384
-rw-r--r--arch/um/sys-x86_64/Makefile34
-rw-r--r--arch/um/sys-x86_64/tls.c14
-rw-r--r--arch/x86_64/ia32/vsyscall-sigreturn.S23
-rw-r--r--arch/x86_64/kernel/apic.c14
-rw-r--r--arch/x86_64/kernel/early_printk.c2
-rw-r--r--arch/x86_64/kernel/mce.c4
-rw-r--r--arch/x86_64/kernel/pmtimer.c2
-rw-r--r--arch/x86_64/kernel/setup.c2
-rw-r--r--arch/x86_64/kernel/setup64.c4
-rw-r--r--arch/x86_64/kernel/smpboot.c2
-rw-r--r--arch/x86_64/kernel/time.c4
-rw-r--r--arch/x86_64/kernel/traps.c4
-rw-r--r--arch/x86_64/kernel/x8664_ksyms.c2
-rw-r--r--arch/x86_64/mm/fault.c2
-rw-r--r--arch/xtensa/kernel/xtensa_ksyms.c2
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);
216EXPORT_SYMBOL(memset); 216EXPORT_SYMBOL(memset);
217EXPORT_SYMBOL(memchr); 217EXPORT_SYMBOL(memchr);
218 218
219EXPORT_SYMBOL(get_wchan);
220
221#ifdef CONFIG_ALPHA_IRONGATE 219#ifdef CONFIG_ALPHA_IRONGATE
222EXPORT_SYMBOL(irongate_ioremap); 220EXPORT_SYMBOL(irongate_ioremap);
223EXPORT_SYMBOL(irongate_iounmap); 221EXPORT_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
840source "drivers/mfd/Kconfig" 840source "drivers/mfd/Kconfig"
841 841
842source "drivers/leds/Kconfig"
843
842source "drivers/media/Kconfig" 844source "drivers/media/Kconfig"
843 845
844source "drivers/video/Kconfig" 846source "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_);
75struct sharpsl_pm_status sharpsl_pm; 76struct sharpsl_pm_status sharpsl_pm;
76DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL); 77DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL);
77DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL); 78DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL);
79DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger);
78 80
79 81
80static int get_percentage(int voltage) 82static 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}
477EXPORT_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 */
142static struct corgibl_machinfo corgi_bl_machinfo = { 142static 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 */
171static 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 */
169static struct resource corgits_resources[] = { 179static 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
302static void __init corgi_init(void) 313static 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 */
222static struct corgibl_machinfo spitz_bl_machinfo = { 222static 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 */
249static 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 */
247static struct resource spitzts_resources[] = { 257static 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
423static void __init common_init(void) 434static 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 */
257static struct platform_device tosaled_device = {
258 .name = "tosa-led",
259 .id = -1,
260};
261
254static struct platform_device *devices[] __initdata = { 262static 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
260static void __init tosa_init(void) 269static 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);
212EXPORT_SYMBOL(sys_exit); 212EXPORT_SYMBOL(sys_exit);
213EXPORT_SYMBOL(sys_wait4); 213EXPORT_SYMBOL(sys_wait4);
214 214
215EXPORT_SYMBOL(get_wchan);
216
217#ifdef CONFIG_PREEMPT 215#ifdef CONFIG_PREEMPT
218EXPORT_SYMBOL(kernel_flag); 216EXPORT_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);
79EXPORT_SYMBOL(__outsl_ns); 79EXPORT_SYMBOL(__outsl_ns);
80EXPORT_SYMBOL(__insl_ns); 80EXPORT_SYMBOL(__insl_ns);
81 81
82EXPORT_SYMBOL(get_wchan);
83
84#ifdef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS 82#ifdef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
85EXPORT_SYMBOL(atomic_test_and_ANDNOT_mask); 83EXPORT_SYMBOL(atomic_test_and_ANDNOT_mask);
86EXPORT_SYMBOL(atomic_test_and_OR_mask); 84EXPORT_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);
55EXPORT_SYMBOL(memscan); 55EXPORT_SYMBOL(memscan);
56EXPORT_SYMBOL(memmove); 56EXPORT_SYMBOL(memmove);
57 57
58EXPORT_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)
415void __devinit setup_local_APIC(void) 415void __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)
64static int __init mcheck_disable(char *str) 64static 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
70static int __init mcheck_enable(char *str) 70static 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:
644int __init irqbalance_disable(char *str) 644int __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}
784EXPORT_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)
1193static int __init kstack_setup(char *s) 1193static 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);
79EXPORT_SYMBOL(__down_failed_trylock); 79EXPORT_SYMBOL(__down_failed_trylock);
80EXPORT_SYMBOL(__up_wakeup); 80EXPORT_SYMBOL(__up_wakeup);
81 81
82EXPORT_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);
57EXPORT_SYMBOL(__down_failed_trylock); 57EXPORT_SYMBOL(__down_failed_trylock);
58EXPORT_SYMBOL(__up_wakeup); 58EXPORT_SYMBOL(__up_wakeup);
59 59
60EXPORT_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
422EXPORT_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
180source "kernel/Kconfig.preempt"
180source "kernel/Kconfig.hz" 181source "kernel/Kconfig.hz"
181source "mm/Kconfig" 182source "mm/Kconfig"
182 183
183config PREEMPT
184 bool
185# bool "Preemptible Kernel"
186 default n
187
188config COMPAT 184config 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#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -10,14 +10,11 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y
14 13
15# 14#
16# Code maturity level options 15# Code maturity level options
17# 16#
18CONFIG_EXPERIMENTAL=y 17CONFIG_EXPERIMENTAL=y
19# CONFIG_CLEAN_COMPILE is not set
20CONFIG_BROKEN=y
21CONFIG_BROKEN_ON_SMP=y 18CONFIG_BROKEN_ON_SMP=y
22CONFIG_INIT_ENV_ARG_LIMIT=32 19CONFIG_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
33CONFIG_SYSCTL=y 30CONFIG_SYSCTL=y
34# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
35CONFIG_HOTPLUG=y
36CONFIG_KOBJECT_UEVENT=y
37CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
38CONFIG_IKCONFIG_PROC=y 33CONFIG_IKCONFIG_PROC=y
39CONFIG_INITRAMFS_SOURCE="" 34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
40# CONFIG_EMBEDDED is not set 36# CONFIG_EMBEDDED is not set
41CONFIG_KALLSYMS=y 37CONFIG_KALLSYMS=y
42CONFIG_KALLSYMS_ALL=y 38CONFIG_KALLSYMS_ALL=y
43# CONFIG_KALLSYMS_EXTRA_PASS is not set 39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_HOTPLUG=y
44CONFIG_PRINTK=y 41CONFIG_PRINTK=y
45CONFIG_BUG=y 42CONFIG_BUG=y
43CONFIG_ELF_CORE=y
46CONFIG_BASE_FULL=y 44CONFIG_BASE_FULL=y
47CONFIG_FUTEX=y 45CONFIG_FUTEX=y
48CONFIG_EPOLL=y 46CONFIG_EPOLL=y
@@ -51,8 +49,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
51CONFIG_CC_ALIGN_LABELS=0 49CONFIG_CC_ALIGN_LABELS=0
52CONFIG_CC_ALIGN_LOOPS=0 50CONFIG_CC_ALIGN_LOOPS=0
53CONFIG_CC_ALIGN_JUMPS=0 51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y
54# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
55CONFIG_BASE_SMALL=0 54CONFIG_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
66CONFIG_KMOD=y 66CONFIG_KMOD=y
67 67
68# 68#
69# Block layer
70#
71
72#
73# IO Schedulers
74#
75CONFIG_IOSCHED_NOOP=y
76CONFIG_IOSCHED_AS=y
77CONFIG_IOSCHED_DEADLINE=y
78CONFIG_IOSCHED_CFQ=y
79CONFIG_DEFAULT_AS=y
80# CONFIG_DEFAULT_DEADLINE is not set
81# CONFIG_DEFAULT_CFQ is not set
82# CONFIG_DEFAULT_NOOP is not set
83CONFIG_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
76CONFIG_PA11=y 93CONFIG_PA11=y
77# CONFIG_SMP is not set 94# CONFIG_SMP is not set
95CONFIG_ARCH_FLATMEM_ENABLE=y
96# CONFIG_PREEMPT_NONE is not set
97CONFIG_PREEMPT_VOLUNTARY=y
98# CONFIG_PREEMPT is not set
78# CONFIG_HZ_100 is not set 99# CONFIG_HZ_100 is not set
79CONFIG_HZ_250=y 100CONFIG_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
86CONFIG_FLATMEM=y 107CONFIG_FLATMEM=y
87CONFIG_FLAT_NODE_MEM_MAP=y 108CONFIG_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 110CONFIG_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
133CONFIG_PACKET=y 155CONFIG_PACKET=y
134CONFIG_PACKET_MMAP=y 156CONFIG_PACKET_MMAP=y
135CONFIG_UNIX=y 157CONFIG_UNIX=y
@@ -165,7 +187,12 @@ CONFIG_TCP_CONG_BIC=y
165# CONFIG_IPV6 is not set 187# CONFIG_IPV6 is not set
166CONFIG_NETFILTER=y 188CONFIG_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
182CONFIG_IP_NF_AMANDA=m 209CONFIG_IP_NF_AMANDA=m
183# CONFIG_IP_NF_PPTP is not set 210# CONFIG_IP_NF_PPTP is not set
184CONFIG_IP_NF_QUEUE=m 211CONFIG_IP_NF_QUEUE=m
185CONFIG_IP_NF_IPTABLES=m
186CONFIG_IP_NF_MATCH_LIMIT=m
187CONFIG_IP_NF_MATCH_IPRANGE=m
188CONFIG_IP_NF_MATCH_MAC=m
189CONFIG_IP_NF_MATCH_PKTTYPE=m
190CONFIG_IP_NF_MATCH_MARK=m
191CONFIG_IP_NF_MATCH_MULTIPORT=m
192CONFIG_IP_NF_MATCH_TOS=m
193CONFIG_IP_NF_MATCH_RECENT=m
194CONFIG_IP_NF_MATCH_ECN=m
195CONFIG_IP_NF_MATCH_DSCP=m
196CONFIG_IP_NF_MATCH_AH_ESP=m
197CONFIG_IP_NF_MATCH_LENGTH=m
198CONFIG_IP_NF_MATCH_TTL=m
199CONFIG_IP_NF_MATCH_TCPMSS=m
200CONFIG_IP_NF_MATCH_HELPER=m
201CONFIG_IP_NF_MATCH_STATE=m
202CONFIG_IP_NF_MATCH_CONNTRACK=m
203CONFIG_IP_NF_MATCH_OWNER=m
204# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
205# CONFIG_IP_NF_MATCH_REALM is not set
206CONFIG_IP_NF_MATCH_SCTP=m
207# CONFIG_IP_NF_MATCH_DCCP is not set
208CONFIG_IP_NF_MATCH_COMMENT=m
209CONFIG_IP_NF_MATCH_CONNMARK=m
210CONFIG_IP_NF_MATCH_HASHLIMIT=m
211# CONFIG_IP_NF_MATCH_STRING is not set
212CONFIG_IP_NF_FILTER=m
213CONFIG_IP_NF_TARGET_REJECT=m
214CONFIG_IP_NF_TARGET_LOG=m
215CONFIG_IP_NF_TARGET_ULOG=m
216CONFIG_IP_NF_TARGET_TCPMSS=m
217# CONFIG_IP_NF_TARGET_NFQUEUE is not set
218CONFIG_IP_NF_NAT=m
219CONFIG_IP_NF_NAT_NEEDED=y
220CONFIG_IP_NF_TARGET_MASQUERADE=m
221CONFIG_IP_NF_TARGET_REDIRECT=m
222CONFIG_IP_NF_TARGET_NETMAP=m
223CONFIG_IP_NF_TARGET_SAME=m
224CONFIG_IP_NF_NAT_SNMP_BASIC=m
225CONFIG_IP_NF_NAT_IRC=m
226CONFIG_IP_NF_NAT_FTP=m
227CONFIG_IP_NF_NAT_TFTP=m
228CONFIG_IP_NF_NAT_AMANDA=m
229CONFIG_IP_NF_MANGLE=m
230CONFIG_IP_NF_TARGET_TOS=m
231CONFIG_IP_NF_TARGET_ECN=m
232CONFIG_IP_NF_TARGET_DSCP=m
233CONFIG_IP_NF_TARGET_MARK=m
234CONFIG_IP_NF_TARGET_CLASSIFY=m
235# CONFIG_IP_NF_TARGET_TTL is not set
236CONFIG_IP_NF_TARGET_CONNMARK=m
237CONFIG_IP_NF_TARGET_CLUSTERIP=m
238CONFIG_IP_NF_RAW=m
239CONFIG_IP_NF_TARGET_NOTRACK=m
240CONFIG_IP_NF_ARPTABLES=m
241CONFIG_IP_NF_ARPFILTER=m
242CONFIG_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
304CONFIG_PARPORT_PC=m 281CONFIG_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
284CONFIG_PARPORT_NOT_PC=y
307CONFIG_PARPORT_GSC=y 285CONFIG_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
320CONFIG_BLK_DEV_LOOP=y 297CONFIG_BLK_DEV_LOOP=y
@@ -325,14 +302,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
325CONFIG_BLK_DEV_RAM_SIZE=6144 302CONFIG_BLK_DEV_RAM_SIZE=6144
326CONFIG_BLK_DEV_INITRD=y 303CONFIG_BLK_DEV_INITRD=y
327# CONFIG_CDROM_PKTCDVD is not set 304# CONFIG_CDROM_PKTCDVD is not set
328
329#
330# IO Schedulers
331#
332CONFIG_IOSCHED_NOOP=y
333CONFIG_IOSCHED_AS=y
334CONFIG_IOSCHED_DEADLINE=y
335CONFIG_IOSCHED_CFQ=y
336CONFIG_ATA_OVER_ETH=m 305CONFIG_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
471CONFIG_PPP_SYNC_TTY=m 440CONFIG_PPP_SYNC_TTY=m
472CONFIG_PPP_DEFLATE=m 441CONFIG_PPP_DEFLATE=m
473CONFIG_PPP_BSDCOMP=m 442CONFIG_PPP_BSDCOMP=m
443CONFIG_PPP_MPPE=m
474CONFIG_PPPOE=m 444CONFIG_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
519CONFIG_KEYBOARD_HIL_OLD=y 489# CONFIG_KEYBOARD_HIL_OLD is not set
520# CONFIG_KEYBOARD_HIL is not set 490CONFIG_KEYBOARD_HIL=y
521CONFIG_INPUT_MOUSE=y 491CONFIG_INPUT_MOUSE=y
522CONFIG_MOUSE_PS2=y 492CONFIG_MOUSE_PS2=y
523CONFIG_MOUSE_SERIAL=m 493CONFIG_MOUSE_SERIAL=m
@@ -554,6 +524,7 @@ CONFIG_HW_CONSOLE=y
554CONFIG_SERIAL_8250=y 524CONFIG_SERIAL_8250=y
555CONFIG_SERIAL_8250_CONSOLE=y 525CONFIG_SERIAL_8250_CONSOLE=y
556CONFIG_SERIAL_8250_NR_UARTS=17 526CONFIG_SERIAL_8250_NR_UARTS=17
527CONFIG_SERIAL_8250_RUNTIME_UARTS=4
557CONFIG_SERIAL_8250_EXTENDED=y 528CONFIG_SERIAL_8250_EXTENDED=y
558CONFIG_SERIAL_8250_MANY_PORTS=y 529CONFIG_SERIAL_8250_MANY_PORTS=y
559CONFIG_SERIAL_8250_SHARE_IRQ=y 530CONFIG_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
640CONFIG_FB_CFB_FILLRECT=y 619CONFIG_FB_CFB_FILLRECT=y
641CONFIG_FB_CFB_COPYAREA=y 620CONFIG_FB_CFB_COPYAREA=y
642CONFIG_FB_CFB_IMAGEBLIT=y 621CONFIG_FB_CFB_IMAGEBLIT=y
643CONFIG_FB_SOFT_CURSOR=y
644# CONFIG_FB_MACMODES is not set 622# CONFIG_FB_MACMODES is not set
645CONFIG_FB_MODE_HELPERS=y 623CONFIG_FB_MODE_HELPERS=y
646CONFIG_FB_TILEBLITTING=y 624CONFIG_FB_TILEBLITTING=y
@@ -655,6 +633,7 @@ CONFIG_DUMMY_CONSOLE=y
655CONFIG_DUMMY_CONSOLE_COLUMNS=128 633CONFIG_DUMMY_CONSOLE_COLUMNS=128
656CONFIG_DUMMY_CONSOLE_ROWS=48 634CONFIG_DUMMY_CONSOLE_ROWS=48
657CONFIG_FRAMEBUFFER_CONSOLE=y 635CONFIG_FRAMEBUFFER_CONSOLE=y
636# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
658CONFIG_STI_CONSOLE=y 637CONFIG_STI_CONSOLE=y
659CONFIG_FONTS=y 638CONFIG_FONTS=y
660CONFIG_FONT_8x8=y 639CONFIG_FONT_8x8=y
@@ -695,6 +674,8 @@ CONFIG_SND_OSSEMUL=y
695CONFIG_SND_MIXER_OSS=y 674CONFIG_SND_MIXER_OSS=y
696CONFIG_SND_PCM_OSS=y 675CONFIG_SND_PCM_OSS=y
697CONFIG_SND_SEQUENCER_OSS=y 676CONFIG_SND_SEQUENCER_OSS=y
677# CONFIG_SND_DYNAMIC_MINORS is not set
678CONFIG_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
770CONFIG_INOTIFY=y 755CONFIG_INOTIFY=y
@@ -800,10 +785,10 @@ CONFIG_PROC_FS=y
800CONFIG_PROC_KCORE=y 785CONFIG_PROC_KCORE=y
801CONFIG_SYSFS=y 786CONFIG_SYSFS=y
802CONFIG_TMPFS=y 787CONFIG_TMPFS=y
803# CONFIG_HUGETLBFS is not set
804# CONFIG_HUGETLB_PAGE is not set 788# CONFIG_HUGETLB_PAGE is not set
805CONFIG_RAMFS=y 789CONFIG_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
823CONFIG_UFS_FS=m 808CONFIG_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
920CONFIG_DEBUG_KERNEL=y
921CONFIG_MAGIC_SYSRQ=y 904CONFIG_MAGIC_SYSRQ=y
905CONFIG_DEBUG_KERNEL=y
922CONFIG_LOG_BUF_SHIFT=16 906CONFIG_LOG_BUF_SHIFT=16
923CONFIG_DETECT_SOFTLOCKUP=y 907CONFIG_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
910CONFIG_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
917CONFIG_FORCED_INLINING=y
918# CONFIG_RCU_TORTURE_TEST is not set
919CONFIG_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 1034CONFIG_NLS_ASCII=m
1035# CONFIG_NLS_ISO8859_1 is not set 1035CONFIG_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#
940CONFIG_NLS=y 940CONFIG_NLS=y
941CONFIG_NLS_DEFAULT="iso8859-1" 941CONFIG_NLS_DEFAULT="iso8859-1"
942# CONFIG_NLS_CODEPAGE_437 is not set 942CONFIG_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 945CONFIG_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 965CONFIG_NLS_ASCII=m
966# CONFIG_NLS_ISO8859_1 is not set 966CONFIG_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 976CONFIG_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 979CONFIG_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#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -10,14 +10,11 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 10CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y
14 13
15# 14#
16# Code maturity level options 15# Code maturity level options
17# 16#
18CONFIG_EXPERIMENTAL=y 17CONFIG_EXPERIMENTAL=y
19# CONFIG_CLEAN_COMPILE is not set
20CONFIG_BROKEN=y
21CONFIG_BROKEN_ON_SMP=y 18CONFIG_BROKEN_ON_SMP=y
22CONFIG_INIT_ENV_ARG_LIMIT=32 19CONFIG_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
33CONFIG_SYSCTL=y 30CONFIG_SYSCTL=y
34# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
35CONFIG_HOTPLUG=y
36CONFIG_KOBJECT_UEVENT=y
37CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
38CONFIG_IKCONFIG_PROC=y 33CONFIG_IKCONFIG_PROC=y
39CONFIG_INITRAMFS_SOURCE="" 34CONFIG_INITRAMFS_SOURCE=""
35# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_EMBEDDED=y 36CONFIG_EMBEDDED=y
41CONFIG_KALLSYMS=y 37CONFIG_KALLSYMS=y
42CONFIG_KALLSYMS_ALL=y 38CONFIG_KALLSYMS_ALL=y
43# CONFIG_KALLSYMS_EXTRA_PASS is not set 39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_HOTPLUG=y
44CONFIG_PRINTK=y 41CONFIG_PRINTK=y
45CONFIG_BUG=y 42CONFIG_BUG=y
43CONFIG_ELF_CORE=y
46CONFIG_BASE_FULL=y 44CONFIG_BASE_FULL=y
47CONFIG_FUTEX=y 45CONFIG_FUTEX=y
48CONFIG_EPOLL=y 46CONFIG_EPOLL=y
49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
50CONFIG_SHMEM=y 47CONFIG_SHMEM=y
51CONFIG_CC_ALIGN_FUNCTIONS=0 48CONFIG_CC_ALIGN_FUNCTIONS=0
52CONFIG_CC_ALIGN_LABELS=0 49CONFIG_CC_ALIGN_LABELS=0
53CONFIG_CC_ALIGN_LOOPS=0 50CONFIG_CC_ALIGN_LOOPS=0
54CONFIG_CC_ALIGN_JUMPS=0 51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y
55# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
56CONFIG_BASE_SMALL=0 54CONFIG_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
67CONFIG_KMOD=y 66CONFIG_KMOD=y
68 67
69# 68#
69# Block layer
70#
71
72#
73# IO Schedulers
74#
75CONFIG_IOSCHED_NOOP=y
76CONFIG_IOSCHED_AS=y
77CONFIG_IOSCHED_DEADLINE=y
78CONFIG_IOSCHED_CFQ=y
79CONFIG_DEFAULT_AS=y
80# CONFIG_DEFAULT_DEADLINE is not set
81# CONFIG_DEFAULT_CFQ is not set
82# CONFIG_DEFAULT_NOOP is not set
83CONFIG_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
78CONFIG_PREFETCH=y 94CONFIG_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
97CONFIG_ARCH_FLATMEM_ENABLE=y
98# CONFIG_PREEMPT_NONE is not set
99CONFIG_PREEMPT_VOLUNTARY=y
100# CONFIG_PREEMPT is not set
81# CONFIG_HZ_100 is not set 101# CONFIG_HZ_100 is not set
82CONFIG_HZ_250=y 102CONFIG_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
89CONFIG_FLATMEM=y 109CONFIG_FLATMEM=y
90CONFIG_FLAT_NODE_MEM_MAP=y 110CONFIG_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 112CONFIG_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
138CONFIG_PACKET=y 159CONFIG_PACKET=y
139CONFIG_PACKET_MMAP=y 160CONFIG_PACKET_MMAP=y
140CONFIG_UNIX=y 161CONFIG_UNIX=y
@@ -175,7 +196,12 @@ CONFIG_INET6_TUNNEL=m
175CONFIG_IPV6_TUNNEL=m 196CONFIG_IPV6_TUNNEL=m
176CONFIG_NETFILTER=y 197CONFIG_NETFILTER=y
177CONFIG_NETFILTER_DEBUG=y 198CONFIG_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
192CONFIG_IP_NF_AMANDA=m 218CONFIG_IP_NF_AMANDA=m
193# CONFIG_IP_NF_PPTP is not set 219# CONFIG_IP_NF_PPTP is not set
194CONFIG_IP_NF_QUEUE=m 220CONFIG_IP_NF_QUEUE=m
195CONFIG_IP_NF_IPTABLES=m
196CONFIG_IP_NF_MATCH_LIMIT=m
197CONFIG_IP_NF_MATCH_IPRANGE=m
198CONFIG_IP_NF_MATCH_MAC=m
199CONFIG_IP_NF_MATCH_PKTTYPE=m
200CONFIG_IP_NF_MATCH_MARK=m
201CONFIG_IP_NF_MATCH_MULTIPORT=m
202CONFIG_IP_NF_MATCH_TOS=m
203CONFIG_IP_NF_MATCH_RECENT=m
204CONFIG_IP_NF_MATCH_ECN=m
205CONFIG_IP_NF_MATCH_DSCP=m
206CONFIG_IP_NF_MATCH_AH_ESP=m
207CONFIG_IP_NF_MATCH_LENGTH=m
208CONFIG_IP_NF_MATCH_TTL=m
209CONFIG_IP_NF_MATCH_TCPMSS=m
210CONFIG_IP_NF_MATCH_HELPER=m
211CONFIG_IP_NF_MATCH_STATE=m
212CONFIG_IP_NF_MATCH_CONNTRACK=m
213CONFIG_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
221CONFIG_IP_NF_FILTER=m
222CONFIG_IP_NF_TARGET_REJECT=m
223CONFIG_IP_NF_TARGET_LOG=m
224CONFIG_IP_NF_TARGET_ULOG=m
225CONFIG_IP_NF_TARGET_TCPMSS=m
226# CONFIG_IP_NF_TARGET_NFQUEUE is not set
227CONFIG_IP_NF_NAT=m
228CONFIG_IP_NF_NAT_NEEDED=y
229CONFIG_IP_NF_TARGET_MASQUERADE=m
230CONFIG_IP_NF_TARGET_REDIRECT=m
231CONFIG_IP_NF_TARGET_NETMAP=m
232CONFIG_IP_NF_TARGET_SAME=m
233CONFIG_IP_NF_NAT_SNMP_BASIC=m
234CONFIG_IP_NF_NAT_IRC=m
235CONFIG_IP_NF_NAT_FTP=m
236CONFIG_IP_NF_NAT_TFTP=m
237CONFIG_IP_NF_NAT_AMANDA=m
238CONFIG_IP_NF_MANGLE=m
239CONFIG_IP_NF_TARGET_TOS=m
240CONFIG_IP_NF_TARGET_ECN=m
241CONFIG_IP_NF_TARGET_DSCP=m
242CONFIG_IP_NF_TARGET_MARK=m
243CONFIG_IP_NF_TARGET_CLASSIFY=m
244# CONFIG_IP_NF_TARGET_TTL is not set
245# CONFIG_IP_NF_RAW is not set
246CONFIG_IP_NF_ARPTABLES=m
247CONFIG_IP_NF_ARPFILTER=m
248CONFIG_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
254CONFIG_IP6_NF_IPTABLES=m
255# CONFIG_IP6_NF_MATCH_LIMIT is not set
256CONFIG_IP6_NF_MATCH_MAC=m
257CONFIG_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
262CONFIG_IP6_NF_MATCH_OWNER=m
263# CONFIG_IP6_NF_MATCH_MARK is not set
264CONFIG_IP6_NF_MATCH_IPV6HEADER=m
265# CONFIG_IP6_NF_MATCH_AHESP is not set
266CONFIG_IP6_NF_MATCH_LENGTH=m
267# CONFIG_IP6_NF_MATCH_EUI64 is not set
268CONFIG_IP6_NF_FILTER=m
269CONFIG_IP6_NF_TARGET_LOG=m
270CONFIG_IP6_NF_TARGET_REJECT=m
271# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
272CONFIG_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
356CONFIG_BLK_DEV_RAM_COUNT=16 313CONFIG_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#
362CONFIG_IOSCHED_NOOP=y
363CONFIG_IOSCHED_AS=y
364CONFIG_IOSCHED_DEADLINE=y
365CONFIG_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
476CONFIG_SCSI_ATA_PIIX=m 425CONFIG_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
479CONFIG_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
430CONFIG_SCSI_SATA_PROMISE=m
481# CONFIG_SCSI_SATA_SX4 is not set 431# CONFIG_SCSI_SATA_SX4 is not set
482CONFIG_SCSI_SATA_SIL=m 432CONFIG_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
485CONFIG_SCSI_SATA_VIA=m 436CONFIG_SCSI_SATA_VIA=m
486# CONFIG_SCSI_SATA_VITESSE is not set 437# CONFIG_SCSI_SATA_VITESSE is not set
487CONFIG_SCSI_SATA_INTEL_COMBINED=y 438CONFIG_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
496CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 445CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
497CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 446CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
498CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 447CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
499# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 448CONFIG_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
504CONFIG_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
638CONFIG_TIGON3=m 581CONFIG_TIGON3=m
@@ -668,6 +611,7 @@ CONFIG_PPP_ASYNC=m
668CONFIG_PPP_SYNC_TTY=m 611CONFIG_PPP_SYNC_TTY=m
669CONFIG_PPP_DEFLATE=m 612CONFIG_PPP_DEFLATE=m
670CONFIG_PPP_BSDCOMP=m 613CONFIG_PPP_BSDCOMP=m
614# CONFIG_PPP_MPPE is not set
671CONFIG_PPPOE=m 615CONFIG_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
744CONFIG_SERIAL_8250=y 688CONFIG_SERIAL_8250=y
745CONFIG_SERIAL_8250_CONSOLE=y 689CONFIG_SERIAL_8250_CONSOLE=y
746CONFIG_SERIAL_8250_NR_UARTS=13 690CONFIG_SERIAL_8250_NR_UARTS=13
691CONFIG_SERIAL_8250_RUNTIME_UARTS=4
747CONFIG_SERIAL_8250_EXTENDED=y 692CONFIG_SERIAL_8250_EXTENDED=y
748CONFIG_SERIAL_8250_MANY_PORTS=y 693CONFIG_SERIAL_8250_MANY_PORTS=y
749CONFIG_SERIAL_8250_SHARE_IRQ=y 694CONFIG_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
758CONFIG_SERIAL_CORE=y 702CONFIG_SERIAL_CORE=y
759CONFIG_SERIAL_CORE_CONSOLE=y 703CONFIG_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
830CONFIG_FB_CFB_FILLRECT=y 781CONFIG_FB_CFB_FILLRECT=y
831CONFIG_FB_CFB_COPYAREA=y 782CONFIG_FB_CFB_COPYAREA=y
832CONFIG_FB_CFB_IMAGEBLIT=y 783CONFIG_FB_CFB_IMAGEBLIT=y
833CONFIG_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
842CONFIG_FB_STI=y 792CONFIG_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
866CONFIG_DUMMY_CONSOLE_COLUMNS=160 814CONFIG_DUMMY_CONSOLE_COLUMNS=160
867CONFIG_DUMMY_CONSOLE_ROWS=64 815CONFIG_DUMMY_CONSOLE_ROWS=64
868CONFIG_FRAMEBUFFER_CONSOLE=y 816CONFIG_FRAMEBUFFER_CONSOLE=y
817# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
869CONFIG_STI_CONSOLE=y 818CONFIG_STI_CONSOLE=y
870# CONFIG_FONTS is not set 819# CONFIG_FONTS is not set
871CONFIG_FONT_8x8=y 820CONFIG_FONT_8x8=y
@@ -898,23 +847,27 @@ CONFIG_SND_OSSEMUL=y
898CONFIG_SND_MIXER_OSS=y 847CONFIG_SND_MIXER_OSS=y
899CONFIG_SND_PCM_OSS=y 848CONFIG_SND_PCM_OSS=y
900CONFIG_SND_SEQUENCER_OSS=y 849CONFIG_SND_SEQUENCER_OSS=y
850# CONFIG_SND_DYNAMIC_MINORS is not set
851CONFIG_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#
858CONFIG_SND_AC97_CODEC=y
859CONFIG_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
912CONFIG_SND_AC97_CODEC=y
913CONFIG_SND_AC97_BUS=y
914 865
915# 866#
916# PCI devices 867# PCI devices
917# 868#
869CONFIG_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
941CONFIG_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
1003CONFIG_USB_PRINTER=m 954CONFIG_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#
1008CONFIG_USB_STORAGE=m 963CONFIG_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
1015CONFIG_USB_STORAGE_SDDR09=y 970CONFIG_USB_STORAGE_SDDR09=y
1016CONFIG_USB_STORAGE_SDDR55=y 971CONFIG_USB_STORAGE_SDDR55=y
1017CONFIG_USB_STORAGE_JUMPSHOT=y 972CONFIG_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#
1022CONFIG_USB_HID=y 979CONFIG_USB_HID=y
1023CONFIG_USB_HIDINPUT=y 980CONFIG_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
1025CONFIG_USB_HIDDEV=y 983CONFIG_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
1135CONFIG_INOTIFY=y 1095CONFIG_INOTIFY=y
@@ -1164,10 +1124,10 @@ CONFIG_PROC_FS=y
1164CONFIG_PROC_KCORE=y 1124CONFIG_PROC_KCORE=y
1165CONFIG_SYSFS=y 1125CONFIG_SYSFS=y
1166CONFIG_TMPFS=y 1126CONFIG_TMPFS=y
1167# CONFIG_HUGETLBFS is not set
1168# CONFIG_HUGETLB_PAGE is not set 1127# CONFIG_HUGETLB_PAGE is not set
1169CONFIG_RAMFS=y 1128CONFIG_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#
1226CONFIG_NLS=y 1186CONFIG_NLS=y
1227CONFIG_NLS_DEFAULT="iso8859-1" 1187CONFIG_NLS_DEFAULT="iso8859-1"
1228# CONFIG_NLS_CODEPAGE_437 is not set 1188CONFIG_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 1191CONFIG_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 1211CONFIG_NLS_ASCII=m
1252# CONFIG_NLS_ISO8859_1 is not set 1212CONFIG_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 1222CONFIG_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 1225CONFIG_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
1277CONFIG_DEBUG_KERNEL=y
1278CONFIG_MAGIC_SYSRQ=y 1237CONFIG_MAGIC_SYSRQ=y
1238CONFIG_DEBUG_KERNEL=y
1279CONFIG_LOG_BUF_SHIFT=16 1239CONFIG_LOG_BUF_SHIFT=16
1280CONFIG_DETECT_SOFTLOCKUP=y 1240CONFIG_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
1243CONFIG_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
1250CONFIG_FORCED_INLINING=y
1251# CONFIG_RCU_TORTURE_TEST is not set
1252CONFIG_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#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -15,7 +15,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
15# Code maturity level options 15# Code maturity level options
16# 16#
17CONFIG_EXPERIMENTAL=y 17CONFIG_EXPERIMENTAL=y
18CONFIG_CLEAN_COMPILE=y
19CONFIG_BROKEN_ON_SMP=y 18CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 19CONFIG_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
31CONFIG_SYSCTL=y 30CONFIG_SYSCTL=y
32# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
33# CONFIG_HOTPLUG is not set
34CONFIG_KOBJECT_UEVENT=y
35CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 33CONFIG_IKCONFIG_PROC=y
37CONFIG_INITRAMFS_SOURCE="" 34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
38# CONFIG_EMBEDDED is not set 36# CONFIG_EMBEDDED is not set
39CONFIG_KALLSYMS=y 37CONFIG_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
40CONFIG_HOTPLUG=y
42CONFIG_PRINTK=y 41CONFIG_PRINTK=y
43CONFIG_BUG=y 42CONFIG_BUG=y
43CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y 44CONFIG_BASE_FULL=y
45CONFIG_FUTEX=y 45CONFIG_FUTEX=y
46CONFIG_EPOLL=y 46CONFIG_EPOLL=y
@@ -49,8 +49,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
49CONFIG_CC_ALIGN_LABELS=0 49CONFIG_CC_ALIGN_LABELS=0
50CONFIG_CC_ALIGN_LOOPS=0 50CONFIG_CC_ALIGN_LOOPS=0
51CONFIG_CC_ALIGN_JUMPS=0 51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y
52# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
53CONFIG_BASE_SMALL=0 54CONFIG_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#
69CONFIG_IOSCHED_NOOP=y
70CONFIG_IOSCHED_AS=y
71CONFIG_IOSCHED_DEADLINE=y
72CONFIG_IOSCHED_CFQ=y
73CONFIG_DEFAULT_AS=y
74# CONFIG_DEFAULT_DEADLINE is not set
75# CONFIG_DEFAULT_CFQ is not set
76# CONFIG_DEFAULT_NOOP is not set
77CONFIG_DEFAULT_IOSCHED="anticipatory"
78
79#
61# Processor type and features 80# Processor type and features
62# 81#
63CONFIG_PA7000=y 82CONFIG_PA7000=y
@@ -67,6 +86,10 @@ CONFIG_PA7000=y
67# CONFIG_PA8X00 is not set 86# CONFIG_PA8X00 is not set
68CONFIG_PA11=y 87CONFIG_PA11=y
69# CONFIG_SMP is not set 88# CONFIG_SMP is not set
89CONFIG_ARCH_FLATMEM_ENABLE=y
90CONFIG_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
71CONFIG_HZ_250=y 94CONFIG_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
78CONFIG_FLATMEM=y 101CONFIG_FLATMEM=y
79CONFIG_FLAT_NODE_MEM_MAP=y 102CONFIG_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 104CONFIG_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
135CONFIG_PACKET=y 159CONFIG_PACKET=y
136CONFIG_PACKET_MMAP=y 160CONFIG_PACKET_MMAP=y
137CONFIG_UNIX=y 161CONFIG_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
263CONFIG_PARPORT_NOT_PC=y
231CONFIG_PARPORT_GSC=y 264CONFIG_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
254CONFIG_BLK_DEV_RAM_SIZE=4096 287CONFIG_BLK_DEV_RAM_SIZE=4096
255CONFIG_BLK_DEV_INITRD=y 288CONFIG_BLK_DEV_INITRD=y
256# CONFIG_CDROM_PKTCDVD is not set 289# CONFIG_CDROM_PKTCDVD is not set
257
258#
259# IO Schedulers
260#
261CONFIG_IOSCHED_NOOP=y
262CONFIG_IOSCHED_AS=y
263CONFIG_IOSCHED_DEADLINE=y
264CONFIG_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
331CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 357CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
332CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 358CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
333CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 359CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
334# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 360CONFIG_SCSI_SYM53C8XX_MMIO=y
335# CONFIG_SCSI_IPR is not set 361# CONFIG_SCSI_IPR is not set
336CONFIG_SCSI_ZALON=y 362CONFIG_SCSI_ZALON=y
337CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 363CONFIG_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
343CONFIG_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
476CONFIG_TIGON3=y 497CONFIG_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
565CONFIG_KEYBOARD_HIL_OLD=y 586# CONFIG_KEYBOARD_HIL_OLD is not set
566CONFIG_KEYBOARD_HIL=y 587CONFIG_KEYBOARD_HIL=y
567CONFIG_INPUT_MOUSE=y 588CONFIG_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 592CONFIG_MOUSE_HIL=y
572CONFIG_INPUT_JOYSTICK=y 593CONFIG_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
628CONFIG_SERIAL_8250=y 649CONFIG_SERIAL_8250=y
629CONFIG_SERIAL_8250_CONSOLE=y 650CONFIG_SERIAL_8250_CONSOLE=y
630CONFIG_SERIAL_8250_NR_UARTS=13 651CONFIG_SERIAL_8250_NR_UARTS=13
652CONFIG_SERIAL_8250_RUNTIME_UARTS=4
631CONFIG_SERIAL_8250_EXTENDED=y 653CONFIG_SERIAL_8250_EXTENDED=y
632CONFIG_SERIAL_8250_MANY_PORTS=y 654CONFIG_SERIAL_8250_MANY_PORTS=y
633CONFIG_SERIAL_8250_SHARE_IRQ=y 655CONFIG_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#
692CONFIG_HWMON=y 721CONFIG_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
718CONFIG_FB_CFB_FILLRECT=y 748CONFIG_FB_CFB_FILLRECT=y
719CONFIG_FB_CFB_COPYAREA=y 749CONFIG_FB_CFB_COPYAREA=y
720CONFIG_FB_CFB_IMAGEBLIT=y 750CONFIG_FB_CFB_IMAGEBLIT=y
721CONFIG_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
730CONFIG_FB_STI=y 759CONFIG_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
753CONFIG_DUMMY_CONSOLE_COLUMNS=160 781CONFIG_DUMMY_CONSOLE_COLUMNS=160
754CONFIG_DUMMY_CONSOLE_ROWS=64 782CONFIG_DUMMY_CONSOLE_ROWS=64
755CONFIG_FRAMEBUFFER_CONSOLE=y 783CONFIG_FRAMEBUFFER_CONSOLE=y
784# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
756CONFIG_STI_CONSOLE=y 785CONFIG_STI_CONSOLE=y
757# CONFIG_FONTS is not set 786CONFIG_FONTS=y
758CONFIG_FONT_8x8=y 787# CONFIG_FONT_8x8 is not set
759CONFIG_FONT_8x16=y 788CONFIG_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 801CONFIG_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
805CONFIG_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
781CONFIG_SND_MIXER_OSS=y 822CONFIG_SND_MIXER_OSS=y
782CONFIG_SND_PCM_OSS=y 823CONFIG_SND_PCM_OSS=y
783CONFIG_SND_SEQUENCER_OSS=y 824CONFIG_SND_SEQUENCER_OSS=y
825# CONFIG_SND_DYNAMIC_MINORS is not set
826CONFIG_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#
833CONFIG_SND_AC97_CODEC=y
834CONFIG_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
795CONFIG_SND_AC97_CODEC=y
796CONFIG_SND_AC97_BUS=y
797 840
798# 841#
799# PCI devices 842# PCI devices
800# 843#
844CONFIG_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
824CONFIG_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
1016CONFIG_INOTIFY=y 1066CONFIG_INOTIFY=y
@@ -1045,6 +1095,7 @@ CONFIG_TMPFS=y
1045# CONFIG_HUGETLB_PAGE is not set 1095# CONFIG_HUGETLB_PAGE is not set
1046CONFIG_RAMFS=y 1096CONFIG_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
1154CONFIG_DEBUG_KERNEL=y
1155CONFIG_MAGIC_SYSRQ=y 1205CONFIG_MAGIC_SYSRQ=y
1206CONFIG_DEBUG_KERNEL=y
1156CONFIG_LOG_BUF_SHIFT=15 1207CONFIG_LOG_BUF_SHIFT=15
1157CONFIG_DETECT_SOFTLOCKUP=y 1208CONFIG_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
1211CONFIG_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
1218CONFIG_FORCED_INLINING=y
1219# CONFIG_RCU_TORTURE_TEST is not set
1220CONFIG_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 */
319EXPORT_SYMBOL(flush_kernel_dcache_range_asm); 319EXPORT_SYMBOL(flush_kernel_dcache_range_asm);
320EXPORT_SYMBOL(flush_kernel_dcache_page); 320EXPORT_SYMBOL(flush_kernel_dcache_page_asm);
321EXPORT_SYMBOL(flush_data_cache_local); 321EXPORT_SYMBOL(flush_data_cache_local);
322EXPORT_SYMBOL(flush_kernel_icache_range_asm); 322EXPORT_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
1018intr_do_resched: 1022intr_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
1054intr_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
1042intr_do_signal: 1075intr_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
626flush_kernel_dcache_page: 626flush_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>
33EXPORT_SYMBOL(memchr);
34EXPORT_SYMBOL(memcmp);
35EXPORT_SYMBOL(memmove);
36EXPORT_SYMBOL(memscan);
37EXPORT_SYMBOL(memset); 33EXPORT_SYMBOL(memset);
38EXPORT_SYMBOL(strcat);
39EXPORT_SYMBOL(strchr);
40EXPORT_SYMBOL(strcmp);
41EXPORT_SYMBOL(strcpy);
42EXPORT_SYMBOL(strlen);
43EXPORT_SYMBOL(strncat);
44EXPORT_SYMBOL(strncmp);
45EXPORT_SYMBOL(strncpy);
46EXPORT_SYMBOL(strnlen);
47EXPORT_SYMBOL(strrchr);
48EXPORT_SYMBOL(strstr);
49EXPORT_SYMBOL(strpbrk); 34EXPORT_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>
85EXPORT_SYMBOL(__ioremap);
86EXPORT_SYMBOL(iounmap);
87EXPORT_SYMBOL(memcpy_toio); 70EXPORT_SYMBOL(memcpy_toio);
88EXPORT_SYMBOL(memcpy_fromio); 71EXPORT_SYMBOL(memcpy_fromio);
89EXPORT_SYMBOL(memset_io); 72EXPORT_SYMBOL(memset_io);
90 73
91#include <asm/unistd.h> 74#include <asm/unistd.h>
92EXPORT_SYMBOL(sys_open);
93EXPORT_SYMBOL(sys_lseek); 75EXPORT_SYMBOL(sys_lseek);
94EXPORT_SYMBOL(sys_read);
95EXPORT_SYMBOL(sys_write); 76EXPORT_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
264const struct iomap_ops *iomap_ops[8] = { 264const 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
1014void free_initrd_mem(unsigned long start, unsigned long end) 1014void 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
76static int 75static int
77remap_area_pages(unsigned long address, unsigned long phys_addr, 76remap_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
120static unsigned long last = 0;
121
122void 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}
130EXPORT_SYMBOL(gsc_bad_addr);
131
132void __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}
140EXPORT_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 */
155void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 129void __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}
188EXPORT_SYMBOL(__ioremap);
222 189
223void iounmap(void __iomem *addr) 190void 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}
195EXPORT_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}
837EXPORT_SYMBOL(get_wchan);
838 837
839static int kstack_depth_to_print = 64; 838static 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; \
30static int __init x##_setup(char *opts) \ 30static 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
22config PCI 22config PCI
23 bool 23 bool
24 24
25config PCMCIA
26 bool
27
25config GENERIC_CALIBRATE_DELAY 28config 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.
22SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \ 22SYMLINK_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
24SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header)) 24SYMLINK_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.
135LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc 135LINK_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
153MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \ 153MRPROPER_FILES += $(ARCH_SYMLINKS)
154 $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) $(ARCH_DIR)/os
155 154
156archclean: 155archclean:
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
4libs-y += arch/um/sys-x86_64/ 4core-y += arch/um/sys-x86_64/
5START := 0x60000000 5START := 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 = {
95static int register_daemon(void) 95static 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
105extern int ping_watchdog(int fd); 105extern int ping_watchdog(int fd);
106 106
107static ssize_t harddog_write(struct file *file, const char *data, size_t len, 107static 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,
118static int harddog_ioctl(struct inode *inode, struct file *file, 118static 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
70static ssize_t hostaudio_read(struct file *file, char *buffer, size_t count, 70static 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
97static ssize_t hostaudio_write(struct file *file, const char *buffer, 97static 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 = {
124static int register_mcast(void) 124static 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
355struct unplugged_pages {
356 struct list_head list;
357 void *pages[UNPLUGGED_PER_PAGE];
358};
359
360static unsigned long long unplugged_pages_count = 0;
361static struct list_head unplugged_pages = LIST_HEAD_INIT(unplugged_pages);
362static int unplug_index = UNPLUGGED_PER_PAGE;
363
364static 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;
441out:
442 return err;
443}
444
445static 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
456static 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
464static int mem_remove(int n)
465{
466 return -EBUSY;
467}
468
469static 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
477static 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
352static void mconsole_get_config(int (*get_config)(char *, char *, int, 490static 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 = {
106static int register_pcap(void) 106static 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 = {
93static int register_slip(void) 93static 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 = {
116static int register_slirp(void) 116static 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
897device_initcall(ubd_driver_init); 897device_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);
116extern struct task_struct *get_task(int pid, int require); 116extern struct task_struct *get_task(int pid, int require);
117extern void machine_halt(void); 117extern void machine_halt(void);
118extern int is_syscall(unsigned long addr); 118extern int is_syscall(unsigned long addr);
119extern void arch_switch(void); 119
120extern void arch_switch_to_tt(struct task_struct *from, struct task_struct *to);
121
122extern void arch_switch_to_skas(struct task_struct *from, struct task_struct *to);
123
120extern void free_irq(unsigned int, void *); 124extern void free_irq(unsigned int, void *);
121extern int cpu(void); 125extern 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
73struct lines { 67struct 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
79extern void line_close(struct tty_struct *tty, struct file * filp); 73extern void line_close(struct tty_struct *tty, struct file * filp);
80extern int line_open(struct line *lines, struct tty_struct *tty); 74extern 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;
49extern unsigned long host_task_size; 49extern unsigned long host_task_size;
50extern unsigned long task_size; 50extern unsigned long task_size;
51 51
52extern void check_devanon(void);
53extern int init_mem_user(void); 52extern int init_mem_user(void);
54extern void setup_memory(void *entry); 53extern void setup_memory(void *entry);
55extern unsigned long find_iomem(char *driver, unsigned long *len_out); 54extern 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);
172extern void os_early_checks(void); 173extern void os_early_checks(void);
173extern int can_do_skas(void); 174extern int can_do_skas(void);
174extern void os_check_bugs(void); 175extern void os_check_bugs(void);
176extern 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,
205extern int os_protect_memory(void *addr, unsigned long len, 207extern int os_protect_memory(void *addr, unsigned long len,
206 int r, int w, int x); 208 int r, int w, int x);
207extern int os_unmap_memory(void *addr, int len); 209extern int os_unmap_memory(void *addr, int len);
210extern int os_drop_memory(void *addr, int length);
211extern int can_drop_memory(void);
208extern void os_flush_stdout(void); 212extern 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);
235extern int helper_wait(int pid); 239extern int helper_wait(int pid);
236 240
237/* umid.c */
238 241
242/* tls.c */
243extern int os_set_thread_area(user_desc_t *info, int pid);
244extern int os_get_thread_area(user_desc_t *info, int pid);
245
246/* umid.c */
239extern int umid_file_name(char *name, char *buf, int len); 247extern int umid_file_name(char *name, char *buf, int len);
240extern int set_umid(char *name); 248extern int set_umid(char *name);
241extern char *get_umid(void); 249extern 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
50static __inline__ 50static __inline__
51unsigned int csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, 51unsigned 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
194static __inline__ unsigned int csum_and_copy_to_user(const unsigned char *src, 195static __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
17extern void update_debugregs(int seq); 18extern void update_debugregs(int seq);
19#else
20static 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
10typedef 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>
25typedef 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
10typedef 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>
26typedef 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
13extern int mode_tt; 16extern int mode_tt;
@@ -31,7 +34,7 @@ extern unsigned long uml_physmem;
31extern unsigned long uml_reserved; 34extern unsigned long uml_reserved;
32extern unsigned long end_vm; 35extern unsigned long end_vm;
33extern unsigned long start_vm; 36extern unsigned long start_vm;
34extern unsigned long highmem; 37extern unsigned long long highmem;
35 38
36extern char host_info[]; 39extern 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
23void flush_thread(void) 23void flush_thread(void)
24{ 24{
25 arch_flush_thread(&current->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
61long sys_execve(char *file, char __user *__user *argv, 62long 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;
30unsigned long *empty_zero_page = NULL; 30unsigned long *empty_zero_page = NULL;
31unsigned long *empty_bad_page = NULL; 31unsigned long *empty_bad_page = NULL;
32pgd_t swapper_pg_dir[PTRS_PER_PGD]; 32pgd_t swapper_pg_dir[PTRS_PER_PGD];
33unsigned long highmem; 33unsigned long long highmem;
34int kmalloc_ok = 0; 34int kmalloc_ok = 0;
35 35
36static unsigned long brk_end; 36static 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
176out:
177 return ret;
162} 178}
163 179
164void initial_thread_cb(void (*proc)(void *), void *arg) 180void 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
410static int proc_write_sysemu(struct file *file,const char *buf, unsigned long count,void *data) 422static 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);
46long arch_ptrace(struct task_struct *child, long request, long addr, long data) 46long 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(&current->thread.regs.regs); 105 userspace(&current->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(&current->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
107long sys_uname(struct old_utsname * name) 107long 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
118long sys_olduname(struct oldold_utsname * name) 118long 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, &current->thread.exec_buf)) 153 if(!run_kernel_thread(fn, arg, &current->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
6obj-y = aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o sigio.o \ 6obj-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
10obj-$(CONFIG_MODE_SKAS) += skas/ 10obj-$(CONFIG_MODE_SKAS) += skas/
@@ -12,12 +12,9 @@ obj-$(CONFIG_TTY_LOG) += tty_log.o
12user-objs-$(CONFIG_TTY_LOG) += tty_log.o 12user-objs-$(CONFIG_TTY_LOG) += tty_log.o
13 13
14USER_OBJS := $(user-objs-y) aio.o elf_aux.o file.o helper.o irq.o main.o mem.o \ 14USER_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
18elf_aux.o: $(ARCH_DIR)/kernel-offsets.h
19CFLAGS_elf_aux.o += -I$(objtree)/arch/um
20
21CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH) 18CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH)
22 19
23HAVE_AIO_ABI := $(shell [ -r /usr/include/linux/aio_abi.h ] && \ 20HAVE_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 = {
102static int register_ethertap(void) 102static int register_ethertap(void)
103{ 103{
104 register_transport(&ethertap_transport); 104 register_transport(&ethertap_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 = {
87static int register_tuntap(void) 87static 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
124static 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
145extern int have_devanon;
146
147int create_mem_file(unsigned long long len) 124int 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
196int 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
206int 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
190void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int)) 234void 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
473int have_devanon = 0;
474
475/* Runs on boot kernel stack - already safe to use printk. */
476
477void 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
492int __init parse_iomem(char *str, int *add) 473int __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
6obj-$(CONFIG_MODE_SKAS) = registers.o 6obj-$(CONFIG_MODE_SKAS) = registers.o tls.o
7 7
8USER_OBJS := $(obj-y) 8USER_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
5static _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. */
10void 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
22int 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
35int 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
51static _syscall1(int, get_thread_area, user_desc_t *, u_info);
52static _syscall1(int, set_thread_area, user_desc_t *, u_info);
53
54int 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
65int 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)))
21endef 21endef
22 22
23 23ifdef subarch-obj-y
24# cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If 24obj-y += subarch.o
25# so, it's considered to be a path relative to $(srcdir) rather than 25subarch-y = $(addprefix ../../$(SUBARCH)/,$(subarch-obj-y))
26# $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from 26endif
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.
29quiet_cmd_make_link = SYMLINK $@
30cmd_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
39targets := $(targets) $(SYMLINKS)
40
41SYMLINKS := $(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 @@
1clean-files += unmap_tmp.o unmap_fin.o unmap.o
2
3ifdef CONFIG_MODE_TT
4
5#Always build unmap_fin.o
6extra-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).
8targets += unmap.o
9
10#XXX: partially copied from arch/um/scripts/Makefile.rules
11$(obj)/unmap.o: _c_flags = $(call unprofile,$(CFLAGS))
12
13quiet_cmd_wrapld = LD $@
14define cmd_wrapld
15 $(LD) $(LDFLAGS) -r -o $(obj)/unmap_tmp.o $< ; \
16 $(OBJCOPY) $(UML_OBJCOPYFLAGS) $(obj)/unmap_tmp.o $@ -G switcheroo
17endef
18
19$(obj)/unmap_fin.o : $(obj)/unmap.o FORCE
20 $(call if_changed,wrapld)
21
22endif
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 @@
1obj-y := bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ 1obj-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
5obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o 5obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o
6 6
7obj-$(CONFIG_HIGHMEM) += highmem.o 7subarch-obj-y = lib/bitops.o kernel/semaphore.o
8obj-$(CONFIG_MODULES) += module.o 8subarch-obj-$(CONFIG_HIGHMEM) += mm/highmem.o
9subarch-obj-$(CONFIG_MODULES) += kernel/module.o
9 10
10USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o 11USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o
11 12
12SYMLINKS = bitops.c semaphore.c highmem.c module.c
13
14include arch/um/scripts/Makefile.rules 13include arch/um/scripts/Makefile.rules
15 14
16bitops.c-dir = lib 15extra-$(CONFIG_MODE_TT) += unmap.o
17semaphore.c-dir = kernel
18highmem.c-dir = mm
19module.c-dir = kernel
20
21$(obj)/stub_segv.o : _c_flags = $(call unprofile,$(CFLAGS))
22 16
23include 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
18void arch_switch(void) 18void 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
24void 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
23int is_syscall(unsigned long addr) 36int is_syscall(unsigned long addr)
@@ -124,22 +137,22 @@ unsigned long getreg(struct task_struct *child, int regno)
124int peek_user(struct task_struct *child, long addr, long data) 137int 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
145struct i387_fxsave_struct { 158struct 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
18int ptrace_getregs(long pid, unsigned long *regs_out) 19int 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 */
46static void write_debugregs(int pid, unsigned long *regs) 48static 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 */
77static unsigned long kernel_debugregs[8] = { [ 0 ... 7 ] = 0 }; 79static unsigned long kernel_debugregs[8] = { [ 0 ... 7 ] = 0 };
78static int debugregs_seq = 0;
79 80
80void arch_enter_kernel(void *task, int pid) 81void 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 */
95static int debugregs_seq;
96
97/* Only called by the ptrace proxy */
92void ptrace_pokeuser(unsigned long addr, unsigned long data) 98void 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 */
112void update_debugregs(int seq) 119void 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
21static int copy_sc_from_user_skas(struct pt_regs *regs, 21static 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
60int copy_sc_to_user_skas(struct sigcontext *to, struct _fpstate *to_fp, 60int 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 */
116int copy_sc_from_user_tt(struct sigcontext *to, struct sigcontext *from, 116int 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
134int copy_sc_to_user_tt(struct sigcontext *to, struct _fpstate *fp, 135int 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
168static int copy_sc_to_user(struct sigcontext *to, struct _fpstate *fp, 170static 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
176static int copy_ucontext_to_user(struct ucontext *uc, struct _fpstate *fp, 178static 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
189struct sigframe 191struct 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
199struct rt_sigframe 201struct 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:
333long sys_sigreturn(struct pt_regs regs) 335long sys_sigreturn(struct pt_regs regs)
334{ 336{
335 unsigned long sp = PT_REGS_SP(&current->thread.regs); 337 unsigned long sp = PT_REGS_SP(&current->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
366long sys_rt_sigreturn(struct pt_regs regs) 368long sys_rt_sigreturn(struct pt_regs regs)
367{ 369{
368 unsigned long __user sp = PT_REGS_SP(&current->thread.regs); 370 unsigned long sp = PT_REGS_SP(&current->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 */
67long sys_clone(unsigned long clone_flags, unsigned long newsp, 72long 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(&current->thread.regs.regs); 78 newsp = UPT_SP(&current->thread.regs.regs);
79
74 current->thread.forking = 1; 80 current->thread.forking = 1;
75 ret = do_fork(clone_flags, newsp, &current->thread.regs, 0, parent_tid, 81 ret = do_fork(clone_flags, newsp, &current->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. */
28static int host_supports_tls = -1;
29int host_gdt_entry_tls_min = -1;
30
31#ifdef CONFIG_MODE_SKAS
32int 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
43int 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 */
63static 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
77static 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
91static 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 }
120out:
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 */
127static 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 */
148void 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
173int 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
187int 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
198static 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
213int 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);
230out:
231 return ret;
232}
233
234/* XXX: use do_get_thread_area to read the host value? I'm not at all sure! */
235static 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
250out:
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;
260clear:
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
270asmlinkage 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 */
304int 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
318asmlinkage 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
336out:
337 return ret;
338}
339
340/*
341 * Perform get_thread_area on behalf of the traced child.
342 */
343int 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;
358out:
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.*/
365static 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? 7obj-y = bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
8lib-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
11lib-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o
12 10
13obj-y := ksyms.o 11obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o
14obj-$(CONFIG_MODULES) += module.o um_module.o 12obj-$(CONFIG_MODULES) += um_module.o
15 13
16USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o 14subarch-obj-y = lib/bitops.o lib/csum-partial.o lib/memcpy.o lib/thunk.o
15subarch-obj-$(CONFIG_MODULES) += kernel/module.o
17 16
18SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c ldt.c memcpy.S \ 17ldt-y = ../sys-i386/ldt.o
19 thunk.S module.c
20 18
21include arch/um/scripts/Makefile.rules 19USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o
22 20
23bitops.c-dir = lib 21include arch/um/scripts/Makefile.rules
24csum-copy.S-dir = lib
25csum-partial.c-dir = lib
26csum-wrappers.c-dir = lib
27ldt.c-dir = /arch/um/sys-i386
28memcpy.S-dir = lib
29thunk.S-dir = lib
30module.c-dir = kernel
31 22
32$(obj)/stub_segv.o: _c_flags = $(call unprofile,$(CFLAGS)) 23extra-$(CONFIG_MODE_TT) += unmap.o
33 24
34include 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
3void debug_arch_force_load_TLS(void)
4{
5}
6
7void clear_flushed_tls(struct task_struct *task)
8{
9}
10
11int 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)
1137static __init int setup_disableapic(char *str) 1137static __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
1143static __init int setup_nolapic(char *str) 1143static __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
1149static __init int setup_noapictimer(char *str) 1149static __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
1157static __init int setup_apicmaintimer(char *str) 1157static __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
1165static __init int setup_noapicmaintimer(char *str) 1165static __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 = {
501static int __init mcheck_disable(char *str) 501static 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)
121static int __init nopmtimer_setup(char *s) 121static 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)
540static int __init noreplacement_setup(char *s) 540static 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)
353static __init int notscsync_setup(char *s) 353static __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)
1306static int __init nohpet_setup(char *s) 1306static 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);
1314int __init notsc_setup(char *s) 1314int __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)
973static int __init oops_dummy(char *s) 973static 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
980static int __init kstack_setup(char *s) 980static 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);
102EXPORT_SYMBOL(screen_info); 102EXPORT_SYMBOL(screen_info);
103#endif 103#endif
104 104
105EXPORT_SYMBOL(get_wchan);
106
107EXPORT_SYMBOL(rtc_lock); 105EXPORT_SYMBOL(rtc_lock);
108 106
109EXPORT_SYMBOL_GPL(set_nmi_callback); 107EXPORT_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)
623static int __init enable_pagefaulttrace(char *str) 623static 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
116EXPORT_SYMBOL(get_wchan);
117
118EXPORT_SYMBOL(outsb); 116EXPORT_SYMBOL(outsb);
119EXPORT_SYMBOL(outsw); 117EXPORT_SYMBOL(outsw);
120EXPORT_SYMBOL(outsl); 118EXPORT_SYMBOL(outsl);