diff options
Diffstat (limited to 'arch')
119 files changed, 751 insertions, 540 deletions
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig index 5e34ca6d38b6..3e073467caca 100644 --- a/arch/arm/common/Kconfig +++ b/arch/arm/common/Kconfig | |||
@@ -28,6 +28,7 @@ config SHARP_PARAM | |||
28 | 28 | ||
29 | config SHARPSL_PM | 29 | config SHARPSL_PM |
30 | bool | 30 | bool |
31 | select APM_EMULATION | ||
31 | 32 | ||
32 | config SHARP_SCOOP | 33 | config SHARP_SCOOP |
33 | bool | 34 | bool |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 44211a0af19a..ba4a1bb3ee40 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -215,13 +215,14 @@ int gpio_direction_input(unsigned pin) | |||
215 | } | 215 | } |
216 | EXPORT_SYMBOL(gpio_direction_input); | 216 | EXPORT_SYMBOL(gpio_direction_input); |
217 | 217 | ||
218 | int gpio_direction_output(unsigned pin) | 218 | int gpio_direction_output(unsigned pin, int value) |
219 | { | 219 | { |
220 | void __iomem *pio = pin_to_controller(pin); | 220 | void __iomem *pio = pin_to_controller(pin); |
221 | unsigned mask = pin_to_mask(pin); | 221 | unsigned mask = pin_to_mask(pin); |
222 | 222 | ||
223 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) | 223 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) |
224 | return -EINVAL; | 224 | return -EINVAL; |
225 | __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); | ||
225 | __raw_writel(mask, pio + PIO_OER); | 226 | __raw_writel(mask, pio + PIO_OER); |
226 | return 0; | 227 | return 0; |
227 | } | 228 | } |
diff --git a/arch/arm/mach-imx/cpufreq.c b/arch/arm/mach-imx/cpufreq.c index 4f66e90db74f..7e70e0b0b989 100644 --- a/arch/arm/mach-imx/cpufreq.c +++ b/arch/arm/mach-imx/cpufreq.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #define CR_920T_ASYNC_MODE 0xC0000000 | 50 | #define CR_920T_ASYNC_MODE 0xC0000000 |
51 | 51 | ||
52 | static u32 mpctl0_at_boot; | 52 | static u32 mpctl0_at_boot; |
53 | static u32 bclk_div_at_boot; | ||
53 | 54 | ||
54 | static void imx_set_async_mode(void) | 55 | static void imx_set_async_mode(void) |
55 | { | 56 | { |
@@ -82,13 +83,13 @@ static void imx_set_mpctl0(u32 mpctl0) | |||
82 | * imx_compute_mpctl - compute new PLL parameters | 83 | * imx_compute_mpctl - compute new PLL parameters |
83 | * @new_mpctl: pointer to location assigned by new PLL control register value | 84 | * @new_mpctl: pointer to location assigned by new PLL control register value |
84 | * @cur_mpctl: current PLL control register parameters | 85 | * @cur_mpctl: current PLL control register parameters |
86 | * @f_ref: reference source frequency Hz | ||
85 | * @freq: required frequency in Hz | 87 | * @freq: required frequency in Hz |
86 | * @relation: is one of %CPUFREQ_RELATION_L (supremum) | 88 | * @relation: is one of %CPUFREQ_RELATION_L (supremum) |
87 | * and %CPUFREQ_RELATION_H (infimum) | 89 | * and %CPUFREQ_RELATION_H (infimum) |
88 | */ | 90 | */ |
89 | long imx_compute_mpctl(u32 *new_mpctl, u32 cur_mpctl, unsigned long freq, int relation) | 91 | long imx_compute_mpctl(u32 *new_mpctl, u32 cur_mpctl, u32 f_ref, unsigned long freq, int relation) |
90 | { | 92 | { |
91 | u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512); | ||
92 | u32 mfi; | 93 | u32 mfi; |
93 | u32 mfn; | 94 | u32 mfn; |
94 | u32 mfd; | 95 | u32 mfd; |
@@ -182,7 +183,7 @@ static int imx_set_target(struct cpufreq_policy *policy, | |||
182 | unsigned long flags; | 183 | unsigned long flags; |
183 | long freq; | 184 | long freq; |
184 | long sysclk; | 185 | long sysclk; |
185 | unsigned int bclk_div = 1; | 186 | unsigned int bclk_div = bclk_div_at_boot; |
186 | 187 | ||
187 | /* | 188 | /* |
188 | * Some governors do not respects CPU and policy lower limits | 189 | * Some governors do not respects CPU and policy lower limits |
@@ -202,8 +203,8 @@ static int imx_set_target(struct cpufreq_policy *policy, | |||
202 | 203 | ||
203 | sysclk = imx_get_system_clk(); | 204 | sysclk = imx_get_system_clk(); |
204 | 205 | ||
205 | if (freq > sysclk + 1000000) { | 206 | if (freq > sysclk / bclk_div_at_boot + 1000000) { |
206 | freq = imx_compute_mpctl(&mpctl0, mpctl0_at_boot, freq, relation); | 207 | freq = imx_compute_mpctl(&mpctl0, mpctl0_at_boot, CLK32 * 512, freq, relation); |
207 | if (freq < 0) { | 208 | if (freq < 0) { |
208 | printk(KERN_WARNING "imx: target frequency %ld Hz cannot be set\n", freq); | 209 | printk(KERN_WARNING "imx: target frequency %ld Hz cannot be set\n", freq); |
209 | return -EINVAL; | 210 | return -EINVAL; |
@@ -217,6 +218,8 @@ static int imx_set_target(struct cpufreq_policy *policy, | |||
217 | 218 | ||
218 | if(bclk_div > 16) | 219 | if(bclk_div > 16) |
219 | bclk_div = 16; | 220 | bclk_div = 16; |
221 | if(bclk_div < bclk_div_at_boot) | ||
222 | bclk_div = bclk_div_at_boot; | ||
220 | } | 223 | } |
221 | freq = (sysclk + bclk_div / 2) / bclk_div; | 224 | freq = (sysclk + bclk_div / 2) / bclk_div; |
222 | } | 225 | } |
@@ -285,7 +288,7 @@ static struct cpufreq_driver imx_driver = { | |||
285 | 288 | ||
286 | static int __init imx_cpufreq_init(void) | 289 | static int __init imx_cpufreq_init(void) |
287 | { | 290 | { |
288 | 291 | bclk_div_at_boot = __mfld2val(CSCR_BCLK_DIV, CSCR) + 1; | |
289 | mpctl0_at_boot = 0; | 292 | mpctl0_at_boot = 0; |
290 | 293 | ||
291 | if((CSCR & CSCR_MPEN) && | 294 | if((CSCR & CSCR_MPEN) && |
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index b5aa49d00ca3..7a7fa51ec62c 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
@@ -102,7 +102,7 @@ EXPORT_SYMBOL(imx_gpio_mode); | |||
102 | * f = 2 * f_ref * -------------------- | 102 | * f = 2 * f_ref * -------------------- |
103 | * pd + 1 | 103 | * pd + 1 |
104 | */ | 104 | */ |
105 | static unsigned int imx_decode_pll(unsigned int pll) | 105 | static unsigned int imx_decode_pll(unsigned int pll, u32 f_ref) |
106 | { | 106 | { |
107 | unsigned long long ll; | 107 | unsigned long long ll; |
108 | unsigned long quot; | 108 | unsigned long quot; |
@@ -111,7 +111,6 @@ static unsigned int imx_decode_pll(unsigned int pll) | |||
111 | u32 mfn = pll & 0x3ff; | 111 | u32 mfn = pll & 0x3ff; |
112 | u32 mfd = (pll >> 16) & 0x3ff; | 112 | u32 mfd = (pll >> 16) & 0x3ff; |
113 | u32 pd = (pll >> 26) & 0xf; | 113 | u32 pd = (pll >> 26) & 0xf; |
114 | u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512); | ||
115 | 114 | ||
116 | mfi = mfi <= 5 ? 5 : mfi; | 115 | mfi = mfi <= 5 ? 5 : mfi; |
117 | 116 | ||
@@ -124,13 +123,15 @@ static unsigned int imx_decode_pll(unsigned int pll) | |||
124 | 123 | ||
125 | unsigned int imx_get_system_clk(void) | 124 | unsigned int imx_get_system_clk(void) |
126 | { | 125 | { |
127 | return imx_decode_pll(SPCTL0); | 126 | u32 f_ref = (CSCR & CSCR_SYSTEM_SEL) ? 16000000 : (CLK32 * 512); |
127 | |||
128 | return imx_decode_pll(SPCTL0, f_ref); | ||
128 | } | 129 | } |
129 | EXPORT_SYMBOL(imx_get_system_clk); | 130 | EXPORT_SYMBOL(imx_get_system_clk); |
130 | 131 | ||
131 | unsigned int imx_get_mcu_clk(void) | 132 | unsigned int imx_get_mcu_clk(void) |
132 | { | 133 | { |
133 | return imx_decode_pll(MPCTL0); | 134 | return imx_decode_pll(MPCTL0, CLK32 * 512); |
134 | } | 135 | } |
135 | EXPORT_SYMBOL(imx_get_mcu_clk); | 136 | EXPORT_SYMBOL(imx_get_mcu_clk); |
136 | 137 | ||
diff --git a/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c b/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c index a193dd931512..760c9d0db7c3 100644 --- a/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c +++ b/arch/arm/mach-ns9xxx/mach-cc9p9360dev.c | |||
@@ -32,7 +32,7 @@ static void __init mach_cc9p9360dev_init_machine(void) | |||
32 | board_a9m9750dev_init_machine(); | 32 | board_a9m9750dev_init_machine(); |
33 | } | 33 | } |
34 | 34 | ||
35 | MACHINE_START(CC9P9360DEV, "Connect Core 9P 9360 on an A9M9750 Devboard") | 35 | MACHINE_START(CC9P9360DEV, "Digi ConnectCore 9P 9360 on an A9M9750 Devboard") |
36 | .map_io = mach_cc9p9360dev_map_io, | 36 | .map_io = mach_cc9p9360dev_map_io, |
37 | .init_irq = mach_cc9p9360dev_init_irq, | 37 | .init_irq = mach_cc9p9360dev_init_irq, |
38 | .init_machine = mach_cc9p9360dev_init_machine, | 38 | .init_machine = mach_cc9p9360dev_init_machine, |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 6e113078f7ab..ad519390dd58 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/nand.h> | 27 | #include <linux/mtd/nand.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/input.h> | 29 | #include <linux/input.h> |
30 | #include <linux/workqueue.h> | ||
30 | 31 | ||
31 | #include <asm/hardware.h> | 32 | #include <asm/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index 0de201c3d50b..5170481afeab 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <asm/arch/clock.h> | 28 | #include <asm/arch/clock.h> |
29 | #include <asm/arch/sram.h> | 29 | #include <asm/arch/sram.h> |
30 | #include <asm/div64.h> | ||
30 | 31 | ||
31 | #include "prcm-regs.h" | 32 | #include "prcm-regs.h" |
32 | #include "memory.h" | 33 | #include "memory.h" |
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index 8816f5a33a28..162978fd5359 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h | |||
@@ -1013,7 +1013,8 @@ static struct clk dss2_fck = { /* Alt clk used in power management */ | |||
1013 | .name = "dss2_fck", | 1013 | .name = "dss2_fck", |
1014 | .parent = &sys_ck, /* fixed at sys_ck or 48MHz */ | 1014 | .parent = &sys_ck, /* fixed at sys_ck or 48MHz */ |
1015 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | 1015 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | |
1016 | RATE_CKCTL | CM_CORE_SEL1 | RATE_FIXED, | 1016 | RATE_CKCTL | CM_CORE_SEL1 | RATE_FIXED | |
1017 | DELAYED_APP, | ||
1017 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | 1018 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, |
1018 | .enable_bit = 1, | 1019 | .enable_bit = 1, |
1019 | .src_offset = 13, | 1020 | .src_offset = 13, |
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 7915a5a22865..72738771fb57 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/system.h> | 30 | #include <asm/system.h> |
31 | #include <asm/arch/pxa-regs.h> | ||
31 | #include <asm/arch/irda.h> | 32 | #include <asm/arch/irda.h> |
32 | #include <asm/arch/mmc.h> | 33 | #include <asm/arch/mmc.h> |
33 | #include <asm/arch/udc.h> | 34 | #include <asm/arch/udc.h> |
@@ -35,8 +36,6 @@ | |||
35 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
36 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
37 | #include <asm/mach/irq.h> | 38 | #include <asm/mach/irq.h> |
38 | |||
39 | #include <asm/arch/pxa-regs.h> | ||
40 | #include <asm/arch/tosa.h> | 39 | #include <asm/arch/tosa.h> |
41 | 40 | ||
42 | #include <asm/hardware/scoop.h> | 41 | #include <asm/hardware/scoop.h> |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 192a5a26cf2b..9e13c8358ea7 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
28 | #include <asm/mach/flash.h> | 28 | #include <asm/mach/flash.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/gpio.h> | ||
30 | 31 | ||
31 | #include "generic.h" | 32 | #include "generic.h" |
32 | 33 | ||
@@ -153,7 +154,7 @@ int gpio_direction_input(unsigned gpio) | |||
153 | 154 | ||
154 | EXPORT_SYMBOL(gpio_direction_input); | 155 | EXPORT_SYMBOL(gpio_direction_input); |
155 | 156 | ||
156 | int gpio_direction_output(unsigned gpio) | 157 | int gpio_direction_output(unsigned gpio, int value) |
157 | { | 158 | { |
158 | unsigned long flags; | 159 | unsigned long flags; |
159 | 160 | ||
@@ -161,6 +162,7 @@ int gpio_direction_output(unsigned gpio) | |||
161 | return -EINVAL; | 162 | return -EINVAL; |
162 | 163 | ||
163 | local_irq_save(flags); | 164 | local_irq_save(flags); |
165 | gpio_set_value(gpio, value); | ||
164 | GPDR |= GPIO_GPIO(gpio); | 166 | GPDR |= GPIO_GPIO(gpio); |
165 | local_irq_restore(flags); | 167 | local_irq_restore(flags); |
166 | return 0; | 168 | return 0; |
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c index 9ba5654cde11..1eb99b814f5b 100644 --- a/arch/avr32/mach-at32ap/pio.c +++ b/arch/avr32/mach-at32ap/pio.c | |||
@@ -214,7 +214,7 @@ int gpio_direction_input(unsigned int gpio) | |||
214 | } | 214 | } |
215 | EXPORT_SYMBOL(gpio_direction_input); | 215 | EXPORT_SYMBOL(gpio_direction_input); |
216 | 216 | ||
217 | int gpio_direction_output(unsigned int gpio) | 217 | int gpio_direction_output(unsigned int gpio, int value) |
218 | { | 218 | { |
219 | struct pio_device *pio; | 219 | struct pio_device *pio; |
220 | unsigned int pin; | 220 | unsigned int pin; |
@@ -223,6 +223,8 @@ int gpio_direction_output(unsigned int gpio) | |||
223 | if (!pio) | 223 | if (!pio) |
224 | return -ENODEV; | 224 | return -ENODEV; |
225 | 225 | ||
226 | gpio_set_value(gpio, value); | ||
227 | |||
226 | pin = gpio & 0x1f; | 228 | pin = gpio & 0x1f; |
227 | pio_writel(pio, OER, 1 << pin); | 229 | pio_writel(pio, OER, 1 << pin); |
228 | 230 | ||
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 27e8453274e6..53d62373a524 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -220,7 +220,7 @@ config PARAVIRT | |||
220 | 220 | ||
221 | config VMI | 221 | config VMI |
222 | bool "VMI Paravirt-ops support" | 222 | bool "VMI Paravirt-ops support" |
223 | depends on PARAVIRT | 223 | depends on PARAVIRT && !COMPAT_VDSO |
224 | help | 224 | help |
225 | VMI provides a paravirtualized interface to the VMware ESX server | 225 | VMI provides a paravirtualized interface to the VMware ESX server |
226 | (it could be used by other hypervisors in theory too, but is not | 226 | (it could be used by other hypervisors in theory too, but is not |
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index 5ae1e0bc8fd7..f4efd66e1ee5 100644 --- a/arch/i386/defconfig +++ b/arch/i386/defconfig | |||
@@ -1,10 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-git8 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Tue Feb 13 11:25:18 2007 | 4 | # Wed Mar 7 15:29:47 2007 |
5 | # | 5 | # |
6 | CONFIG_X86_32=y | 6 | CONFIG_X86_32=y |
7 | CONFIG_GENERIC_TIME=y | 7 | CONFIG_GENERIC_TIME=y |
8 | CONFIG_CLOCKSOURCE_WATCHDOG=y | ||
9 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y | ||
8 | CONFIG_LOCKDEP_SUPPORT=y | 11 | CONFIG_LOCKDEP_SUPPORT=y |
9 | CONFIG_STACKTRACE_SUPPORT=y | 12 | CONFIG_STACKTRACE_SUPPORT=y |
10 | CONFIG_SEMAPHORE_SLEEPERS=y | 13 | CONFIG_SEMAPHORE_SLEEPERS=y |
@@ -34,6 +37,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
34 | CONFIG_SWAP=y | 37 | CONFIG_SWAP=y |
35 | CONFIG_SYSVIPC=y | 38 | CONFIG_SYSVIPC=y |
36 | # CONFIG_IPC_NS is not set | 39 | # CONFIG_IPC_NS is not set |
40 | CONFIG_SYSVIPC_SYSCTL=y | ||
37 | CONFIG_POSIX_MQUEUE=y | 41 | CONFIG_POSIX_MQUEUE=y |
38 | # CONFIG_BSD_PROCESS_ACCT is not set | 42 | # CONFIG_BSD_PROCESS_ACCT is not set |
39 | # CONFIG_TASKSTATS is not set | 43 | # CONFIG_TASKSTATS is not set |
@@ -44,6 +48,7 @@ CONFIG_IKCONFIG_PROC=y | |||
44 | # CONFIG_CPUSETS is not set | 48 | # CONFIG_CPUSETS is not set |
45 | CONFIG_SYSFS_DEPRECATED=y | 49 | CONFIG_SYSFS_DEPRECATED=y |
46 | # CONFIG_RELAY is not set | 50 | # CONFIG_RELAY is not set |
51 | CONFIG_BLK_DEV_INITRD=y | ||
47 | CONFIG_INITRAMFS_SOURCE="" | 52 | CONFIG_INITRAMFS_SOURCE="" |
48 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 53 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
49 | CONFIG_SYSCTL=y | 54 | CONFIG_SYSCTL=y |
@@ -103,6 +108,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
103 | # | 108 | # |
104 | # Processor type and features | 109 | # Processor type and features |
105 | # | 110 | # |
111 | # CONFIG_TICK_ONESHOT is not set | ||
112 | # CONFIG_NO_HZ is not set | ||
113 | # CONFIG_HIGH_RES_TIMERS is not set | ||
106 | CONFIG_SMP=y | 114 | CONFIG_SMP=y |
107 | # CONFIG_X86_PC is not set | 115 | # CONFIG_X86_PC is not set |
108 | # CONFIG_X86_ELAN is not set | 116 | # CONFIG_X86_ELAN is not set |
@@ -235,10 +243,8 @@ CONFIG_ACPI_PROCFS=y | |||
235 | CONFIG_ACPI_AC=y | 243 | CONFIG_ACPI_AC=y |
236 | CONFIG_ACPI_BATTERY=y | 244 | CONFIG_ACPI_BATTERY=y |
237 | CONFIG_ACPI_BUTTON=y | 245 | CONFIG_ACPI_BUTTON=y |
238 | # CONFIG_ACPI_HOTKEY is not set | ||
239 | CONFIG_ACPI_FAN=y | 246 | CONFIG_ACPI_FAN=y |
240 | # CONFIG_ACPI_DOCK is not set | 247 | # CONFIG_ACPI_DOCK is not set |
241 | # CONFIG_ACPI_BAY is not set | ||
242 | CONFIG_ACPI_PROCESSOR=y | 248 | CONFIG_ACPI_PROCESSOR=y |
243 | CONFIG_ACPI_THERMAL=y | 249 | CONFIG_ACPI_THERMAL=y |
244 | # CONFIG_ACPI_ASUS is not set | 250 | # CONFIG_ACPI_ASUS is not set |
@@ -289,6 +295,7 @@ CONFIG_X86_POWERNOW_K8_ACPI=y | |||
289 | # CONFIG_X86_CPUFREQ_NFORCE2 is not set | 295 | # CONFIG_X86_CPUFREQ_NFORCE2 is not set |
290 | # CONFIG_X86_LONGRUN is not set | 296 | # CONFIG_X86_LONGRUN is not set |
291 | # CONFIG_X86_LONGHAUL is not set | 297 | # CONFIG_X86_LONGHAUL is not set |
298 | # CONFIG_X86_E_POWERSAVER is not set | ||
292 | 299 | ||
293 | # | 300 | # |
294 | # shared options | 301 | # shared options |
@@ -368,7 +375,7 @@ CONFIG_IP_PNP_DHCP=y | |||
368 | # CONFIG_INET_ESP is not set | 375 | # CONFIG_INET_ESP is not set |
369 | # CONFIG_INET_IPCOMP is not set | 376 | # CONFIG_INET_IPCOMP is not set |
370 | # CONFIG_INET_XFRM_TUNNEL is not set | 377 | # CONFIG_INET_XFRM_TUNNEL is not set |
371 | # CONFIG_INET_TUNNEL is not set | 378 | CONFIG_INET_TUNNEL=y |
372 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 379 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
373 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 380 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
374 | # CONFIG_INET_XFRM_MODE_BEET is not set | 381 | # CONFIG_INET_XFRM_MODE_BEET is not set |
@@ -470,7 +477,13 @@ CONFIG_FW_LOADER=y | |||
470 | # | 477 | # |
471 | # Plug and Play support | 478 | # Plug and Play support |
472 | # | 479 | # |
473 | # CONFIG_PNP is not set | 480 | CONFIG_PNP=y |
481 | # CONFIG_PNP_DEBUG is not set | ||
482 | |||
483 | # | ||
484 | # Protocols | ||
485 | # | ||
486 | CONFIG_PNPACPI=y | ||
474 | 487 | ||
475 | # | 488 | # |
476 | # Block devices | 489 | # Block devices |
@@ -490,7 +503,6 @@ CONFIG_BLK_DEV_RAM=y | |||
490 | CONFIG_BLK_DEV_RAM_COUNT=16 | 503 | CONFIG_BLK_DEV_RAM_COUNT=16 |
491 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 504 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
492 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 505 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
493 | CONFIG_BLK_DEV_INITRD=y | ||
494 | # CONFIG_CDROM_PKTCDVD is not set | 506 | # CONFIG_CDROM_PKTCDVD is not set |
495 | # CONFIG_ATA_OVER_ETH is not set | 507 | # CONFIG_ATA_OVER_ETH is not set |
496 | 508 | ||
@@ -500,6 +512,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
500 | # CONFIG_IBM_ASM is not set | 512 | # CONFIG_IBM_ASM is not set |
501 | # CONFIG_SGI_IOC4 is not set | 513 | # CONFIG_SGI_IOC4 is not set |
502 | # CONFIG_TIFM_CORE is not set | 514 | # CONFIG_TIFM_CORE is not set |
515 | # CONFIG_SONY_LAPTOP is not set | ||
503 | 516 | ||
504 | # | 517 | # |
505 | # ATA/ATAPI/MFM/RLL support | 518 | # ATA/ATAPI/MFM/RLL support |
@@ -526,6 +539,7 @@ CONFIG_BLK_DEV_IDEACPI=y | |||
526 | # | 539 | # |
527 | CONFIG_IDE_GENERIC=y | 540 | CONFIG_IDE_GENERIC=y |
528 | # CONFIG_BLK_DEV_CMD640 is not set | 541 | # CONFIG_BLK_DEV_CMD640 is not set |
542 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
529 | CONFIG_BLK_DEV_IDEPCI=y | 543 | CONFIG_BLK_DEV_IDEPCI=y |
530 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 544 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
531 | # CONFIG_BLK_DEV_OFFBOARD is not set | 545 | # CONFIG_BLK_DEV_OFFBOARD is not set |
@@ -679,6 +693,7 @@ CONFIG_SATA_VIA=y | |||
679 | # CONFIG_SATA_VITESSE is not set | 693 | # CONFIG_SATA_VITESSE is not set |
680 | # CONFIG_SATA_INIC162X is not set | 694 | # CONFIG_SATA_INIC162X is not set |
681 | CONFIG_SATA_INTEL_COMBINED=y | 695 | CONFIG_SATA_INTEL_COMBINED=y |
696 | CONFIG_SATA_ACPI=y | ||
682 | # CONFIG_PATA_ALI is not set | 697 | # CONFIG_PATA_ALI is not set |
683 | # CONFIG_PATA_AMD is not set | 698 | # CONFIG_PATA_AMD is not set |
684 | # CONFIG_PATA_ARTOP is not set | 699 | # CONFIG_PATA_ARTOP is not set |
@@ -786,6 +801,7 @@ CONFIG_NETDEVICES=y | |||
786 | # CONFIG_BONDING is not set | 801 | # CONFIG_BONDING is not set |
787 | # CONFIG_EQUALIZER is not set | 802 | # CONFIG_EQUALIZER is not set |
788 | # CONFIG_TUN is not set | 803 | # CONFIG_TUN is not set |
804 | # CONFIG_NET_SB1000 is not set | ||
789 | 805 | ||
790 | # | 806 | # |
791 | # ARCnet devices | 807 | # ARCnet devices |
@@ -979,6 +995,7 @@ CONFIG_HW_CONSOLE=y | |||
979 | CONFIG_SERIAL_8250=y | 995 | CONFIG_SERIAL_8250=y |
980 | CONFIG_SERIAL_8250_CONSOLE=y | 996 | CONFIG_SERIAL_8250_CONSOLE=y |
981 | CONFIG_SERIAL_8250_PCI=y | 997 | CONFIG_SERIAL_8250_PCI=y |
998 | CONFIG_SERIAL_8250_PNP=y | ||
982 | CONFIG_SERIAL_8250_NR_UARTS=4 | 999 | CONFIG_SERIAL_8250_NR_UARTS=4 |
983 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 1000 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
984 | # CONFIG_SERIAL_8250_EXTENDED is not set | 1001 | # CONFIG_SERIAL_8250_EXTENDED is not set |
@@ -1065,6 +1082,11 @@ CONFIG_HANGCHECK_TIMER=y | |||
1065 | # CONFIG_HWMON_VID is not set | 1082 | # CONFIG_HWMON_VID is not set |
1066 | 1083 | ||
1067 | # | 1084 | # |
1085 | # Multifunction device drivers | ||
1086 | # | ||
1087 | # CONFIG_MFD_SM501 is not set | ||
1088 | |||
1089 | # | ||
1068 | # Multimedia devices | 1090 | # Multimedia devices |
1069 | # | 1091 | # |
1070 | # CONFIG_VIDEO_DEV is not set | 1092 | # CONFIG_VIDEO_DEV is not set |
@@ -1078,7 +1100,7 @@ CONFIG_HANGCHECK_TIMER=y | |||
1078 | # | 1100 | # |
1079 | # Graphics support | 1101 | # Graphics support |
1080 | # | 1102 | # |
1081 | CONFIG_FIRMWARE_EDID=y | 1103 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
1082 | # CONFIG_FB is not set | 1104 | # CONFIG_FB is not set |
1083 | 1105 | ||
1084 | # | 1106 | # |
@@ -1089,7 +1111,6 @@ CONFIG_VGACON_SOFT_SCROLLBACK=y | |||
1089 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128 | 1111 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=128 |
1090 | CONFIG_VIDEO_SELECT=y | 1112 | CONFIG_VIDEO_SELECT=y |
1091 | CONFIG_DUMMY_CONSOLE=y | 1113 | CONFIG_DUMMY_CONSOLE=y |
1092 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1093 | 1114 | ||
1094 | # | 1115 | # |
1095 | # Sound | 1116 | # Sound |
@@ -1238,6 +1259,7 @@ CONFIG_USB_MON=y | |||
1238 | # CONFIG_USB_RIO500 is not set | 1259 | # CONFIG_USB_RIO500 is not set |
1239 | # CONFIG_USB_LEGOTOWER is not set | 1260 | # CONFIG_USB_LEGOTOWER is not set |
1240 | # CONFIG_USB_LCD is not set | 1261 | # CONFIG_USB_LCD is not set |
1262 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1241 | # CONFIG_USB_LED is not set | 1263 | # CONFIG_USB_LED is not set |
1242 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1264 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1243 | # CONFIG_USB_CYTHERM is not set | 1265 | # CONFIG_USB_CYTHERM is not set |
@@ -1248,6 +1270,7 @@ CONFIG_USB_MON=y | |||
1248 | # CONFIG_USB_SISUSBVGA is not set | 1270 | # CONFIG_USB_SISUSBVGA is not set |
1249 | # CONFIG_USB_LD is not set | 1271 | # CONFIG_USB_LD is not set |
1250 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1272 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1273 | # CONFIG_USB_IOWARRIOR is not set | ||
1251 | # CONFIG_USB_TEST is not set | 1274 | # CONFIG_USB_TEST is not set |
1252 | 1275 | ||
1253 | # | 1276 | # |
@@ -1506,6 +1529,7 @@ CONFIG_DEBUG_KERNEL=y | |||
1506 | CONFIG_LOG_BUF_SHIFT=18 | 1529 | CONFIG_LOG_BUF_SHIFT=18 |
1507 | CONFIG_DETECT_SOFTLOCKUP=y | 1530 | CONFIG_DETECT_SOFTLOCKUP=y |
1508 | # CONFIG_SCHEDSTATS is not set | 1531 | # CONFIG_SCHEDSTATS is not set |
1532 | # CONFIG_TIMER_STATS is not set | ||
1509 | # CONFIG_DEBUG_SLAB is not set | 1533 | # CONFIG_DEBUG_SLAB is not set |
1510 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1534 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1511 | # CONFIG_RT_MUTEX_TESTER is not set | 1535 | # CONFIG_RT_MUTEX_TESTER is not set |
@@ -1525,6 +1549,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1525 | # CONFIG_FORCED_INLINING is not set | 1549 | # CONFIG_FORCED_INLINING is not set |
1526 | # CONFIG_RCU_TORTURE_TEST is not set | 1550 | # CONFIG_RCU_TORTURE_TEST is not set |
1527 | # CONFIG_LKDTM is not set | 1551 | # CONFIG_LKDTM is not set |
1552 | # CONFIG_FAULT_INJECTION is not set | ||
1528 | CONFIG_EARLY_PRINTK=y | 1553 | CONFIG_EARLY_PRINTK=y |
1529 | CONFIG_DEBUG_STACKOVERFLOW=y | 1554 | CONFIG_DEBUG_STACKOVERFLOW=y |
1530 | # CONFIG_DEBUG_STACK_USAGE is not set | 1555 | # CONFIG_DEBUG_STACK_USAGE is not set |
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 2383bcf18c5d..5cff7970911e 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -338,6 +338,7 @@ void __init setup_boot_APIC_clock(void) | |||
338 | void (*real_handler)(struct clock_event_device *dev); | 338 | void (*real_handler)(struct clock_event_device *dev); |
339 | unsigned long deltaj; | 339 | unsigned long deltaj; |
340 | long delta, deltapm; | 340 | long delta, deltapm; |
341 | int pm_referenced = 0; | ||
341 | 342 | ||
342 | apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n" | 343 | apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n" |
343 | "calibrating APIC timer ...\n"); | 344 | "calibrating APIC timer ...\n"); |
@@ -357,7 +358,8 @@ void __init setup_boot_APIC_clock(void) | |||
357 | /* Let the interrupts run */ | 358 | /* Let the interrupts run */ |
358 | local_irq_enable(); | 359 | local_irq_enable(); |
359 | 360 | ||
360 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS); | 361 | while (lapic_cal_loops <= LAPIC_CAL_LOOPS) |
362 | cpu_relax(); | ||
361 | 363 | ||
362 | local_irq_disable(); | 364 | local_irq_disable(); |
363 | 365 | ||
@@ -394,6 +396,7 @@ void __init setup_boot_APIC_clock(void) | |||
394 | "%lu (%ld)\n", (unsigned long) res, delta); | 396 | "%lu (%ld)\n", (unsigned long) res, delta); |
395 | delta = (long) res; | 397 | delta = (long) res; |
396 | } | 398 | } |
399 | pm_referenced = 1; | ||
397 | } | 400 | } |
398 | 401 | ||
399 | /* Calculate the scaled math multiplication factor */ | 402 | /* Calculate the scaled math multiplication factor */ |
@@ -423,68 +426,41 @@ void __init setup_boot_APIC_clock(void) | |||
423 | calibration_result / (1000000 / HZ), | 426 | calibration_result / (1000000 / HZ), |
424 | calibration_result % (1000000 / HZ)); | 427 | calibration_result % (1000000 / HZ)); |
425 | 428 | ||
426 | |||
427 | apic_printk(APIC_VERBOSE, "... verify APIC timer\n"); | ||
428 | |||
429 | /* | ||
430 | * Setup the apic timer manually | ||
431 | */ | ||
432 | local_apic_timer_verify_ok = 1; | 429 | local_apic_timer_verify_ok = 1; |
433 | levt->event_handler = lapic_cal_handler; | ||
434 | lapic_timer_setup(CLOCK_EVT_MODE_PERIODIC, levt); | ||
435 | lapic_cal_loops = -1; | ||
436 | 430 | ||
437 | /* Let the interrupts run */ | 431 | /* We trust the pm timer based calibration */ |
438 | local_irq_enable(); | 432 | if (!pm_referenced) { |
433 | apic_printk(APIC_VERBOSE, "... verify APIC timer\n"); | ||
439 | 434 | ||
440 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS); | 435 | /* |
436 | * Setup the apic timer manually | ||
437 | */ | ||
438 | levt->event_handler = lapic_cal_handler; | ||
439 | lapic_timer_setup(CLOCK_EVT_MODE_PERIODIC, levt); | ||
440 | lapic_cal_loops = -1; | ||
441 | 441 | ||
442 | local_irq_disable(); | 442 | /* Let the interrupts run */ |
443 | local_irq_enable(); | ||
443 | 444 | ||
444 | /* Stop the lapic timer */ | 445 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS) |
445 | lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt); | 446 | cpu_relax(); |
446 | 447 | ||
447 | local_irq_enable(); | 448 | local_irq_disable(); |
448 | 449 | ||
449 | /* Jiffies delta */ | 450 | /* Stop the lapic timer */ |
450 | deltaj = lapic_cal_j2 - lapic_cal_j1; | 451 | lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt); |
451 | apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj); | ||
452 | 452 | ||
453 | /* Check, if the PM timer is available */ | 453 | local_irq_enable(); |
454 | deltapm = lapic_cal_pm2 - lapic_cal_pm1; | ||
455 | apic_printk(APIC_VERBOSE, "... PM timer delta = %ld\n", deltapm); | ||
456 | 454 | ||
457 | local_apic_timer_verify_ok = 0; | 455 | /* Jiffies delta */ |
456 | deltaj = lapic_cal_j2 - lapic_cal_j1; | ||
457 | apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj); | ||
458 | 458 | ||
459 | if (deltapm) { | ||
460 | if (deltapm > (pm_100ms - pm_thresh) && | ||
461 | deltapm < (pm_100ms + pm_thresh)) { | ||
462 | apic_printk(APIC_VERBOSE, "... PM timer result ok\n"); | ||
463 | /* Check, if the jiffies result is consistent */ | ||
464 | if (deltaj < LAPIC_CAL_LOOPS-2 || | ||
465 | deltaj > LAPIC_CAL_LOOPS+2) { | ||
466 | /* | ||
467 | * Not sure, what we can do about this one. | ||
468 | * When high resultion timers are active | ||
469 | * and the lapic timer does not stop in C3 | ||
470 | * we are fine. Otherwise more trouble might | ||
471 | * be waiting. -- tglx | ||
472 | */ | ||
473 | printk(KERN_WARNING "Global event device %s " | ||
474 | "has wrong frequency " | ||
475 | "(%lu ticks instead of %d)\n", | ||
476 | global_clock_event->name, deltaj, | ||
477 | LAPIC_CAL_LOOPS); | ||
478 | } | ||
479 | local_apic_timer_verify_ok = 1; | ||
480 | } | ||
481 | } else { | ||
482 | /* Check, if the jiffies result is consistent */ | 459 | /* Check, if the jiffies result is consistent */ |
483 | if (deltaj >= LAPIC_CAL_LOOPS-2 && | 460 | if (deltaj >= LAPIC_CAL_LOOPS-2 && deltaj <= LAPIC_CAL_LOOPS+2) |
484 | deltaj <= LAPIC_CAL_LOOPS+2) { | ||
485 | apic_printk(APIC_VERBOSE, "... jiffies result ok\n"); | 461 | apic_printk(APIC_VERBOSE, "... jiffies result ok\n"); |
486 | local_apic_timer_verify_ok = 1; | 462 | else |
487 | } | 463 | local_apic_timer_verify_ok = 0; |
488 | } | 464 | } |
489 | 465 | ||
490 | if (!local_apic_timer_verify_ok) { | 466 | if (!local_apic_timer_verify_ok) { |
diff --git a/arch/i386/kernel/i386_ksyms.c b/arch/i386/kernel/i386_ksyms.c index e3d4b73bfdb0..4afe26e86260 100644 --- a/arch/i386/kernel/i386_ksyms.c +++ b/arch/i386/kernel/i386_ksyms.c | |||
@@ -28,3 +28,5 @@ EXPORT_SYMBOL(__read_lock_failed); | |||
28 | #endif | 28 | #endif |
29 | 29 | ||
30 | EXPORT_SYMBOL(csum_partial); | 30 | EXPORT_SYMBOL(csum_partial); |
31 | |||
32 | EXPORT_SYMBOL(_proxy_pda); | ||
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index 821df34d2b3a..14702427b104 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c | |||
@@ -245,14 +245,6 @@ static int __init check_nmi_watchdog(void) | |||
245 | unsigned int *prev_nmi_count; | 245 | unsigned int *prev_nmi_count; |
246 | int cpu; | 246 | int cpu; |
247 | 247 | ||
248 | /* Enable NMI watchdog for newer systems. | ||
249 | Probably safe on most older systems too, but let's be careful. | ||
250 | IBM ThinkPads use INT10 inside SMM and that allows early NMI inside SMM | ||
251 | which hangs the system. Disable watchdog for all thinkpads */ | ||
252 | if (nmi_watchdog == NMI_DEFAULT && dmi_get_year(DMI_BIOS_DATE) >= 2004 && | ||
253 | !dmi_name_in_vendors("ThinkPad")) | ||
254 | nmi_watchdog = NMI_LOCAL_APIC; | ||
255 | |||
256 | if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DEFAULT)) | 248 | if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DEFAULT)) |
257 | return 0; | 249 | return 0; |
258 | 250 | ||
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index 602660df455c..0e65f7ab63a2 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c | |||
@@ -105,7 +105,7 @@ unsigned long long sched_clock(void) | |||
105 | /* | 105 | /* |
106 | * Fall back to jiffies if there's no TSC available: | 106 | * Fall back to jiffies if there's no TSC available: |
107 | */ | 107 | */ |
108 | if (unlikely(tsc_disable)) | 108 | if (tsc_unstable || unlikely(tsc_disable)) |
109 | /* No locking but a rare wrong value is not a big deal: */ | 109 | /* No locking but a rare wrong value is not a big deal: */ |
110 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); | 110 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); |
111 | 111 | ||
diff --git a/arch/i386/kernel/vmi.c b/arch/i386/kernel/vmi.c index fbf45fa08320..fb07a1aad225 100644 --- a/arch/i386/kernel/vmi.c +++ b/arch/i386/kernel/vmi.c | |||
@@ -23,7 +23,6 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/license.h> | ||
27 | #include <linux/cpu.h> | 26 | #include <linux/cpu.h> |
28 | #include <linux/bootmem.h> | 27 | #include <linux/bootmem.h> |
29 | #include <linux/mm.h> | 28 | #include <linux/mm.h> |
@@ -48,7 +47,6 @@ typedef u64 __attribute__((regparm(2))) (VROMLONGFUNC)(int); | |||
48 | (((VROMLONGFUNC *)(rom->func)) (arg)) | 47 | (((VROMLONGFUNC *)(rom->func)) (arg)) |
49 | 48 | ||
50 | static struct vrom_header *vmi_rom; | 49 | static struct vrom_header *vmi_rom; |
51 | static int license_gplok; | ||
52 | static int disable_pge; | 50 | static int disable_pge; |
53 | static int disable_pse; | 51 | static int disable_pse; |
54 | static int disable_sep; | 52 | static int disable_sep; |
@@ -629,13 +627,14 @@ static inline int __init check_vmi_rom(struct vrom_header *rom) | |||
629 | rom->api_version_maj, rom->api_version_min, | 627 | rom->api_version_maj, rom->api_version_min, |
630 | pci->rom_version_maj, pci->rom_version_min); | 628 | pci->rom_version_maj, pci->rom_version_min); |
631 | 629 | ||
632 | license_gplok = license_is_gpl_compatible(license); | 630 | /* Don't allow BSD/MIT here for now because we don't want to end up |
633 | if (!license_gplok) { | 631 | with any binary only shim layers */ |
634 | printk(KERN_WARNING "VMI: ROM license '%s' taints kernel... " | 632 | if (strcmp(license, "GPL") && strcmp(license, "GPL v2")) { |
635 | "inlining disabled\n", | 633 | printk(KERN_WARNING "VMI: Non GPL license `%s' found for ROM. Not used.\n", |
636 | license); | 634 | license); |
637 | add_taint(TAINT_PROPRIETARY_MODULE); | 635 | return 0; |
638 | } | 636 | } |
637 | |||
639 | return 1; | 638 | return 1; |
640 | } | 639 | } |
641 | 640 | ||
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index 600be3ebae05..6b10e5d28488 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c | |||
@@ -247,10 +247,18 @@ sn_io_slot_fixup(struct pci_dev *dev) | |||
247 | addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET; | 247 | addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET; |
248 | dev->resource[idx].start = addr; | 248 | dev->resource[idx].start = addr; |
249 | dev->resource[idx].end = addr + size; | 249 | dev->resource[idx].end = addr + size; |
250 | |||
251 | /* | ||
252 | * if it's already in the device structure, remove it before | ||
253 | * inserting | ||
254 | */ | ||
255 | if (dev->resource[idx].parent && dev->resource[idx].parent->child) | ||
256 | release_resource(&dev->resource[idx]); | ||
257 | |||
250 | if (dev->resource[idx].flags & IORESOURCE_IO) | 258 | if (dev->resource[idx].flags & IORESOURCE_IO) |
251 | dev->resource[idx].parent = &ioport_resource; | 259 | insert_resource(&ioport_resource, &dev->resource[idx]); |
252 | else | 260 | else |
253 | dev->resource[idx].parent = &iomem_resource; | 261 | insert_resource(&iomem_resource, &dev->resource[idx]); |
254 | /* If ROM, mark as shadowed in PROM */ | 262 | /* If ROM, mark as shadowed in PROM */ |
255 | if (idx == PCI_ROM_RESOURCE) | 263 | if (idx == PCI_ROM_RESOURCE) |
256 | dev->resource[idx].flags |= IORESOURCE_ROM_BIOS_COPY; | 264 | dev->resource[idx].flags |= IORESOURCE_ROM_BIOS_COPY; |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index a1cd84f9b3bc..5f29018a6533 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -250,7 +250,7 @@ config LASAT | |||
250 | select R5000_CPU_SCACHE | 250 | select R5000_CPU_SCACHE |
251 | select SYS_HAS_CPU_R5000 | 251 | select SYS_HAS_CPU_R5000 |
252 | select SYS_SUPPORTS_32BIT_KERNEL | 252 | select SYS_SUPPORTS_32BIT_KERNEL |
253 | select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL | 253 | select SYS_SUPPORTS_64BIT_KERNEL if BROKEN |
254 | select SYS_SUPPORTS_LITTLE_ENDIAN | 254 | select SYS_SUPPORTS_LITTLE_ENDIAN |
255 | select GENERIC_HARDIRQS_NO__DO_IRQ | 255 | select GENERIC_HARDIRQS_NO__DO_IRQ |
256 | 256 | ||
@@ -470,11 +470,6 @@ config MIPS_XXS1500 | |||
470 | select SOC_AU1500 | 470 | select SOC_AU1500 |
471 | select SYS_SUPPORTS_LITTLE_ENDIAN | 471 | select SYS_SUPPORTS_LITTLE_ENDIAN |
472 | 472 | ||
473 | config PNX8550_V2PCI | ||
474 | bool "Philips PNX8550 based Viper2-PCI board" | ||
475 | select PNX8550 | ||
476 | select SYS_SUPPORTS_LITTLE_ENDIAN | ||
477 | |||
478 | config PNX8550_JBS | 473 | config PNX8550_JBS |
479 | bool "Philips PNX8550 based JBS board" | 474 | bool "Philips PNX8550 based JBS board" |
480 | select PNX8550 | 475 | select PNX8550 |
@@ -1564,6 +1559,7 @@ config MIPS_MT_SMP | |||
1564 | select CPU_MIPSR2_IRQ_VI | 1559 | select CPU_MIPSR2_IRQ_VI |
1565 | select CPU_MIPSR2_SRS | 1560 | select CPU_MIPSR2_SRS |
1566 | select MIPS_MT | 1561 | select MIPS_MT |
1562 | select NR_CPUS_DEFAULT_2 | ||
1567 | select SMP | 1563 | select SMP |
1568 | select SYS_SUPPORTS_SMP | 1564 | select SYS_SUPPORTS_SMP |
1569 | help | 1565 | help |
@@ -1578,7 +1574,6 @@ config MIPS_MT_SMTC | |||
1578 | select CPU_MIPSR2_IRQ_VI | 1574 | select CPU_MIPSR2_IRQ_VI |
1579 | select CPU_MIPSR2_SRS | 1575 | select CPU_MIPSR2_SRS |
1580 | select MIPS_MT | 1576 | select MIPS_MT |
1581 | select NR_CPUS_DEFAULT_2 | ||
1582 | select NR_CPUS_DEFAULT_8 | 1577 | select NR_CPUS_DEFAULT_8 |
1583 | select SMP | 1578 | select SMP |
1584 | select SYS_SUPPORTS_SMP | 1579 | select SYS_SUPPORTS_SMP |
diff --git a/arch/mips/configs/atlas_defconfig b/arch/mips/configs/atlas_defconfig index 458894933a4c..39e251300c64 100644 --- a/arch/mips/configs/atlas_defconfig +++ b/arch/mips/configs/atlas_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_ATLAS=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig index aa05e294ea62..4713a13211ce 100644 --- a/arch/mips/configs/bigsur_defconfig +++ b/arch/mips/configs/bigsur_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/capcella_defconfig b/arch/mips/configs/capcella_defconfig index b2594fa556f3..5e7ae56b1f3c 100644 --- a/arch/mips/configs/capcella_defconfig +++ b/arch/mips/configs/capcella_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/cobalt_defconfig b/arch/mips/configs/cobalt_defconfig index 9090a7aba6c1..ba593b510b76 100644 --- a/arch/mips/configs/cobalt_defconfig +++ b/arch/mips/configs/cobalt_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_COBALT=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/db1000_defconfig b/arch/mips/configs/db1000_defconfig index 4cb8cf4255a2..0db6a8b37301 100644 --- a/arch/mips/configs/db1000_defconfig +++ b/arch/mips/configs/db1000_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_DB1000=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/db1100_defconfig b/arch/mips/configs/db1100_defconfig index d86dedf27fc4..162add97c5ef 100644 --- a/arch/mips/configs/db1100_defconfig +++ b/arch/mips/configs/db1100_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_DB1100=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/db1200_defconfig b/arch/mips/configs/db1200_defconfig index c24b6008345e..82801ec43e6a 100644 --- a/arch/mips/configs/db1200_defconfig +++ b/arch/mips/configs/db1200_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_DB1200=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/db1500_defconfig b/arch/mips/configs/db1500_defconfig index baad2c5223ba..545f23094e13 100644 --- a/arch/mips/configs/db1500_defconfig +++ b/arch/mips/configs/db1500_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_DB1500=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/db1550_defconfig b/arch/mips/configs/db1550_defconfig index c29fdab0423a..5bd3b4328e57 100644 --- a/arch/mips/configs/db1550_defconfig +++ b/arch/mips/configs/db1550_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_DB1550=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ddb5477_defconfig b/arch/mips/configs/ddb5477_defconfig index f4b316d2cd70..5b502a2013fb 100644 --- a/arch/mips/configs/ddb5477_defconfig +++ b/arch/mips/configs/ddb5477_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | CONFIG_DDB5477=y | 44 | CONFIG_DDB5477=y |
diff --git a/arch/mips/configs/decstation_defconfig b/arch/mips/configs/decstation_defconfig index 9c38e5c77761..4bbdab078ff1 100644 --- a/arch/mips/configs/decstation_defconfig +++ b/arch/mips/configs/decstation_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MACH_DECSTATION=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/e55_defconfig b/arch/mips/configs/e55_defconfig index 922af379aa41..b5714a6a5398 100644 --- a/arch/mips/configs/e55_defconfig +++ b/arch/mips/configs/e55_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/emma2rh_defconfig b/arch/mips/configs/emma2rh_defconfig index c0db8f14713d..3044579f171a 100644 --- a/arch/mips/configs/emma2rh_defconfig +++ b/arch/mips/configs/emma2rh_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ev64120_defconfig b/arch/mips/configs/ev64120_defconfig index ce088b36291d..c10e4e063226 100644 --- a/arch/mips/configs/ev64120_defconfig +++ b/arch/mips/configs/ev64120_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_EV64120=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/excite_defconfig b/arch/mips/configs/excite_defconfig index 82f204d080b7..460d7a26a8ba 100644 --- a/arch/mips/configs/excite_defconfig +++ b/arch/mips/configs/excite_defconfig | |||
@@ -40,7 +40,6 @@ CONFIG_BASLER_EXCITE=y | |||
40 | # CONFIG_MOMENCO_OCELOT_C is not set | 40 | # CONFIG_MOMENCO_OCELOT_C is not set |
41 | # CONFIG_MOMENCO_OCELOT_G is not set | 41 | # CONFIG_MOMENCO_OCELOT_G is not set |
42 | # CONFIG_MIPS_XXS1500 is not set | 42 | # CONFIG_MIPS_XXS1500 is not set |
43 | # CONFIG_PNX8550_V2PCI is not set | ||
44 | # CONFIG_PNX8550_JBS is not set | 43 | # CONFIG_PNX8550_JBS is not set |
45 | # CONFIG_PNX8550_STB810 is not set | 44 | # CONFIG_PNX8550_STB810 is not set |
46 | # CONFIG_DDB5477 is not set | 45 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ip22_defconfig b/arch/mips/configs/ip22_defconfig index cb81f13bd45a..7ec618f3c8b9 100644 --- a/arch/mips/configs/ip22_defconfig +++ b/arch/mips/configs/ip22_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig index 46f6ac4083b9..9ddc3eff4793 100644 --- a/arch/mips/configs/ip27_defconfig +++ b/arch/mips/configs/ip27_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defconfig index d9e5000d5329..8fc18809d5ff 100644 --- a/arch/mips/configs/ip32_defconfig +++ b/arch/mips/configs/ip32_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/jaguar-atx_defconfig b/arch/mips/configs/jaguar-atx_defconfig index 57ef0c45a62b..083104daa2ca 100644 --- a/arch/mips/configs/jaguar-atx_defconfig +++ b/arch/mips/configs/jaguar-atx_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MOMENCO_JAGUAR_ATX=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/jazz_defconfig b/arch/mips/configs/jazz_defconfig index 21d979f8326c..9331cb0a19b1 100644 --- a/arch/mips/configs/jazz_defconfig +++ b/arch/mips/configs/jazz_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MACH_JAZZ=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/jmr3927_defconfig b/arch/mips/configs/jmr3927_defconfig index 98b9fbc042f4..21a094752dab 100644 --- a/arch/mips/configs/jmr3927_defconfig +++ b/arch/mips/configs/jmr3927_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/lasat200_defconfig b/arch/mips/configs/lasat200_defconfig index b3f767ff1c5a..fd4272c1458a 100644 --- a/arch/mips/configs/lasat200_defconfig +++ b/arch/mips/configs/lasat200_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_LASAT=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig index a5f379d626d6..1f64d7632a03 100644 --- a/arch/mips/configs/malta_defconfig +++ b/arch/mips/configs/malta_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_MALTA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/mipssim_defconfig b/arch/mips/configs/mipssim_defconfig index 5ff53e184912..a2db5c201216 100644 --- a/arch/mips/configs/mipssim_defconfig +++ b/arch/mips/configs/mipssim_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_SIM=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/mpc30x_defconfig b/arch/mips/configs/mpc30x_defconfig index 750e6445c613..ad5c0bf87b2b 100644 --- a/arch/mips/configs/mpc30x_defconfig +++ b/arch/mips/configs/mpc30x_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ocelot_3_defconfig b/arch/mips/configs/ocelot_3_defconfig index 2febd0a7fba2..28547313ce13 100644 --- a/arch/mips/configs/ocelot_3_defconfig +++ b/arch/mips/configs/ocelot_3_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MOMENCO_OCELOT_3=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ocelot_c_defconfig b/arch/mips/configs/ocelot_c_defconfig index b8f457300bbf..82ff6fc0cd41 100644 --- a/arch/mips/configs/ocelot_c_defconfig +++ b/arch/mips/configs/ocelot_c_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | CONFIG_MOMENCO_OCELOT_C=y | 39 | CONFIG_MOMENCO_OCELOT_C=y |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ocelot_defconfig b/arch/mips/configs/ocelot_defconfig index 8ade072271cd..15a027e00eec 100644 --- a/arch/mips/configs/ocelot_defconfig +++ b/arch/mips/configs/ocelot_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MOMENCO_OCELOT=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/ocelot_g_defconfig b/arch/mips/configs/ocelot_g_defconfig index d20a2216c11d..7078e6b3ea11 100644 --- a/arch/mips/configs/ocelot_g_defconfig +++ b/arch/mips/configs/ocelot_g_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | CONFIG_MOMENCO_OCELOT_G=y | 40 | CONFIG_MOMENCO_OCELOT_G=y |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pb1100_defconfig b/arch/mips/configs/pb1100_defconfig index 33fcc8133bc0..69678d99ae61 100644 --- a/arch/mips/configs/pb1100_defconfig +++ b/arch/mips/configs/pb1100_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_PB1100=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pb1500_defconfig b/arch/mips/configs/pb1500_defconfig index e07c55dc8dc1..070672799dac 100644 --- a/arch/mips/configs/pb1500_defconfig +++ b/arch/mips/configs/pb1500_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_PB1500=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pb1550_defconfig b/arch/mips/configs/pb1550_defconfig index df210dd22476..354e49b7a5f1 100644 --- a/arch/mips/configs/pb1550_defconfig +++ b/arch/mips/configs/pb1550_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_PB1550=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pnx8550-jbs_defconfig b/arch/mips/configs/pnx8550-jbs_defconfig index 106a1641c0b5..fae16c5ec521 100644 --- a/arch/mips/configs/pnx8550-jbs_defconfig +++ b/arch/mips/configs/pnx8550-jbs_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | CONFIG_PNX8550_JBS=y | 42 | CONFIG_PNX8550_JBS=y |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pnx8550-stb810_defconfig b/arch/mips/configs/pnx8550-stb810_defconfig index 8caa2cd1aa7c..cd821e52181d 100644 --- a/arch/mips/configs/pnx8550-stb810_defconfig +++ b/arch/mips/configs/pnx8550-stb810_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | CONFIG_PNX8550_STB810=y | 43 | CONFIG_PNX8550_STB810=y |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/pnx8550-v2pci_defconfig b/arch/mips/configs/pnx8550-v2pci_defconfig index 43f1becec2a4..3d6c2d743502 100644 --- a/arch/mips/configs/pnx8550-v2pci_defconfig +++ b/arch/mips/configs/pnx8550-v2pci_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | CONFIG_PNX8550_V2PCI=y | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/qemu_defconfig b/arch/mips/configs/qemu_defconfig index f68396d19f9a..8e8d03157954 100644 --- a/arch/mips/configs/qemu_defconfig +++ b/arch/mips/configs/qemu_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/rbhma4500_defconfig b/arch/mips/configs/rbhma4500_defconfig index a6a824fcc874..29e0df9f4be0 100644 --- a/arch/mips/configs/rbhma4500_defconfig +++ b/arch/mips/configs/rbhma4500_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/rm200_defconfig b/arch/mips/configs/rm200_defconfig index bee3702d501d..5593cde9f74c 100644 --- a/arch/mips/configs/rm200_defconfig +++ b/arch/mips/configs/rm200_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig index 3c891ed10141..6c4f09a381e2 100644 --- a/arch/mips/configs/sb1250-swarm_defconfig +++ b/arch/mips/configs/sb1250-swarm_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/sead_defconfig b/arch/mips/configs/sead_defconfig index e31d964a053b..988b9cdef01f 100644 --- a/arch/mips/configs/sead_defconfig +++ b/arch/mips/configs/sead_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_MIPS_SEAD=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/tb0226_defconfig b/arch/mips/configs/tb0226_defconfig index 5771c1aee76a..b5be8b74d896 100644 --- a/arch/mips/configs/tb0226_defconfig +++ b/arch/mips/configs/tb0226_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/tb0229_defconfig b/arch/mips/configs/tb0229_defconfig index a8eb4b182d34..1756d2bdf6b8 100644 --- a/arch/mips/configs/tb0229_defconfig +++ b/arch/mips/configs/tb0229_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/tb0287_defconfig b/arch/mips/configs/tb0287_defconfig index c58afa2eac6b..8bb6be4342b6 100644 --- a/arch/mips/configs/tb0287_defconfig +++ b/arch/mips/configs/tb0287_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/workpad_defconfig b/arch/mips/configs/workpad_defconfig index 2abbd6827720..8f019ffcc71b 100644 --- a/arch/mips/configs/workpad_defconfig +++ b/arch/mips/configs/workpad_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/wrppmc_defconfig b/arch/mips/configs/wrppmc_defconfig index 44b6b7c1fdb6..52b48c0715d3 100644 --- a/arch/mips/configs/wrppmc_defconfig +++ b/arch/mips/configs/wrppmc_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_WR_PPMC=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/configs/yosemite_defconfig b/arch/mips/configs/yosemite_defconfig index f24e1c6fc484..6824606309e5 100644 --- a/arch/mips/configs/yosemite_defconfig +++ b/arch/mips/configs/yosemite_defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/defconfig b/arch/mips/defconfig index 8cb8f5919194..41211f8b7738 100644 --- a/arch/mips/defconfig +++ b/arch/mips/defconfig | |||
@@ -39,7 +39,6 @@ CONFIG_ZONE_DMA=y | |||
39 | # CONFIG_MOMENCO_OCELOT_C is not set | 39 | # CONFIG_MOMENCO_OCELOT_C is not set |
40 | # CONFIG_MOMENCO_OCELOT_G is not set | 40 | # CONFIG_MOMENCO_OCELOT_G is not set |
41 | # CONFIG_MIPS_XXS1500 is not set | 41 | # CONFIG_MIPS_XXS1500 is not set |
42 | # CONFIG_PNX8550_V2PCI is not set | ||
43 | # CONFIG_PNX8550_JBS is not set | 42 | # CONFIG_PNX8550_JBS is not set |
44 | # CONFIG_PNX8550_STB810 is not set | 43 | # CONFIG_PNX8550_STB810 is not set |
45 | # CONFIG_DDB5477 is not set | 44 | # CONFIG_DDB5477 is not set |
diff --git a/arch/mips/kernel/kspd.c b/arch/mips/kernel/kspd.c index 5929f883e46b..29eadd404fa5 100644 --- a/arch/mips/kernel/kspd.c +++ b/arch/mips/kernel/kspd.c | |||
@@ -70,6 +70,7 @@ static int sp_stopping = 0; | |||
70 | #define MTSP_SYSCALL_GETTIME (MTSP_SYSCALL_BASE + 7) | 70 | #define MTSP_SYSCALL_GETTIME (MTSP_SYSCALL_BASE + 7) |
71 | #define MTSP_SYSCALL_PIPEFREQ (MTSP_SYSCALL_BASE + 8) | 71 | #define MTSP_SYSCALL_PIPEFREQ (MTSP_SYSCALL_BASE + 8) |
72 | #define MTSP_SYSCALL_GETTOD (MTSP_SYSCALL_BASE + 9) | 72 | #define MTSP_SYSCALL_GETTOD (MTSP_SYSCALL_BASE + 9) |
73 | #define MTSP_SYSCALL_IOCTL (MTSP_SYSCALL_BASE + 10) | ||
73 | 74 | ||
74 | #define MTSP_O_RDONLY 0x0000 | 75 | #define MTSP_O_RDONLY 0x0000 |
75 | #define MTSP_O_WRONLY 0x0001 | 76 | #define MTSP_O_WRONLY 0x0001 |
@@ -110,7 +111,8 @@ struct apsp_table syscall_command_table[] = { | |||
110 | { MTSP_SYSCALL_CLOSE, __NR_close }, | 111 | { MTSP_SYSCALL_CLOSE, __NR_close }, |
111 | { MTSP_SYSCALL_READ, __NR_read }, | 112 | { MTSP_SYSCALL_READ, __NR_read }, |
112 | { MTSP_SYSCALL_WRITE, __NR_write }, | 113 | { MTSP_SYSCALL_WRITE, __NR_write }, |
113 | { MTSP_SYSCALL_LSEEK32, __NR_lseek } | 114 | { MTSP_SYSCALL_LSEEK32, __NR_lseek }, |
115 | { MTSP_SYSCALL_IOCTL, __NR_ioctl } | ||
114 | }; | 116 | }; |
115 | 117 | ||
116 | static int sp_syscall(int num, int arg0, int arg1, int arg2, int arg3) | 118 | static int sp_syscall(int num, int arg0, int arg1, int arg2, int arg3) |
@@ -189,6 +191,8 @@ void sp_work_handle_request(void) | |||
189 | struct mtsp_syscall_generic generic; | 191 | struct mtsp_syscall_generic generic; |
190 | struct mtsp_syscall_ret ret; | 192 | struct mtsp_syscall_ret ret; |
191 | struct kspd_notifications *n; | 193 | struct kspd_notifications *n; |
194 | unsigned long written; | ||
195 | mm_segment_t old_fs; | ||
192 | struct timeval tv; | 196 | struct timeval tv; |
193 | struct timezone tz; | 197 | struct timezone tz; |
194 | int cmd; | 198 | int cmd; |
@@ -199,7 +203,11 @@ void sp_work_handle_request(void) | |||
199 | 203 | ||
200 | ret.retval = -1; | 204 | ret.retval = -1; |
201 | 205 | ||
202 | if (!rtlx_read(RTLX_CHANNEL_SYSIO, &sc, sizeof(struct mtsp_syscall), 0)) { | 206 | old_fs = get_fs(); |
207 | set_fs(KERNEL_DS); | ||
208 | |||
209 | if (!rtlx_read(RTLX_CHANNEL_SYSIO, &sc, sizeof(struct mtsp_syscall))) { | ||
210 | set_fs(old_fs); | ||
203 | printk(KERN_ERR "Expected request but nothing to read\n"); | 211 | printk(KERN_ERR "Expected request but nothing to read\n"); |
204 | return; | 212 | return; |
205 | } | 213 | } |
@@ -207,7 +215,8 @@ void sp_work_handle_request(void) | |||
207 | size = sc.size; | 215 | size = sc.size; |
208 | 216 | ||
209 | if (size) { | 217 | if (size) { |
210 | if (!rtlx_read(RTLX_CHANNEL_SYSIO, &generic, size, 0)) { | 218 | if (!rtlx_read(RTLX_CHANNEL_SYSIO, &generic, size)) { |
219 | set_fs(old_fs); | ||
211 | printk(KERN_ERR "Expected request but nothing to read\n"); | 220 | printk(KERN_ERR "Expected request but nothing to read\n"); |
212 | return; | 221 | return; |
213 | } | 222 | } |
@@ -280,8 +289,11 @@ void sp_work_handle_request(void) | |||
280 | if (vpe_getuid(SP_VPE)) | 289 | if (vpe_getuid(SP_VPE)) |
281 | sp_setfsuidgid( 0, 0); | 290 | sp_setfsuidgid( 0, 0); |
282 | 291 | ||
283 | if ((rtlx_write(RTLX_CHANNEL_SYSIO, &ret, sizeof(struct mtsp_syscall_ret), 0)) | 292 | old_fs = get_fs(); |
284 | < sizeof(struct mtsp_syscall_ret)) | 293 | set_fs(KERNEL_DS); |
294 | written = rtlx_write(RTLX_CHANNEL_SYSIO, &ret, sizeof(ret)); | ||
295 | set_fs(old_fs); | ||
296 | if (written < sizeof(ret)) | ||
285 | printk("KSPD: sp_work_handle_request failed to send to SP\n"); | 297 | printk("KSPD: sp_work_handle_request failed to send to SP\n"); |
286 | } | 298 | } |
287 | 299 | ||
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 1df544c1f966..37849edd0645 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
@@ -311,6 +311,8 @@ asmlinkage int sys32_sched_rr_get_interval(compat_pid_t pid, | |||
311 | return ret; | 311 | return ret; |
312 | } | 312 | } |
313 | 313 | ||
314 | #ifdef CONFIG_SYSVIPC | ||
315 | |||
314 | asmlinkage long | 316 | asmlinkage long |
315 | sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) | 317 | sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) |
316 | { | 318 | { |
@@ -368,6 +370,16 @@ sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) | |||
368 | return err; | 370 | return err; |
369 | } | 371 | } |
370 | 372 | ||
373 | #else | ||
374 | |||
375 | asmlinkage long | ||
376 | sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) | ||
377 | { | ||
378 | return -ENOSYS; | ||
379 | } | ||
380 | |||
381 | #endif /* CONFIG_SYSVIPC */ | ||
382 | |||
371 | #ifdef CONFIG_MIPS32_N32 | 383 | #ifdef CONFIG_MIPS32_N32 |
372 | asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg) | 384 | asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg) |
373 | { | 385 | { |
diff --git a/arch/mips/kernel/r2300_switch.S b/arch/mips/kernel/r2300_switch.S index 656bde2e11b1..28c2e2e6af73 100644 --- a/arch/mips/kernel/r2300_switch.S +++ b/arch/mips/kernel/r2300_switch.S | |||
@@ -49,8 +49,7 @@ LEAF(resume) | |||
49 | #ifndef CONFIG_CPU_HAS_LLSC | 49 | #ifndef CONFIG_CPU_HAS_LLSC |
50 | sw zero, ll_bit | 50 | sw zero, ll_bit |
51 | #endif | 51 | #endif |
52 | mfc0 t1, CP0_STATUS | 52 | mfc0 t2, CP0_STATUS |
53 | sw t1, THREAD_STATUS(a0) | ||
54 | cpu_save_nonscratch a0 | 53 | cpu_save_nonscratch a0 |
55 | sw ra, THREAD_REG31(a0) | 54 | sw ra, THREAD_REG31(a0) |
56 | 55 | ||
@@ -60,8 +59,8 @@ LEAF(resume) | |||
60 | lw t3, TASK_THREAD_INFO(a0) | 59 | lw t3, TASK_THREAD_INFO(a0) |
61 | lw t0, TI_FLAGS(t3) | 60 | lw t0, TI_FLAGS(t3) |
62 | li t1, _TIF_USEDFPU | 61 | li t1, _TIF_USEDFPU |
63 | and t2, t0, t1 | 62 | and t1, t0 |
64 | beqz t2, 1f | 63 | beqz t1, 1f |
65 | nor t1, zero, t1 | 64 | nor t1, zero, t1 |
66 | 65 | ||
67 | and t0, t0, t1 | 66 | and t0, t0, t1 |
@@ -74,10 +73,13 @@ LEAF(resume) | |||
74 | li t1, ~ST0_CU1 | 73 | li t1, ~ST0_CU1 |
75 | and t0, t0, t1 | 74 | and t0, t0, t1 |
76 | sw t0, ST_OFF(t3) | 75 | sw t0, ST_OFF(t3) |
76 | /* clear thread_struct CU1 bit */ | ||
77 | and t2, t1 | ||
77 | 78 | ||
78 | fpu_save_single a0, t0 # clobbers t0 | 79 | fpu_save_single a0, t0 # clobbers t0 |
79 | 80 | ||
80 | 1: | 81 | 1: |
82 | sw t2, THREAD_STATUS(a0) | ||
81 | /* | 83 | /* |
82 | * The order of restoring the registers takes care of the race | 84 | * The order of restoring the registers takes care of the race |
83 | * updating $28, $29 and kernelsp without disabling ints. | 85 | * updating $28, $29 and kernelsp without disabling ints. |
diff --git a/arch/mips/kernel/r4k_fpu.S b/arch/mips/kernel/r4k_fpu.S index 59c1577ecbb3..dbd42adc52ed 100644 --- a/arch/mips/kernel/r4k_fpu.S +++ b/arch/mips/kernel/r4k_fpu.S | |||
@@ -114,14 +114,6 @@ LEAF(_save_fp_context32) | |||
114 | */ | 114 | */ |
115 | LEAF(_restore_fp_context) | 115 | LEAF(_restore_fp_context) |
116 | EX lw t0, SC_FPC_CSR(a0) | 116 | EX lw t0, SC_FPC_CSR(a0) |
117 | |||
118 | /* Fail if the CSR has exceptions pending */ | ||
119 | srl t1, t0, 5 | ||
120 | and t1, t0 | ||
121 | andi t1, 0x1f << 7 | ||
122 | bnez t1, fault | ||
123 | nop | ||
124 | |||
125 | #ifdef CONFIG_64BIT | 117 | #ifdef CONFIG_64BIT |
126 | EX ldc1 $f1, SC_FPREGS+8(a0) | 118 | EX ldc1 $f1, SC_FPREGS+8(a0) |
127 | EX ldc1 $f3, SC_FPREGS+24(a0) | 119 | EX ldc1 $f3, SC_FPREGS+24(a0) |
@@ -165,14 +157,6 @@ LEAF(_restore_fp_context) | |||
165 | LEAF(_restore_fp_context32) | 157 | LEAF(_restore_fp_context32) |
166 | /* Restore an o32 sigcontext. */ | 158 | /* Restore an o32 sigcontext. */ |
167 | EX lw t0, SC32_FPC_CSR(a0) | 159 | EX lw t0, SC32_FPC_CSR(a0) |
168 | |||
169 | /* Fail if the CSR has exceptions pending */ | ||
170 | srl t1, t0, 5 | ||
171 | and t1, t0 | ||
172 | andi t1, 0x1f << 7 | ||
173 | bnez t1, fault | ||
174 | nop | ||
175 | |||
176 | EX ldc1 $f0, SC32_FPREGS+0(a0) | 160 | EX ldc1 $f0, SC32_FPREGS+0(a0) |
177 | EX ldc1 $f2, SC32_FPREGS+16(a0) | 161 | EX ldc1 $f2, SC32_FPREGS+16(a0) |
178 | EX ldc1 $f4, SC32_FPREGS+32(a0) | 162 | EX ldc1 $f4, SC32_FPREGS+32(a0) |
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S index cc566cf12246..c7698fd9955c 100644 --- a/arch/mips/kernel/r4k_switch.S +++ b/arch/mips/kernel/r4k_switch.S | |||
@@ -48,8 +48,7 @@ | |||
48 | #ifndef CONFIG_CPU_HAS_LLSC | 48 | #ifndef CONFIG_CPU_HAS_LLSC |
49 | sw zero, ll_bit | 49 | sw zero, ll_bit |
50 | #endif | 50 | #endif |
51 | mfc0 t1, CP0_STATUS | 51 | mfc0 t2, CP0_STATUS |
52 | LONG_S t1, THREAD_STATUS(a0) | ||
53 | cpu_save_nonscratch a0 | 52 | cpu_save_nonscratch a0 |
54 | LONG_S ra, THREAD_REG31(a0) | 53 | LONG_S ra, THREAD_REG31(a0) |
55 | 54 | ||
@@ -59,8 +58,8 @@ | |||
59 | PTR_L t3, TASK_THREAD_INFO(a0) | 58 | PTR_L t3, TASK_THREAD_INFO(a0) |
60 | LONG_L t0, TI_FLAGS(t3) | 59 | LONG_L t0, TI_FLAGS(t3) |
61 | li t1, _TIF_USEDFPU | 60 | li t1, _TIF_USEDFPU |
62 | and t2, t0, t1 | 61 | and t1, t0 |
63 | beqz t2, 1f | 62 | beqz t1, 1f |
64 | nor t1, zero, t1 | 63 | nor t1, zero, t1 |
65 | 64 | ||
66 | and t0, t0, t1 | 65 | and t0, t0, t1 |
@@ -73,10 +72,13 @@ | |||
73 | li t1, ~ST0_CU1 | 72 | li t1, ~ST0_CU1 |
74 | and t0, t0, t1 | 73 | and t0, t0, t1 |
75 | LONG_S t0, ST_OFF(t3) | 74 | LONG_S t0, ST_OFF(t3) |
75 | /* clear thread_struct CU1 bit */ | ||
76 | and t2, t1 | ||
76 | 77 | ||
77 | fpu_save_double a0 t0 t1 # c0_status passed in t0 | 78 | fpu_save_double a0 t0 t1 # c0_status passed in t0 |
78 | # clobbers t1 | 79 | # clobbers t1 |
79 | 1: | 80 | 1: |
81 | LONG_S t2, THREAD_STATUS(a0) | ||
80 | 82 | ||
81 | /* | 83 | /* |
82 | * The order of restoring the registers takes care of the race | 84 | * The order of restoring the registers takes care of the race |
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index e14ae09eda2b..e6e3047151a6 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -54,6 +54,7 @@ static struct chan_waitqueues { | |||
54 | wait_queue_head_t rt_queue; | 54 | wait_queue_head_t rt_queue; |
55 | wait_queue_head_t lx_queue; | 55 | wait_queue_head_t lx_queue; |
56 | atomic_t in_open; | 56 | atomic_t in_open; |
57 | struct mutex mutex; | ||
57 | } channel_wqs[RTLX_CHANNELS]; | 58 | } channel_wqs[RTLX_CHANNELS]; |
58 | 59 | ||
59 | static struct irqaction irq; | 60 | static struct irqaction irq; |
@@ -146,7 +147,7 @@ static void stopping(int vpe) | |||
146 | 147 | ||
147 | int rtlx_open(int index, int can_sleep) | 148 | int rtlx_open(int index, int can_sleep) |
148 | { | 149 | { |
149 | volatile struct rtlx_info **p; | 150 | struct rtlx_info **p; |
150 | struct rtlx_channel *chan; | 151 | struct rtlx_channel *chan; |
151 | enum rtlx_state state; | 152 | enum rtlx_state state; |
152 | int ret = 0; | 153 | int ret = 0; |
@@ -179,13 +180,24 @@ int rtlx_open(int index, int can_sleep) | |||
179 | } | 180 | } |
180 | } | 181 | } |
181 | 182 | ||
183 | smp_rmb(); | ||
182 | if (*p == NULL) { | 184 | if (*p == NULL) { |
183 | if (can_sleep) { | 185 | if (can_sleep) { |
184 | __wait_event_interruptible(channel_wqs[index].lx_queue, | 186 | DEFINE_WAIT(wait); |
185 | *p != NULL, | 187 | |
186 | ret); | 188 | for (;;) { |
187 | if (ret) | 189 | prepare_to_wait(&channel_wqs[index].lx_queue, &wait, TASK_INTERRUPTIBLE); |
190 | smp_rmb(); | ||
191 | if (*p != NULL) | ||
192 | break; | ||
193 | if (!signal_pending(current)) { | ||
194 | schedule(); | ||
195 | continue; | ||
196 | } | ||
197 | ret = -ERESTARTSYS; | ||
188 | goto out_fail; | 198 | goto out_fail; |
199 | } | ||
200 | finish_wait(&channel_wqs[index].lx_queue, &wait); | ||
189 | } else { | 201 | } else { |
190 | printk(" *vpe_get_shared is NULL. " | 202 | printk(" *vpe_get_shared is NULL. " |
191 | "Has an SP program been loaded?\n"); | 203 | "Has an SP program been loaded?\n"); |
@@ -277,56 +289,52 @@ unsigned int rtlx_write_poll(int index) | |||
277 | return write_spacefree(chan->rt_read, chan->rt_write, chan->buffer_size); | 289 | return write_spacefree(chan->rt_read, chan->rt_write, chan->buffer_size); |
278 | } | 290 | } |
279 | 291 | ||
280 | static inline void copy_to(void *dst, void *src, size_t count, int user) | 292 | ssize_t rtlx_read(int index, void __user *buff, size_t count, int user) |
281 | { | ||
282 | if (user) | ||
283 | copy_to_user(dst, src, count); | ||
284 | else | ||
285 | memcpy(dst, src, count); | ||
286 | } | ||
287 | |||
288 | static inline void copy_from(void *dst, void *src, size_t count, int user) | ||
289 | { | 293 | { |
290 | if (user) | 294 | size_t lx_write, fl = 0L; |
291 | copy_from_user(dst, src, count); | ||
292 | else | ||
293 | memcpy(dst, src, count); | ||
294 | } | ||
295 | |||
296 | ssize_t rtlx_read(int index, void *buff, size_t count, int user) | ||
297 | { | ||
298 | size_t fl = 0L; | ||
299 | struct rtlx_channel *lx; | 295 | struct rtlx_channel *lx; |
296 | unsigned long failed; | ||
300 | 297 | ||
301 | if (rtlx == NULL) | 298 | if (rtlx == NULL) |
302 | return -ENOSYS; | 299 | return -ENOSYS; |
303 | 300 | ||
304 | lx = &rtlx->channel[index]; | 301 | lx = &rtlx->channel[index]; |
305 | 302 | ||
303 | mutex_lock(&channel_wqs[index].mutex); | ||
304 | smp_rmb(); | ||
305 | lx_write = lx->lx_write; | ||
306 | |||
306 | /* find out how much in total */ | 307 | /* find out how much in total */ |
307 | count = min(count, | 308 | count = min(count, |
308 | (size_t)(lx->lx_write + lx->buffer_size - lx->lx_read) | 309 | (size_t)(lx_write + lx->buffer_size - lx->lx_read) |
309 | % lx->buffer_size); | 310 | % lx->buffer_size); |
310 | 311 | ||
311 | /* then how much from the read pointer onwards */ | 312 | /* then how much from the read pointer onwards */ |
312 | fl = min( count, (size_t)lx->buffer_size - lx->lx_read); | 313 | fl = min(count, (size_t)lx->buffer_size - lx->lx_read); |
313 | 314 | ||
314 | copy_to(buff, &lx->lx_buffer[lx->lx_read], fl, user); | 315 | failed = copy_to_user(buff, lx->lx_buffer + lx->lx_read, fl); |
316 | if (failed) | ||
317 | goto out; | ||
315 | 318 | ||
316 | /* and if there is anything left at the beginning of the buffer */ | 319 | /* and if there is anything left at the beginning of the buffer */ |
317 | if ( count - fl ) | 320 | if (count - fl) |
318 | copy_to (buff + fl, lx->lx_buffer, count - fl, user); | 321 | failed = copy_to_user(buff + fl, lx->lx_buffer, count - fl); |
319 | 322 | ||
320 | /* update the index */ | 323 | out: |
321 | lx->lx_read += count; | 324 | count -= failed; |
322 | lx->lx_read %= lx->buffer_size; | 325 | |
326 | smp_wmb(); | ||
327 | lx->lx_read = (lx->lx_read + count) % lx->buffer_size; | ||
328 | smp_wmb(); | ||
329 | mutex_unlock(&channel_wqs[index].mutex); | ||
323 | 330 | ||
324 | return count; | 331 | return count; |
325 | } | 332 | } |
326 | 333 | ||
327 | ssize_t rtlx_write(int index, void *buffer, size_t count, int user) | 334 | ssize_t rtlx_write(int index, const void __user *buffer, size_t count, int user) |
328 | { | 335 | { |
329 | struct rtlx_channel *rt; | 336 | struct rtlx_channel *rt; |
337 | size_t rt_read; | ||
330 | size_t fl; | 338 | size_t fl; |
331 | 339 | ||
332 | if (rtlx == NULL) | 340 | if (rtlx == NULL) |
@@ -334,24 +342,35 @@ ssize_t rtlx_write(int index, void *buffer, size_t count, int user) | |||
334 | 342 | ||
335 | rt = &rtlx->channel[index]; | 343 | rt = &rtlx->channel[index]; |
336 | 344 | ||
345 | mutex_lock(&channel_wqs[index].mutex); | ||
346 | smp_rmb(); | ||
347 | rt_read = rt->rt_read; | ||
348 | |||
337 | /* total number of bytes to copy */ | 349 | /* total number of bytes to copy */ |
338 | count = min(count, | 350 | count = min(count, |
339 | (size_t)write_spacefree(rt->rt_read, rt->rt_write, | 351 | (size_t)write_spacefree(rt_read, rt->rt_write, rt->buffer_size)); |
340 | rt->buffer_size)); | ||
341 | 352 | ||
342 | /* first bit from write pointer to the end of the buffer, or count */ | 353 | /* first bit from write pointer to the end of the buffer, or count */ |
343 | fl = min(count, (size_t) rt->buffer_size - rt->rt_write); | 354 | fl = min(count, (size_t) rt->buffer_size - rt->rt_write); |
344 | 355 | ||
345 | copy_from (&rt->rt_buffer[rt->rt_write], buffer, fl, user); | 356 | failed = copy_from_user(rt->rt_buffer + rt->rt_write, buffer, fl); |
357 | if (failed) | ||
358 | goto out; | ||
346 | 359 | ||
347 | /* if there's any left copy to the beginning of the buffer */ | 360 | /* if there's any left copy to the beginning of the buffer */ |
348 | if( count - fl ) | 361 | if (count - fl) { |
349 | copy_from (rt->rt_buffer, buffer + fl, count - fl, user); | 362 | failed = copy_from_user(rt->rt_buffer, buffer + fl, count - fl); |
363 | } | ||
364 | |||
365 | out: | ||
366 | count -= cailed; | ||
350 | 367 | ||
351 | rt->rt_write += count; | 368 | smp_wmb(); |
352 | rt->rt_write %= rt->buffer_size; | 369 | rt->rt_write = (rt->rt_write + count) % rt->buffer_size; |
370 | smp_wmb(); | ||
371 | mutex_unlock(&channel_wqs[index].mutex); | ||
353 | 372 | ||
354 | return(count); | 373 | return count; |
355 | } | 374 | } |
356 | 375 | ||
357 | 376 | ||
@@ -403,7 +422,7 @@ static ssize_t file_read(struct file *file, char __user * buffer, size_t count, | |||
403 | return 0; // -EAGAIN makes cat whinge | 422 | return 0; // -EAGAIN makes cat whinge |
404 | } | 423 | } |
405 | 424 | ||
406 | return rtlx_read(minor, buffer, count, 1); | 425 | return rtlx_read(minor, buffer, count); |
407 | } | 426 | } |
408 | 427 | ||
409 | static ssize_t file_write(struct file *file, const char __user * buffer, | 428 | static ssize_t file_write(struct file *file, const char __user * buffer, |
@@ -429,7 +448,7 @@ static ssize_t file_write(struct file *file, const char __user * buffer, | |||
429 | return ret; | 448 | return ret; |
430 | } | 449 | } |
431 | 450 | ||
432 | return rtlx_write(minor, (void *)buffer, count, 1); | 451 | return rtlx_write(minor, buffer, count); |
433 | } | 452 | } |
434 | 453 | ||
435 | static const struct file_operations rtlx_fops = { | 454 | static const struct file_operations rtlx_fops = { |
@@ -468,6 +487,7 @@ static int rtlx_module_init(void) | |||
468 | init_waitqueue_head(&channel_wqs[i].rt_queue); | 487 | init_waitqueue_head(&channel_wqs[i].rt_queue); |
469 | init_waitqueue_head(&channel_wqs[i].lx_queue); | 488 | init_waitqueue_head(&channel_wqs[i].lx_queue); |
470 | atomic_set(&channel_wqs[i].in_open, 0); | 489 | atomic_set(&channel_wqs[i].in_open, 0); |
490 | mutex_init(&channel_wqs[i].mutex); | ||
471 | 491 | ||
472 | dev = device_create(mt_class, NULL, MKDEV(major, i), | 492 | dev = device_create(mt_class, NULL, MKDEV(major, i), |
473 | "%s%d", module_name, i); | 493 | "%s%d", module_name, i); |
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h index fdbdbdc65b54..297dfcb97524 100644 --- a/arch/mips/kernel/signal-common.h +++ b/arch/mips/kernel/signal-common.h | |||
@@ -31,4 +31,7 @@ extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | |||
31 | */ | 31 | */ |
32 | extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall); | 32 | extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall); |
33 | 33 | ||
34 | /* Check and clear pending FPU exceptions in saved CSR */ | ||
35 | extern int fpcsr_pending(unsigned int __user *fpcsr); | ||
36 | |||
34 | #endif /* __SIGNAL_COMMON_H */ | 37 | #endif /* __SIGNAL_COMMON_H */ |
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index f091786187a6..8c3c5a5789b0 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -82,6 +82,7 @@ int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | |||
82 | { | 82 | { |
83 | int err = 0; | 83 | int err = 0; |
84 | int i; | 84 | int i; |
85 | unsigned int used_math; | ||
85 | 86 | ||
86 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | 87 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); |
87 | 88 | ||
@@ -104,26 +105,53 @@ int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | |||
104 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); | 105 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); |
105 | } | 106 | } |
106 | 107 | ||
107 | err |= __put_user(!!used_math(), &sc->sc_used_math); | 108 | used_math = !!used_math(); |
109 | err |= __put_user(used_math, &sc->sc_used_math); | ||
108 | 110 | ||
109 | if (used_math()) { | 111 | if (used_math) { |
110 | /* | 112 | /* |
111 | * Save FPU state to signal context. Signal handler | 113 | * Save FPU state to signal context. Signal handler |
112 | * will "inherit" current FPU state. | 114 | * will "inherit" current FPU state. |
113 | */ | 115 | */ |
114 | preempt_disable(); | 116 | own_fpu(1); |
115 | 117 | enable_fp_in_kernel(); | |
116 | if (!is_fpu_owner()) { | ||
117 | own_fpu(); | ||
118 | restore_fp(current); | ||
119 | } | ||
120 | err |= save_fp_context(sc); | 118 | err |= save_fp_context(sc); |
121 | 119 | disable_fp_in_kernel(); | |
122 | preempt_enable(); | ||
123 | } | 120 | } |
124 | return err; | 121 | return err; |
125 | } | 122 | } |
126 | 123 | ||
124 | int fpcsr_pending(unsigned int __user *fpcsr) | ||
125 | { | ||
126 | int err, sig = 0; | ||
127 | unsigned int csr, enabled; | ||
128 | |||
129 | err = __get_user(csr, fpcsr); | ||
130 | enabled = FPU_CSR_UNI_X | ((csr & FPU_CSR_ALL_E) << 5); | ||
131 | /* | ||
132 | * If the signal handler set some FPU exceptions, clear it and | ||
133 | * send SIGFPE. | ||
134 | */ | ||
135 | if (csr & enabled) { | ||
136 | csr &= ~enabled; | ||
137 | err |= __put_user(csr, fpcsr); | ||
138 | sig = SIGFPE; | ||
139 | } | ||
140 | return err ?: sig; | ||
141 | } | ||
142 | |||
143 | static int | ||
144 | check_and_restore_fp_context(struct sigcontext __user *sc) | ||
145 | { | ||
146 | int err, sig; | ||
147 | |||
148 | err = sig = fpcsr_pending(&sc->sc_fpc_csr); | ||
149 | if (err > 0) | ||
150 | err = 0; | ||
151 | err |= restore_fp_context(sc); | ||
152 | return err ?: sig; | ||
153 | } | ||
154 | |||
127 | int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | 155 | int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) |
128 | { | 156 | { |
129 | unsigned int used_math; | 157 | unsigned int used_math; |
@@ -157,19 +185,18 @@ int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | |||
157 | err |= __get_user(used_math, &sc->sc_used_math); | 185 | err |= __get_user(used_math, &sc->sc_used_math); |
158 | conditional_used_math(used_math); | 186 | conditional_used_math(used_math); |
159 | 187 | ||
160 | preempt_disable(); | 188 | if (used_math) { |
161 | |||
162 | if (used_math()) { | ||
163 | /* restore fpu context if we have used it before */ | 189 | /* restore fpu context if we have used it before */ |
164 | own_fpu(); | 190 | own_fpu(0); |
165 | err |= restore_fp_context(sc); | 191 | enable_fp_in_kernel(); |
192 | if (!err) | ||
193 | err = check_and_restore_fp_context(sc); | ||
194 | disable_fp_in_kernel(); | ||
166 | } else { | 195 | } else { |
167 | /* signal handler may have used FPU. Give it up. */ | 196 | /* signal handler may have used FPU. Give it up. */ |
168 | lose_fpu(); | 197 | lose_fpu(0); |
169 | } | 198 | } |
170 | 199 | ||
171 | preempt_enable(); | ||
172 | |||
173 | return err; | 200 | return err; |
174 | } | 201 | } |
175 | 202 | ||
@@ -332,6 +359,7 @@ asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
332 | { | 359 | { |
333 | struct sigframe __user *frame; | 360 | struct sigframe __user *frame; |
334 | sigset_t blocked; | 361 | sigset_t blocked; |
362 | int sig; | ||
335 | 363 | ||
336 | frame = (struct sigframe __user *) regs.regs[29]; | 364 | frame = (struct sigframe __user *) regs.regs[29]; |
337 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) | 365 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
@@ -345,8 +373,11 @@ asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
345 | recalc_sigpending(); | 373 | recalc_sigpending(); |
346 | spin_unlock_irq(¤t->sighand->siglock); | 374 | spin_unlock_irq(¤t->sighand->siglock); |
347 | 375 | ||
348 | if (restore_sigcontext(®s, &frame->sf_sc)) | 376 | sig = restore_sigcontext(®s, &frame->sf_sc); |
377 | if (sig < 0) | ||
349 | goto badframe; | 378 | goto badframe; |
379 | else if (sig) | ||
380 | force_sig(sig, current); | ||
350 | 381 | ||
351 | /* | 382 | /* |
352 | * Don't let your children do this ... | 383 | * Don't let your children do this ... |
@@ -368,6 +399,7 @@ asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
368 | struct rt_sigframe __user *frame; | 399 | struct rt_sigframe __user *frame; |
369 | sigset_t set; | 400 | sigset_t set; |
370 | stack_t st; | 401 | stack_t st; |
402 | int sig; | ||
371 | 403 | ||
372 | frame = (struct rt_sigframe __user *) regs.regs[29]; | 404 | frame = (struct rt_sigframe __user *) regs.regs[29]; |
373 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) | 405 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
@@ -381,8 +413,11 @@ asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
381 | recalc_sigpending(); | 413 | recalc_sigpending(); |
382 | spin_unlock_irq(¤t->sighand->siglock); | 414 | spin_unlock_irq(¤t->sighand->siglock); |
383 | 415 | ||
384 | if (restore_sigcontext(®s, &frame->rs_uc.uc_mcontext)) | 416 | sig = restore_sigcontext(®s, &frame->rs_uc.uc_mcontext); |
417 | if (sig < 0) | ||
385 | goto badframe; | 418 | goto badframe; |
419 | else if (sig) | ||
420 | force_sig(sig, current); | ||
386 | 421 | ||
387 | if (__copy_from_user(&st, &frame->rs_uc.uc_stack, sizeof(st))) | 422 | if (__copy_from_user(&st, &frame->rs_uc.uc_stack, sizeof(st))) |
388 | goto badframe; | 423 | goto badframe; |
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 19bbef001959..151fd2f0893a 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -181,6 +181,7 @@ static int setup_sigcontext32(struct pt_regs *regs, | |||
181 | { | 181 | { |
182 | int err = 0; | 182 | int err = 0; |
183 | int i; | 183 | int i; |
184 | u32 used_math; | ||
184 | 185 | ||
185 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | 186 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); |
186 | 187 | ||
@@ -200,26 +201,34 @@ static int setup_sigcontext32(struct pt_regs *regs, | |||
200 | err |= __put_user(mflo3(), &sc->sc_lo3); | 201 | err |= __put_user(mflo3(), &sc->sc_lo3); |
201 | } | 202 | } |
202 | 203 | ||
203 | err |= __put_user(!!used_math(), &sc->sc_used_math); | 204 | used_math = !!used_math(); |
205 | err |= __put_user(used_math, &sc->sc_used_math); | ||
204 | 206 | ||
205 | if (used_math()) { | 207 | if (used_math) { |
206 | /* | 208 | /* |
207 | * Save FPU state to signal context. Signal handler | 209 | * Save FPU state to signal context. Signal handler |
208 | * will "inherit" current FPU state. | 210 | * will "inherit" current FPU state. |
209 | */ | 211 | */ |
210 | preempt_disable(); | 212 | own_fpu(1); |
211 | 213 | enable_fp_in_kernel(); | |
212 | if (!is_fpu_owner()) { | ||
213 | own_fpu(); | ||
214 | restore_fp(current); | ||
215 | } | ||
216 | err |= save_fp_context32(sc); | 214 | err |= save_fp_context32(sc); |
217 | 215 | disable_fp_in_kernel(); | |
218 | preempt_enable(); | ||
219 | } | 216 | } |
220 | return err; | 217 | return err; |
221 | } | 218 | } |
222 | 219 | ||
220 | static int | ||
221 | check_and_restore_fp_context32(struct sigcontext32 __user *sc) | ||
222 | { | ||
223 | int err, sig; | ||
224 | |||
225 | err = sig = fpcsr_pending(&sc->sc_fpc_csr); | ||
226 | if (err > 0) | ||
227 | err = 0; | ||
228 | err |= restore_fp_context32(sc); | ||
229 | return err ?: sig; | ||
230 | } | ||
231 | |||
223 | static int restore_sigcontext32(struct pt_regs *regs, | 232 | static int restore_sigcontext32(struct pt_regs *regs, |
224 | struct sigcontext32 __user *sc) | 233 | struct sigcontext32 __user *sc) |
225 | { | 234 | { |
@@ -250,19 +259,18 @@ static int restore_sigcontext32(struct pt_regs *regs, | |||
250 | err |= __get_user(used_math, &sc->sc_used_math); | 259 | err |= __get_user(used_math, &sc->sc_used_math); |
251 | conditional_used_math(used_math); | 260 | conditional_used_math(used_math); |
252 | 261 | ||
253 | preempt_disable(); | 262 | if (used_math) { |
254 | |||
255 | if (used_math()) { | ||
256 | /* restore fpu context if we have used it before */ | 263 | /* restore fpu context if we have used it before */ |
257 | own_fpu(); | 264 | own_fpu(0); |
258 | err |= restore_fp_context32(sc); | 265 | enable_fp_in_kernel(); |
266 | if (!err) | ||
267 | err = check_and_restore_fp_context32(sc); | ||
268 | disable_fp_in_kernel(); | ||
259 | } else { | 269 | } else { |
260 | /* signal handler may have used FPU. Give it up. */ | 270 | /* signal handler may have used FPU. Give it up. */ |
261 | lose_fpu(); | 271 | lose_fpu(0); |
262 | } | 272 | } |
263 | 273 | ||
264 | preempt_enable(); | ||
265 | |||
266 | return err; | 274 | return err; |
267 | } | 275 | } |
268 | 276 | ||
@@ -508,6 +516,7 @@ asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
508 | { | 516 | { |
509 | struct sigframe32 __user *frame; | 517 | struct sigframe32 __user *frame; |
510 | sigset_t blocked; | 518 | sigset_t blocked; |
519 | int sig; | ||
511 | 520 | ||
512 | frame = (struct sigframe32 __user *) regs.regs[29]; | 521 | frame = (struct sigframe32 __user *) regs.regs[29]; |
513 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) | 522 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
@@ -521,8 +530,11 @@ asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
521 | recalc_sigpending(); | 530 | recalc_sigpending(); |
522 | spin_unlock_irq(¤t->sighand->siglock); | 531 | spin_unlock_irq(¤t->sighand->siglock); |
523 | 532 | ||
524 | if (restore_sigcontext32(®s, &frame->sf_sc)) | 533 | sig = restore_sigcontext32(®s, &frame->sf_sc); |
534 | if (sig < 0) | ||
525 | goto badframe; | 535 | goto badframe; |
536 | else if (sig) | ||
537 | force_sig(sig, current); | ||
526 | 538 | ||
527 | /* | 539 | /* |
528 | * Don't let your children do this ... | 540 | * Don't let your children do this ... |
@@ -545,6 +557,7 @@ asmlinkage void sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
545 | sigset_t set; | 557 | sigset_t set; |
546 | stack_t st; | 558 | stack_t st; |
547 | s32 sp; | 559 | s32 sp; |
560 | int sig; | ||
548 | 561 | ||
549 | frame = (struct rt_sigframe32 __user *) regs.regs[29]; | 562 | frame = (struct rt_sigframe32 __user *) regs.regs[29]; |
550 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) | 563 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
@@ -558,8 +571,11 @@ asmlinkage void sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
558 | recalc_sigpending(); | 571 | recalc_sigpending(); |
559 | spin_unlock_irq(¤t->sighand->siglock); | 572 | spin_unlock_irq(¤t->sighand->siglock); |
560 | 573 | ||
561 | if (restore_sigcontext32(®s, &frame->rs_uc.uc_mcontext)) | 574 | sig = restore_sigcontext32(®s, &frame->rs_uc.uc_mcontext); |
575 | if (sig < 0) | ||
562 | goto badframe; | 576 | goto badframe; |
577 | else if (sig) | ||
578 | force_sig(sig, current); | ||
563 | 579 | ||
564 | /* The ucontext contains a stack32_t, so we must convert! */ | 580 | /* The ucontext contains a stack32_t, so we must convert! */ |
565 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) | 581 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) |
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index ecf1f7ecaad9..a9202fa95987 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -127,6 +127,7 @@ asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
127 | sigset_t set; | 127 | sigset_t set; |
128 | stack_t st; | 128 | stack_t st; |
129 | s32 sp; | 129 | s32 sp; |
130 | int sig; | ||
130 | 131 | ||
131 | frame = (struct rt_sigframe_n32 __user *) regs.regs[29]; | 132 | frame = (struct rt_sigframe_n32 __user *) regs.regs[29]; |
132 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) | 133 | if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
@@ -140,8 +141,11 @@ asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
140 | recalc_sigpending(); | 141 | recalc_sigpending(); |
141 | spin_unlock_irq(¤t->sighand->siglock); | 142 | spin_unlock_irq(¤t->sighand->siglock); |
142 | 143 | ||
143 | if (restore_sigcontext(®s, &frame->rs_uc.uc_mcontext)) | 144 | sig = restore_sigcontext(®s, &frame->rs_uc.uc_mcontext); |
145 | if (sig < 0) | ||
144 | goto badframe; | 146 | goto badframe; |
147 | else if (sig) | ||
148 | force_sig(sig, current); | ||
145 | 149 | ||
146 | /* The ucontext contains a stack32_t, so we must convert! */ | 150 | /* The ucontext contains a stack32_t, so we must convert! */ |
147 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) | 151 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 18f56a9dbcfa..7d76a85422b2 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -610,16 +610,6 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) | |||
610 | if (fcr31 & FPU_CSR_UNI_X) { | 610 | if (fcr31 & FPU_CSR_UNI_X) { |
611 | int sig; | 611 | int sig; |
612 | 612 | ||
613 | preempt_disable(); | ||
614 | |||
615 | #ifdef CONFIG_PREEMPT | ||
616 | if (!is_fpu_owner()) { | ||
617 | /* We might lose fpu before disabling preempt... */ | ||
618 | own_fpu(); | ||
619 | BUG_ON(!used_math()); | ||
620 | restore_fp(current); | ||
621 | } | ||
622 | #endif | ||
623 | /* | 613 | /* |
624 | * Unimplemented operation exception. If we've got the full | 614 | * Unimplemented operation exception. If we've got the full |
625 | * software emulator on-board, let's use it... | 615 | * software emulator on-board, let's use it... |
@@ -630,18 +620,12 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) | |||
630 | * register operands before invoking the emulator, which seems | 620 | * register operands before invoking the emulator, which seems |
631 | * a bit extreme for what should be an infrequent event. | 621 | * a bit extreme for what should be an infrequent event. |
632 | */ | 622 | */ |
633 | save_fp(current); | ||
634 | /* Ensure 'resume' not overwrite saved fp context again. */ | 623 | /* Ensure 'resume' not overwrite saved fp context again. */ |
635 | lose_fpu(); | 624 | lose_fpu(1); |
636 | |||
637 | preempt_enable(); | ||
638 | 625 | ||
639 | /* Run the emulator */ | 626 | /* Run the emulator */ |
640 | sig = fpu_emulator_cop1Handler (regs, ¤t->thread.fpu, 1); | 627 | sig = fpu_emulator_cop1Handler (regs, ¤t->thread.fpu, 1); |
641 | 628 | ||
642 | preempt_disable(); | ||
643 | |||
644 | own_fpu(); /* Using the FPU again. */ | ||
645 | /* | 629 | /* |
646 | * We can't allow the emulated instruction to leave any of | 630 | * We can't allow the emulated instruction to leave any of |
647 | * the cause bit set in $fcr31. | 631 | * the cause bit set in $fcr31. |
@@ -649,9 +633,7 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) | |||
649 | current->thread.fpu.fcr31 &= ~FPU_CSR_ALL_X; | 633 | current->thread.fpu.fcr31 &= ~FPU_CSR_ALL_X; |
650 | 634 | ||
651 | /* Restore the hardware register state */ | 635 | /* Restore the hardware register state */ |
652 | restore_fp(current); | 636 | own_fpu(1); /* Using the FPU again. */ |
653 | |||
654 | preempt_enable(); | ||
655 | 637 | ||
656 | /* If something went wrong, signal */ | 638 | /* If something went wrong, signal */ |
657 | if (sig) | 639 | if (sig) |
@@ -775,12 +757,11 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
775 | { | 757 | { |
776 | unsigned int cpid; | 758 | unsigned int cpid; |
777 | 759 | ||
778 | die_if_kernel("do_cpu invoked from kernel context!", regs); | ||
779 | |||
780 | cpid = (regs->cp0_cause >> CAUSEB_CE) & 3; | 760 | cpid = (regs->cp0_cause >> CAUSEB_CE) & 3; |
781 | 761 | ||
782 | switch (cpid) { | 762 | switch (cpid) { |
783 | case 0: | 763 | case 0: |
764 | die_if_kernel("do_cpu invoked from kernel context!", regs); | ||
784 | if (!cpu_has_llsc) | 765 | if (!cpu_has_llsc) |
785 | if (!simulate_llsc(regs)) | 766 | if (!simulate_llsc(regs)) |
786 | return; | 767 | return; |
@@ -791,21 +772,30 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
791 | break; | 772 | break; |
792 | 773 | ||
793 | case 1: | 774 | case 1: |
794 | preempt_disable(); | 775 | if (!test_thread_flag(TIF_ALLOW_FP_IN_KERNEL)) |
795 | 776 | die_if_kernel("do_cpu invoked from kernel context!", | |
796 | own_fpu(); | 777 | regs); |
797 | if (used_math()) { /* Using the FPU again. */ | 778 | if (used_math()) /* Using the FPU again. */ |
798 | restore_fp(current); | 779 | own_fpu(1); |
799 | } else { /* First time FPU user. */ | 780 | else { /* First time FPU user. */ |
800 | init_fpu(); | 781 | init_fpu(); |
801 | set_used_math(); | 782 | set_used_math(); |
802 | } | 783 | } |
803 | 784 | ||
804 | if (cpu_has_fpu) { | 785 | if (raw_cpu_has_fpu) { |
805 | preempt_enable(); | 786 | if (test_thread_flag(TIF_ALLOW_FP_IN_KERNEL)) { |
787 | local_irq_disable(); | ||
788 | if (cpu_has_fpu) | ||
789 | regs->cp0_status |= ST0_CU1; | ||
790 | /* | ||
791 | * We must return without enabling | ||
792 | * interrupts to ensure keep FPU | ||
793 | * ownership until resume. | ||
794 | */ | ||
795 | return; | ||
796 | } | ||
806 | } else { | 797 | } else { |
807 | int sig; | 798 | int sig; |
808 | preempt_enable(); | ||
809 | sig = fpu_emulator_cop1Handler(regs, | 799 | sig = fpu_emulator_cop1Handler(regs, |
810 | ¤t->thread.fpu, 0); | 800 | ¤t->thread.fpu, 0); |
811 | if (sig) | 801 | if (sig) |
@@ -1259,26 +1249,26 @@ static inline void mips_srs_init(void) | |||
1259 | /* | 1249 | /* |
1260 | * This is used by native signal handling | 1250 | * This is used by native signal handling |
1261 | */ | 1251 | */ |
1262 | asmlinkage int (*save_fp_context)(struct sigcontext *sc); | 1252 | asmlinkage int (*save_fp_context)(struct sigcontext __user *sc); |
1263 | asmlinkage int (*restore_fp_context)(struct sigcontext *sc); | 1253 | asmlinkage int (*restore_fp_context)(struct sigcontext __user *sc); |
1264 | 1254 | ||
1265 | extern asmlinkage int _save_fp_context(struct sigcontext *sc); | 1255 | extern asmlinkage int _save_fp_context(struct sigcontext __user *sc); |
1266 | extern asmlinkage int _restore_fp_context(struct sigcontext *sc); | 1256 | extern asmlinkage int _restore_fp_context(struct sigcontext __user *sc); |
1267 | 1257 | ||
1268 | extern asmlinkage int fpu_emulator_save_context(struct sigcontext *sc); | 1258 | extern asmlinkage int fpu_emulator_save_context(struct sigcontext __user *sc); |
1269 | extern asmlinkage int fpu_emulator_restore_context(struct sigcontext *sc); | 1259 | extern asmlinkage int fpu_emulator_restore_context(struct sigcontext __user *sc); |
1270 | 1260 | ||
1271 | #ifdef CONFIG_SMP | 1261 | #ifdef CONFIG_SMP |
1272 | static int smp_save_fp_context(struct sigcontext *sc) | 1262 | static int smp_save_fp_context(struct sigcontext __user *sc) |
1273 | { | 1263 | { |
1274 | return cpu_has_fpu | 1264 | return raw_cpu_has_fpu |
1275 | ? _save_fp_context(sc) | 1265 | ? _save_fp_context(sc) |
1276 | : fpu_emulator_save_context(sc); | 1266 | : fpu_emulator_save_context(sc); |
1277 | } | 1267 | } |
1278 | 1268 | ||
1279 | static int smp_restore_fp_context(struct sigcontext *sc) | 1269 | static int smp_restore_fp_context(struct sigcontext __user *sc) |
1280 | { | 1270 | { |
1281 | return cpu_has_fpu | 1271 | return raw_cpu_has_fpu |
1282 | ? _restore_fp_context(sc) | 1272 | ? _restore_fp_context(sc) |
1283 | : fpu_emulator_restore_context(sc); | 1273 | : fpu_emulator_restore_context(sc); |
1284 | } | 1274 | } |
@@ -1306,14 +1296,14 @@ static inline void signal_init(void) | |||
1306 | /* | 1296 | /* |
1307 | * This is used by 32-bit signal stuff on the 64-bit kernel | 1297 | * This is used by 32-bit signal stuff on the 64-bit kernel |
1308 | */ | 1298 | */ |
1309 | asmlinkage int (*save_fp_context32)(struct sigcontext32 *sc); | 1299 | asmlinkage int (*save_fp_context32)(struct sigcontext32 __user *sc); |
1310 | asmlinkage int (*restore_fp_context32)(struct sigcontext32 *sc); | 1300 | asmlinkage int (*restore_fp_context32)(struct sigcontext32 __user *sc); |
1311 | 1301 | ||
1312 | extern asmlinkage int _save_fp_context32(struct sigcontext32 *sc); | 1302 | extern asmlinkage int _save_fp_context32(struct sigcontext32 __user *sc); |
1313 | extern asmlinkage int _restore_fp_context32(struct sigcontext32 *sc); | 1303 | extern asmlinkage int _restore_fp_context32(struct sigcontext32 __user *sc); |
1314 | 1304 | ||
1315 | extern asmlinkage int fpu_emulator_save_context32(struct sigcontext32 *sc); | 1305 | extern asmlinkage int fpu_emulator_save_context32(struct sigcontext32 __user *sc); |
1316 | extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 *sc); | 1306 | extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 __user *sc); |
1317 | 1307 | ||
1318 | static inline void signal32_init(void) | 1308 | static inline void signal32_init(void) |
1319 | { | 1309 | { |
diff --git a/arch/mips/math-emu/kernel_linkage.c b/arch/mips/math-emu/kernel_linkage.c index 5b3390f64917..ed49ef01ac53 100644 --- a/arch/mips/math-emu/kernel_linkage.c +++ b/arch/mips/math-emu/kernel_linkage.c | |||
@@ -51,7 +51,7 @@ void fpu_emulator_init_fpu(void) | |||
51 | * with appropriate macros from uaccess.h | 51 | * with appropriate macros from uaccess.h |
52 | */ | 52 | */ |
53 | 53 | ||
54 | int fpu_emulator_save_context(struct sigcontext *sc) | 54 | int fpu_emulator_save_context(struct sigcontext __user *sc) |
55 | { | 55 | { |
56 | int i; | 56 | int i; |
57 | int err = 0; | 57 | int err = 0; |
@@ -65,7 +65,7 @@ int fpu_emulator_save_context(struct sigcontext *sc) | |||
65 | return err; | 65 | return err; |
66 | } | 66 | } |
67 | 67 | ||
68 | int fpu_emulator_restore_context(struct sigcontext *sc) | 68 | int fpu_emulator_restore_context(struct sigcontext __user *sc) |
69 | { | 69 | { |
70 | int i; | 70 | int i; |
71 | int err = 0; | 71 | int err = 0; |
@@ -84,7 +84,7 @@ int fpu_emulator_restore_context(struct sigcontext *sc) | |||
84 | * This is the o32 version | 84 | * This is the o32 version |
85 | */ | 85 | */ |
86 | 86 | ||
87 | int fpu_emulator_save_context32(struct sigcontext32 *sc) | 87 | int fpu_emulator_save_context32(struct sigcontext32 __user *sc) |
88 | { | 88 | { |
89 | int i; | 89 | int i; |
90 | int err = 0; | 90 | int err = 0; |
@@ -98,7 +98,7 @@ int fpu_emulator_save_context32(struct sigcontext32 *sc) | |||
98 | return err; | 98 | return err; |
99 | } | 99 | } |
100 | 100 | ||
101 | int fpu_emulator_restore_context32(struct sigcontext32 *sc) | 101 | int fpu_emulator_restore_context32(struct sigcontext32 __user *sc) |
102 | { | 102 | { |
103 | int i; | 103 | int i; |
104 | int err = 0; | 104 | int err = 0; |
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c index 9d08608aaa51..69a8bcfe72b2 100644 --- a/arch/mips/oprofile/op_model_mipsxx.c +++ b/arch/mips/oprofile/op_model_mipsxx.c | |||
@@ -74,13 +74,13 @@ static inline void w_c0_ ## r ## n(unsigned int value) \ | |||
74 | 74 | ||
75 | __define_perf_accessors(perfcntr, 0, 2) | 75 | __define_perf_accessors(perfcntr, 0, 2) |
76 | __define_perf_accessors(perfcntr, 1, 3) | 76 | __define_perf_accessors(perfcntr, 1, 3) |
77 | __define_perf_accessors(perfcntr, 2, 2) | 77 | __define_perf_accessors(perfcntr, 2, 0) |
78 | __define_perf_accessors(perfcntr, 3, 2) | 78 | __define_perf_accessors(perfcntr, 3, 1) |
79 | 79 | ||
80 | __define_perf_accessors(perfctrl, 0, 2) | 80 | __define_perf_accessors(perfctrl, 0, 2) |
81 | __define_perf_accessors(perfctrl, 1, 3) | 81 | __define_perf_accessors(perfctrl, 1, 3) |
82 | __define_perf_accessors(perfctrl, 2, 2) | 82 | __define_perf_accessors(perfctrl, 2, 0) |
83 | __define_perf_accessors(perfctrl, 3, 2) | 83 | __define_perf_accessors(perfctrl, 3, 1) |
84 | 84 | ||
85 | struct op_mips_model op_model_mipsxx_ops; | 85 | struct op_mips_model op_model_mipsxx_ops; |
86 | 86 | ||
@@ -97,7 +97,6 @@ static void mipsxx_reg_setup(struct op_counter_config *ctr) | |||
97 | int i; | 97 | int i; |
98 | 98 | ||
99 | /* Compute the performance counter control word. */ | 99 | /* Compute the performance counter control word. */ |
100 | /* For now count kernel and user mode */ | ||
101 | for (i = 0; i < counters; i++) { | 100 | for (i = 0; i < counters; i++) { |
102 | reg.control[i] = 0; | 101 | reg.control[i] = 0; |
103 | reg.counter[i] = 0; | 102 | reg.counter[i] = 0; |
@@ -234,9 +233,6 @@ static inline int n_counters(void) | |||
234 | counters = __n_counters(); | 233 | counters = __n_counters(); |
235 | } | 234 | } |
236 | 235 | ||
237 | #ifdef CONFIG_MIPS_MT_SMP | ||
238 | counters >> 1; | ||
239 | #endif | ||
240 | return counters; | 236 | return counters; |
241 | } | 237 | } |
242 | 238 | ||
@@ -270,6 +266,10 @@ static int __init mipsxx_init(void) | |||
270 | 266 | ||
271 | reset_counters(counters); | 267 | reset_counters(counters); |
272 | 268 | ||
269 | #ifdef CONFIG_MIPS_MT_SMP | ||
270 | counters >>= 1; | ||
271 | #endif | ||
272 | |||
273 | op_model_mipsxx_ops.num_counters = counters; | 273 | op_model_mipsxx_ops.num_counters = counters; |
274 | switch (current_cpu_data.cputype) { | 274 | switch (current_cpu_data.cputype) { |
275 | case CPU_20KC: | 275 | case CPU_20KC: |
@@ -326,7 +326,11 @@ static int __init mipsxx_init(void) | |||
326 | 326 | ||
327 | static void mipsxx_exit(void) | 327 | static void mipsxx_exit(void) |
328 | { | 328 | { |
329 | reset_counters(op_model_mipsxx_ops.num_counters); | 329 | int counters = op_model_mipsxx_ops.num_counters; |
330 | #ifdef CONFIG_MIPS_MT_SMP | ||
331 | counters <<= 1; | ||
332 | #endif | ||
333 | reset_counters(counters); | ||
330 | 334 | ||
331 | perf_irq = null_perf_irq; | 335 | perf_irq = null_perf_irq; |
332 | } | 336 | } |
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c index d48665ebd33c..b1c4805a0b92 100644 --- a/arch/mips/philips/pnx8550/common/int.c +++ b/arch/mips/philips/pnx8550/common/int.c | |||
@@ -204,19 +204,7 @@ void __init arch_init_irq(void) | |||
204 | * Note, PCI INTA is active low on the bus, but inverted | 204 | * Note, PCI INTA is active low on the bus, but inverted |
205 | * in the GIC, so to us it's active high. | 205 | * in the GIC, so to us it's active high. |
206 | */ | 206 | */ |
207 | #ifdef CONFIG_PNX8550_V2PCI | 207 | PNX8550_GIC_REQ(i - PNX8550_INT_GIC_MIN) = 0x1E000000; |
208 | if (gic_int_line == (PNX8550_INT_GPIO0 - PNX8550_INT_GIC_MIN)) { | ||
209 | /* PCI INT through gpio 8, which is setup in | ||
210 | * pnx8550_setup.c and routed to GPIO | ||
211 | * Interrupt Level 0 (GPIO Connection 58). | ||
212 | * Set it active low. */ | ||
213 | |||
214 | PNX8550_GIC_REQ(gic_int_line) = 0x1E020000; | ||
215 | } else | ||
216 | #endif | ||
217 | { | ||
218 | PNX8550_GIC_REQ(i - PNX8550_INT_GIC_MIN) = 0x1E000000; | ||
219 | } | ||
220 | 208 | ||
221 | /* mask/priority is still 0 so we will not get any | 209 | /* mask/priority is still 0 so we will not get any |
222 | * interrupts until it is unmasked */ | 210 | * interrupts until it is unmasked */ |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index 24367319ce24..cf7e316ad4f6 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-rc5 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Mon Jan 22 22:12:56 2007 | 4 | # Fri Mar 9 23:34:53 2007 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
@@ -61,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
61 | CONFIG_SWAP=y | 61 | CONFIG_SWAP=y |
62 | CONFIG_SYSVIPC=y | 62 | CONFIG_SYSVIPC=y |
63 | # CONFIG_IPC_NS is not set | 63 | # CONFIG_IPC_NS is not set |
64 | CONFIG_SYSVIPC_SYSCTL=y | ||
64 | # CONFIG_POSIX_MQUEUE is not set | 65 | # CONFIG_POSIX_MQUEUE is not set |
65 | # CONFIG_BSD_PROCESS_ACCT is not set | 66 | # CONFIG_BSD_PROCESS_ACCT is not set |
66 | # CONFIG_TASKSTATS is not set | 67 | # CONFIG_TASKSTATS is not set |
@@ -71,6 +72,7 @@ CONFIG_IKCONFIG_PROC=y | |||
71 | CONFIG_CPUSETS=y | 72 | CONFIG_CPUSETS=y |
72 | CONFIG_SYSFS_DEPRECATED=y | 73 | CONFIG_SYSFS_DEPRECATED=y |
73 | # CONFIG_RELAY is not set | 74 | # CONFIG_RELAY is not set |
75 | CONFIG_BLK_DEV_INITRD=y | ||
74 | CONFIG_INITRAMFS_SOURCE="" | 76 | CONFIG_INITRAMFS_SOURCE="" |
75 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 77 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
76 | CONFIG_SYSCTL=y | 78 | CONFIG_SYSCTL=y |
@@ -133,6 +135,7 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
133 | # CONFIG_PPC_PSERIES is not set | 135 | # CONFIG_PPC_PSERIES is not set |
134 | # CONFIG_PPC_ISERIES is not set | 136 | # CONFIG_PPC_ISERIES is not set |
135 | # CONFIG_PPC_MPC52xx is not set | 137 | # CONFIG_PPC_MPC52xx is not set |
138 | # CONFIG_PPC_MPC5200 is not set | ||
136 | # CONFIG_PPC_PMAC is not set | 139 | # CONFIG_PPC_PMAC is not set |
137 | # CONFIG_PPC_MAPLE is not set | 140 | # CONFIG_PPC_MAPLE is not set |
138 | # CONFIG_PPC_PASEMI is not set | 141 | # CONFIG_PPC_PASEMI is not set |
@@ -140,8 +143,10 @@ CONFIG_PPC_CELL=y | |||
140 | CONFIG_PPC_CELL_NATIVE=y | 143 | CONFIG_PPC_CELL_NATIVE=y |
141 | CONFIG_PPC_IBM_CELL_BLADE=y | 144 | CONFIG_PPC_IBM_CELL_BLADE=y |
142 | CONFIG_PPC_PS3=y | 145 | CONFIG_PPC_PS3=y |
146 | CONFIG_PPC_CELLEB=y | ||
143 | CONFIG_PPC_NATIVE=y | 147 | CONFIG_PPC_NATIVE=y |
144 | CONFIG_UDBG_RTAS_CONSOLE=y | 148 | CONFIG_UDBG_RTAS_CONSOLE=y |
149 | CONFIG_PPC_UDBG_BEAT=y | ||
145 | # CONFIG_U3_DART is not set | 150 | # CONFIG_U3_DART is not set |
146 | CONFIG_PPC_RTAS=y | 151 | CONFIG_PPC_RTAS=y |
147 | # CONFIG_RTAS_ERROR_LOGGING is not set | 152 | # CONFIG_RTAS_ERROR_LOGGING is not set |
@@ -181,10 +186,13 @@ CONFIG_CBE_CPUFREQ=m | |||
181 | # | 186 | # |
182 | # PS3 Platform Options | 187 | # PS3 Platform Options |
183 | # | 188 | # |
189 | # CONFIG_PS3_ADVANCED is not set | ||
184 | CONFIG_PS3_HTAB_SIZE=20 | 190 | CONFIG_PS3_HTAB_SIZE=20 |
185 | # CONFIG_PS3_DYNAMIC_DMA is not set | 191 | # CONFIG_PS3_DYNAMIC_DMA is not set |
186 | CONFIG_PS3_USE_LPAR_ADDR=y | 192 | CONFIG_PS3_USE_LPAR_ADDR=y |
187 | CONFIG_PS3_VUART=y | 193 | CONFIG_PS3_VUART=y |
194 | CONFIG_PS3_PS3AV=y | ||
195 | CONFIG_PS3_SYS_MANAGER=y | ||
188 | 196 | ||
189 | # | 197 | # |
190 | # Kernel options | 198 | # Kernel options |
@@ -226,6 +234,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y | |||
226 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 234 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
227 | CONFIG_MIGRATION=y | 235 | CONFIG_MIGRATION=y |
228 | CONFIG_RESOURCES_64BIT=y | 236 | CONFIG_RESOURCES_64BIT=y |
237 | CONFIG_ZONE_DMA_FLAG=1 | ||
229 | CONFIG_ARCH_MEMORY_PROBE=y | 238 | CONFIG_ARCH_MEMORY_PROBE=y |
230 | CONFIG_NODES_SPAN_OTHER_NODES=y | 239 | CONFIG_NODES_SPAN_OTHER_NODES=y |
231 | CONFIG_PPC_64K_PAGES=y | 240 | CONFIG_PPC_64K_PAGES=y |
@@ -239,6 +248,7 @@ CONFIG_ISA_DMA_API=y | |||
239 | # | 248 | # |
240 | # Bus options | 249 | # Bus options |
241 | # | 250 | # |
251 | CONFIG_ZONE_DMA=y | ||
242 | CONFIG_GENERIC_ISA_DMA=y | 252 | CONFIG_GENERIC_ISA_DMA=y |
243 | # CONFIG_MPIC_WEIRD is not set | 253 | # CONFIG_MPIC_WEIRD is not set |
244 | # CONFIG_PPC_I8259 is not set | 254 | # CONFIG_PPC_I8259 is not set |
@@ -274,6 +284,7 @@ CONFIG_UNIX=y | |||
274 | CONFIG_XFRM=y | 284 | CONFIG_XFRM=y |
275 | # CONFIG_XFRM_USER is not set | 285 | # CONFIG_XFRM_USER is not set |
276 | # CONFIG_XFRM_SUB_POLICY is not set | 286 | # CONFIG_XFRM_SUB_POLICY is not set |
287 | # CONFIG_XFRM_MIGRATE is not set | ||
277 | # CONFIG_NET_KEY is not set | 288 | # CONFIG_NET_KEY is not set |
278 | CONFIG_INET=y | 289 | CONFIG_INET=y |
279 | CONFIG_IP_MULTICAST=y | 290 | CONFIG_IP_MULTICAST=y |
@@ -340,6 +351,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m | |||
340 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 351 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
341 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 352 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
342 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 353 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
354 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
343 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 355 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
344 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | 356 | CONFIG_NETFILTER_XT_MATCH_DCCP=m |
345 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 357 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
@@ -376,7 +388,6 @@ CONFIG_IP_NF_FILTER=m | |||
376 | CONFIG_IP_NF_TARGET_REJECT=m | 388 | CONFIG_IP_NF_TARGET_REJECT=m |
377 | CONFIG_IP_NF_TARGET_LOG=m | 389 | CONFIG_IP_NF_TARGET_LOG=m |
378 | CONFIG_IP_NF_TARGET_ULOG=m | 390 | CONFIG_IP_NF_TARGET_ULOG=m |
379 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
380 | CONFIG_IP_NF_MANGLE=m | 391 | CONFIG_IP_NF_MANGLE=m |
381 | CONFIG_IP_NF_TARGET_TOS=m | 392 | CONFIG_IP_NF_TARGET_TOS=m |
382 | CONFIG_IP_NF_TARGET_ECN=m | 393 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -444,6 +455,7 @@ CONFIG_STANDALONE=y | |||
444 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 455 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
445 | CONFIG_FW_LOADER=y | 456 | CONFIG_FW_LOADER=y |
446 | # CONFIG_DEBUG_DRIVER is not set | 457 | # CONFIG_DEBUG_DRIVER is not set |
458 | # CONFIG_DEBUG_DEVRES is not set | ||
447 | # CONFIG_SYS_HYPERVISOR is not set | 459 | # CONFIG_SYS_HYPERVISOR is not set |
448 | 460 | ||
449 | # | 461 | # |
@@ -464,6 +476,7 @@ CONFIG_FW_LOADER=y | |||
464 | # | 476 | # |
465 | # Plug and Play support | 477 | # Plug and Play support |
466 | # | 478 | # |
479 | # CONFIG_PNPACPI is not set | ||
467 | 480 | ||
468 | # | 481 | # |
469 | # Block devices | 482 | # Block devices |
@@ -483,7 +496,6 @@ CONFIG_BLK_DEV_RAM=y | |||
483 | CONFIG_BLK_DEV_RAM_COUNT=16 | 496 | CONFIG_BLK_DEV_RAM_COUNT=16 |
484 | CONFIG_BLK_DEV_RAM_SIZE=131072 | 497 | CONFIG_BLK_DEV_RAM_SIZE=131072 |
485 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 498 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
486 | CONFIG_BLK_DEV_INITRD=y | ||
487 | # CONFIG_CDROM_PKTCDVD is not set | 499 | # CONFIG_CDROM_PKTCDVD is not set |
488 | # CONFIG_ATA_OVER_ETH is not set | 500 | # CONFIG_ATA_OVER_ETH is not set |
489 | 501 | ||
@@ -537,6 +549,7 @@ CONFIG_BLK_DEV_AEC62XX=y | |||
537 | # CONFIG_BLK_DEV_JMICRON is not set | 549 | # CONFIG_BLK_DEV_JMICRON is not set |
538 | # CONFIG_BLK_DEV_SC1200 is not set | 550 | # CONFIG_BLK_DEV_SC1200 is not set |
539 | # CONFIG_BLK_DEV_PIIX is not set | 551 | # CONFIG_BLK_DEV_PIIX is not set |
552 | # CONFIG_BLK_DEV_IT8213 is not set | ||
540 | # CONFIG_BLK_DEV_IT821X is not set | 553 | # CONFIG_BLK_DEV_IT821X is not set |
541 | # CONFIG_BLK_DEV_NS87415 is not set | 554 | # CONFIG_BLK_DEV_NS87415 is not set |
542 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 555 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -547,6 +560,8 @@ CONFIG_BLK_DEV_SIIMAGE=y | |||
547 | # CONFIG_BLK_DEV_SLC90E66 is not set | 560 | # CONFIG_BLK_DEV_SLC90E66 is not set |
548 | # CONFIG_BLK_DEV_TRM290 is not set | 561 | # CONFIG_BLK_DEV_TRM290 is not set |
549 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 562 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
563 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
564 | CONFIG_BLK_DEV_IDE_CELLEB=y | ||
550 | # CONFIG_IDE_ARM is not set | 565 | # CONFIG_IDE_ARM is not set |
551 | CONFIG_BLK_DEV_IDEDMA=y | 566 | CONFIG_BLK_DEV_IDEDMA=y |
552 | # CONFIG_IDEDMA_IVB is not set | 567 | # CONFIG_IDEDMA_IVB is not set |
@@ -557,7 +572,7 @@ CONFIG_IDEDMA_AUTO=y | |||
557 | # SCSI device support | 572 | # SCSI device support |
558 | # | 573 | # |
559 | # CONFIG_RAID_ATTRS is not set | 574 | # CONFIG_RAID_ATTRS is not set |
560 | CONFIG_SCSI=m | 575 | CONFIG_SCSI=y |
561 | # CONFIG_SCSI_TGT is not set | 576 | # CONFIG_SCSI_TGT is not set |
562 | # CONFIG_SCSI_NETLINK is not set | 577 | # CONFIG_SCSI_NETLINK is not set |
563 | CONFIG_SCSI_PROC_FS=y | 578 | CONFIG_SCSI_PROC_FS=y |
@@ -565,12 +580,12 @@ CONFIG_SCSI_PROC_FS=y | |||
565 | # | 580 | # |
566 | # SCSI support type (disk, tape, CD-ROM) | 581 | # SCSI support type (disk, tape, CD-ROM) |
567 | # | 582 | # |
568 | CONFIG_BLK_DEV_SD=m | 583 | CONFIG_BLK_DEV_SD=y |
569 | # CONFIG_CHR_DEV_ST is not set | 584 | # CONFIG_CHR_DEV_ST is not set |
570 | # CONFIG_CHR_DEV_OSST is not set | 585 | # CONFIG_CHR_DEV_OSST is not set |
571 | CONFIG_BLK_DEV_SR=m | 586 | CONFIG_BLK_DEV_SR=m |
572 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 587 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
573 | CONFIG_CHR_DEV_SG=m | 588 | CONFIG_CHR_DEV_SG=y |
574 | # CONFIG_CHR_DEV_SCH is not set | 589 | # CONFIG_CHR_DEV_SCH is not set |
575 | 590 | ||
576 | # | 591 | # |
@@ -587,7 +602,7 @@ CONFIG_CHR_DEV_SG=m | |||
587 | # CONFIG_SCSI_SPI_ATTRS is not set | 602 | # CONFIG_SCSI_SPI_ATTRS is not set |
588 | # CONFIG_SCSI_FC_ATTRS is not set | 603 | # CONFIG_SCSI_FC_ATTRS is not set |
589 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 604 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
590 | # CONFIG_SCSI_SAS_ATTRS is not set | 605 | CONFIG_SCSI_SAS_ATTRS=y |
591 | # CONFIG_SCSI_SAS_LIBSAS is not set | 606 | # CONFIG_SCSI_SAS_LIBSAS is not set |
592 | 607 | ||
593 | # | 608 | # |
@@ -617,6 +632,7 @@ CONFIG_CHR_DEV_SG=m | |||
617 | # CONFIG_SCSI_INIA100 is not set | 632 | # CONFIG_SCSI_INIA100 is not set |
618 | # CONFIG_SCSI_STEX is not set | 633 | # CONFIG_SCSI_STEX is not set |
619 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 634 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
635 | # CONFIG_SCSI_IPR is not set | ||
620 | # CONFIG_SCSI_QLOGIC_1280 is not set | 636 | # CONFIG_SCSI_QLOGIC_1280 is not set |
621 | # CONFIG_SCSI_QLA_FC is not set | 637 | # CONFIG_SCSI_QLA_FC is not set |
622 | # CONFIG_SCSI_QLA_ISCSI is not set | 638 | # CONFIG_SCSI_QLA_ISCSI is not set |
@@ -629,7 +645,60 @@ CONFIG_CHR_DEV_SG=m | |||
629 | # | 645 | # |
630 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | 646 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
631 | # | 647 | # |
632 | # CONFIG_ATA is not set | 648 | CONFIG_ATA=y |
649 | # CONFIG_ATA_NONSTANDARD is not set | ||
650 | # CONFIG_SATA_AHCI is not set | ||
651 | # CONFIG_SATA_SVW is not set | ||
652 | # CONFIG_ATA_PIIX is not set | ||
653 | # CONFIG_SATA_MV is not set | ||
654 | # CONFIG_SATA_NV is not set | ||
655 | # CONFIG_PDC_ADMA is not set | ||
656 | # CONFIG_SATA_QSTOR is not set | ||
657 | CONFIG_SATA_PROMISE=y | ||
658 | # CONFIG_SATA_SX4 is not set | ||
659 | # CONFIG_SATA_SIL is not set | ||
660 | # CONFIG_SATA_SIL24 is not set | ||
661 | # CONFIG_SATA_SIS is not set | ||
662 | # CONFIG_SATA_ULI is not set | ||
663 | # CONFIG_SATA_VIA is not set | ||
664 | # CONFIG_SATA_VITESSE is not set | ||
665 | # CONFIG_SATA_INIC162X is not set | ||
666 | # CONFIG_PATA_ALI is not set | ||
667 | # CONFIG_PATA_AMD is not set | ||
668 | # CONFIG_PATA_ARTOP is not set | ||
669 | # CONFIG_PATA_ATIIXP is not set | ||
670 | # CONFIG_PATA_CMD64X is not set | ||
671 | # CONFIG_PATA_CS5520 is not set | ||
672 | # CONFIG_PATA_CS5530 is not set | ||
673 | # CONFIG_PATA_CYPRESS is not set | ||
674 | # CONFIG_PATA_EFAR is not set | ||
675 | # CONFIG_ATA_GENERIC is not set | ||
676 | # CONFIG_PATA_HPT366 is not set | ||
677 | # CONFIG_PATA_HPT37X is not set | ||
678 | # CONFIG_PATA_HPT3X2N is not set | ||
679 | # CONFIG_PATA_HPT3X3 is not set | ||
680 | # CONFIG_PATA_IT821X is not set | ||
681 | # CONFIG_PATA_IT8213 is not set | ||
682 | # CONFIG_PATA_JMICRON is not set | ||
683 | # CONFIG_PATA_TRIFLEX is not set | ||
684 | # CONFIG_PATA_MARVELL is not set | ||
685 | # CONFIG_PATA_MPIIX is not set | ||
686 | # CONFIG_PATA_OLDPIIX is not set | ||
687 | # CONFIG_PATA_NETCELL is not set | ||
688 | # CONFIG_PATA_NS87410 is not set | ||
689 | # CONFIG_PATA_OPTI is not set | ||
690 | # CONFIG_PATA_OPTIDMA is not set | ||
691 | # CONFIG_PATA_PDC_OLD is not set | ||
692 | # CONFIG_PATA_RADISYS is not set | ||
693 | # CONFIG_PATA_RZ1000 is not set | ||
694 | # CONFIG_PATA_SC1200 is not set | ||
695 | # CONFIG_PATA_SERVERWORKS is not set | ||
696 | CONFIG_PATA_PDC2027X=m | ||
697 | # CONFIG_PATA_SIL680 is not set | ||
698 | # CONFIG_PATA_SIS is not set | ||
699 | # CONFIG_PATA_VIA is not set | ||
700 | # CONFIG_PATA_WINBOND is not set | ||
701 | # CONFIG_PATA_SCC is not set | ||
633 | 702 | ||
634 | # | 703 | # |
635 | # Multi-device support (RAID and LVM) | 704 | # Multi-device support (RAID and LVM) |
@@ -655,10 +724,12 @@ CONFIG_DM_MULTIPATH=m | |||
655 | # | 724 | # |
656 | # Fusion MPT device support | 725 | # Fusion MPT device support |
657 | # | 726 | # |
658 | # CONFIG_FUSION is not set | 727 | CONFIG_FUSION=y |
659 | # CONFIG_FUSION_SPI is not set | 728 | # CONFIG_FUSION_SPI is not set |
660 | # CONFIG_FUSION_FC is not set | 729 | # CONFIG_FUSION_FC is not set |
661 | # CONFIG_FUSION_SAS is not set | 730 | CONFIG_FUSION_SAS=y |
731 | CONFIG_FUSION_MAX_SGE=128 | ||
732 | # CONFIG_FUSION_CTL is not set | ||
662 | 733 | ||
663 | # | 734 | # |
664 | # IEEE 1394 (FireWire) support | 735 | # IEEE 1394 (FireWire) support |
@@ -732,15 +803,18 @@ CONFIG_TIGON3=y | |||
732 | # CONFIG_BNX2 is not set | 803 | # CONFIG_BNX2 is not set |
733 | CONFIG_SPIDER_NET=y | 804 | CONFIG_SPIDER_NET=y |
734 | # CONFIG_QLA3XXX is not set | 805 | # CONFIG_QLA3XXX is not set |
806 | # CONFIG_ATL1 is not set | ||
735 | 807 | ||
736 | # | 808 | # |
737 | # Ethernet (10000 Mbit) | 809 | # Ethernet (10000 Mbit) |
738 | # | 810 | # |
739 | # CONFIG_CHELSIO_T1 is not set | 811 | # CONFIG_CHELSIO_T1 is not set |
812 | # CONFIG_CHELSIO_T3 is not set | ||
740 | # CONFIG_IXGB is not set | 813 | # CONFIG_IXGB is not set |
741 | # CONFIG_S2IO is not set | 814 | # CONFIG_S2IO is not set |
742 | # CONFIG_MYRI10GE is not set | 815 | # CONFIG_MYRI10GE is not set |
743 | # CONFIG_NETXEN_NIC is not set | 816 | # CONFIG_NETXEN_NIC is not set |
817 | # CONFIG_PASEMI_MAC is not set | ||
744 | 818 | ||
745 | # | 819 | # |
746 | # Token Ring devices | 820 | # Token Ring devices |
@@ -853,16 +927,27 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | |||
853 | # | 927 | # |
854 | CONFIG_SERIAL_CORE=y | 928 | CONFIG_SERIAL_CORE=y |
855 | CONFIG_SERIAL_CORE_CONSOLE=y | 929 | CONFIG_SERIAL_CORE_CONSOLE=y |
930 | CONFIG_SERIAL_TXX9=y | ||
931 | CONFIG_HAS_TXX9_SERIAL=y | ||
932 | CONFIG_SERIAL_TXX9_NR_UARTS=2 | ||
933 | CONFIG_SERIAL_TXX9_CONSOLE=y | ||
856 | # CONFIG_SERIAL_JSM is not set | 934 | # CONFIG_SERIAL_JSM is not set |
935 | CONFIG_SERIAL_OF_PLATFORM=y | ||
857 | CONFIG_UNIX98_PTYS=y | 936 | CONFIG_UNIX98_PTYS=y |
858 | # CONFIG_LEGACY_PTYS is not set | 937 | # CONFIG_LEGACY_PTYS is not set |
859 | CONFIG_HVC_DRIVER=y | 938 | CONFIG_HVC_DRIVER=y |
860 | CONFIG_HVC_RTAS=y | 939 | CONFIG_HVC_RTAS=y |
940 | # CONFIG_HVC_BEAT is not set | ||
861 | 941 | ||
862 | # | 942 | # |
863 | # IPMI | 943 | # IPMI |
864 | # | 944 | # |
865 | # CONFIG_IPMI_HANDLER is not set | 945 | CONFIG_IPMI_HANDLER=m |
946 | # CONFIG_IPMI_PANIC_EVENT is not set | ||
947 | CONFIG_IPMI_DEVICE_INTERFACE=m | ||
948 | CONFIG_IPMI_SI=m | ||
949 | CONFIG_IPMI_WATCHDOG=m | ||
950 | CONFIG_IPMI_POWEROFF=m | ||
866 | 951 | ||
867 | # | 952 | # |
868 | # Watchdog Cards | 953 | # Watchdog Cards |
@@ -874,7 +959,7 @@ CONFIG_WATCHDOG=y | |||
874 | # Watchdog Device Drivers | 959 | # Watchdog Device Drivers |
875 | # | 960 | # |
876 | # CONFIG_SOFT_WATCHDOG is not set | 961 | # CONFIG_SOFT_WATCHDOG is not set |
877 | CONFIG_WATCHDOG_RTAS=y | 962 | # CONFIG_WATCHDOG_RTAS is not set |
878 | 963 | ||
879 | # | 964 | # |
880 | # PCI-based Watchdog Cards | 965 | # PCI-based Watchdog Cards |
@@ -929,6 +1014,7 @@ CONFIG_I2C_ALGOBIT=y | |||
929 | # CONFIG_I2C_NFORCE2 is not set | 1014 | # CONFIG_I2C_NFORCE2 is not set |
930 | # CONFIG_I2C_OCORES is not set | 1015 | # CONFIG_I2C_OCORES is not set |
931 | # CONFIG_I2C_PARPORT_LIGHT is not set | 1016 | # CONFIG_I2C_PARPORT_LIGHT is not set |
1017 | # CONFIG_I2C_PASEMI is not set | ||
932 | # CONFIG_I2C_PROSAVAGE is not set | 1018 | # CONFIG_I2C_PROSAVAGE is not set |
933 | # CONFIG_I2C_SAVAGE4 is not set | 1019 | # CONFIG_I2C_SAVAGE4 is not set |
934 | # CONFIG_I2C_SIS5595 is not set | 1020 | # CONFIG_I2C_SIS5595 is not set |
@@ -973,6 +1059,11 @@ CONFIG_I2C_ALGOBIT=y | |||
973 | # CONFIG_HWMON_VID is not set | 1059 | # CONFIG_HWMON_VID is not set |
974 | 1060 | ||
975 | # | 1061 | # |
1062 | # Multifunction device drivers | ||
1063 | # | ||
1064 | # CONFIG_MFD_SM501 is not set | ||
1065 | |||
1066 | # | ||
976 | # Multimedia devices | 1067 | # Multimedia devices |
977 | # | 1068 | # |
978 | # CONFIG_VIDEO_DEV is not set | 1069 | # CONFIG_VIDEO_DEV is not set |
@@ -986,7 +1077,7 @@ CONFIG_I2C_ALGOBIT=y | |||
986 | # | 1077 | # |
987 | # Graphics support | 1078 | # Graphics support |
988 | # | 1079 | # |
989 | CONFIG_FIRMWARE_EDID=y | 1080 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
990 | # CONFIG_FB is not set | 1081 | # CONFIG_FB is not set |
991 | # CONFIG_FB_IBM_GXT4500 is not set | 1082 | # CONFIG_FB_IBM_GXT4500 is not set |
992 | 1083 | ||
@@ -995,7 +1086,6 @@ CONFIG_FIRMWARE_EDID=y | |||
995 | # | 1086 | # |
996 | # CONFIG_VGA_CONSOLE is not set | 1087 | # CONFIG_VGA_CONSOLE is not set |
997 | CONFIG_DUMMY_CONSOLE=y | 1088 | CONFIG_DUMMY_CONSOLE=y |
998 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
999 | 1089 | ||
1000 | # | 1090 | # |
1001 | # Sound | 1091 | # Sound |
@@ -1006,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
1006 | # HID Devices | 1096 | # HID Devices |
1007 | # | 1097 | # |
1008 | CONFIG_HID=m | 1098 | CONFIG_HID=m |
1099 | # CONFIG_HID_DEBUG is not set | ||
1009 | 1100 | ||
1010 | # | 1101 | # |
1011 | # USB support | 1102 | # USB support |
@@ -1020,9 +1111,7 @@ CONFIG_USB=m | |||
1020 | # Miscellaneous USB options | 1111 | # Miscellaneous USB options |
1021 | # | 1112 | # |
1022 | CONFIG_USB_DEVICEFS=y | 1113 | CONFIG_USB_DEVICEFS=y |
1023 | # CONFIG_USB_BANDWIDTH is not set | ||
1024 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1114 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1025 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
1026 | # CONFIG_USB_OTG is not set | 1115 | # CONFIG_USB_OTG is not set |
1027 | 1116 | ||
1028 | # | 1117 | # |
@@ -1032,9 +1121,15 @@ CONFIG_USB_EHCI_HCD=m | |||
1032 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 1121 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
1033 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1122 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1034 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1123 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1124 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
1035 | # CONFIG_USB_ISP116X_HCD is not set | 1125 | # CONFIG_USB_ISP116X_HCD is not set |
1036 | CONFIG_USB_OHCI_HCD=m | 1126 | CONFIG_USB_OHCI_HCD=m |
1037 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1127 | CONFIG_USB_OHCI_HCD_PPC_OF=y |
1128 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | ||
1129 | # CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set | ||
1130 | CONFIG_USB_OHCI_HCD_PCI=y | ||
1131 | CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y | ||
1132 | CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | ||
1038 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1133 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1039 | # CONFIG_USB_UHCI_HCD is not set | 1134 | # CONFIG_USB_UHCI_HCD is not set |
1040 | # CONFIG_USB_SL811_HCD is not set | 1135 | # CONFIG_USB_SL811_HCD is not set |
@@ -1088,6 +1183,7 @@ CONFIG_USB_STORAGE=m | |||
1088 | # CONFIG_USB_ATI_REMOTE2 is not set | 1183 | # CONFIG_USB_ATI_REMOTE2 is not set |
1089 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1184 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1090 | # CONFIG_USB_APPLETOUCH is not set | 1185 | # CONFIG_USB_APPLETOUCH is not set |
1186 | # CONFIG_USB_GTCO is not set | ||
1091 | 1187 | ||
1092 | # | 1188 | # |
1093 | # USB Imaging devices | 1189 | # USB Imaging devices |
@@ -1125,6 +1221,7 @@ CONFIG_USB_MON=y | |||
1125 | # CONFIG_USB_RIO500 is not set | 1221 | # CONFIG_USB_RIO500 is not set |
1126 | # CONFIG_USB_LEGOTOWER is not set | 1222 | # CONFIG_USB_LEGOTOWER is not set |
1127 | # CONFIG_USB_LCD is not set | 1223 | # CONFIG_USB_LCD is not set |
1224 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1128 | # CONFIG_USB_LED is not set | 1225 | # CONFIG_USB_LED is not set |
1129 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1226 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1130 | # CONFIG_USB_CYTHERM is not set | 1227 | # CONFIG_USB_CYTHERM is not set |
@@ -1135,6 +1232,7 @@ CONFIG_USB_MON=y | |||
1135 | # CONFIG_USB_SISUSBVGA is not set | 1232 | # CONFIG_USB_SISUSBVGA is not set |
1136 | # CONFIG_USB_LD is not set | 1233 | # CONFIG_USB_LD is not set |
1137 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1234 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1235 | # CONFIG_USB_IOWARRIOR is not set | ||
1138 | # CONFIG_USB_TEST is not set | 1236 | # CONFIG_USB_TEST is not set |
1139 | 1237 | ||
1140 | # | 1238 | # |
@@ -1175,6 +1273,7 @@ CONFIG_INFINIBAND_MTHCA=m | |||
1175 | CONFIG_INFINIBAND_MTHCA_DEBUG=y | 1273 | CONFIG_INFINIBAND_MTHCA_DEBUG=y |
1176 | # CONFIG_INFINIBAND_AMSO1100 is not set | 1274 | # CONFIG_INFINIBAND_AMSO1100 is not set |
1177 | CONFIG_INFINIBAND_IPOIB=m | 1275 | CONFIG_INFINIBAND_IPOIB=m |
1276 | # CONFIG_INFINIBAND_IPOIB_CM is not set | ||
1178 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1277 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
1179 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | 1278 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y |
1180 | # CONFIG_INFINIBAND_SRP is not set | 1279 | # CONFIG_INFINIBAND_SRP is not set |
@@ -1203,6 +1302,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | |||
1203 | # | 1302 | # |
1204 | 1303 | ||
1205 | # | 1304 | # |
1305 | # Auxiliary Display support | ||
1306 | # | ||
1307 | |||
1308 | # | ||
1206 | # Virtualization | 1309 | # Virtualization |
1207 | # | 1310 | # |
1208 | 1311 | ||
@@ -1395,7 +1498,8 @@ CONFIG_TEXTSEARCH_KMP=m | |||
1395 | CONFIG_TEXTSEARCH_BM=m | 1498 | CONFIG_TEXTSEARCH_BM=m |
1396 | CONFIG_TEXTSEARCH_FSM=m | 1499 | CONFIG_TEXTSEARCH_FSM=m |
1397 | CONFIG_PLIST=y | 1500 | CONFIG_PLIST=y |
1398 | CONFIG_IOMAP_COPY=y | 1501 | CONFIG_HAS_IOMEM=y |
1502 | CONFIG_HAS_IOPORT=y | ||
1399 | 1503 | ||
1400 | # | 1504 | # |
1401 | # Instrumentation Support | 1505 | # Instrumentation Support |
@@ -1414,15 +1518,16 @@ CONFIG_MAGIC_SYSRQ=y | |||
1414 | CONFIG_DEBUG_FS=y | 1518 | CONFIG_DEBUG_FS=y |
1415 | # CONFIG_HEADERS_CHECK is not set | 1519 | # CONFIG_HEADERS_CHECK is not set |
1416 | CONFIG_DEBUG_KERNEL=y | 1520 | CONFIG_DEBUG_KERNEL=y |
1521 | # CONFIG_DEBUG_SHIRQ is not set | ||
1417 | CONFIG_LOG_BUF_SHIFT=15 | 1522 | CONFIG_LOG_BUF_SHIFT=15 |
1418 | CONFIG_DETECT_SOFTLOCKUP=y | 1523 | # CONFIG_DETECT_SOFTLOCKUP is not set |
1419 | # CONFIG_SCHEDSTATS is not set | 1524 | # CONFIG_SCHEDSTATS is not set |
1525 | # CONFIG_TIMER_STATS is not set | ||
1420 | # CONFIG_DEBUG_SLAB is not set | 1526 | # CONFIG_DEBUG_SLAB is not set |
1421 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1527 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1422 | # CONFIG_RT_MUTEX_TESTER is not set | 1528 | # CONFIG_RT_MUTEX_TESTER is not set |
1423 | # CONFIG_DEBUG_SPINLOCK is not set | 1529 | # CONFIG_DEBUG_SPINLOCK is not set |
1424 | CONFIG_DEBUG_MUTEXES=y | 1530 | CONFIG_DEBUG_MUTEXES=y |
1425 | # CONFIG_DEBUG_RWSEMS is not set | ||
1426 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 1531 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
1427 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1532 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1428 | # CONFIG_DEBUG_KOBJECT is not set | 1533 | # CONFIG_DEBUG_KOBJECT is not set |
@@ -1432,6 +1537,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1432 | # CONFIG_DEBUG_LIST is not set | 1537 | # CONFIG_DEBUG_LIST is not set |
1433 | # CONFIG_FORCED_INLINING is not set | 1538 | # CONFIG_FORCED_INLINING is not set |
1434 | # CONFIG_RCU_TORTURE_TEST is not set | 1539 | # CONFIG_RCU_TORTURE_TEST is not set |
1540 | # CONFIG_FAULT_INJECTION is not set | ||
1435 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1541 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
1436 | # CONFIG_DEBUG_STACK_USAGE is not set | 1542 | # CONFIG_DEBUG_STACK_USAGE is not set |
1437 | CONFIG_DEBUGGER=y | 1543 | CONFIG_DEBUGGER=y |
@@ -1469,8 +1575,10 @@ CONFIG_CRYPTO_SHA1=m | |||
1469 | # CONFIG_CRYPTO_GF128MUL is not set | 1575 | # CONFIG_CRYPTO_GF128MUL is not set |
1470 | CONFIG_CRYPTO_ECB=m | 1576 | CONFIG_CRYPTO_ECB=m |
1471 | CONFIG_CRYPTO_CBC=m | 1577 | CONFIG_CRYPTO_CBC=m |
1578 | CONFIG_CRYPTO_PCBC=m | ||
1472 | # CONFIG_CRYPTO_LRW is not set | 1579 | # CONFIG_CRYPTO_LRW is not set |
1473 | CONFIG_CRYPTO_DES=m | 1580 | CONFIG_CRYPTO_DES=m |
1581 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1474 | # CONFIG_CRYPTO_BLOWFISH is not set | 1582 | # CONFIG_CRYPTO_BLOWFISH is not set |
1475 | # CONFIG_CRYPTO_TWOFISH is not set | 1583 | # CONFIG_CRYPTO_TWOFISH is not set |
1476 | # CONFIG_CRYPTO_SERPENT is not set | 1584 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1484,6 +1592,7 @@ CONFIG_CRYPTO_DES=m | |||
1484 | CONFIG_CRYPTO_DEFLATE=m | 1592 | CONFIG_CRYPTO_DEFLATE=m |
1485 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1593 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1486 | # CONFIG_CRYPTO_CRC32C is not set | 1594 | # CONFIG_CRYPTO_CRC32C is not set |
1595 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1487 | # CONFIG_CRYPTO_TEST is not set | 1596 | # CONFIG_CRYPTO_TEST is not set |
1488 | 1597 | ||
1489 | # | 1598 | # |
diff --git a/arch/powerpc/kernel/udbg_16550.c b/arch/powerpc/kernel/udbg_16550.c index e738f93b42fe..a963f657222b 100644 --- a/arch/powerpc/kernel/udbg_16550.c +++ b/arch/powerpc/kernel/udbg_16550.c | |||
@@ -184,7 +184,7 @@ void udbg_pas_real_putc(char c) | |||
184 | 184 | ||
185 | void udbg_init_pas_realmode(void) | 185 | void udbg_init_pas_realmode(void) |
186 | { | 186 | { |
187 | udbg_comport = (volatile struct NS16550 __iomem *)0xfcff03f8; | 187 | udbg_comport = (volatile struct NS16550 __iomem *)0xfcff03f8UL; |
188 | 188 | ||
189 | udbg_putc = udbg_pas_real_putc; | 189 | udbg_putc = udbg_pas_real_putc; |
190 | udbg_getc = NULL; | 190 | udbg_getc = NULL; |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index c0d2a694fa30..3c7fe2c65b5a 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -685,6 +685,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
685 | "non-cacheable mapping\n"); | 685 | "non-cacheable mapping\n"); |
686 | psize = mmu_vmalloc_psize = MMU_PAGE_4K; | 686 | psize = mmu_vmalloc_psize = MMU_PAGE_4K; |
687 | } | 687 | } |
688 | #ifdef CONFIG_SPE_BASE | ||
689 | spu_flush_all_slbs(mm); | ||
690 | #endif | ||
688 | } | 691 | } |
689 | if (user_region) { | 692 | if (user_region) { |
690 | if (psize != get_paca()->context.user_psize) { | 693 | if (psize != get_paca()->context.user_psize) { |
@@ -759,6 +762,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea, | |||
759 | mmu_psize_defs[MMU_PAGE_4K].sllp; | 762 | mmu_psize_defs[MMU_PAGE_4K].sllp; |
760 | get_paca()->context = mm->context; | 763 | get_paca()->context = mm->context; |
761 | slb_flush_and_rebolt(); | 764 | slb_flush_and_rebolt(); |
765 | #ifdef CONFIG_SPE_BASE | ||
766 | spu_flush_all_slbs(mm); | ||
767 | #endif | ||
762 | } | 768 | } |
763 | } | 769 | } |
764 | if (mm->context.user_psize == MMU_PAGE_64K) | 770 | if (mm->context.user_psize == MMU_PAGE_64K) |
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index 8c77c791f87e..f6ffaaa7a5bf 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
25 | #include <asm/cputable.h> | 25 | #include <asm/cputable.h> |
26 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
27 | #include <asm/spu.h> | ||
27 | 28 | ||
28 | #include <linux/sysctl.h> | 29 | #include <linux/sysctl.h> |
29 | 30 | ||
@@ -513,6 +514,9 @@ int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff) | |||
513 | if ((addr + len) > 0x100000000UL) | 514 | if ((addr + len) > 0x100000000UL) |
514 | err = open_high_hpage_areas(current->mm, | 515 | err = open_high_hpage_areas(current->mm, |
515 | HTLB_AREA_MASK(addr, len)); | 516 | HTLB_AREA_MASK(addr, len)); |
517 | #ifdef CONFIG_SPE_BASE | ||
518 | spu_flush_all_slbs(current->mm); | ||
519 | #endif | ||
516 | if (err) { | 520 | if (err) { |
517 | printk(KERN_DEBUG "prepare_hugepage_range(%lx, %lx)" | 521 | printk(KERN_DEBUG "prepare_hugepage_range(%lx, %lx)" |
518 | " failed (lowmask: 0x%04hx, highmask: 0x%04hx)\n", | 522 | " failed (lowmask: 0x%04hx, highmask: 0x%04hx)\n", |
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c index c43999a10deb..eba7a2641dce 100644 --- a/arch/powerpc/platforms/cell/spu_base.c +++ b/arch/powerpc/platforms/cell/spu_base.c | |||
@@ -38,8 +38,61 @@ | |||
38 | const struct spu_management_ops *spu_management_ops; | 38 | const struct spu_management_ops *spu_management_ops; |
39 | const struct spu_priv1_ops *spu_priv1_ops; | 39 | const struct spu_priv1_ops *spu_priv1_ops; |
40 | 40 | ||
41 | static struct list_head spu_list[MAX_NUMNODES]; | ||
42 | static LIST_HEAD(spu_full_list); | ||
43 | static DEFINE_MUTEX(spu_mutex); | ||
44 | static spinlock_t spu_list_lock = SPIN_LOCK_UNLOCKED; | ||
45 | |||
41 | EXPORT_SYMBOL_GPL(spu_priv1_ops); | 46 | EXPORT_SYMBOL_GPL(spu_priv1_ops); |
42 | 47 | ||
48 | void spu_invalidate_slbs(struct spu *spu) | ||
49 | { | ||
50 | struct spu_priv2 __iomem *priv2 = spu->priv2; | ||
51 | |||
52 | if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) | ||
53 | out_be64(&priv2->slb_invalidate_all_W, 0UL); | ||
54 | } | ||
55 | EXPORT_SYMBOL_GPL(spu_invalidate_slbs); | ||
56 | |||
57 | /* This is called by the MM core when a segment size is changed, to | ||
58 | * request a flush of all the SPEs using a given mm | ||
59 | */ | ||
60 | void spu_flush_all_slbs(struct mm_struct *mm) | ||
61 | { | ||
62 | struct spu *spu; | ||
63 | unsigned long flags; | ||
64 | |||
65 | spin_lock_irqsave(&spu_list_lock, flags); | ||
66 | list_for_each_entry(spu, &spu_full_list, full_list) { | ||
67 | if (spu->mm == mm) | ||
68 | spu_invalidate_slbs(spu); | ||
69 | } | ||
70 | spin_unlock_irqrestore(&spu_list_lock, flags); | ||
71 | } | ||
72 | |||
73 | /* The hack below stinks... try to do something better one of | ||
74 | * these days... Does it even work properly with NR_CPUS == 1 ? | ||
75 | */ | ||
76 | static inline void mm_needs_global_tlbie(struct mm_struct *mm) | ||
77 | { | ||
78 | int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1; | ||
79 | |||
80 | /* Global TLBIE broadcast required with SPEs. */ | ||
81 | __cpus_setall(&mm->cpu_vm_mask, nr); | ||
82 | } | ||
83 | |||
84 | void spu_associate_mm(struct spu *spu, struct mm_struct *mm) | ||
85 | { | ||
86 | unsigned long flags; | ||
87 | |||
88 | spin_lock_irqsave(&spu_list_lock, flags); | ||
89 | spu->mm = mm; | ||
90 | spin_unlock_irqrestore(&spu_list_lock, flags); | ||
91 | if (mm) | ||
92 | mm_needs_global_tlbie(mm); | ||
93 | } | ||
94 | EXPORT_SYMBOL_GPL(spu_associate_mm); | ||
95 | |||
43 | static int __spu_trap_invalid_dma(struct spu *spu) | 96 | static int __spu_trap_invalid_dma(struct spu *spu) |
44 | { | 97 | { |
45 | pr_debug("%s\n", __FUNCTION__); | 98 | pr_debug("%s\n", __FUNCTION__); |
@@ -74,6 +127,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) | |||
74 | struct spu_priv2 __iomem *priv2 = spu->priv2; | 127 | struct spu_priv2 __iomem *priv2 = spu->priv2; |
75 | struct mm_struct *mm = spu->mm; | 128 | struct mm_struct *mm = spu->mm; |
76 | u64 esid, vsid, llp; | 129 | u64 esid, vsid, llp; |
130 | int psize; | ||
77 | 131 | ||
78 | pr_debug("%s\n", __FUNCTION__); | 132 | pr_debug("%s\n", __FUNCTION__); |
79 | 133 | ||
@@ -90,22 +144,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) | |||
90 | case USER_REGION_ID: | 144 | case USER_REGION_ID: |
91 | #ifdef CONFIG_HUGETLB_PAGE | 145 | #ifdef CONFIG_HUGETLB_PAGE |
92 | if (in_hugepage_area(mm->context, ea)) | 146 | if (in_hugepage_area(mm->context, ea)) |
93 | llp = mmu_psize_defs[mmu_huge_psize].sllp; | 147 | psize = mmu_huge_psize; |
94 | else | 148 | else |
95 | #endif | 149 | #endif |
96 | llp = mmu_psize_defs[mmu_virtual_psize].sllp; | 150 | psize = mm->context.user_psize; |
97 | vsid = (get_vsid(mm->context.id, ea) << SLB_VSID_SHIFT) | | 151 | vsid = (get_vsid(mm->context.id, ea) << SLB_VSID_SHIFT) | |
98 | SLB_VSID_USER | llp; | 152 | SLB_VSID_USER; |
99 | break; | 153 | break; |
100 | case VMALLOC_REGION_ID: | 154 | case VMALLOC_REGION_ID: |
101 | llp = mmu_psize_defs[mmu_virtual_psize].sllp; | 155 | if (ea < VMALLOC_END) |
156 | psize = mmu_vmalloc_psize; | ||
157 | else | ||
158 | psize = mmu_io_psize; | ||
102 | vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | | 159 | vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | |
103 | SLB_VSID_KERNEL | llp; | 160 | SLB_VSID_KERNEL; |
104 | break; | 161 | break; |
105 | case KERNEL_REGION_ID: | 162 | case KERNEL_REGION_ID: |
106 | llp = mmu_psize_defs[mmu_linear_psize].sllp; | 163 | psize = mmu_linear_psize; |
107 | vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | | 164 | vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) | |
108 | SLB_VSID_KERNEL | llp; | 165 | SLB_VSID_KERNEL; |
109 | break; | 166 | break; |
110 | default: | 167 | default: |
111 | /* Future: support kernel segments so that drivers | 168 | /* Future: support kernel segments so that drivers |
@@ -114,9 +171,10 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) | |||
114 | pr_debug("invalid region access at %016lx\n", ea); | 171 | pr_debug("invalid region access at %016lx\n", ea); |
115 | return 1; | 172 | return 1; |
116 | } | 173 | } |
174 | llp = mmu_psize_defs[psize].sllp; | ||
117 | 175 | ||
118 | out_be64(&priv2->slb_index_W, spu->slb_replace); | 176 | out_be64(&priv2->slb_index_W, spu->slb_replace); |
119 | out_be64(&priv2->slb_vsid_RW, vsid); | 177 | out_be64(&priv2->slb_vsid_RW, vsid | llp); |
120 | out_be64(&priv2->slb_esid_RW, esid); | 178 | out_be64(&priv2->slb_esid_RW, esid); |
121 | 179 | ||
122 | spu->slb_replace++; | 180 | spu->slb_replace++; |
@@ -330,10 +388,6 @@ static void spu_free_irqs(struct spu *spu) | |||
330 | free_irq(spu->irqs[2], spu); | 388 | free_irq(spu->irqs[2], spu); |
331 | } | 389 | } |
332 | 390 | ||
333 | static struct list_head spu_list[MAX_NUMNODES]; | ||
334 | static LIST_HEAD(spu_full_list); | ||
335 | static DEFINE_MUTEX(spu_mutex); | ||
336 | |||
337 | static void spu_init_channels(struct spu *spu) | 391 | static void spu_init_channels(struct spu *spu) |
338 | { | 392 | { |
339 | static const struct { | 393 | static const struct { |
@@ -593,6 +647,7 @@ static int __init create_spu(void *data) | |||
593 | struct spu *spu; | 647 | struct spu *spu; |
594 | int ret; | 648 | int ret; |
595 | static int number; | 649 | static int number; |
650 | unsigned long flags; | ||
596 | 651 | ||
597 | ret = -ENOMEM; | 652 | ret = -ENOMEM; |
598 | spu = kzalloc(sizeof (*spu), GFP_KERNEL); | 653 | spu = kzalloc(sizeof (*spu), GFP_KERNEL); |
@@ -620,8 +675,10 @@ static int __init create_spu(void *data) | |||
620 | goto out_free_irqs; | 675 | goto out_free_irqs; |
621 | 676 | ||
622 | mutex_lock(&spu_mutex); | 677 | mutex_lock(&spu_mutex); |
678 | spin_lock_irqsave(&spu_list_lock, flags); | ||
623 | list_add(&spu->list, &spu_list[spu->node]); | 679 | list_add(&spu->list, &spu_list[spu->node]); |
624 | list_add(&spu->full_list, &spu_full_list); | 680 | list_add(&spu->full_list, &spu_full_list); |
681 | spin_unlock_irqrestore(&spu_list_lock, flags); | ||
625 | mutex_unlock(&spu_mutex); | 682 | mutex_unlock(&spu_mutex); |
626 | 683 | ||
627 | goto out; | 684 | goto out; |
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index b00653d69c01..505266a568d4 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -63,8 +63,8 @@ static ssize_t | |||
63 | spufs_mem_read(struct file *file, char __user *buffer, | 63 | spufs_mem_read(struct file *file, char __user *buffer, |
64 | size_t size, loff_t *pos) | 64 | size_t size, loff_t *pos) |
65 | { | 65 | { |
66 | int ret; | ||
67 | struct spu_context *ctx = file->private_data; | 66 | struct spu_context *ctx = file->private_data; |
67 | ssize_t ret; | ||
68 | 68 | ||
69 | spu_acquire(ctx); | 69 | spu_acquire(ctx); |
70 | ret = __spufs_mem_read(ctx, buffer, size, pos); | 70 | ret = __spufs_mem_read(ctx, buffer, size, pos); |
@@ -74,25 +74,29 @@ spufs_mem_read(struct file *file, char __user *buffer, | |||
74 | 74 | ||
75 | static ssize_t | 75 | static ssize_t |
76 | spufs_mem_write(struct file *file, const char __user *buffer, | 76 | spufs_mem_write(struct file *file, const char __user *buffer, |
77 | size_t size, loff_t *pos) | 77 | size_t size, loff_t *ppos) |
78 | { | 78 | { |
79 | struct spu_context *ctx = file->private_data; | 79 | struct spu_context *ctx = file->private_data; |
80 | char *local_store; | 80 | char *local_store; |
81 | loff_t pos = *ppos; | ||
81 | int ret; | 82 | int ret; |
82 | 83 | ||
83 | size = min_t(ssize_t, LS_SIZE - *pos, size); | 84 | if (pos < 0) |
84 | if (size <= 0) | 85 | return -EINVAL; |
86 | if (pos > LS_SIZE) | ||
85 | return -EFBIG; | 87 | return -EFBIG; |
86 | *pos += size; | 88 | if (size > LS_SIZE - pos) |
89 | size = LS_SIZE - pos; | ||
87 | 90 | ||
88 | spu_acquire(ctx); | 91 | spu_acquire(ctx); |
89 | |||
90 | local_store = ctx->ops->get_ls(ctx); | 92 | local_store = ctx->ops->get_ls(ctx); |
91 | ret = copy_from_user(local_store + *pos - size, | 93 | ret = copy_from_user(local_store + pos, buffer, size); |
92 | buffer, size) ? -EFAULT : size; | ||
93 | |||
94 | spu_release(ctx); | 94 | spu_release(ctx); |
95 | return ret; | 95 | |
96 | if (ret) | ||
97 | return -EFAULT; | ||
98 | *ppos = pos + size; | ||
99 | return size; | ||
96 | } | 100 | } |
97 | 101 | ||
98 | static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma, | 102 | static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma, |
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c index 353a8fa07ab8..f95a611ca362 100644 --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c | |||
@@ -143,7 +143,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc) | |||
143 | int ret; | 143 | int ret; |
144 | unsigned long runcntl = SPU_RUNCNTL_RUNNABLE; | 144 | unsigned long runcntl = SPU_RUNCNTL_RUNNABLE; |
145 | 145 | ||
146 | ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE); | 146 | ret = spu_acquire_runnable(ctx, 0); |
147 | if (ret) | 147 | if (ret) |
148 | return ret; | 148 | return ret; |
149 | 149 | ||
@@ -155,7 +155,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc) | |||
155 | spu_release(ctx); | 155 | spu_release(ctx); |
156 | ret = spu_setup_isolated(ctx); | 156 | ret = spu_setup_isolated(ctx); |
157 | if (!ret) | 157 | if (!ret) |
158 | ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE); | 158 | ret = spu_acquire_runnable(ctx, 0); |
159 | } | 159 | } |
160 | 160 | ||
161 | /* if userspace has set the runcntrl register (eg, to issue an | 161 | /* if userspace has set the runcntrl register (eg, to issue an |
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 2f25e68b4bac..39823cec0844 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c | |||
@@ -127,14 +127,6 @@ static void spu_remove_from_active_list(struct spu *spu) | |||
127 | mutex_unlock(&spu_prio->active_mutex[node]); | 127 | mutex_unlock(&spu_prio->active_mutex[node]); |
128 | } | 128 | } |
129 | 129 | ||
130 | static inline void mm_needs_global_tlbie(struct mm_struct *mm) | ||
131 | { | ||
132 | int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1; | ||
133 | |||
134 | /* Global TLBIE broadcast required with SPEs. */ | ||
135 | __cpus_setall(&mm->cpu_vm_mask, nr); | ||
136 | } | ||
137 | |||
138 | static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier); | 130 | static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier); |
139 | 131 | ||
140 | static void spu_switch_notify(struct spu *spu, struct spu_context *ctx) | 132 | static void spu_switch_notify(struct spu *spu, struct spu_context *ctx) |
@@ -167,8 +159,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx) | |||
167 | ctx->spu = spu; | 159 | ctx->spu = spu; |
168 | ctx->ops = &spu_hw_ops; | 160 | ctx->ops = &spu_hw_ops; |
169 | spu->pid = current->pid; | 161 | spu->pid = current->pid; |
170 | spu->mm = ctx->owner; | 162 | spu_associate_mm(spu, ctx->owner); |
171 | mm_needs_global_tlbie(spu->mm); | ||
172 | spu->ibox_callback = spufs_ibox_callback; | 163 | spu->ibox_callback = spufs_ibox_callback; |
173 | spu->wbox_callback = spufs_wbox_callback; | 164 | spu->wbox_callback = spufs_wbox_callback; |
174 | spu->stop_callback = spufs_stop_callback; | 165 | spu->stop_callback = spufs_stop_callback; |
@@ -205,7 +196,7 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx) | |||
205 | spu->stop_callback = NULL; | 196 | spu->stop_callback = NULL; |
206 | spu->mfc_callback = NULL; | 197 | spu->mfc_callback = NULL; |
207 | spu->dma_callback = NULL; | 198 | spu->dma_callback = NULL; |
208 | spu->mm = NULL; | 199 | spu_associate_mm(spu, NULL); |
209 | spu->pid = 0; | 200 | spu->pid = 0; |
210 | ctx->ops = &spu_backing_ops; | 201 | ctx->ops = &spu_backing_ops; |
211 | ctx->spu = NULL; | 202 | ctx->spu = NULL; |
@@ -263,7 +254,6 @@ static void spu_prio_wait(struct spu_context *ctx) | |||
263 | { | 254 | { |
264 | DEFINE_WAIT(wait); | 255 | DEFINE_WAIT(wait); |
265 | 256 | ||
266 | set_bit(SPU_SCHED_WAKE, &ctx->sched_flags); | ||
267 | prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE); | 257 | prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE); |
268 | if (!signal_pending(current)) { | 258 | if (!signal_pending(current)) { |
269 | mutex_unlock(&ctx->state_mutex); | 259 | mutex_unlock(&ctx->state_mutex); |
@@ -272,7 +262,6 @@ static void spu_prio_wait(struct spu_context *ctx) | |||
272 | } | 262 | } |
273 | __set_current_state(TASK_RUNNING); | 263 | __set_current_state(TASK_RUNNING); |
274 | remove_wait_queue(&ctx->stop_wq, &wait); | 264 | remove_wait_queue(&ctx->stop_wq, &wait); |
275 | clear_bit(SPU_SCHED_WAKE, &ctx->sched_flags); | ||
276 | } | 265 | } |
277 | 266 | ||
278 | /** | 267 | /** |
@@ -292,7 +281,7 @@ static void spu_reschedule(struct spu *spu) | |||
292 | best = sched_find_first_bit(spu_prio->bitmap); | 281 | best = sched_find_first_bit(spu_prio->bitmap); |
293 | if (best < MAX_PRIO) { | 282 | if (best < MAX_PRIO) { |
294 | struct spu_context *ctx = spu_grab_context(best); | 283 | struct spu_context *ctx = spu_grab_context(best); |
295 | if (ctx && test_bit(SPU_SCHED_WAKE, &ctx->sched_flags)) | 284 | if (ctx) |
296 | wake_up(&ctx->stop_wq); | 285 | wake_up(&ctx->stop_wq); |
297 | } | 286 | } |
298 | spin_unlock(&spu_prio->runq_lock); | 287 | spin_unlock(&spu_prio->runq_lock); |
@@ -414,8 +403,7 @@ int spu_activate(struct spu_context *ctx, unsigned long flags) | |||
414 | } | 403 | } |
415 | 404 | ||
416 | spu_add_to_rq(ctx); | 405 | spu_add_to_rq(ctx); |
417 | if (!(flags & SPU_ACTIVATE_NOWAKE)) | 406 | spu_prio_wait(ctx); |
418 | spu_prio_wait(ctx); | ||
419 | spu_del_from_rq(ctx); | 407 | spu_del_from_rq(ctx); |
420 | } while (!signal_pending(current)); | 408 | } while (!signal_pending(current)); |
421 | 409 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h index 0c437891dfd5..5c4e47d69d79 100644 --- a/arch/powerpc/platforms/cell/spufs/spufs.h +++ b/arch/powerpc/platforms/cell/spufs/spufs.h | |||
@@ -41,7 +41,7 @@ struct spu_gang; | |||
41 | 41 | ||
42 | /* ctx->sched_flags */ | 42 | /* ctx->sched_flags */ |
43 | enum { | 43 | enum { |
44 | SPU_SCHED_WAKE = 0, | 44 | SPU_SCHED_WAKE = 0, /* currently unused */ |
45 | }; | 45 | }; |
46 | 46 | ||
47 | struct spu_context { | 47 | struct spu_context { |
@@ -191,9 +191,7 @@ void spu_forget(struct spu_context *ctx); | |||
191 | int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags); | 191 | int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags); |
192 | void spu_acquire_saved(struct spu_context *ctx); | 192 | void spu_acquire_saved(struct spu_context *ctx); |
193 | int spu_acquire_exclusive(struct spu_context *ctx); | 193 | int spu_acquire_exclusive(struct spu_context *ctx); |
194 | enum { | 194 | |
195 | SPU_ACTIVATE_NOWAKE = 1, | ||
196 | }; | ||
197 | int spu_activate(struct spu_context *ctx, unsigned long flags); | 195 | int spu_activate(struct spu_context *ctx, unsigned long flags); |
198 | void spu_deactivate(struct spu_context *ctx); | 196 | void spu_deactivate(struct spu_context *ctx); |
199 | void spu_yield(struct spu_context *ctx); | 197 | void spu_yield(struct spu_context *ctx); |
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c index c08981ff7fc6..fd91c73de34e 100644 --- a/arch/powerpc/platforms/cell/spufs/switch.c +++ b/arch/powerpc/platforms/cell/spufs/switch.c | |||
@@ -468,26 +468,6 @@ static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu) | |||
468 | MFC_CNTL_PURGE_DMA_COMPLETE); | 468 | MFC_CNTL_PURGE_DMA_COMPLETE); |
469 | } | 469 | } |
470 | 470 | ||
471 | static inline void save_mfc_slbs(struct spu_state *csa, struct spu *spu) | ||
472 | { | ||
473 | struct spu_priv2 __iomem *priv2 = spu->priv2; | ||
474 | int i; | ||
475 | |||
476 | /* Save, Step 29: | ||
477 | * If MFC_SR1[R]='1', save SLBs in CSA. | ||
478 | */ | ||
479 | if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) { | ||
480 | csa->priv2.slb_index_W = in_be64(&priv2->slb_index_W); | ||
481 | for (i = 0; i < 8; i++) { | ||
482 | out_be64(&priv2->slb_index_W, i); | ||
483 | eieio(); | ||
484 | csa->slb_esid_RW[i] = in_be64(&priv2->slb_esid_RW); | ||
485 | csa->slb_vsid_RW[i] = in_be64(&priv2->slb_vsid_RW); | ||
486 | eieio(); | ||
487 | } | ||
488 | } | ||
489 | } | ||
490 | |||
491 | static inline void setup_mfc_sr1(struct spu_state *csa, struct spu *spu) | 471 | static inline void setup_mfc_sr1(struct spu_state *csa, struct spu *spu) |
492 | { | 472 | { |
493 | /* Save, Step 30: | 473 | /* Save, Step 30: |
@@ -708,20 +688,6 @@ static inline void resume_mfc_queue(struct spu_state *csa, struct spu *spu) | |||
708 | out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE); | 688 | out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE); |
709 | } | 689 | } |
710 | 690 | ||
711 | static inline void invalidate_slbs(struct spu_state *csa, struct spu *spu) | ||
712 | { | ||
713 | struct spu_priv2 __iomem *priv2 = spu->priv2; | ||
714 | |||
715 | /* Save, Step 45: | ||
716 | * Restore, Step 19: | ||
717 | * If MFC_SR1[R]=1, write 0 to SLB_Invalidate_All. | ||
718 | */ | ||
719 | if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) { | ||
720 | out_be64(&priv2->slb_invalidate_all_W, 0UL); | ||
721 | eieio(); | ||
722 | } | ||
723 | } | ||
724 | |||
725 | static inline void get_kernel_slb(u64 ea, u64 slb[2]) | 691 | static inline void get_kernel_slb(u64 ea, u64 slb[2]) |
726 | { | 692 | { |
727 | u64 llp; | 693 | u64 llp; |
@@ -765,7 +731,7 @@ static inline void setup_mfc_slbs(struct spu_state *csa, struct spu *spu) | |||
765 | * MFC_SR1[R]=1 (in other words, assume that | 731 | * MFC_SR1[R]=1 (in other words, assume that |
766 | * translation is desired by OS environment). | 732 | * translation is desired by OS environment). |
767 | */ | 733 | */ |
768 | invalidate_slbs(csa, spu); | 734 | spu_invalidate_slbs(spu); |
769 | get_kernel_slb((unsigned long)&spu_save_code[0], code_slb); | 735 | get_kernel_slb((unsigned long)&spu_save_code[0], code_slb); |
770 | get_kernel_slb((unsigned long)csa->lscsa, lscsa_slb); | 736 | get_kernel_slb((unsigned long)csa->lscsa, lscsa_slb); |
771 | load_mfc_slb(spu, code_slb, 0); | 737 | load_mfc_slb(spu, code_slb, 0); |
@@ -1718,27 +1684,6 @@ static inline void check_ppuint_mb_stat(struct spu_state *csa, struct spu *spu) | |||
1718 | } | 1684 | } |
1719 | } | 1685 | } |
1720 | 1686 | ||
1721 | static inline void restore_mfc_slbs(struct spu_state *csa, struct spu *spu) | ||
1722 | { | ||
1723 | struct spu_priv2 __iomem *priv2 = spu->priv2; | ||
1724 | int i; | ||
1725 | |||
1726 | /* Restore, Step 68: | ||
1727 | * If MFC_SR1[R]='1', restore SLBs from CSA. | ||
1728 | */ | ||
1729 | if (csa->priv1.mfc_sr1_RW & MFC_STATE1_RELOCATE_MASK) { | ||
1730 | for (i = 0; i < 8; i++) { | ||
1731 | out_be64(&priv2->slb_index_W, i); | ||
1732 | eieio(); | ||
1733 | out_be64(&priv2->slb_esid_RW, csa->slb_esid_RW[i]); | ||
1734 | out_be64(&priv2->slb_vsid_RW, csa->slb_vsid_RW[i]); | ||
1735 | eieio(); | ||
1736 | } | ||
1737 | out_be64(&priv2->slb_index_W, csa->priv2.slb_index_W); | ||
1738 | eieio(); | ||
1739 | } | ||
1740 | } | ||
1741 | |||
1742 | static inline void restore_mfc_sr1(struct spu_state *csa, struct spu *spu) | 1687 | static inline void restore_mfc_sr1(struct spu_state *csa, struct spu *spu) |
1743 | { | 1688 | { |
1744 | /* Restore, Step 69: | 1689 | /* Restore, Step 69: |
@@ -1875,7 +1820,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu) | |||
1875 | set_mfc_tclass_id(prev, spu); /* Step 26. */ | 1820 | set_mfc_tclass_id(prev, spu); /* Step 26. */ |
1876 | purge_mfc_queue(prev, spu); /* Step 27. */ | 1821 | purge_mfc_queue(prev, spu); /* Step 27. */ |
1877 | wait_purge_complete(prev, spu); /* Step 28. */ | 1822 | wait_purge_complete(prev, spu); /* Step 28. */ |
1878 | save_mfc_slbs(prev, spu); /* Step 29. */ | ||
1879 | setup_mfc_sr1(prev, spu); /* Step 30. */ | 1823 | setup_mfc_sr1(prev, spu); /* Step 30. */ |
1880 | save_spu_npc(prev, spu); /* Step 31. */ | 1824 | save_spu_npc(prev, spu); /* Step 31. */ |
1881 | save_spu_privcntl(prev, spu); /* Step 32. */ | 1825 | save_spu_privcntl(prev, spu); /* Step 32. */ |
@@ -1987,7 +1931,7 @@ static void harvest(struct spu_state *prev, struct spu *spu) | |||
1987 | reset_spu_privcntl(prev, spu); /* Step 16. */ | 1931 | reset_spu_privcntl(prev, spu); /* Step 16. */ |
1988 | reset_spu_lslr(prev, spu); /* Step 17. */ | 1932 | reset_spu_lslr(prev, spu); /* Step 17. */ |
1989 | setup_mfc_sr1(prev, spu); /* Step 18. */ | 1933 | setup_mfc_sr1(prev, spu); /* Step 18. */ |
1990 | invalidate_slbs(prev, spu); /* Step 19. */ | 1934 | spu_invalidate_slbs(spu); /* Step 19. */ |
1991 | reset_ch_part1(prev, spu); /* Step 20. */ | 1935 | reset_ch_part1(prev, spu); /* Step 20. */ |
1992 | reset_ch_part2(prev, spu); /* Step 21. */ | 1936 | reset_ch_part2(prev, spu); /* Step 21. */ |
1993 | enable_interrupts(prev, spu); /* Step 22. */ | 1937 | enable_interrupts(prev, spu); /* Step 22. */ |
@@ -2055,7 +1999,7 @@ static void restore_csa(struct spu_state *next, struct spu *spu) | |||
2055 | restore_spu_mb(next, spu); /* Step 65. */ | 1999 | restore_spu_mb(next, spu); /* Step 65. */ |
2056 | check_ppu_mb_stat(next, spu); /* Step 66. */ | 2000 | check_ppu_mb_stat(next, spu); /* Step 66. */ |
2057 | check_ppuint_mb_stat(next, spu); /* Step 67. */ | 2001 | check_ppuint_mb_stat(next, spu); /* Step 67. */ |
2058 | restore_mfc_slbs(next, spu); /* Step 68. */ | 2002 | spu_invalidate_slbs(spu); /* Modified Step 68. */ |
2059 | restore_mfc_sr1(next, spu); /* Step 69. */ | 2003 | restore_mfc_sr1(next, spu); /* Step 69. */ |
2060 | restore_other_spu_access(next, spu); /* Step 70. */ | 2004 | restore_other_spu_access(next, spu); /* Step 70. */ |
2061 | restore_spu_runcntl(next, spu); /* Step 71. */ | 2005 | restore_spu_runcntl(next, spu); /* Step 71. */ |
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index 459a53b7d24d..71dbf1a56e13 100644 --- a/arch/powerpc/platforms/pasemi/iommu.c +++ b/arch/powerpc/platforms/pasemi/iommu.c | |||
@@ -77,7 +77,7 @@ | |||
77 | #define IOBMAP_L2E_V 0x80000000 | 77 | #define IOBMAP_L2E_V 0x80000000 |
78 | #define IOBMAP_L2E_V_CACHED 0xc0000000 | 78 | #define IOBMAP_L2E_V_CACHED 0xc0000000 |
79 | 79 | ||
80 | static u32 *iob; | 80 | static u32 __iomem *iob; |
81 | static u32 iob_l1_emptyval; | 81 | static u32 iob_l1_emptyval; |
82 | static u32 iob_l2_emptyval; | 82 | static u32 iob_l2_emptyval; |
83 | static u32 *iob_l2_base; | 83 | static u32 *iob_l2_base; |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index 42354de3f557..2014d2b44449 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
@@ -294,7 +294,7 @@ static int __init ps3_mm_add_memory(void) | |||
294 | unsigned long nr_pages; | 294 | unsigned long nr_pages; |
295 | 295 | ||
296 | if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) | 296 | if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) |
297 | return 0; | 297 | return -ENODEV; |
298 | 298 | ||
299 | BUG_ON(!mem_init_done); | 299 | BUG_ON(!mem_init_done); |
300 | 300 | ||
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index a9f7e4a39a2a..3c48cce98a5c 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -172,7 +172,7 @@ int __init ps3_system_bus_init(void) | |||
172 | int result; | 172 | int result; |
173 | 173 | ||
174 | if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) | 174 | if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) |
175 | return 0; | 175 | return -ENODEV; |
176 | 176 | ||
177 | result = bus_register(&ps3_system_bus_type); | 177 | result = bus_register(&ps3_system_bus_type); |
178 | BUG_ON(result); | 178 | BUG_ON(result); |
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c index 4ca615788702..697eb30a68a3 100644 --- a/arch/s390/appldata/appldata_mem.c +++ b/arch/s390/appldata/appldata_mem.c | |||
@@ -117,7 +117,10 @@ static void appldata_get_mem_data(void *data) | |||
117 | mem_data->pgpgout = ev[PGPGOUT] >> 1; | 117 | mem_data->pgpgout = ev[PGPGOUT] >> 1; |
118 | mem_data->pswpin = ev[PSWPIN]; | 118 | mem_data->pswpin = ev[PSWPIN]; |
119 | mem_data->pswpout = ev[PSWPOUT]; | 119 | mem_data->pswpout = ev[PSWPOUT]; |
120 | mem_data->pgalloc = ev[PGALLOC_NORMAL] + ev[PGALLOC_DMA]; | 120 | mem_data->pgalloc = ev[PGALLOC_NORMAL]; |
121 | #ifdef CONFIG_ZONE_DMA | ||
122 | mem_data->pgalloc += ev[PGALLOC_DMA]; | ||
123 | #endif | ||
121 | mem_data->pgfault = ev[PGFAULT]; | 124 | mem_data->pgfault = ev[PGFAULT]; |
122 | mem_data->pgmajfault = ev[PGMAJFAULT]; | 125 | mem_data->pgmajfault = ev[PGMAJFAULT]; |
123 | 126 | ||
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c index 113bd48a89bd..fc874e63a499 100644 --- a/arch/sparc/kernel/process.c +++ b/arch/sparc/kernel/process.c | |||
@@ -348,7 +348,7 @@ void exit_thread(void) | |||
348 | #ifndef CONFIG_SMP | 348 | #ifndef CONFIG_SMP |
349 | if(last_task_used_math == current) { | 349 | if(last_task_used_math == current) { |
350 | #else | 350 | #else |
351 | if(current_thread_info()->flags & _TIF_USEDFPU) { | 351 | if (test_thread_flag(TIF_USEDFPU)) { |
352 | #endif | 352 | #endif |
353 | /* Keep process from leaving FPU in a bogon state. */ | 353 | /* Keep process from leaving FPU in a bogon state. */ |
354 | put_psr(get_psr() | PSR_EF); | 354 | put_psr(get_psr() | PSR_EF); |
@@ -357,7 +357,7 @@ void exit_thread(void) | |||
357 | #ifndef CONFIG_SMP | 357 | #ifndef CONFIG_SMP |
358 | last_task_used_math = NULL; | 358 | last_task_used_math = NULL; |
359 | #else | 359 | #else |
360 | current_thread_info()->flags &= ~_TIF_USEDFPU; | 360 | clear_thread_flag(TIF_USEDFPU); |
361 | #endif | 361 | #endif |
362 | } | 362 | } |
363 | } | 363 | } |
@@ -371,7 +371,7 @@ void flush_thread(void) | |||
371 | #ifndef CONFIG_SMP | 371 | #ifndef CONFIG_SMP |
372 | if(last_task_used_math == current) { | 372 | if(last_task_used_math == current) { |
373 | #else | 373 | #else |
374 | if(current_thread_info()->flags & _TIF_USEDFPU) { | 374 | if (test_thread_flag(TIF_USEDFPU)) { |
375 | #endif | 375 | #endif |
376 | /* Clean the fpu. */ | 376 | /* Clean the fpu. */ |
377 | put_psr(get_psr() | PSR_EF); | 377 | put_psr(get_psr() | PSR_EF); |
@@ -380,7 +380,7 @@ void flush_thread(void) | |||
380 | #ifndef CONFIG_SMP | 380 | #ifndef CONFIG_SMP |
381 | last_task_used_math = NULL; | 381 | last_task_used_math = NULL; |
382 | #else | 382 | #else |
383 | current_thread_info()->flags &= ~_TIF_USEDFPU; | 383 | clear_thread_flag(TIF_USEDFPU); |
384 | #endif | 384 | #endif |
385 | } | 385 | } |
386 | 386 | ||
@@ -466,13 +466,13 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | |||
466 | #ifndef CONFIG_SMP | 466 | #ifndef CONFIG_SMP |
467 | if(last_task_used_math == current) { | 467 | if(last_task_used_math == current) { |
468 | #else | 468 | #else |
469 | if(current_thread_info()->flags & _TIF_USEDFPU) { | 469 | if (test_thread_flag(TIF_USEDFPU)) { |
470 | #endif | 470 | #endif |
471 | put_psr(get_psr() | PSR_EF); | 471 | put_psr(get_psr() | PSR_EF); |
472 | fpsave(&p->thread.float_regs[0], &p->thread.fsr, | 472 | fpsave(&p->thread.float_regs[0], &p->thread.fsr, |
473 | &p->thread.fpqueue[0], &p->thread.fpqdepth); | 473 | &p->thread.fpqueue[0], &p->thread.fpqdepth); |
474 | #ifdef CONFIG_SMP | 474 | #ifdef CONFIG_SMP |
475 | current_thread_info()->flags &= ~_TIF_USEDFPU; | 475 | clear_thread_flag(TIF_USEDFPU); |
476 | #endif | 476 | #endif |
477 | } | 477 | } |
478 | 478 | ||
@@ -609,13 +609,13 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs) | |||
609 | return 1; | 609 | return 1; |
610 | } | 610 | } |
611 | #ifdef CONFIG_SMP | 611 | #ifdef CONFIG_SMP |
612 | if (current_thread_info()->flags & _TIF_USEDFPU) { | 612 | if (test_thread_flag(TIF_USEDFPU)) { |
613 | put_psr(get_psr() | PSR_EF); | 613 | put_psr(get_psr() | PSR_EF); |
614 | fpsave(¤t->thread.float_regs[0], ¤t->thread.fsr, | 614 | fpsave(¤t->thread.float_regs[0], ¤t->thread.fsr, |
615 | ¤t->thread.fpqueue[0], ¤t->thread.fpqdepth); | 615 | ¤t->thread.fpqueue[0], ¤t->thread.fpqdepth); |
616 | if (regs != NULL) { | 616 | if (regs != NULL) { |
617 | regs->psr &= ~(PSR_EF); | 617 | regs->psr &= ~(PSR_EF); |
618 | current_thread_info()->flags &= ~(_TIF_USEDFPU); | 618 | clear_thread_flag(TIF_USEDFPU); |
619 | } | 619 | } |
620 | } | 620 | } |
621 | #else | 621 | #else |
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index ea75ca569052..3a69778c8366 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S | |||
@@ -78,7 +78,8 @@ sys_call_table: | |||
78 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 78 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
79 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 79 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages | 81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy |
82 | /*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | ||
82 | 83 | ||
83 | #ifdef CONFIG_SUNOS_EMUL | 84 | #ifdef CONFIG_SUNOS_EMUL |
84 | /* Now the SunOS syscall table. */ | 85 | /* Now the SunOS syscall table. */ |
@@ -192,5 +193,8 @@ sunos_sys_table: | |||
192 | .long sunos_nosys, sunos_nosys, sunos_nosys | 193 | .long sunos_nosys, sunos_nosys, sunos_nosys |
193 | .long sunos_nosys | 194 | .long sunos_nosys |
194 | /*300*/ .long sunos_nosys, sunos_nosys, sunos_nosys | 195 | /*300*/ .long sunos_nosys, sunos_nosys, sunos_nosys |
196 | .long sunos_nosys, sunos_nosys, sunos_nosys | ||
197 | .long sunos_nosys, sunos_nosys, sunos_nosys | ||
198 | .long sunos_nosys | ||
195 | 199 | ||
196 | #endif | 200 | #endif |
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c index 6a70d215fd04..527687afc1c4 100644 --- a/arch/sparc/kernel/traps.c +++ b/arch/sparc/kernel/traps.c | |||
@@ -259,7 +259,7 @@ void do_fpd_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
259 | } else { | 259 | } else { |
260 | fpload(¤t->thread.float_regs[0], ¤t->thread.fsr); | 260 | fpload(¤t->thread.float_regs[0], ¤t->thread.fsr); |
261 | } | 261 | } |
262 | current_thread_info()->flags |= _TIF_USEDFPU; | 262 | set_thread_flag(TIF_USEDFPU); |
263 | #endif | 263 | #endif |
264 | } | 264 | } |
265 | 265 | ||
@@ -290,7 +290,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
290 | #ifndef CONFIG_SMP | 290 | #ifndef CONFIG_SMP |
291 | if(!fpt) { | 291 | if(!fpt) { |
292 | #else | 292 | #else |
293 | if(!(task_thread_info(fpt)->flags & _TIF_USEDFPU)) { | 293 | if (!test_tsk_thread_flag(fpt, TIF_USEDFPU)) { |
294 | #endif | 294 | #endif |
295 | fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth); | 295 | fpsave(&fake_regs[0], &fake_fsr, &fake_queue[0], &fake_depth); |
296 | regs->psr &= ~PSR_EF; | 296 | regs->psr &= ~PSR_EF; |
@@ -333,7 +333,7 @@ void do_fpe_trap(struct pt_regs *regs, unsigned long pc, unsigned long npc, | |||
333 | /* nope, better SIGFPE the offending process... */ | 333 | /* nope, better SIGFPE the offending process... */ |
334 | 334 | ||
335 | #ifdef CONFIG_SMP | 335 | #ifdef CONFIG_SMP |
336 | task_thread_info(fpt)->flags &= ~_TIF_USEDFPU; | 336 | clear_tsk_thread_flag(fpt, TIF_USEDFPU); |
337 | #endif | 337 | #endif |
338 | if(psr & PSR_PS) { | 338 | if(psr & PSR_PS) { |
339 | /* The first fsr store/load we tried trapped, | 339 | /* The first fsr store/load we tried trapped, |
diff --git a/arch/sparc/mm/init.c b/arch/sparc/mm/init.c index c85ddf312747..a532922e2e35 100644 --- a/arch/sparc/mm/init.c +++ b/arch/sparc/mm/init.c | |||
@@ -75,7 +75,7 @@ void show_mem(void) | |||
75 | printk("Free swap: %6ldkB\n", | 75 | printk("Free swap: %6ldkB\n", |
76 | nr_swap_pages << (PAGE_SHIFT-10)); | 76 | nr_swap_pages << (PAGE_SHIFT-10)); |
77 | printk("%ld pages of RAM\n", totalram_pages); | 77 | printk("%ld pages of RAM\n", totalram_pages); |
78 | printk("%d free pages\n", nr_free_pages()); | 78 | printk("%ld free pages\n", nr_free_pages()); |
79 | #if 0 /* undefined pgtable_cache_size, pgd_cache_size */ | 79 | #if 0 /* undefined pgtable_cache_size, pgd_cache_size */ |
80 | printk("%ld pages in page table cache\n",pgtable_cache_size); | 80 | printk("%ld pages in page table cache\n",pgtable_cache_size); |
81 | #ifndef CONFIG_SMP | 81 | #ifndef CONFIG_SMP |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index f75a686ba644..1a6348b565fb 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -136,18 +136,6 @@ config SMP | |||
136 | 136 | ||
137 | If you don't know what to do here, say N. | 137 | If you don't know what to do here, say N. |
138 | 138 | ||
139 | config PREEMPT | ||
140 | bool "Preemptible Kernel" | ||
141 | help | ||
142 | This option reduces the latency of the kernel when reacting to | ||
143 | real-time or interactive events by allowing a low priority process to | ||
144 | be preempted even if it is in kernel mode executing a system call. | ||
145 | This allows applications to run more reliably even when the system is | ||
146 | under load. | ||
147 | |||
148 | Say Y here if you are building a kernel for a desktop, embedded | ||
149 | or real-time system. Say N if you are unsure. | ||
150 | |||
151 | config NR_CPUS | 139 | config NR_CPUS |
152 | int "Maximum number of CPUs (2-64)" | 140 | int "Maximum number of CPUs (2-64)" |
153 | range 2 64 | 141 | range 2 64 |
@@ -399,6 +387,8 @@ config SCHED_SMT | |||
399 | when dealing with UltraSPARC cpus at a cost of slightly increased | 387 | when dealing with UltraSPARC cpus at a cost of slightly increased |
400 | overhead in some places. If unsure say N here. | 388 | overhead in some places. If unsure say N here. |
401 | 389 | ||
390 | source "kernel/Kconfig.preempt" | ||
391 | |||
402 | config CMDLINE_BOOL | 392 | config CMDLINE_BOOL |
403 | bool "Default bootloader kernel arguments" | 393 | bool "Default bootloader kernel arguments" |
404 | 394 | ||
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 860b8b60526c..120c9c33b7a6 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/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.21-rc2 | 3 | # Linux kernel version: 2.6.21-rc4 |
4 | # Wed Feb 28 09:50:51 2007 | 4 | # Sat Mar 17 14:18:44 2007 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -50,6 +50,7 @@ CONFIG_POSIX_MQUEUE=y | |||
50 | # CONFIG_IKCONFIG is not set | 50 | # CONFIG_IKCONFIG is not set |
51 | CONFIG_SYSFS_DEPRECATED=y | 51 | CONFIG_SYSFS_DEPRECATED=y |
52 | CONFIG_RELAY=y | 52 | CONFIG_RELAY=y |
53 | # CONFIG_BLK_DEV_INITRD is not set | ||
53 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 54 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
54 | CONFIG_SYSCTL=y | 55 | CONFIG_SYSCTL=y |
55 | # CONFIG_EMBEDDED is not set | 56 | # CONFIG_EMBEDDED is not set |
@@ -108,7 +109,6 @@ CONFIG_GENERIC_HARDIRQS=y | |||
108 | # General machine setup | 109 | # General machine setup |
109 | # | 110 | # |
110 | # CONFIG_SMP is not set | 111 | # CONFIG_SMP is not set |
111 | # CONFIG_PREEMPT is not set | ||
112 | CONFIG_CPU_FREQ=y | 112 | CONFIG_CPU_FREQ=y |
113 | CONFIG_CPU_FREQ_TABLE=m | 113 | CONFIG_CPU_FREQ_TABLE=m |
114 | # CONFIG_CPU_FREQ_DEBUG is not set | 114 | # CONFIG_CPU_FREQ_DEBUG is not set |
@@ -165,6 +165,9 @@ CONFIG_BINFMT_ELF32=y | |||
165 | CONFIG_BINFMT_ELF=y | 165 | CONFIG_BINFMT_ELF=y |
166 | CONFIG_BINFMT_MISC=m | 166 | CONFIG_BINFMT_MISC=m |
167 | CONFIG_SOLARIS_EMUL=y | 167 | CONFIG_SOLARIS_EMUL=y |
168 | # CONFIG_PREEMPT_NONE is not set | ||
169 | CONFIG_PREEMPT_VOLUNTARY=y | ||
170 | # CONFIG_PREEMPT is not set | ||
168 | # CONFIG_CMDLINE_BOOL is not set | 171 | # CONFIG_CMDLINE_BOOL is not set |
169 | 172 | ||
170 | # | 173 | # |
@@ -340,7 +343,6 @@ CONFIG_BLK_DEV_NBD=m | |||
340 | # CONFIG_BLK_DEV_SX8 is not set | 343 | # CONFIG_BLK_DEV_SX8 is not set |
341 | # CONFIG_BLK_DEV_UB is not set | 344 | # CONFIG_BLK_DEV_UB is not set |
342 | # CONFIG_BLK_DEV_RAM is not set | 345 | # CONFIG_BLK_DEV_RAM is not set |
343 | # CONFIG_BLK_DEV_INITRD is not set | ||
344 | CONFIG_CDROM_PKTCDVD=m | 346 | CONFIG_CDROM_PKTCDVD=m |
345 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 347 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
346 | CONFIG_CDROM_PKTCDVD_WCACHE=y | 348 | CONFIG_CDROM_PKTCDVD_WCACHE=y |
diff --git a/arch/sparc64/kernel/ktlb.S b/arch/sparc64/kernel/ktlb.S index e492db845ea3..d4024ac0d619 100644 --- a/arch/sparc64/kernel/ktlb.S +++ b/arch/sparc64/kernel/ktlb.S | |||
@@ -138,9 +138,15 @@ kvmap_dtlb_4v: | |||
138 | brgez,pn %g4, kvmap_dtlb_nonlinear | 138 | brgez,pn %g4, kvmap_dtlb_nonlinear |
139 | nop | 139 | nop |
140 | 140 | ||
141 | #ifdef CONFIG_DEBUG_PAGEALLOC | ||
142 | /* Index through the base page size TSB even for linear | ||
143 | * mappings when using page allocation debugging. | ||
144 | */ | ||
145 | KERN_TSB_LOOKUP_TL1(%g4, %g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load) | ||
146 | #else | ||
141 | /* Correct TAG_TARGET is already in %g6, check 4mb TSB. */ | 147 | /* Correct TAG_TARGET is already in %g6, check 4mb TSB. */ |
142 | KERN_TSB4M_LOOKUP_TL1(%g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load) | 148 | KERN_TSB4M_LOOKUP_TL1(%g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load) |
143 | 149 | #endif | |
144 | /* TSB entry address left in %g1, lookup linear PTE. | 150 | /* TSB entry address left in %g1, lookup linear PTE. |
145 | * Must preserve %g1 and %g6 (TAG). | 151 | * Must preserve %g1 and %g6 (TAG). |
146 | */ | 152 | */ |
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 7d75cd4eb297..b291060c25a6 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c | |||
@@ -413,8 +413,13 @@ void flush_thread(void) | |||
413 | struct thread_info *t = current_thread_info(); | 413 | struct thread_info *t = current_thread_info(); |
414 | struct mm_struct *mm; | 414 | struct mm_struct *mm; |
415 | 415 | ||
416 | if (t->flags & _TIF_ABI_PENDING) | 416 | if (test_ti_thread_flag(t, TIF_ABI_PENDING)) { |
417 | t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT); | 417 | clear_ti_thread_flag(t, TIF_ABI_PENDING); |
418 | if (test_ti_thread_flag(t, TIF_32BIT)) | ||
419 | clear_ti_thread_flag(t, TIF_32BIT); | ||
420 | else | ||
421 | set_ti_thread_flag(t, TIF_32BIT); | ||
422 | } | ||
418 | 423 | ||
419 | mm = t->task->mm; | 424 | mm = t->task->mm; |
420 | if (mm) | 425 | if (mm) |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 948b7d2d5874..aaeb5e06735c 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -79,7 +79,8 @@ sys_call_table32: | |||
79 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 | 79 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 |
80 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 80 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |
82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages | 82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy |
83 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait | ||
83 | 84 | ||
84 | #endif /* CONFIG_COMPAT */ | 85 | #endif /* CONFIG_COMPAT */ |
85 | 86 | ||
@@ -149,7 +150,8 @@ sys_call_table: | |||
149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 150 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
150 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 151 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 152 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
152 | /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages | 153 | /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy |
154 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | ||
153 | 155 | ||
154 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ | 156 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ |
155 | defined(CONFIG_SOLARIS_EMUL_MODULE) | 157 | defined(CONFIG_SOLARIS_EMUL_MODULE) |
@@ -264,5 +266,8 @@ sunos_sys_table: | |||
264 | .word sunos_nosys, sunos_nosys, sunos_nosys | 266 | .word sunos_nosys, sunos_nosys, sunos_nosys |
265 | .word sunos_nosys | 267 | .word sunos_nosys |
266 | /*300*/ .word sunos_nosys, sunos_nosys, sunos_nosys | 268 | /*300*/ .word sunos_nosys, sunos_nosys, sunos_nosys |
269 | .word sunos_nosys, sunos_nosys, sunos_nosys | ||
270 | .word sunos_nosys, sunos_nosys, sunos_nosys | ||
271 | .word sunos_nosys | ||
267 | 272 | ||
268 | #endif | 273 | #endif |
diff --git a/arch/sparc64/mm/hugetlbpage.c b/arch/sparc64/mm/hugetlbpage.c index 33fd0b265e70..00677b5e1d7d 100644 --- a/arch/sparc64/mm/hugetlbpage.c +++ b/arch/sparc64/mm/hugetlbpage.c | |||
@@ -248,6 +248,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, | |||
248 | if (!pte_present(*ptep) && pte_present(entry)) | 248 | if (!pte_present(*ptep) && pte_present(entry)) |
249 | mm->context.huge_pte_count++; | 249 | mm->context.huge_pte_count++; |
250 | 250 | ||
251 | addr &= HPAGE_MASK; | ||
251 | for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { | 252 | for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { |
252 | set_pte_at(mm, addr, ptep, entry); | 253 | set_pte_at(mm, addr, ptep, entry); |
253 | ptep++; | 254 | ptep++; |
@@ -266,6 +267,8 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, | |||
266 | if (pte_present(entry)) | 267 | if (pte_present(entry)) |
267 | mm->context.huge_pte_count--; | 268 | mm->context.huge_pte_count--; |
268 | 269 | ||
270 | addr &= HPAGE_MASK; | ||
271 | |||
269 | for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { | 272 | for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { |
270 | pte_clear(mm, addr, ptep); | 273 | pte_clear(mm, addr, ptep); |
271 | addr += PAGE_SIZE; | 274 | addr += PAGE_SIZE; |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index b1a1ee0cc6bd..f146071a4b2a 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -59,8 +59,10 @@ unsigned long kern_linear_pte_xor[2] __read_mostly; | |||
59 | */ | 59 | */ |
60 | unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)]; | 60 | unsigned long kpte_linear_bitmap[KPTE_BITMAP_BYTES / sizeof(unsigned long)]; |
61 | 61 | ||
62 | #ifndef CONFIG_DEBUG_PAGEALLOC | ||
62 | /* A special kernel TSB for 4MB and 256MB linear mappings. */ | 63 | /* A special kernel TSB for 4MB and 256MB linear mappings. */ |
63 | struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES]; | 64 | struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES]; |
65 | #endif | ||
64 | 66 | ||
65 | #define MAX_BANKS 32 | 67 | #define MAX_BANKS 32 |
66 | 68 | ||
@@ -1301,7 +1303,12 @@ static void __init tsb_phys_patch(void) | |||
1301 | } | 1303 | } |
1302 | 1304 | ||
1303 | /* Don't mark as init, we give this to the Hypervisor. */ | 1305 | /* Don't mark as init, we give this to the Hypervisor. */ |
1304 | static struct hv_tsb_descr ktsb_descr[2]; | 1306 | #ifndef CONFIG_DEBUG_PAGEALLOC |
1307 | #define NUM_KTSB_DESCR 2 | ||
1308 | #else | ||
1309 | #define NUM_KTSB_DESCR 1 | ||
1310 | #endif | ||
1311 | static struct hv_tsb_descr ktsb_descr[NUM_KTSB_DESCR]; | ||
1305 | extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES]; | 1312 | extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES]; |
1306 | 1313 | ||
1307 | static void __init sun4v_ktsb_init(void) | 1314 | static void __init sun4v_ktsb_init(void) |
@@ -1340,6 +1347,7 @@ static void __init sun4v_ktsb_init(void) | |||
1340 | ktsb_descr[0].tsb_base = ktsb_pa; | 1347 | ktsb_descr[0].tsb_base = ktsb_pa; |
1341 | ktsb_descr[0].resv = 0; | 1348 | ktsb_descr[0].resv = 0; |
1342 | 1349 | ||
1350 | #ifndef CONFIG_DEBUG_PAGEALLOC | ||
1343 | /* Second KTSB for 4MB/256MB mappings. */ | 1351 | /* Second KTSB for 4MB/256MB mappings. */ |
1344 | ktsb_pa = (kern_base + | 1352 | ktsb_pa = (kern_base + |
1345 | ((unsigned long)&swapper_4m_tsb[0] - KERNBASE)); | 1353 | ((unsigned long)&swapper_4m_tsb[0] - KERNBASE)); |
@@ -1352,6 +1360,7 @@ static void __init sun4v_ktsb_init(void) | |||
1352 | ktsb_descr[1].ctx_idx = 0; | 1360 | ktsb_descr[1].ctx_idx = 0; |
1353 | ktsb_descr[1].tsb_base = ktsb_pa; | 1361 | ktsb_descr[1].tsb_base = ktsb_pa; |
1354 | ktsb_descr[1].resv = 0; | 1362 | ktsb_descr[1].resv = 0; |
1363 | #endif | ||
1355 | } | 1364 | } |
1356 | 1365 | ||
1357 | void __cpuinit sun4v_ktsb_register(void) | 1366 | void __cpuinit sun4v_ktsb_register(void) |
@@ -1364,7 +1373,7 @@ void __cpuinit sun4v_ktsb_register(void) | |||
1364 | pa = kern_base + ((unsigned long)&ktsb_descr[0] - KERNBASE); | 1373 | pa = kern_base + ((unsigned long)&ktsb_descr[0] - KERNBASE); |
1365 | 1374 | ||
1366 | func = HV_FAST_MMU_TSB_CTX0; | 1375 | func = HV_FAST_MMU_TSB_CTX0; |
1367 | arg0 = 2; | 1376 | arg0 = NUM_KTSB_DESCR; |
1368 | arg1 = pa; | 1377 | arg1 = pa; |
1369 | __asm__ __volatile__("ta %6" | 1378 | __asm__ __volatile__("ta %6" |
1370 | : "=&r" (func), "=&r" (arg0), "=&r" (arg1) | 1379 | : "=&r" (func), "=&r" (arg0), "=&r" (arg1) |
@@ -1393,7 +1402,9 @@ void __init paging_init(void) | |||
1393 | 1402 | ||
1394 | /* Invalidate both kernel TSBs. */ | 1403 | /* Invalidate both kernel TSBs. */ |
1395 | memset(swapper_tsb, 0x40, sizeof(swapper_tsb)); | 1404 | memset(swapper_tsb, 0x40, sizeof(swapper_tsb)); |
1405 | #ifndef CONFIG_DEBUG_PAGEALLOC | ||
1396 | memset(swapper_4m_tsb, 0x40, sizeof(swapper_4m_tsb)); | 1406 | memset(swapper_4m_tsb, 0x40, sizeof(swapper_4m_tsb)); |
1407 | #endif | ||
1397 | 1408 | ||
1398 | if (tlb_type == hypervisor) | 1409 | if (tlb_type == hypervisor) |
1399 | sun4v_pgprot_init(); | 1410 | sun4v_pgprot_init(); |
@@ -1725,8 +1736,13 @@ static void __init sun4u_pgprot_init(void) | |||
1725 | pg_iobits = (_PAGE_VALID | _PAGE_PRESENT_4U | __DIRTY_BITS_4U | | 1736 | pg_iobits = (_PAGE_VALID | _PAGE_PRESENT_4U | __DIRTY_BITS_4U | |
1726 | __ACCESS_BITS_4U | _PAGE_E_4U); | 1737 | __ACCESS_BITS_4U | _PAGE_E_4U); |
1727 | 1738 | ||
1739 | #ifdef CONFIG_DEBUG_PAGEALLOC | ||
1740 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZBITS_4U) ^ | ||
1741 | 0xfffff80000000000; | ||
1742 | #else | ||
1728 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZ4MB_4U) ^ | 1743 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZ4MB_4U) ^ |
1729 | 0xfffff80000000000; | 1744 | 0xfffff80000000000; |
1745 | #endif | ||
1730 | kern_linear_pte_xor[0] |= (_PAGE_CP_4U | _PAGE_CV_4U | | 1746 | kern_linear_pte_xor[0] |= (_PAGE_CP_4U | _PAGE_CV_4U | |
1731 | _PAGE_P_4U | _PAGE_W_4U); | 1747 | _PAGE_P_4U | _PAGE_W_4U); |
1732 | 1748 | ||
@@ -1769,13 +1785,23 @@ static void __init sun4v_pgprot_init(void) | |||
1769 | _PAGE_E = _PAGE_E_4V; | 1785 | _PAGE_E = _PAGE_E_4V; |
1770 | _PAGE_CACHE = _PAGE_CACHE_4V; | 1786 | _PAGE_CACHE = _PAGE_CACHE_4V; |
1771 | 1787 | ||
1788 | #ifdef CONFIG_DEBUG_PAGEALLOC | ||
1789 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZBITS_4V) ^ | ||
1790 | 0xfffff80000000000; | ||
1791 | #else | ||
1772 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZ4MB_4V) ^ | 1792 | kern_linear_pte_xor[0] = (_PAGE_VALID | _PAGE_SZ4MB_4V) ^ |
1773 | 0xfffff80000000000; | 1793 | 0xfffff80000000000; |
1794 | #endif | ||
1774 | kern_linear_pte_xor[0] |= (_PAGE_CP_4V | _PAGE_CV_4V | | 1795 | kern_linear_pte_xor[0] |= (_PAGE_CP_4V | _PAGE_CV_4V | |
1775 | _PAGE_P_4V | _PAGE_W_4V); | 1796 | _PAGE_P_4V | _PAGE_W_4V); |
1776 | 1797 | ||
1798 | #ifdef CONFIG_DEBUG_PAGEALLOC | ||
1799 | kern_linear_pte_xor[1] = (_PAGE_VALID | _PAGE_SZBITS_4V) ^ | ||
1800 | 0xfffff80000000000; | ||
1801 | #else | ||
1777 | kern_linear_pte_xor[1] = (_PAGE_VALID | _PAGE_SZ256MB_4V) ^ | 1802 | kern_linear_pte_xor[1] = (_PAGE_VALID | _PAGE_SZ256MB_4V) ^ |
1778 | 0xfffff80000000000; | 1803 | 0xfffff80000000000; |
1804 | #endif | ||
1779 | kern_linear_pte_xor[1] |= (_PAGE_CP_4V | _PAGE_CV_4V | | 1805 | kern_linear_pte_xor[1] |= (_PAGE_CP_4V | _PAGE_CV_4V | |
1780 | _PAGE_P_4V | _PAGE_W_4V); | 1806 | _PAGE_P_4V | _PAGE_W_4V); |
1781 | 1807 | ||
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index b3a21ba77cd2..354cc6b70530 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
@@ -44,7 +44,7 @@ config LOCKDEP_SUPPORT | |||
44 | 44 | ||
45 | config STACKTRACE_SUPPORT | 45 | config STACKTRACE_SUPPORT |
46 | bool | 46 | bool |
47 | default y | 47 | default n |
48 | 48 | ||
49 | config GENERIC_CALIBRATE_DELAY | 49 | config GENERIC_CALIBRATE_DELAY |
50 | bool | 50 | bool |
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index 813077fb1e5b..a9a4b85ca516 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
@@ -10,7 +10,7 @@ USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) | |||
10 | $(USER_OBJS:.o=.%): \ | 10 | $(USER_OBJS:.o=.%): \ |
11 | c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(basetarget).o) | 11 | c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(basetarget).o) |
12 | $(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ | 12 | $(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ |
13 | -Dunix -D__unix__ -D__$(SUBARCH)__ | 13 | -Dunix -D__unix__ -D__$(SUBARCH)__ $(CF) |
14 | 14 | ||
15 | # These are like USER_OBJS but filter USER_CFLAGS through unprofile instead of | 15 | # These are like USER_OBJS but filter USER_CFLAGS through unprofile instead of |
16 | # using it directly. | 16 | # using it directly. |
@@ -19,7 +19,7 @@ UNPROFILE_OBJS := $(foreach file,$(UNPROFILE_OBJS),$(obj)/$(file)) | |||
19 | $(UNPROFILE_OBJS:.o=.%): \ | 19 | $(UNPROFILE_OBJS:.o=.%): \ |
20 | c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS)) $(CFLAGS_$(basetarget).o) | 20 | c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS)) $(CFLAGS_$(basetarget).o) |
21 | $(UNPROFILE_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ | 21 | $(UNPROFILE_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ |
22 | -Dunix -D__unix__ -D__$(SUBARCH)__ | 22 | -Dunix -D__unix__ -D__$(SUBARCH)__ $(CF) |
23 | 23 | ||
24 | # The stubs and unmap.o can't try to call mcount or update basic block data | 24 | # The stubs and unmap.o can't try to call mcount or update basic block data |
25 | define unprofile | 25 | define unprofile |
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig index 293a4a4c609e..7a1e251e333d 100644 --- a/arch/x86_64/defconfig +++ b/arch/x86_64/defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-git8 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Tue Feb 13 11:25:16 2007 | 4 | # Wed Mar 7 15:29:47 2007 |
5 | # | 5 | # |
6 | CONFIG_X86_64=y | 6 | CONFIG_X86_64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
8 | CONFIG_X86=y | 8 | CONFIG_X86=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
9 | CONFIG_ZONE_DMA32=y | 11 | CONFIG_ZONE_DMA32=y |
10 | CONFIG_LOCKDEP_SUPPORT=y | 12 | CONFIG_LOCKDEP_SUPPORT=y |
11 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -43,6 +45,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
43 | CONFIG_SWAP=y | 45 | CONFIG_SWAP=y |
44 | CONFIG_SYSVIPC=y | 46 | CONFIG_SYSVIPC=y |
45 | # CONFIG_IPC_NS is not set | 47 | # CONFIG_IPC_NS is not set |
48 | CONFIG_SYSVIPC_SYSCTL=y | ||
46 | CONFIG_POSIX_MQUEUE=y | 49 | CONFIG_POSIX_MQUEUE=y |
47 | # CONFIG_BSD_PROCESS_ACCT is not set | 50 | # CONFIG_BSD_PROCESS_ACCT is not set |
48 | # CONFIG_TASKSTATS is not set | 51 | # CONFIG_TASKSTATS is not set |
@@ -53,6 +56,7 @@ CONFIG_IKCONFIG_PROC=y | |||
53 | # CONFIG_CPUSETS is not set | 56 | # CONFIG_CPUSETS is not set |
54 | CONFIG_SYSFS_DEPRECATED=y | 57 | CONFIG_SYSFS_DEPRECATED=y |
55 | # CONFIG_RELAY is not set | 58 | # CONFIG_RELAY is not set |
59 | CONFIG_BLK_DEV_INITRD=y | ||
56 | CONFIG_INITRAMFS_SOURCE="" | 60 | CONFIG_INITRAMFS_SOURCE="" |
57 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 61 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
58 | CONFIG_SYSCTL=y | 62 | CONFIG_SYSCTL=y |
@@ -114,11 +118,11 @@ CONFIG_X86_PC=y | |||
114 | # CONFIG_X86_VSMP is not set | 118 | # CONFIG_X86_VSMP is not set |
115 | # CONFIG_MK8 is not set | 119 | # CONFIG_MK8 is not set |
116 | # CONFIG_MPSC is not set | 120 | # CONFIG_MPSC is not set |
117 | CONFIG_MCORE2=y | 121 | # CONFIG_MCORE2 is not set |
118 | # CONFIG_GENERIC_CPU is not set | 122 | CONFIG_GENERIC_CPU=y |
119 | CONFIG_X86_L1_CACHE_BYTES=64 | 123 | CONFIG_X86_L1_CACHE_BYTES=128 |
120 | CONFIG_X86_L1_CACHE_SHIFT=6 | 124 | CONFIG_X86_L1_CACHE_SHIFT=7 |
121 | CONFIG_X86_INTERNODE_CACHE_BYTES=64 | 125 | CONFIG_X86_INTERNODE_CACHE_BYTES=128 |
122 | CONFIG_X86_TSC=y | 126 | CONFIG_X86_TSC=y |
123 | CONFIG_X86_GOOD_APIC=y | 127 | CONFIG_X86_GOOD_APIC=y |
124 | # CONFIG_MICROCODE is not set | 128 | # CONFIG_MICROCODE is not set |
@@ -207,10 +211,8 @@ CONFIG_ACPI_PROCFS=y | |||
207 | CONFIG_ACPI_AC=y | 211 | CONFIG_ACPI_AC=y |
208 | CONFIG_ACPI_BATTERY=y | 212 | CONFIG_ACPI_BATTERY=y |
209 | CONFIG_ACPI_BUTTON=y | 213 | CONFIG_ACPI_BUTTON=y |
210 | # CONFIG_ACPI_HOTKEY is not set | ||
211 | CONFIG_ACPI_FAN=y | 214 | CONFIG_ACPI_FAN=y |
212 | # CONFIG_ACPI_DOCK is not set | 215 | # CONFIG_ACPI_DOCK is not set |
213 | # CONFIG_ACPI_BAY is not set | ||
214 | CONFIG_ACPI_PROCESSOR=y | 216 | CONFIG_ACPI_PROCESSOR=y |
215 | CONFIG_ACPI_HOTPLUG_CPU=y | 217 | CONFIG_ACPI_HOTPLUG_CPU=y |
216 | CONFIG_ACPI_THERMAL=y | 218 | CONFIG_ACPI_THERMAL=y |
@@ -319,7 +321,7 @@ CONFIG_IP_PNP_DHCP=y | |||
319 | # CONFIG_INET_ESP is not set | 321 | # CONFIG_INET_ESP is not set |
320 | # CONFIG_INET_IPCOMP is not set | 322 | # CONFIG_INET_IPCOMP is not set |
321 | # CONFIG_INET_XFRM_TUNNEL is not set | 323 | # CONFIG_INET_XFRM_TUNNEL is not set |
322 | # CONFIG_INET_TUNNEL is not set | 324 | CONFIG_INET_TUNNEL=y |
323 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 325 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
324 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 326 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
325 | # CONFIG_INET_XFRM_MODE_BEET is not set | 327 | # CONFIG_INET_XFRM_MODE_BEET is not set |
@@ -421,7 +423,13 @@ CONFIG_FW_LOADER=y | |||
421 | # | 423 | # |
422 | # Plug and Play support | 424 | # Plug and Play support |
423 | # | 425 | # |
424 | # CONFIG_PNP is not set | 426 | CONFIG_PNP=y |
427 | # CONFIG_PNP_DEBUG is not set | ||
428 | |||
429 | # | ||
430 | # Protocols | ||
431 | # | ||
432 | CONFIG_PNPACPI=y | ||
425 | 433 | ||
426 | # | 434 | # |
427 | # Block devices | 435 | # Block devices |
@@ -441,7 +449,6 @@ CONFIG_BLK_DEV_RAM=y | |||
441 | CONFIG_BLK_DEV_RAM_COUNT=16 | 449 | CONFIG_BLK_DEV_RAM_COUNT=16 |
442 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 450 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
443 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 451 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
444 | CONFIG_BLK_DEV_INITRD=y | ||
445 | # CONFIG_CDROM_PKTCDVD is not set | 452 | # CONFIG_CDROM_PKTCDVD is not set |
446 | # CONFIG_ATA_OVER_ETH is not set | 453 | # CONFIG_ATA_OVER_ETH is not set |
447 | 454 | ||
@@ -451,6 +458,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
451 | # CONFIG_IBM_ASM is not set | 458 | # CONFIG_IBM_ASM is not set |
452 | # CONFIG_SGI_IOC4 is not set | 459 | # CONFIG_SGI_IOC4 is not set |
453 | # CONFIG_TIFM_CORE is not set | 460 | # CONFIG_TIFM_CORE is not set |
461 | # CONFIG_SONY_LAPTOP is not set | ||
454 | 462 | ||
455 | # | 463 | # |
456 | # ATA/ATAPI/MFM/RLL support | 464 | # ATA/ATAPI/MFM/RLL support |
@@ -477,6 +485,7 @@ CONFIG_BLK_DEV_IDEACPI=y | |||
477 | # | 485 | # |
478 | CONFIG_IDE_GENERIC=y | 486 | CONFIG_IDE_GENERIC=y |
479 | # CONFIG_BLK_DEV_CMD640 is not set | 487 | # CONFIG_BLK_DEV_CMD640 is not set |
488 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
480 | CONFIG_BLK_DEV_IDEPCI=y | 489 | CONFIG_BLK_DEV_IDEPCI=y |
481 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 490 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
482 | # CONFIG_BLK_DEV_OFFBOARD is not set | 491 | # CONFIG_BLK_DEV_OFFBOARD is not set |
@@ -623,6 +632,7 @@ CONFIG_SATA_VIA=y | |||
623 | # CONFIG_SATA_VITESSE is not set | 632 | # CONFIG_SATA_VITESSE is not set |
624 | # CONFIG_SATA_INIC162X is not set | 633 | # CONFIG_SATA_INIC162X is not set |
625 | CONFIG_SATA_INTEL_COMBINED=y | 634 | CONFIG_SATA_INTEL_COMBINED=y |
635 | CONFIG_SATA_ACPI=y | ||
626 | # CONFIG_PATA_ALI is not set | 636 | # CONFIG_PATA_ALI is not set |
627 | # CONFIG_PATA_AMD is not set | 637 | # CONFIG_PATA_AMD is not set |
628 | # CONFIG_PATA_ARTOP is not set | 638 | # CONFIG_PATA_ARTOP is not set |
@@ -726,6 +736,7 @@ CONFIG_NETDEVICES=y | |||
726 | # CONFIG_BONDING is not set | 736 | # CONFIG_BONDING is not set |
727 | # CONFIG_EQUALIZER is not set | 737 | # CONFIG_EQUALIZER is not set |
728 | CONFIG_TUN=y | 738 | CONFIG_TUN=y |
739 | # CONFIG_NET_SB1000 is not set | ||
729 | 740 | ||
730 | # | 741 | # |
731 | # ARCnet devices | 742 | # ARCnet devices |
@@ -920,6 +931,7 @@ CONFIG_HW_CONSOLE=y | |||
920 | CONFIG_SERIAL_8250=y | 931 | CONFIG_SERIAL_8250=y |
921 | CONFIG_SERIAL_8250_CONSOLE=y | 932 | CONFIG_SERIAL_8250_CONSOLE=y |
922 | CONFIG_SERIAL_8250_PCI=y | 933 | CONFIG_SERIAL_8250_PCI=y |
934 | CONFIG_SERIAL_8250_PNP=y | ||
923 | CONFIG_SERIAL_8250_NR_UARTS=4 | 935 | CONFIG_SERIAL_8250_NR_UARTS=4 |
924 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 936 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
925 | # CONFIG_SERIAL_8250_EXTENDED is not set | 937 | # CONFIG_SERIAL_8250_EXTENDED is not set |
@@ -1001,6 +1013,7 @@ CONFIG_I2C_ISA=m | |||
1001 | # CONFIG_I2C_NFORCE2 is not set | 1013 | # CONFIG_I2C_NFORCE2 is not set |
1002 | # CONFIG_I2C_OCORES is not set | 1014 | # CONFIG_I2C_OCORES is not set |
1003 | # CONFIG_I2C_PARPORT_LIGHT is not set | 1015 | # CONFIG_I2C_PARPORT_LIGHT is not set |
1016 | # CONFIG_I2C_PASEMI is not set | ||
1004 | # CONFIG_I2C_PROSAVAGE is not set | 1017 | # CONFIG_I2C_PROSAVAGE is not set |
1005 | # CONFIG_I2C_SAVAGE4 is not set | 1018 | # CONFIG_I2C_SAVAGE4 is not set |
1006 | # CONFIG_I2C_SIS5595 is not set | 1019 | # CONFIG_I2C_SIS5595 is not set |
@@ -1047,6 +1060,7 @@ CONFIG_HWMON=y | |||
1047 | # CONFIG_SENSORS_ADM1021 is not set | 1060 | # CONFIG_SENSORS_ADM1021 is not set |
1048 | # CONFIG_SENSORS_ADM1025 is not set | 1061 | # CONFIG_SENSORS_ADM1025 is not set |
1049 | # CONFIG_SENSORS_ADM1026 is not set | 1062 | # CONFIG_SENSORS_ADM1026 is not set |
1063 | # CONFIG_SENSORS_ADM1029 is not set | ||
1050 | # CONFIG_SENSORS_ADM1031 is not set | 1064 | # CONFIG_SENSORS_ADM1031 is not set |
1051 | # CONFIG_SENSORS_ADM9240 is not set | 1065 | # CONFIG_SENSORS_ADM9240 is not set |
1052 | # CONFIG_SENSORS_K8TEMP is not set | 1066 | # CONFIG_SENSORS_K8TEMP is not set |
@@ -1090,6 +1104,11 @@ CONFIG_SENSORS_SMSC47B397=m | |||
1090 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1104 | # CONFIG_HWMON_DEBUG_CHIP is not set |
1091 | 1105 | ||
1092 | # | 1106 | # |
1107 | # Multifunction device drivers | ||
1108 | # | ||
1109 | # CONFIG_MFD_SM501 is not set | ||
1110 | |||
1111 | # | ||
1093 | # Multimedia devices | 1112 | # Multimedia devices |
1094 | # | 1113 | # |
1095 | # CONFIG_VIDEO_DEV is not set | 1114 | # CONFIG_VIDEO_DEV is not set |
@@ -1103,7 +1122,7 @@ CONFIG_SENSORS_SMSC47B397=m | |||
1103 | # | 1122 | # |
1104 | # Graphics support | 1123 | # Graphics support |
1105 | # | 1124 | # |
1106 | # CONFIG_FIRMWARE_EDID is not set | 1125 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
1107 | # CONFIG_FB is not set | 1126 | # CONFIG_FB is not set |
1108 | 1127 | ||
1109 | # | 1128 | # |
@@ -1114,7 +1133,6 @@ CONFIG_VGACON_SOFT_SCROLLBACK=y | |||
1114 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256 | 1133 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256 |
1115 | CONFIG_VIDEO_SELECT=y | 1134 | CONFIG_VIDEO_SELECT=y |
1116 | CONFIG_DUMMY_CONSOLE=y | 1135 | CONFIG_DUMMY_CONSOLE=y |
1117 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1118 | 1136 | ||
1119 | # | 1137 | # |
1120 | # Sound | 1138 | # Sound |
@@ -1130,9 +1148,8 @@ CONFIG_SOUND=y | |||
1130 | # Open Sound System | 1148 | # Open Sound System |
1131 | # | 1149 | # |
1132 | CONFIG_SOUND_PRIME=y | 1150 | CONFIG_SOUND_PRIME=y |
1133 | CONFIG_OBSOLETE_OSS=y | 1151 | # CONFIG_OBSOLETE_OSS is not set |
1134 | # CONFIG_SOUND_BT878 is not set | 1152 | # CONFIG_SOUND_BT878 is not set |
1135 | # CONFIG_SOUND_ES1371 is not set | ||
1136 | CONFIG_SOUND_ICH=y | 1153 | CONFIG_SOUND_ICH=y |
1137 | # CONFIG_SOUND_TRIDENT is not set | 1154 | # CONFIG_SOUND_TRIDENT is not set |
1138 | # CONFIG_SOUND_MSNDCLAS is not set | 1155 | # CONFIG_SOUND_MSNDCLAS is not set |
@@ -1263,6 +1280,7 @@ CONFIG_USB_MON=y | |||
1263 | # CONFIG_USB_RIO500 is not set | 1280 | # CONFIG_USB_RIO500 is not set |
1264 | # CONFIG_USB_LEGOTOWER is not set | 1281 | # CONFIG_USB_LEGOTOWER is not set |
1265 | # CONFIG_USB_LCD is not set | 1282 | # CONFIG_USB_LCD is not set |
1283 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1266 | # CONFIG_USB_LED is not set | 1284 | # CONFIG_USB_LED is not set |
1267 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1285 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1268 | # CONFIG_USB_CYTHERM is not set | 1286 | # CONFIG_USB_CYTHERM is not set |
@@ -1273,6 +1291,7 @@ CONFIG_USB_MON=y | |||
1273 | # CONFIG_USB_SISUSBVGA is not set | 1291 | # CONFIG_USB_SISUSBVGA is not set |
1274 | # CONFIG_USB_LD is not set | 1292 | # CONFIG_USB_LD is not set |
1275 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1293 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1294 | # CONFIG_USB_IOWARRIOR is not set | ||
1276 | # CONFIG_USB_TEST is not set | 1295 | # CONFIG_USB_TEST is not set |
1277 | 1296 | ||
1278 | # | 1297 | # |
@@ -1538,6 +1557,7 @@ CONFIG_DEBUG_KERNEL=y | |||
1538 | CONFIG_LOG_BUF_SHIFT=18 | 1557 | CONFIG_LOG_BUF_SHIFT=18 |
1539 | CONFIG_DETECT_SOFTLOCKUP=y | 1558 | CONFIG_DETECT_SOFTLOCKUP=y |
1540 | # CONFIG_SCHEDSTATS is not set | 1559 | # CONFIG_SCHEDSTATS is not set |
1560 | # CONFIG_TIMER_STATS is not set | ||
1541 | # CONFIG_DEBUG_SLAB is not set | 1561 | # CONFIG_DEBUG_SLAB is not set |
1542 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1562 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1543 | # CONFIG_RT_MUTEX_TESTER is not set | 1563 | # CONFIG_RT_MUTEX_TESTER is not set |
@@ -1556,6 +1576,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1556 | # CONFIG_FORCED_INLINING is not set | 1576 | # CONFIG_FORCED_INLINING is not set |
1557 | # CONFIG_RCU_TORTURE_TEST is not set | 1577 | # CONFIG_RCU_TORTURE_TEST is not set |
1558 | # CONFIG_LKDTM is not set | 1578 | # CONFIG_LKDTM is not set |
1579 | # CONFIG_FAULT_INJECTION is not set | ||
1559 | # CONFIG_DEBUG_RODATA is not set | 1580 | # CONFIG_DEBUG_RODATA is not set |
1560 | # CONFIG_IOMMU_DEBUG is not set | 1581 | # CONFIG_IOMMU_DEBUG is not set |
1561 | CONFIG_DEBUG_STACKOVERFLOW=y | 1582 | CONFIG_DEBUG_STACKOVERFLOW=y |
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S index eda7a0d4dc15..796df6992f62 100644 --- a/arch/x86_64/ia32/ia32entry.S +++ b/arch/x86_64/ia32/ia32entry.S | |||
@@ -560,7 +560,7 @@ ia32_sys_call_table: | |||
560 | .quad sys_sched_yield | 560 | .quad sys_sched_yield |
561 | .quad sys_sched_get_priority_max | 561 | .quad sys_sched_get_priority_max |
562 | .quad sys_sched_get_priority_min /* 160 */ | 562 | .quad sys_sched_get_priority_min /* 160 */ |
563 | .quad sys_sched_rr_get_interval | 563 | .quad sys32_sched_rr_get_interval |
564 | .quad compat_sys_nanosleep | 564 | .quad compat_sys_nanosleep |
565 | .quad sys_mremap | 565 | .quad sys_mremap |
566 | .quad sys_setresuid16 | 566 | .quad sys_setresuid16 |
diff --git a/arch/x86_64/kernel/cpufreq/Kconfig b/arch/x86_64/kernel/cpufreq/Kconfig index ced15d06f0f3..40acb67fb882 100644 --- a/arch/x86_64/kernel/cpufreq/Kconfig +++ b/arch/x86_64/kernel/cpufreq/Kconfig | |||
@@ -75,6 +75,7 @@ config X86_ACPI_CPUFREQ_PROC_INTF | |||
75 | config X86_P4_CLOCKMOD | 75 | config X86_P4_CLOCKMOD |
76 | tristate "Intel Pentium 4 clock modulation" | 76 | tristate "Intel Pentium 4 clock modulation" |
77 | depends on EMBEDDED | 77 | depends on EMBEDDED |
78 | select CPU_FREQ_TABLE | ||
78 | help | 79 | help |
79 | This adds the clock modulation driver for Intel Pentium 4 / XEON | 80 | This adds the clock modulation driver for Intel Pentium 4 / XEON |
80 | processors. When enabled it will lower CPU temperature by skipping | 81 | processors. When enabled it will lower CPU temperature by skipping |
diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c index 4651fd22b213..a490fabfcf47 100644 --- a/arch/x86_64/kernel/e820.c +++ b/arch/x86_64/kernel/e820.c | |||
@@ -662,7 +662,7 @@ static int __init parse_memmap_opt(char *p) | |||
662 | } | 662 | } |
663 | early_param("memmap", parse_memmap_opt); | 663 | early_param("memmap", parse_memmap_opt); |
664 | 664 | ||
665 | void finish_e820_parsing(void) | 665 | void __init finish_e820_parsing(void) |
666 | { | 666 | { |
667 | if (userdef) { | 667 | if (userdef) { |
668 | printk(KERN_INFO "user-defined physical RAM map:\n"); | 668 | printk(KERN_INFO "user-defined physical RAM map:\n"); |
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c index dec587b293bf..148c6bcf5bb4 100644 --- a/arch/x86_64/kernel/early-quirks.c +++ b/arch/x86_64/kernel/early-quirks.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/proto.h> | 16 | #include <asm/proto.h> |
17 | #include <asm/dma.h> | 17 | #include <asm/dma.h> |
18 | 18 | ||
19 | static void via_bugs(void) | 19 | static void __init via_bugs(void) |
20 | { | 20 | { |
21 | #ifdef CONFIG_IOMMU | 21 | #ifdef CONFIG_IOMMU |
22 | if ((end_pfn > MAX_DMA32_PFN || force_iommu) && | 22 | if ((end_pfn > MAX_DMA32_PFN || force_iommu) && |
@@ -36,7 +36,7 @@ static int __init nvidia_hpet_check(struct acpi_table_header *header) | |||
36 | } | 36 | } |
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | static void nvidia_bugs(void) | 39 | static void __init nvidia_bugs(void) |
40 | { | 40 | { |
41 | #ifdef CONFIG_ACPI | 41 | #ifdef CONFIG_ACPI |
42 | /* | 42 | /* |
@@ -62,7 +62,7 @@ static void nvidia_bugs(void) | |||
62 | 62 | ||
63 | } | 63 | } |
64 | 64 | ||
65 | static void ati_bugs(void) | 65 | static void __init ati_bugs(void) |
66 | { | 66 | { |
67 | if (timer_over_8254 == 1) { | 67 | if (timer_over_8254 == 1) { |
68 | timer_over_8254 = 0; | 68 | timer_over_8254 = 0; |
@@ -88,7 +88,7 @@ struct chipset { | |||
88 | void (*f)(void); | 88 | void (*f)(void); |
89 | }; | 89 | }; |
90 | 90 | ||
91 | static struct chipset early_qrk[] = { | 91 | static struct __initdata chipset early_qrk[] = { |
92 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, | 92 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, |
93 | { PCI_VENDOR_ID_VIA, via_bugs }, | 93 | { PCI_VENDOR_ID_VIA, via_bugs }, |
94 | { PCI_VENDOR_ID_ATI, ati_bugs }, | 94 | { PCI_VENDOR_ID_ATI, ati_bugs }, |
diff --git a/arch/x86_64/kernel/mpparse.c b/arch/x86_64/kernel/mpparse.c index 50dd8bef850e..455aa0b932f0 100644 --- a/arch/x86_64/kernel/mpparse.c +++ b/arch/x86_64/kernel/mpparse.c | |||
@@ -60,9 +60,9 @@ unsigned long mp_lapic_addr = 0; | |||
60 | /* Processor that is doing the boot up */ | 60 | /* Processor that is doing the boot up */ |
61 | unsigned int boot_cpu_id = -1U; | 61 | unsigned int boot_cpu_id = -1U; |
62 | /* Internal processor count */ | 62 | /* Internal processor count */ |
63 | unsigned int num_processors __initdata = 0; | 63 | unsigned int num_processors __cpuinitdata = 0; |
64 | 64 | ||
65 | unsigned disabled_cpus __initdata; | 65 | unsigned disabled_cpus __cpuinitdata; |
66 | 66 | ||
67 | /* Bitmask of physically existing CPUs */ | 67 | /* Bitmask of physically existing CPUs */ |
68 | physid_mask_t phys_cpu_present_map = PHYSID_MASK_NONE; | 68 | physid_mask_t phys_cpu_present_map = PHYSID_MASK_NONE; |
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c index 486f4c61a948..82d9d85d5270 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
@@ -187,10 +187,7 @@ void nmi_watchdog_default(void) | |||
187 | { | 187 | { |
188 | if (nmi_watchdog != NMI_DEFAULT) | 188 | if (nmi_watchdog != NMI_DEFAULT) |
189 | return; | 189 | return; |
190 | if (nmi_known_cpu()) | 190 | nmi_watchdog = NMI_NONE; |
191 | nmi_watchdog = NMI_LOCAL_APIC; | ||
192 | else | ||
193 | nmi_watchdog = NMI_IO_APIC; | ||
194 | } | 191 | } |
195 | 192 | ||
196 | static int endflag __initdata = 0; | 193 | static int endflag __initdata = 0; |
diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c index 030eb3753358..2bac8c60ad61 100644 --- a/arch/x86_64/kernel/pci-gart.c +++ b/arch/x86_64/kernel/pci-gart.c | |||
@@ -675,7 +675,7 @@ void __init gart_iommu_init(void) | |||
675 | dma_ops = &gart_dma_ops; | 675 | dma_ops = &gart_dma_ops; |
676 | } | 676 | } |
677 | 677 | ||
678 | void gart_parse_options(char *p) | 678 | void __init gart_parse_options(char *p) |
679 | { | 679 | { |
680 | int arg; | 680 | int arg; |
681 | 681 | ||
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c index cbbc6adc1a92..d8d5ccc245c8 100644 --- a/arch/x86_64/kernel/process.c +++ b/arch/x86_64/kernel/process.c | |||
@@ -382,14 +382,17 @@ void exit_thread(void) | |||
382 | void flush_thread(void) | 382 | void flush_thread(void) |
383 | { | 383 | { |
384 | struct task_struct *tsk = current; | 384 | struct task_struct *tsk = current; |
385 | struct thread_info *t = current_thread_info(); | ||
386 | 385 | ||
387 | if (t->flags & _TIF_ABI_PENDING) { | 386 | if (test_tsk_thread_flag(tsk, TIF_ABI_PENDING)) { |
388 | t->flags ^= (_TIF_ABI_PENDING | _TIF_IA32); | 387 | clear_tsk_thread_flag(tsk, TIF_ABI_PENDING); |
389 | if (t->flags & _TIF_IA32) | 388 | if (test_tsk_thread_flag(tsk, TIF_IA32)) { |
389 | clear_tsk_thread_flag(tsk, TIF_IA32); | ||
390 | } else { | ||
391 | set_tsk_thread_flag(tsk, TIF_IA32); | ||
390 | current_thread_info()->status |= TS_COMPAT; | 392 | current_thread_info()->status |= TS_COMPAT; |
393 | } | ||
391 | } | 394 | } |
392 | t->flags &= ~_TIF_DEBUG; | 395 | clear_tsk_thread_flag(tsk, TIF_DEBUG); |
393 | 396 | ||
394 | tsk->thread.debugreg0 = 0; | 397 | tsk->thread.debugreg0 = 0; |
395 | tsk->thread.debugreg1 = 0; | 398 | tsk->thread.debugreg1 = 0; |
diff --git a/arch/x86_64/kernel/vsyscall.c b/arch/x86_64/kernel/vsyscall.c index 180ff919eaf9..b43c698cf7d3 100644 --- a/arch/x86_64/kernel/vsyscall.c +++ b/arch/x86_64/kernel/vsyscall.c | |||
@@ -112,7 +112,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv) | |||
112 | 112 | ||
113 | vread = __vsyscall_gtod_data.clock.vread; | 113 | vread = __vsyscall_gtod_data.clock.vread; |
114 | if (unlikely(!__vsyscall_gtod_data.sysctl_enabled || !vread)) { | 114 | if (unlikely(!__vsyscall_gtod_data.sysctl_enabled || !vread)) { |
115 | gettimeofday(tv,0); | 115 | gettimeofday(tv,NULL); |
116 | return; | 116 | return; |
117 | } | 117 | } |
118 | now = vread(); | 118 | now = vread(); |
diff --git a/arch/x86_64/kernel/x8664_ksyms.c b/arch/x86_64/kernel/x8664_ksyms.c index 0dffae69f4ad..77c25b307635 100644 --- a/arch/x86_64/kernel/x8664_ksyms.c +++ b/arch/x86_64/kernel/x8664_ksyms.c | |||
@@ -59,3 +59,4 @@ EXPORT_SYMBOL(empty_zero_page); | |||
59 | EXPORT_SYMBOL(init_level4_pgt); | 59 | EXPORT_SYMBOL(init_level4_pgt); |
60 | EXPORT_SYMBOL(load_gs_index); | 60 | EXPORT_SYMBOL(load_gs_index); |
61 | 61 | ||
62 | EXPORT_SYMBOL(_proxy_pda); | ||