diff options
author | Paul Mackerras <paulus@samba.org> | 2007-04-12 13:50:03 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-12 13:50:03 -0400 |
commit | e049d1ca3094f3d1d94617f456a9961202f96e3a (patch) | |
tree | a30397ad22f2fbea268bd28fa69c60aad9dfa62a /arch | |
parent | edfac96a92b88d3b0b53e3f8231b74beee9ecd1d (diff) | |
parent | 80584ff3b99c36ead7e130e453b3a48b18072d18 (diff) |
Merge branch 'linux-2.6' into for-2.6.22
Diffstat (limited to 'arch')
279 files changed, 3473 insertions, 1737 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/kernel/dma.c b/arch/arm/kernel/dma.c index 5a0f4bc5da95..ba99a2035523 100644 --- a/arch/arm/kernel/dma.c +++ b/arch/arm/kernel/dma.c | |||
@@ -228,6 +228,7 @@ int dma_channel_active(dmach_t channel) | |||
228 | { | 228 | { |
229 | return dma_chan[channel].active; | 229 | return dma_chan[channel].active; |
230 | } | 230 | } |
231 | EXPORT_SYMBOL(dma_channel_active); | ||
231 | 232 | ||
232 | void set_dma_page(dmach_t channel, char pagenr) | 233 | void set_dma_page(dmach_t channel, char pagenr) |
233 | { | 234 | { |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 03e37af315d7..0453dcc757b4 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -839,8 +839,11 @@ static int __init topology_init(void) | |||
839 | { | 839 | { |
840 | int cpu; | 840 | int cpu; |
841 | 841 | ||
842 | for_each_possible_cpu(cpu) | 842 | for_each_possible_cpu(cpu) { |
843 | register_cpu(&per_cpu(cpu_data, cpu).cpu, cpu); | 843 | struct cpuinfo_arm *cpuinfo = &per_cpu(cpu_data, cpu); |
844 | cpuinfo->cpu.hotpluggable = 1; | ||
845 | register_cpu(&cpuinfo->cpu, cpu); | ||
846 | } | ||
844 | 847 | ||
845 | return 0; | 848 | return 0; |
846 | } | 849 | } |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index f7d342ccbebf..40586e22cd38 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
@@ -320,16 +320,16 @@ void __init at91_add_device_nand(struct at91_nand_data *data) | |||
320 | at91_sys_write(AT91_SMC_SETUP(3), AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) | 320 | at91_sys_write(AT91_SMC_SETUP(3), AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) |
321 | | AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0)); | 321 | | AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0)); |
322 | 322 | ||
323 | at91_sys_write(AT91_SMC_PULSE(3), AT91_SMC_NWEPULSE_(2) | AT91_SMC_NCS_WRPULSE_(5) | 323 | at91_sys_write(AT91_SMC_PULSE(3), AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
324 | | AT91_SMC_NRDPULSE_(2) | AT91_SMC_NCS_RDPULSE_(5)); | 324 | | AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3)); |
325 | 325 | ||
326 | at91_sys_write(AT91_SMC_CYCLE(3), AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7)); | 326 | at91_sys_write(AT91_SMC_CYCLE(3), AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5)); |
327 | 327 | ||
328 | if (data->bus_width_16) | 328 | if (data->bus_width_16) |
329 | mode = AT91_SMC_DBW_16; | 329 | mode = AT91_SMC_DBW_16; |
330 | else | 330 | else |
331 | mode = AT91_SMC_DBW_8; | 331 | mode = AT91_SMC_DBW_8; |
332 | at91_sys_write(AT91_SMC_MODE(3), mode | AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_TDF_(1)); | 332 | at91_sys_write(AT91_SMC_MODE(3), mode | AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_TDF_(2)); |
333 | 333 | ||
334 | /* enable pin */ | 334 | /* enable pin */ |
335 | if (data->enable_pin) | 335 | if (data->enable_pin) |
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-iop32x/Kconfig b/arch/arm/mach-iop32x/Kconfig index c072d94070da..9dd49cff21ff 100644 --- a/arch/arm/mach-iop32x/Kconfig +++ b/arch/arm/mach-iop32x/Kconfig | |||
@@ -4,6 +4,9 @@ menu "IOP32x Implementation Options" | |||
4 | 4 | ||
5 | comment "IOP32x Platform Types" | 5 | comment "IOP32x Platform Types" |
6 | 6 | ||
7 | config MACH_EP80219 | ||
8 | bool | ||
9 | |||
7 | config MACH_GLANTANK | 10 | config MACH_GLANTANK |
8 | bool "Enable support for the IO-Data GLAN Tank" | 11 | bool "Enable support for the IO-Data GLAN Tank" |
9 | help | 12 | help |
@@ -19,6 +22,7 @@ config ARCH_IQ80321 | |||
19 | 22 | ||
20 | config ARCH_IQ31244 | 23 | config ARCH_IQ31244 |
21 | bool "Enable support for EP80219/IQ31244" | 24 | bool "Enable support for EP80219/IQ31244" |
25 | select MACH_EP80219 | ||
22 | help | 26 | help |
23 | Say Y here if you want to run your kernel on the Intel EP80219 | 27 | Say Y here if you want to run your kernel on the Intel EP80219 |
24 | evaluation kit for the Intel 80219 processor (a IOP321 variant) | 28 | evaluation kit for the Intel 80219 processor (a IOP321 variant) |
diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c index 571ac35bc2c7..60e74309a458 100644 --- a/arch/arm/mach-iop32x/iq31244.c +++ b/arch/arm/mach-iop32x/iq31244.c | |||
@@ -39,22 +39,35 @@ | |||
39 | #include <asm/arch/time.h> | 39 | #include <asm/arch/time.h> |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * The EP80219 and IQ31244 use the same machine ID. To find out | 42 | * Until March of 2007 iq31244 platforms and ep80219 platforms shared the |
43 | * which of the two we're running on, we look at the processor ID. | 43 | * same machine id, and the processor type was used to select board type. |
44 | * However this assumption breaks for an iq80219 board which is an iop219 | ||
45 | * processor on an iq31244 board. The force_ep80219 flag has been added | ||
46 | * for old boot loaders using the iq31244 machine id for an ep80219 platform. | ||
44 | */ | 47 | */ |
48 | static int force_ep80219; | ||
49 | |||
45 | static int is_80219(void) | 50 | static int is_80219(void) |
46 | { | 51 | { |
47 | extern int processor_id; | 52 | extern int processor_id; |
48 | return !!((processor_id & 0xffffffe0) == 0x69052e20); | 53 | return !!((processor_id & 0xffffffe0) == 0x69052e20); |
49 | } | 54 | } |
50 | 55 | ||
56 | static int is_ep80219(void) | ||
57 | { | ||
58 | if (machine_is_ep80219() || force_ep80219) | ||
59 | return 1; | ||
60 | else | ||
61 | return 0; | ||
62 | } | ||
63 | |||
51 | 64 | ||
52 | /* | 65 | /* |
53 | * EP80219/IQ31244 timer tick configuration. | 66 | * EP80219/IQ31244 timer tick configuration. |
54 | */ | 67 | */ |
55 | static void __init iq31244_timer_init(void) | 68 | static void __init iq31244_timer_init(void) |
56 | { | 69 | { |
57 | if (is_80219()) { | 70 | if (is_ep80219()) { |
58 | /* 33.333 MHz crystal. */ | 71 | /* 33.333 MHz crystal. */ |
59 | iop_init_time(200000000); | 72 | iop_init_time(200000000); |
60 | } else { | 73 | } else { |
@@ -165,12 +178,18 @@ static struct hw_pci iq31244_pci __initdata = { | |||
165 | 178 | ||
166 | static int __init iq31244_pci_init(void) | 179 | static int __init iq31244_pci_init(void) |
167 | { | 180 | { |
168 | if (machine_is_iq31244()) { | 181 | if (is_ep80219()) |
182 | pci_common_init(&ep80219_pci); | ||
183 | else if (machine_is_iq31244()) { | ||
169 | if (is_80219()) { | 184 | if (is_80219()) { |
170 | pci_common_init(&ep80219_pci); | 185 | printk("note: iq31244 board type has been selected\n"); |
171 | } else { | 186 | printk("note: to select ep80219 operation:\n"); |
172 | pci_common_init(&iq31244_pci); | 187 | printk("\t1/ specify \"force_ep80219\" on the kernel" |
188 | " command line\n"); | ||
189 | printk("\t2/ update boot loader to pass" | ||
190 | " the ep80219 id: %d\n", MACH_TYPE_EP80219); | ||
173 | } | 191 | } |
192 | pci_common_init(&iq31244_pci); | ||
174 | } | 193 | } |
175 | 194 | ||
176 | return 0; | 195 | return 0; |
@@ -277,10 +296,18 @@ static void __init iq31244_init_machine(void) | |||
277 | platform_device_register(&iq31244_flash_device); | 296 | platform_device_register(&iq31244_flash_device); |
278 | platform_device_register(&iq31244_serial_device); | 297 | platform_device_register(&iq31244_serial_device); |
279 | 298 | ||
280 | if (is_80219()) | 299 | if (is_ep80219()) |
281 | pm_power_off = ep80219_power_off; | 300 | pm_power_off = ep80219_power_off; |
282 | } | 301 | } |
283 | 302 | ||
303 | static int __init force_ep80219_setup(char *str) | ||
304 | { | ||
305 | force_ep80219 = 1; | ||
306 | return 1; | ||
307 | } | ||
308 | |||
309 | __setup("force_ep80219", force_ep80219_setup); | ||
310 | |||
284 | MACHINE_START(IQ31244, "Intel IQ31244") | 311 | MACHINE_START(IQ31244, "Intel IQ31244") |
285 | /* Maintainer: Intel Corp. */ | 312 | /* Maintainer: Intel Corp. */ |
286 | .phys_io = IQ31244_UART, | 313 | .phys_io = IQ31244_UART, |
@@ -291,3 +318,19 @@ MACHINE_START(IQ31244, "Intel IQ31244") | |||
291 | .timer = &iq31244_timer, | 318 | .timer = &iq31244_timer, |
292 | .init_machine = iq31244_init_machine, | 319 | .init_machine = iq31244_init_machine, |
293 | MACHINE_END | 320 | MACHINE_END |
321 | |||
322 | /* There should have been an ep80219 machine identifier from the beginning. | ||
323 | * Boot roms older than March 2007 do not know the ep80219 machine id. Pass | ||
324 | * "force_ep80219" on the kernel command line, otherwise iq31244 operation | ||
325 | * will be selected. | ||
326 | */ | ||
327 | MACHINE_START(EP80219, "Intel EP80219") | ||
328 | /* Maintainer: Intel Corp. */ | ||
329 | .phys_io = IQ31244_UART, | ||
330 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, | ||
331 | .boot_params = 0xa0000100, | ||
332 | .map_io = iq31244_map_io, | ||
333 | .init_irq = iop32x_init_irq, | ||
334 | .timer = &iq31244_timer, | ||
335 | .init_machine = iq31244_init_machine, | ||
336 | MACHINE_END | ||
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-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 01c60d0923cd..d052ab2d9377 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -202,7 +202,9 @@ static void __init h1940_map_io(void) | |||
202 | 202 | ||
203 | /* setup PM */ | 203 | /* setup PM */ |
204 | 204 | ||
205 | #ifdef CONFIG_PM_H1940 | ||
205 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); | 206 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); |
207 | #endif | ||
206 | s3c2410_pm_init(); | 208 | s3c2410_pm_init(); |
207 | } | 209 | } |
208 | 210 | ||
diff --git a/arch/arm/mach-s3c2440/mach-rx3715.c b/arch/arm/mach-s3c2440/mach-rx3715.c index 480ccde63fb4..ae1d0a81fd6a 100644 --- a/arch/arm/mach-s3c2440/mach-rx3715.c +++ b/arch/arm/mach-s3c2440/mach-rx3715.c | |||
@@ -224,7 +224,9 @@ static void __init rx3715_init_irq(void) | |||
224 | 224 | ||
225 | static void __init rx3715_init_machine(void) | 225 | static void __init rx3715_init_machine(void) |
226 | { | 226 | { |
227 | #ifdef CONFIG_PM_H1940 | ||
227 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); | 228 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); |
229 | #endif | ||
228 | s3c2410_pm_init(); | 230 | s3c2410_pm_init(); |
229 | 231 | ||
230 | s3c24xx_fb_set_platdata(&rx3715_lcdcfg); | 232 | s3c24xx_fb_set_platdata(&rx3715_lcdcfg); |
diff --git a/arch/arm/mach-s3c2443/irq.c b/arch/arm/mach-s3c2443/irq.c index 7a45b6dcb73e..756573595b88 100644 --- a/arch/arm/mach-s3c2443/irq.c +++ b/arch/arm/mach-s3c2443/irq.c | |||
@@ -137,7 +137,7 @@ static struct irq_chip s3c2443_irq_lcd = { | |||
137 | 137 | ||
138 | static void s3c2443_irq_demux_dma(unsigned int irq, struct irq_desc *desc) | 138 | static void s3c2443_irq_demux_dma(unsigned int irq, struct irq_desc *desc) |
139 | { | 139 | { |
140 | s3c2443_irq_demux(IRQ_S3C2443_DMA1, 6); | 140 | s3c2443_irq_demux(IRQ_S3C2443_DMA0, 6); |
141 | } | 141 | } |
142 | 142 | ||
143 | #define INTMSK_DMA (1UL << (IRQ_S3C2443_DMA - IRQ_EINT0)) | 143 | #define INTMSK_DMA (1UL << (IRQ_S3C2443_DMA - IRQ_EINT0)) |
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/kernel/ptrace.c b/arch/avr32/kernel/ptrace.c index f2e81cd79002..6f4388f7c20b 100644 --- a/arch/avr32/kernel/ptrace.c +++ b/arch/avr32/kernel/ptrace.c | |||
@@ -313,7 +313,7 @@ asmlinkage void do_debug_priv(struct pt_regs *regs) | |||
313 | __mtdr(DBGREG_DC, dc); | 313 | __mtdr(DBGREG_DC, dc); |
314 | 314 | ||
315 | ti = current_thread_info(); | 315 | ti = current_thread_info(); |
316 | ti->flags |= _TIF_BREAKPOINT; | 316 | set_ti_thread_flag(ti, TIF_BREAKPOINT); |
317 | 317 | ||
318 | /* The TLB miss handlers don't check thread flags */ | 318 | /* The TLB miss handlers don't check thread flags */ |
319 | if ((regs->pc >= (unsigned long)&itlb_miss) | 319 | if ((regs->pc >= (unsigned long)&itlb_miss) |
@@ -328,7 +328,7 @@ asmlinkage void do_debug_priv(struct pt_regs *regs) | |||
328 | * single step. | 328 | * single step. |
329 | */ | 329 | */ |
330 | if ((regs->sr & MODE_MASK) != MODE_SUPERVISOR) | 330 | if ((regs->sr & MODE_MASK) != MODE_SUPERVISOR) |
331 | ti->flags |= TIF_SINGLE_STEP; | 331 | set_ti_thread_flag(ti, TIF_SINGLE_STEP); |
332 | } else { | 332 | } else { |
333 | panic("Unable to handle debug trap at pc = %08lx\n", | 333 | panic("Unable to handle debug trap at pc = %08lx\n", |
334 | regs->pc); | 334 | regs->pc); |
diff --git a/arch/avr32/kernel/traps.c b/arch/avr32/kernel/traps.c index 7e803f4d7a12..adc01a12d154 100644 --- a/arch/avr32/kernel/traps.c +++ b/arch/avr32/kernel/traps.c | |||
@@ -49,39 +49,45 @@ out: | |||
49 | return; | 49 | return; |
50 | } | 50 | } |
51 | 51 | ||
52 | static inline int valid_stack_ptr(struct thread_info *tinfo, unsigned long p) | ||
53 | { | ||
54 | return (p > (unsigned long)tinfo) | ||
55 | && (p < (unsigned long)tinfo + THREAD_SIZE - 3); | ||
56 | } | ||
57 | |||
52 | #ifdef CONFIG_FRAME_POINTER | 58 | #ifdef CONFIG_FRAME_POINTER |
53 | static inline void __show_trace(struct task_struct *tsk, unsigned long *sp, | 59 | static inline void __show_trace(struct task_struct *tsk, unsigned long *sp, |
54 | struct pt_regs *regs) | 60 | struct pt_regs *regs) |
55 | { | 61 | { |
56 | unsigned long __user *fp; | 62 | unsigned long lr, fp; |
57 | unsigned long __user *last_fp = NULL; | 63 | struct thread_info *tinfo; |
58 | 64 | ||
59 | if (regs) { | 65 | tinfo = (struct thread_info *) |
60 | fp = (unsigned long __user *)regs->r7; | 66 | ((unsigned long)sp & ~(THREAD_SIZE - 1)); |
61 | } else if (tsk == current) { | 67 | |
62 | register unsigned long __user *real_fp __asm__("r7"); | 68 | if (regs) |
63 | fp = real_fp; | 69 | fp = regs->r7; |
64 | } else { | 70 | else if (tsk == current) |
65 | fp = (unsigned long __user *)tsk->thread.cpu_context.r7; | 71 | asm("mov %0, r7" : "=r"(fp)); |
66 | } | 72 | else |
73 | fp = tsk->thread.cpu_context.r7; | ||
67 | 74 | ||
68 | /* | 75 | /* |
69 | * Walk the stack until (a) we get an exception, (b) the frame | 76 | * Walk the stack as long as the frame pointer (a) is within |
70 | * pointer becomes zero, or (c) the frame pointer gets stuck | 77 | * the kernel stack of the task, and (b) it doesn't move |
71 | * at the same value. | 78 | * downwards. |
72 | */ | 79 | */ |
73 | while (fp && fp != last_fp) { | 80 | while (valid_stack_ptr(tinfo, fp)) { |
74 | unsigned long lr, new_fp = 0; | 81 | unsigned long new_fp; |
75 | |||
76 | last_fp = fp; | ||
77 | if (__get_user(lr, fp)) | ||
78 | break; | ||
79 | if (fp && __get_user(new_fp, fp + 1)) | ||
80 | break; | ||
81 | fp = (unsigned long __user *)new_fp; | ||
82 | 82 | ||
83 | lr = *(unsigned long *)fp; | ||
83 | printk(" [<%08lx>] ", lr); | 84 | printk(" [<%08lx>] ", lr); |
84 | print_symbol("%s\n", lr); | 85 | print_symbol("%s\n", lr); |
86 | |||
87 | new_fp = *(unsigned long *)(fp + 4); | ||
88 | if (new_fp <= fp) | ||
89 | break; | ||
90 | fp = new_fp; | ||
85 | } | 91 | } |
86 | printk("\n"); | 92 | printk("\n"); |
87 | } | 93 | } |
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c index bc235507c5c7..472703f90c22 100644 --- a/arch/avr32/mach-at32ap/at32ap7000.c +++ b/arch/avr32/mach-at32ap/at32ap7000.c | |||
@@ -752,7 +752,7 @@ static struct resource atmel_spi1_resource[] = { | |||
752 | DEFINE_DEV(atmel_spi, 1); | 752 | DEFINE_DEV(atmel_spi, 1); |
753 | DEV_CLK(spi_clk, atmel_spi1, pba, 1); | 753 | DEV_CLK(spi_clk, atmel_spi1, pba, 1); |
754 | 754 | ||
755 | static void | 755 | static void __init |
756 | at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, | 756 | at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, |
757 | unsigned int n, const u8 *pins) | 757 | unsigned int n, const u8 *pins) |
758 | { | 758 | { |
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/avr32/mm/cache.c b/arch/avr32/mm/cache.c index fb13f72e9a02..8f7b1c3cd0f9 100644 --- a/arch/avr32/mm/cache.c +++ b/arch/avr32/mm/cache.c | |||
@@ -121,9 +121,8 @@ void flush_icache_range(unsigned long start, unsigned long end) | |||
121 | void flush_icache_page(struct vm_area_struct *vma, struct page *page) | 121 | void flush_icache_page(struct vm_area_struct *vma, struct page *page) |
122 | { | 122 | { |
123 | if (vma->vm_flags & VM_EXEC) { | 123 | if (vma->vm_flags & VM_EXEC) { |
124 | void *v = kmap(page); | 124 | void *v = page_address(page); |
125 | __flush_icache_range((unsigned long)v, (unsigned long)v + PAGE_SIZE); | 125 | __flush_icache_range((unsigned long)v, (unsigned long)v + PAGE_SIZE); |
126 | kunmap(v); | ||
127 | } | 126 | } |
128 | } | 127 | } |
129 | 128 | ||
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c index a2b9c60c2777..5b79a7a772d4 100644 --- a/arch/cris/arch-v32/drivers/pci/bios.c +++ b/arch/cris/arch-v32/drivers/pci/bios.c | |||
@@ -100,7 +100,9 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
100 | if ((err = pcibios_enable_resources(dev, mask)) < 0) | 100 | if ((err = pcibios_enable_resources(dev, mask)) < 0) |
101 | return err; | 101 | return err; |
102 | 102 | ||
103 | return pcibios_enable_irq(dev); | 103 | if (!dev->msi_enabled) |
104 | pcibios_enable_irq(dev); | ||
105 | return 0; | ||
104 | } | 106 | } |
105 | 107 | ||
106 | int pcibios_assign_resources(void) | 108 | int pcibios_assign_resources(void) |
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c index f7279d78995a..0b581e3cf7c7 100644 --- a/arch/frv/mb93090-mb00/pci-vdk.c +++ b/arch/frv/mb93090-mb00/pci-vdk.c | |||
@@ -466,6 +466,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
466 | 466 | ||
467 | if ((err = pcibios_enable_resources(dev, mask)) < 0) | 467 | if ((err = pcibios_enable_resources(dev, mask)) < 0) |
468 | return err; | 468 | return err; |
469 | pcibios_enable_irq(dev); | 469 | if (!dev->msi_enabled) |
470 | pcibios_enable_irq(dev); | ||
470 | return 0; | 471 | return 0; |
471 | } | 472 | } |
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/boot/video.S b/arch/i386/boot/video.S index 2c5b5cc55f79..8143c9516cb4 100644 --- a/arch/i386/boot/video.S +++ b/arch/i386/boot/video.S | |||
@@ -571,6 +571,16 @@ setr1: lodsw | |||
571 | jmp _m_s | 571 | jmp _m_s |
572 | 572 | ||
573 | check_vesa: | 573 | check_vesa: |
574 | #ifdef CONFIG_FIRMWARE_EDID | ||
575 | leaw modelist+1024, %di | ||
576 | movw $0x4f00, %ax | ||
577 | int $0x10 | ||
578 | cmpw $0x004f, %ax | ||
579 | jnz setbad | ||
580 | |||
581 | movw 4(%di), %ax | ||
582 | movw %ax, vbe_version | ||
583 | #endif | ||
574 | leaw modelist+1024, %di | 584 | leaw modelist+1024, %di |
575 | subb $VIDEO_FIRST_VESA>>8, %bh | 585 | subb $VIDEO_FIRST_VESA>>8, %bh |
576 | movw %bx, %cx # Get mode information structure | 586 | movw %bx, %cx # Get mode information structure |
@@ -1945,6 +1955,9 @@ store_edid: | |||
1945 | rep | 1955 | rep |
1946 | stosl | 1956 | stosl |
1947 | 1957 | ||
1958 | cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0 | ||
1959 | jl no_edid | ||
1960 | |||
1948 | pushw %es # save ES | 1961 | pushw %es # save ES |
1949 | xorw %di, %di # Report Capability | 1962 | xorw %di, %di # Report Capability |
1950 | pushw %di | 1963 | pushw %di |
@@ -1987,6 +2000,7 @@ do_restore: .byte 0 # Screen contents altered during mode change | |||
1987 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes | 2000 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes |
1988 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer | 2001 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer |
1989 | dac_size: .byte 6 # DAC bit depth | 2002 | dac_size: .byte 6 # DAC bit depth |
2003 | vbe_version: .word 0 # VBE bios version | ||
1990 | 2004 | ||
1991 | # Status messages | 2005 | # Status messages |
1992 | keymsg: .ascii "Press <RETURN> to see video modes available, " | 2006 | keymsg: .ascii "Press <RETURN> to see video modes available, " |
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/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index e5eb97a910ed..9ea5b8ecc7e1 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -1072,7 +1072,28 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
1072 | "ASUS A7V ACPI BIOS Revision 1007"), | 1072 | "ASUS A7V ACPI BIOS Revision 1007"), |
1073 | }, | 1073 | }, |
1074 | }, | 1074 | }, |
1075 | 1075 | { | |
1076 | /* | ||
1077 | * Latest BIOS for IBM 600E (1.16) has bad pcinum | ||
1078 | * for LPC bridge, which is needed for the PCI | ||
1079 | * interrupt links to work. DSDT fix is in bug 5966. | ||
1080 | * 2645, 2646 model numbers are shared with 600/600E/600X | ||
1081 | */ | ||
1082 | .callback = disable_acpi_irq, | ||
1083 | .ident = "IBM Thinkpad 600 Series 2645", | ||
1084 | .matches = { | ||
1085 | DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), | ||
1086 | DMI_MATCH(DMI_BOARD_NAME, "2645"), | ||
1087 | }, | ||
1088 | }, | ||
1089 | { | ||
1090 | .callback = disable_acpi_irq, | ||
1091 | .ident = "IBM Thinkpad 600 Series 2646", | ||
1092 | .matches = { | ||
1093 | DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), | ||
1094 | DMI_MATCH(DMI_BOARD_NAME, "2646"), | ||
1095 | }, | ||
1096 | }, | ||
1076 | /* | 1097 | /* |
1077 | * Boxes that need ACPI PCI IRQ routing and PCI scan disabled | 1098 | * Boxes that need ACPI PCI IRQ routing and PCI scan disabled |
1078 | */ | 1099 | */ |
diff --git a/arch/i386/kernel/acpi/earlyquirk.c b/arch/i386/kernel/acpi/earlyquirk.c index bf86f7662d8b..a7d22d9f3d7e 100644 --- a/arch/i386/kernel/acpi/earlyquirk.c +++ b/arch/i386/kernel/acpi/earlyquirk.c | |||
@@ -14,11 +14,8 @@ | |||
14 | 14 | ||
15 | #ifdef CONFIG_ACPI | 15 | #ifdef CONFIG_ACPI |
16 | 16 | ||
17 | static int nvidia_hpet_detected __initdata; | ||
18 | |||
19 | static int __init nvidia_hpet_check(struct acpi_table_header *header) | 17 | static int __init nvidia_hpet_check(struct acpi_table_header *header) |
20 | { | 18 | { |
21 | nvidia_hpet_detected = 1; | ||
22 | return 0; | 19 | return 0; |
23 | } | 20 | } |
24 | #endif | 21 | #endif |
@@ -29,9 +26,7 @@ static int __init check_bridge(int vendor, int device) | |||
29 | /* According to Nvidia all timer overrides are bogus unless HPET | 26 | /* According to Nvidia all timer overrides are bogus unless HPET |
30 | is enabled. */ | 27 | is enabled. */ |
31 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { | 28 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { |
32 | nvidia_hpet_detected = 0; | 29 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) { |
33 | acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check); | ||
34 | if (nvidia_hpet_detected == 0) { | ||
35 | acpi_skip_timer_override = 1; | 30 | acpi_skip_timer_override = 1; |
36 | printk(KERN_INFO "Nvidia board " | 31 | printk(KERN_INFO "Nvidia board " |
37 | "detected. Ignoring ACPI " | 32 | "detected. Ignoring ACPI " |
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 2383bcf18c5d..93aa911646ad 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/clockchips.h> | 28 | #include <linux/clockchips.h> |
29 | #include <linux/acpi_pmtmr.h> | 29 | #include <linux/acpi_pmtmr.h> |
30 | #include <linux/module.h> | 30 | #include <linux/module.h> |
31 | #include <linux/dmi.h> | ||
31 | 32 | ||
32 | #include <asm/atomic.h> | 33 | #include <asm/atomic.h> |
33 | #include <asm/smp.h> | 34 | #include <asm/smp.h> |
@@ -61,6 +62,11 @@ static int enable_local_apic __initdata = 0; | |||
61 | 62 | ||
62 | /* Local APIC timer verification ok */ | 63 | /* Local APIC timer verification ok */ |
63 | static int local_apic_timer_verify_ok; | 64 | static int local_apic_timer_verify_ok; |
65 | /* Disable local APIC timer from the kernel commandline or via dmi quirk */ | ||
66 | static int local_apic_timer_disabled; | ||
67 | /* Local APIC timer works in C2 */ | ||
68 | int local_apic_timer_c2_ok; | ||
69 | EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); | ||
64 | 70 | ||
65 | /* | 71 | /* |
66 | * Debug level, exported for io_apic.c | 72 | * Debug level, exported for io_apic.c |
@@ -338,6 +344,23 @@ void __init setup_boot_APIC_clock(void) | |||
338 | void (*real_handler)(struct clock_event_device *dev); | 344 | void (*real_handler)(struct clock_event_device *dev); |
339 | unsigned long deltaj; | 345 | unsigned long deltaj; |
340 | long delta, deltapm; | 346 | long delta, deltapm; |
347 | int pm_referenced = 0; | ||
348 | |||
349 | if (boot_cpu_has(X86_FEATURE_LAPIC_TIMER_BROKEN)) | ||
350 | local_apic_timer_disabled = 1; | ||
351 | |||
352 | /* | ||
353 | * The local apic timer can be disabled via the kernel | ||
354 | * commandline or from the test above. Register the lapic | ||
355 | * timer as a dummy clock event source on SMP systems, so the | ||
356 | * broadcast mechanism is used. On UP systems simply ignore it. | ||
357 | */ | ||
358 | if (local_apic_timer_disabled) { | ||
359 | /* No broadcast on UP ! */ | ||
360 | if (num_possible_cpus() > 1) | ||
361 | setup_APIC_timer(); | ||
362 | return; | ||
363 | } | ||
341 | 364 | ||
342 | apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n" | 365 | apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n" |
343 | "calibrating APIC timer ...\n"); | 366 | "calibrating APIC timer ...\n"); |
@@ -357,7 +380,8 @@ void __init setup_boot_APIC_clock(void) | |||
357 | /* Let the interrupts run */ | 380 | /* Let the interrupts run */ |
358 | local_irq_enable(); | 381 | local_irq_enable(); |
359 | 382 | ||
360 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS); | 383 | while (lapic_cal_loops <= LAPIC_CAL_LOOPS) |
384 | cpu_relax(); | ||
361 | 385 | ||
362 | local_irq_disable(); | 386 | local_irq_disable(); |
363 | 387 | ||
@@ -394,6 +418,7 @@ void __init setup_boot_APIC_clock(void) | |||
394 | "%lu (%ld)\n", (unsigned long) res, delta); | 418 | "%lu (%ld)\n", (unsigned long) res, delta); |
395 | delta = (long) res; | 419 | delta = (long) res; |
396 | } | 420 | } |
421 | pm_referenced = 1; | ||
397 | } | 422 | } |
398 | 423 | ||
399 | /* Calculate the scaled math multiplication factor */ | 424 | /* Calculate the scaled math multiplication factor */ |
@@ -423,69 +448,43 @@ void __init setup_boot_APIC_clock(void) | |||
423 | calibration_result / (1000000 / HZ), | 448 | calibration_result / (1000000 / HZ), |
424 | calibration_result % (1000000 / HZ)); | 449 | calibration_result % (1000000 / HZ)); |
425 | 450 | ||
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; | 451 | 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 | 452 | ||
437 | /* Let the interrupts run */ | 453 | /* We trust the pm timer based calibration */ |
438 | local_irq_enable(); | 454 | if (!pm_referenced) { |
455 | apic_printk(APIC_VERBOSE, "... verify APIC timer\n"); | ||
439 | 456 | ||
440 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS); | 457 | /* |
458 | * Setup the apic timer manually | ||
459 | */ | ||
460 | levt->event_handler = lapic_cal_handler; | ||
461 | lapic_timer_setup(CLOCK_EVT_MODE_PERIODIC, levt); | ||
462 | lapic_cal_loops = -1; | ||
441 | 463 | ||
442 | local_irq_disable(); | 464 | /* Let the interrupts run */ |
465 | local_irq_enable(); | ||
443 | 466 | ||
444 | /* Stop the lapic timer */ | 467 | while(lapic_cal_loops <= LAPIC_CAL_LOOPS) |
445 | lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt); | 468 | cpu_relax(); |
446 | 469 | ||
447 | local_irq_enable(); | 470 | local_irq_disable(); |
448 | 471 | ||
449 | /* Jiffies delta */ | 472 | /* Stop the lapic timer */ |
450 | deltaj = lapic_cal_j2 - lapic_cal_j1; | 473 | lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt); |
451 | apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj); | ||
452 | 474 | ||
453 | /* Check, if the PM timer is available */ | 475 | local_irq_enable(); |
454 | deltapm = lapic_cal_pm2 - lapic_cal_pm1; | ||
455 | apic_printk(APIC_VERBOSE, "... PM timer delta = %ld\n", deltapm); | ||
456 | 476 | ||
457 | local_apic_timer_verify_ok = 0; | 477 | /* Jiffies delta */ |
478 | deltaj = lapic_cal_j2 - lapic_cal_j1; | ||
479 | apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj); | ||
458 | 480 | ||
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 */ | 481 | /* Check, if the jiffies result is consistent */ |
483 | if (deltaj >= LAPIC_CAL_LOOPS-2 && | 482 | 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"); | 483 | apic_printk(APIC_VERBOSE, "... jiffies result ok\n"); |
486 | local_apic_timer_verify_ok = 1; | 484 | else |
487 | } | 485 | local_apic_timer_verify_ok = 0; |
488 | } | 486 | } else |
487 | local_irq_enable(); | ||
489 | 488 | ||
490 | if (!local_apic_timer_verify_ok) { | 489 | if (!local_apic_timer_verify_ok) { |
491 | printk(KERN_WARNING | 490 | printk(KERN_WARNING |
@@ -1203,6 +1202,20 @@ static int __init parse_nolapic(char *arg) | |||
1203 | } | 1202 | } |
1204 | early_param("nolapic", parse_nolapic); | 1203 | early_param("nolapic", parse_nolapic); |
1205 | 1204 | ||
1205 | static int __init parse_disable_lapic_timer(char *arg) | ||
1206 | { | ||
1207 | local_apic_timer_disabled = 1; | ||
1208 | return 0; | ||
1209 | } | ||
1210 | early_param("nolapic_timer", parse_disable_lapic_timer); | ||
1211 | |||
1212 | static int __init parse_lapic_timer_c2_ok(char *arg) | ||
1213 | { | ||
1214 | local_apic_timer_c2_ok = 1; | ||
1215 | return 0; | ||
1216 | } | ||
1217 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); | ||
1218 | |||
1206 | static int __init apic_set_verbosity(char *str) | 1219 | static int __init apic_set_verbosity(char *str) |
1207 | { | 1220 | { |
1208 | if (strcmp("debug", str) == 0) | 1221 | if (strcmp("debug", str) == 0) |
diff --git a/arch/i386/kernel/cpu/amd.c b/arch/i386/kernel/cpu/amd.c index 41cfea57232b..2d47db482972 100644 --- a/arch/i386/kernel/cpu/amd.c +++ b/arch/i386/kernel/cpu/amd.c | |||
@@ -22,6 +22,37 @@ | |||
22 | extern void vide(void); | 22 | extern void vide(void); |
23 | __asm__(".align 4\nvide: ret"); | 23 | __asm__(".align 4\nvide: ret"); |
24 | 24 | ||
25 | #define ENABLE_C1E_MASK 0x18000000 | ||
26 | #define CPUID_PROCESSOR_SIGNATURE 1 | ||
27 | #define CPUID_XFAM 0x0ff00000 | ||
28 | #define CPUID_XFAM_K8 0x00000000 | ||
29 | #define CPUID_XFAM_10H 0x00100000 | ||
30 | #define CPUID_XFAM_11H 0x00200000 | ||
31 | #define CPUID_XMOD 0x000f0000 | ||
32 | #define CPUID_XMOD_REV_F 0x00040000 | ||
33 | |||
34 | /* AMD systems with C1E don't have a working lAPIC timer. Check for that. */ | ||
35 | static __cpuinit int amd_apic_timer_broken(void) | ||
36 | { | ||
37 | u32 lo, hi; | ||
38 | u32 eax = cpuid_eax(CPUID_PROCESSOR_SIGNATURE); | ||
39 | switch (eax & CPUID_XFAM) { | ||
40 | case CPUID_XFAM_K8: | ||
41 | if ((eax & CPUID_XMOD) < CPUID_XMOD_REV_F) | ||
42 | break; | ||
43 | case CPUID_XFAM_10H: | ||
44 | case CPUID_XFAM_11H: | ||
45 | rdmsr(MSR_K8_ENABLE_C1E, lo, hi); | ||
46 | if (lo & ENABLE_C1E_MASK) | ||
47 | return 1; | ||
48 | break; | ||
49 | default: | ||
50 | /* err on the side of caution */ | ||
51 | return 1; | ||
52 | } | ||
53 | return 0; | ||
54 | } | ||
55 | |||
25 | static void __cpuinit init_amd(struct cpuinfo_x86 *c) | 56 | static void __cpuinit init_amd(struct cpuinfo_x86 *c) |
26 | { | 57 | { |
27 | u32 l, h; | 58 | u32 l, h; |
@@ -241,6 +272,9 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) | |||
241 | 272 | ||
242 | if (cpuid_eax(0x80000000) >= 0x80000006) | 273 | if (cpuid_eax(0x80000000) >= 0x80000006) |
243 | num_cache_leaves = 3; | 274 | num_cache_leaves = 3; |
275 | |||
276 | if (amd_apic_timer_broken()) | ||
277 | set_bit(X86_FEATURE_LAPIC_TIMER_BROKEN, c->x86_capability); | ||
244 | } | 278 | } |
245 | 279 | ||
246 | static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 * c, unsigned int size) | 280 | static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 * c, unsigned int size) |
diff --git a/arch/i386/kernel/hpet.c b/arch/i386/kernel/hpet.c index f3ab61ee7498..17d73459fc5f 100644 --- a/arch/i386/kernel/hpet.c +++ b/arch/i386/kernel/hpet.c | |||
@@ -3,6 +3,8 @@ | |||
3 | #include <linux/errno.h> | 3 | #include <linux/errno.h> |
4 | #include <linux/hpet.h> | 4 | #include <linux/hpet.h> |
5 | #include <linux/init.h> | 5 | #include <linux/init.h> |
6 | #include <linux/sysdev.h> | ||
7 | #include <linux/pm.h> | ||
6 | 8 | ||
7 | #include <asm/hpet.h> | 9 | #include <asm/hpet.h> |
8 | #include <asm/io.h> | 10 | #include <asm/io.h> |
@@ -197,7 +199,7 @@ static int hpet_next_event(unsigned long delta, | |||
197 | cnt += delta; | 199 | cnt += delta; |
198 | hpet_writel(cnt, HPET_T0_CMP); | 200 | hpet_writel(cnt, HPET_T0_CMP); |
199 | 201 | ||
200 | return ((long)(hpet_readl(HPET_COUNTER) - cnt ) > 0); | 202 | return ((long)(hpet_readl(HPET_COUNTER) - cnt ) > 0) ? -ETIME : 0; |
201 | } | 203 | } |
202 | 204 | ||
203 | /* | 205 | /* |
@@ -307,6 +309,7 @@ int __init hpet_enable(void) | |||
307 | out_nohpet: | 309 | out_nohpet: |
308 | iounmap(hpet_virt_address); | 310 | iounmap(hpet_virt_address); |
309 | hpet_virt_address = NULL; | 311 | hpet_virt_address = NULL; |
312 | boot_hpet_disable = 1; | ||
310 | return 0; | 313 | return 0; |
311 | } | 314 | } |
312 | 315 | ||
@@ -521,3 +524,68 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id) | |||
521 | return IRQ_HANDLED; | 524 | return IRQ_HANDLED; |
522 | } | 525 | } |
523 | #endif | 526 | #endif |
527 | |||
528 | |||
529 | /* | ||
530 | * Suspend/resume part | ||
531 | */ | ||
532 | |||
533 | #ifdef CONFIG_PM | ||
534 | |||
535 | static int hpet_suspend(struct sys_device *sys_device, pm_message_t state) | ||
536 | { | ||
537 | unsigned long cfg = hpet_readl(HPET_CFG); | ||
538 | |||
539 | cfg &= ~(HPET_CFG_ENABLE|HPET_CFG_LEGACY); | ||
540 | hpet_writel(cfg, HPET_CFG); | ||
541 | |||
542 | return 0; | ||
543 | } | ||
544 | |||
545 | static int hpet_resume(struct sys_device *sys_device) | ||
546 | { | ||
547 | unsigned int id; | ||
548 | |||
549 | hpet_start_counter(); | ||
550 | |||
551 | id = hpet_readl(HPET_ID); | ||
552 | |||
553 | if (id & HPET_ID_LEGSUP) | ||
554 | hpet_enable_int(); | ||
555 | |||
556 | return 0; | ||
557 | } | ||
558 | |||
559 | static struct sysdev_class hpet_class = { | ||
560 | set_kset_name("hpet"), | ||
561 | .suspend = hpet_suspend, | ||
562 | .resume = hpet_resume, | ||
563 | }; | ||
564 | |||
565 | static struct sys_device hpet_device = { | ||
566 | .id = 0, | ||
567 | .cls = &hpet_class, | ||
568 | }; | ||
569 | |||
570 | |||
571 | static __init int hpet_register_sysfs(void) | ||
572 | { | ||
573 | int err; | ||
574 | |||
575 | if (!is_hpet_capable()) | ||
576 | return 0; | ||
577 | |||
578 | err = sysdev_class_register(&hpet_class); | ||
579 | |||
580 | if (!err) { | ||
581 | err = sysdev_register(&hpet_device); | ||
582 | if (err) | ||
583 | sysdev_class_unregister(&hpet_class); | ||
584 | } | ||
585 | |||
586 | return err; | ||
587 | } | ||
588 | |||
589 | device_initcall(hpet_register_sysfs); | ||
590 | |||
591 | #endif | ||
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/i8253.c b/arch/i386/kernel/i8253.c index 5cbb776b3089..10cef5ca8a5b 100644 --- a/arch/i386/kernel/i8253.c +++ b/arch/i386/kernel/i8253.c | |||
@@ -47,9 +47,17 @@ static void init_pit_timer(enum clock_event_mode mode, | |||
47 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ | 47 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ |
48 | break; | 48 | break; |
49 | 49 | ||
50 | case CLOCK_EVT_MODE_ONESHOT: | 50 | /* |
51 | * Avoid unnecessary state transitions, as it confuses | ||
52 | * Geode / Cyrix based boxen. | ||
53 | */ | ||
51 | case CLOCK_EVT_MODE_SHUTDOWN: | 54 | case CLOCK_EVT_MODE_SHUTDOWN: |
55 | if (evt->mode == CLOCK_EVT_MODE_UNUSED) | ||
56 | break; | ||
52 | case CLOCK_EVT_MODE_UNUSED: | 57 | case CLOCK_EVT_MODE_UNUSED: |
58 | if (evt->mode == CLOCK_EVT_MODE_SHUTDOWN) | ||
59 | break; | ||
60 | case CLOCK_EVT_MODE_ONESHOT: | ||
53 | /* One shot setup */ | 61 | /* One shot setup */ |
54 | outb_p(0x38, PIT_MODE); | 62 | outb_p(0x38, PIT_MODE); |
55 | udelay(10); | 63 | udelay(10); |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index e4408ff4e674..b3ab8ffebd27 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -736,7 +736,7 @@ failed: | |||
736 | return 0; | 736 | return 0; |
737 | } | 737 | } |
738 | 738 | ||
739 | int __init irqbalance_disable(char *str) | 739 | int __devinit irqbalance_disable(char *str) |
740 | { | 740 | { |
741 | irqbalance_disabled = 1; | 741 | irqbalance_disabled = 1; |
742 | return 1; | 742 | return 1; |
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c index b8f16633a6ec..cbe7ec8dbb9f 100644 --- a/arch/i386/kernel/microcode.c +++ b/arch/i386/kernel/microcode.c | |||
@@ -567,6 +567,53 @@ static int cpu_request_microcode(int cpu) | |||
567 | return error; | 567 | return error; |
568 | } | 568 | } |
569 | 569 | ||
570 | static int apply_microcode_on_cpu(int cpu) | ||
571 | { | ||
572 | struct cpuinfo_x86 *c = cpu_data + cpu; | ||
573 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; | ||
574 | cpumask_t old; | ||
575 | unsigned int val[2]; | ||
576 | int err = 0; | ||
577 | |||
578 | if (!uci->mc) | ||
579 | return -EINVAL; | ||
580 | |||
581 | old = current->cpus_allowed; | ||
582 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); | ||
583 | |||
584 | /* Check if the microcode we have in memory matches the CPU */ | ||
585 | if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 || | ||
586 | cpu_has(c, X86_FEATURE_IA64) || uci->sig != cpuid_eax(0x00000001)) | ||
587 | err = -EINVAL; | ||
588 | |||
589 | if (!err && ((c->x86_model >= 5) || (c->x86 > 6))) { | ||
590 | /* get processor flags from MSR 0x17 */ | ||
591 | rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]); | ||
592 | if (uci->pf != (1 << ((val[1] >> 18) & 7))) | ||
593 | err = -EINVAL; | ||
594 | } | ||
595 | |||
596 | if (!err) { | ||
597 | wrmsr(MSR_IA32_UCODE_REV, 0, 0); | ||
598 | /* see notes above for revision 1.07. Apparent chip bug */ | ||
599 | sync_core(); | ||
600 | /* get the current revision from MSR 0x8B */ | ||
601 | rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]); | ||
602 | if (uci->rev != val[1]) | ||
603 | err = -EINVAL; | ||
604 | } | ||
605 | |||
606 | if (!err) | ||
607 | apply_microcode(cpu); | ||
608 | else | ||
609 | printk(KERN_ERR "microcode: Could not apply microcode to CPU%d:" | ||
610 | " sig=0x%x, pf=0x%x, rev=0x%x\n", | ||
611 | cpu, uci->sig, uci->pf, uci->rev); | ||
612 | |||
613 | set_cpus_allowed(current, old); | ||
614 | return err; | ||
615 | } | ||
616 | |||
570 | static void microcode_init_cpu(int cpu) | 617 | static void microcode_init_cpu(int cpu) |
571 | { | 618 | { |
572 | cpumask_t old; | 619 | cpumask_t old; |
@@ -577,7 +624,8 @@ static void microcode_init_cpu(int cpu) | |||
577 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); | 624 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); |
578 | mutex_lock(µcode_mutex); | 625 | mutex_lock(µcode_mutex); |
579 | collect_cpu_info(cpu); | 626 | collect_cpu_info(cpu); |
580 | if (uci->valid && system_state == SYSTEM_RUNNING) | 627 | if (uci->valid && system_state == SYSTEM_RUNNING && |
628 | !suspend_cpu_hotplug) | ||
581 | cpu_request_microcode(cpu); | 629 | cpu_request_microcode(cpu); |
582 | mutex_unlock(µcode_mutex); | 630 | mutex_unlock(µcode_mutex); |
583 | set_cpus_allowed(current, old); | 631 | set_cpus_allowed(current, old); |
@@ -663,13 +711,24 @@ static int mc_sysdev_add(struct sys_device *sys_dev) | |||
663 | return 0; | 711 | return 0; |
664 | 712 | ||
665 | pr_debug("Microcode:CPU %d added\n", cpu); | 713 | pr_debug("Microcode:CPU %d added\n", cpu); |
666 | memset(uci, 0, sizeof(*uci)); | 714 | /* If suspend_cpu_hotplug is set, the system is resuming and we should |
715 | * use the data from before the suspend. | ||
716 | */ | ||
717 | if (suspend_cpu_hotplug) { | ||
718 | err = apply_microcode_on_cpu(cpu); | ||
719 | if (err) | ||
720 | microcode_fini_cpu(cpu); | ||
721 | } | ||
722 | if (!uci->valid) | ||
723 | memset(uci, 0, sizeof(*uci)); | ||
667 | 724 | ||
668 | err = sysfs_create_group(&sys_dev->kobj, &mc_attr_group); | 725 | err = sysfs_create_group(&sys_dev->kobj, &mc_attr_group); |
669 | if (err) | 726 | if (err) |
670 | return err; | 727 | return err; |
671 | 728 | ||
672 | microcode_init_cpu(cpu); | 729 | if (!uci->valid) |
730 | microcode_init_cpu(cpu); | ||
731 | |||
673 | return 0; | 732 | return 0; |
674 | } | 733 | } |
675 | 734 | ||
@@ -680,7 +739,11 @@ static int mc_sysdev_remove(struct sys_device *sys_dev) | |||
680 | if (!cpu_online(cpu)) | 739 | if (!cpu_online(cpu)) |
681 | return 0; | 740 | return 0; |
682 | pr_debug("Microcode:CPU %d removed\n", cpu); | 741 | pr_debug("Microcode:CPU %d removed\n", cpu); |
683 | microcode_fini_cpu(cpu); | 742 | /* If suspend_cpu_hotplug is set, the system is suspending and we should |
743 | * keep the microcode in memory for the resume. | ||
744 | */ | ||
745 | if (!suspend_cpu_hotplug) | ||
746 | microcode_fini_cpu(cpu); | ||
684 | sysfs_remove_group(&sys_dev->kobj, &mc_attr_group); | 747 | sysfs_remove_group(&sys_dev->kobj, &mc_attr_group); |
685 | return 0; | 748 | return 0; |
686 | } | 749 | } |
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index 821df34d2b3a..a98ba88a8c0c 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c | |||
@@ -122,64 +122,129 @@ static inline unsigned int nmi_evntsel_msr_to_bit(unsigned int msr) | |||
122 | /* checks for a bit availability (hack for oprofile) */ | 122 | /* checks for a bit availability (hack for oprofile) */ |
123 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) | 123 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) |
124 | { | 124 | { |
125 | int cpu; | ||
125 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 126 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
126 | 127 | for_each_possible_cpu (cpu) { | |
127 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 128 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
129 | return 0; | ||
130 | } | ||
131 | return 1; | ||
128 | } | 132 | } |
129 | 133 | ||
130 | /* checks the an msr for availability */ | 134 | /* checks the an msr for availability */ |
131 | int avail_to_resrv_perfctr_nmi(unsigned int msr) | 135 | int avail_to_resrv_perfctr_nmi(unsigned int msr) |
132 | { | 136 | { |
133 | unsigned int counter; | 137 | unsigned int counter; |
138 | int cpu; | ||
134 | 139 | ||
135 | counter = nmi_perfctr_msr_to_bit(msr); | 140 | counter = nmi_perfctr_msr_to_bit(msr); |
136 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 141 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
137 | 142 | ||
138 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 143 | for_each_possible_cpu (cpu) { |
144 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) | ||
145 | return 0; | ||
146 | } | ||
147 | return 1; | ||
139 | } | 148 | } |
140 | 149 | ||
141 | int reserve_perfctr_nmi(unsigned int msr) | 150 | static int __reserve_perfctr_nmi(int cpu, unsigned int msr) |
142 | { | 151 | { |
143 | unsigned int counter; | 152 | unsigned int counter; |
153 | if (cpu < 0) | ||
154 | cpu = smp_processor_id(); | ||
144 | 155 | ||
145 | counter = nmi_perfctr_msr_to_bit(msr); | 156 | counter = nmi_perfctr_msr_to_bit(msr); |
146 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 157 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
147 | 158 | ||
148 | if (!test_and_set_bit(counter, &__get_cpu_var(perfctr_nmi_owner))) | 159 | if (!test_and_set_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
149 | return 1; | 160 | return 1; |
150 | return 0; | 161 | return 0; |
151 | } | 162 | } |
152 | 163 | ||
153 | void release_perfctr_nmi(unsigned int msr) | 164 | static void __release_perfctr_nmi(int cpu, unsigned int msr) |
154 | { | 165 | { |
155 | unsigned int counter; | 166 | unsigned int counter; |
167 | if (cpu < 0) | ||
168 | cpu = smp_processor_id(); | ||
156 | 169 | ||
157 | counter = nmi_perfctr_msr_to_bit(msr); | 170 | counter = nmi_perfctr_msr_to_bit(msr); |
158 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 171 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
159 | 172 | ||
160 | clear_bit(counter, &__get_cpu_var(perfctr_nmi_owner)); | 173 | clear_bit(counter, &per_cpu(perfctr_nmi_owner, cpu)); |
161 | } | 174 | } |
162 | 175 | ||
163 | int reserve_evntsel_nmi(unsigned int msr) | 176 | int reserve_perfctr_nmi(unsigned int msr) |
177 | { | ||
178 | int cpu, i; | ||
179 | for_each_possible_cpu (cpu) { | ||
180 | if (!__reserve_perfctr_nmi(cpu, msr)) { | ||
181 | for_each_possible_cpu (i) { | ||
182 | if (i >= cpu) | ||
183 | break; | ||
184 | __release_perfctr_nmi(i, msr); | ||
185 | } | ||
186 | return 0; | ||
187 | } | ||
188 | } | ||
189 | return 1; | ||
190 | } | ||
191 | |||
192 | void release_perfctr_nmi(unsigned int msr) | ||
193 | { | ||
194 | int cpu; | ||
195 | for_each_possible_cpu (cpu) { | ||
196 | __release_perfctr_nmi(cpu, msr); | ||
197 | } | ||
198 | } | ||
199 | |||
200 | int __reserve_evntsel_nmi(int cpu, unsigned int msr) | ||
164 | { | 201 | { |
165 | unsigned int counter; | 202 | unsigned int counter; |
203 | if (cpu < 0) | ||
204 | cpu = smp_processor_id(); | ||
166 | 205 | ||
167 | counter = nmi_evntsel_msr_to_bit(msr); | 206 | counter = nmi_evntsel_msr_to_bit(msr); |
168 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 207 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
169 | 208 | ||
170 | if (!test_and_set_bit(counter, &__get_cpu_var(evntsel_nmi_owner)[0])) | 209 | if (!test_and_set_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0])) |
171 | return 1; | 210 | return 1; |
172 | return 0; | 211 | return 0; |
173 | } | 212 | } |
174 | 213 | ||
175 | void release_evntsel_nmi(unsigned int msr) | 214 | static void __release_evntsel_nmi(int cpu, unsigned int msr) |
176 | { | 215 | { |
177 | unsigned int counter; | 216 | unsigned int counter; |
217 | if (cpu < 0) | ||
218 | cpu = smp_processor_id(); | ||
178 | 219 | ||
179 | counter = nmi_evntsel_msr_to_bit(msr); | 220 | counter = nmi_evntsel_msr_to_bit(msr); |
180 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 221 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
181 | 222 | ||
182 | clear_bit(counter, &__get_cpu_var(evntsel_nmi_owner)[0]); | 223 | clear_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0]); |
224 | } | ||
225 | |||
226 | int reserve_evntsel_nmi(unsigned int msr) | ||
227 | { | ||
228 | int cpu, i; | ||
229 | for_each_possible_cpu (cpu) { | ||
230 | if (!__reserve_evntsel_nmi(cpu, msr)) { | ||
231 | for_each_possible_cpu (i) { | ||
232 | if (i >= cpu) | ||
233 | break; | ||
234 | __release_evntsel_nmi(i, msr); | ||
235 | } | ||
236 | return 0; | ||
237 | } | ||
238 | } | ||
239 | return 1; | ||
240 | } | ||
241 | |||
242 | void release_evntsel_nmi(unsigned int msr) | ||
243 | { | ||
244 | int cpu; | ||
245 | for_each_possible_cpu (cpu) { | ||
246 | __release_evntsel_nmi(cpu, msr); | ||
247 | } | ||
183 | } | 248 | } |
184 | 249 | ||
185 | static __cpuinit inline int nmi_known_cpu(void) | 250 | static __cpuinit inline int nmi_known_cpu(void) |
@@ -245,14 +310,6 @@ static int __init check_nmi_watchdog(void) | |||
245 | unsigned int *prev_nmi_count; | 310 | unsigned int *prev_nmi_count; |
246 | int cpu; | 311 | int cpu; |
247 | 312 | ||
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)) | 313 | if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DEFAULT)) |
257 | return 0; | 314 | return 0; |
258 | 315 | ||
@@ -271,7 +328,7 @@ static int __init check_nmi_watchdog(void) | |||
271 | for_each_possible_cpu(cpu) | 328 | for_each_possible_cpu(cpu) |
272 | prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count; | 329 | prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count; |
273 | local_irq_enable(); | 330 | local_irq_enable(); |
274 | mdelay((10*1000)/nmi_hz); // wait 10 ticks | 331 | mdelay((20*1000)/nmi_hz); // wait 20 ticks |
275 | 332 | ||
276 | for_each_possible_cpu(cpu) { | 333 | for_each_possible_cpu(cpu) { |
277 | #ifdef CONFIG_SMP | 334 | #ifdef CONFIG_SMP |
@@ -515,10 +572,10 @@ static int setup_k7_watchdog(void) | |||
515 | 572 | ||
516 | perfctr_msr = MSR_K7_PERFCTR0; | 573 | perfctr_msr = MSR_K7_PERFCTR0; |
517 | evntsel_msr = MSR_K7_EVNTSEL0; | 574 | evntsel_msr = MSR_K7_EVNTSEL0; |
518 | if (!reserve_perfctr_nmi(perfctr_msr)) | 575 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
519 | goto fail; | 576 | goto fail; |
520 | 577 | ||
521 | if (!reserve_evntsel_nmi(evntsel_msr)) | 578 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
522 | goto fail1; | 579 | goto fail1; |
523 | 580 | ||
524 | wrmsrl(perfctr_msr, 0UL); | 581 | wrmsrl(perfctr_msr, 0UL); |
@@ -541,7 +598,7 @@ static int setup_k7_watchdog(void) | |||
541 | wd->check_bit = 1ULL<<63; | 598 | wd->check_bit = 1ULL<<63; |
542 | return 1; | 599 | return 1; |
543 | fail1: | 600 | fail1: |
544 | release_perfctr_nmi(perfctr_msr); | 601 | __release_perfctr_nmi(-1, perfctr_msr); |
545 | fail: | 602 | fail: |
546 | return 0; | 603 | return 0; |
547 | } | 604 | } |
@@ -552,8 +609,8 @@ static void stop_k7_watchdog(void) | |||
552 | 609 | ||
553 | wrmsr(wd->evntsel_msr, 0, 0); | 610 | wrmsr(wd->evntsel_msr, 0, 0); |
554 | 611 | ||
555 | release_evntsel_nmi(wd->evntsel_msr); | 612 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
556 | release_perfctr_nmi(wd->perfctr_msr); | 613 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
557 | } | 614 | } |
558 | 615 | ||
559 | #define P6_EVNTSEL0_ENABLE (1 << 22) | 616 | #define P6_EVNTSEL0_ENABLE (1 << 22) |
@@ -571,10 +628,10 @@ static int setup_p6_watchdog(void) | |||
571 | 628 | ||
572 | perfctr_msr = MSR_P6_PERFCTR0; | 629 | perfctr_msr = MSR_P6_PERFCTR0; |
573 | evntsel_msr = MSR_P6_EVNTSEL0; | 630 | evntsel_msr = MSR_P6_EVNTSEL0; |
574 | if (!reserve_perfctr_nmi(perfctr_msr)) | 631 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
575 | goto fail; | 632 | goto fail; |
576 | 633 | ||
577 | if (!reserve_evntsel_nmi(evntsel_msr)) | 634 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
578 | goto fail1; | 635 | goto fail1; |
579 | 636 | ||
580 | wrmsrl(perfctr_msr, 0UL); | 637 | wrmsrl(perfctr_msr, 0UL); |
@@ -598,7 +655,7 @@ static int setup_p6_watchdog(void) | |||
598 | wd->check_bit = 1ULL<<39; | 655 | wd->check_bit = 1ULL<<39; |
599 | return 1; | 656 | return 1; |
600 | fail1: | 657 | fail1: |
601 | release_perfctr_nmi(perfctr_msr); | 658 | __release_perfctr_nmi(-1, perfctr_msr); |
602 | fail: | 659 | fail: |
603 | return 0; | 660 | return 0; |
604 | } | 661 | } |
@@ -609,8 +666,8 @@ static void stop_p6_watchdog(void) | |||
609 | 666 | ||
610 | wrmsr(wd->evntsel_msr, 0, 0); | 667 | wrmsr(wd->evntsel_msr, 0, 0); |
611 | 668 | ||
612 | release_evntsel_nmi(wd->evntsel_msr); | 669 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
613 | release_perfctr_nmi(wd->perfctr_msr); | 670 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
614 | } | 671 | } |
615 | 672 | ||
616 | /* Note that these events don't tick when the CPU idles. This means | 673 | /* Note that these events don't tick when the CPU idles. This means |
@@ -676,10 +733,10 @@ static int setup_p4_watchdog(void) | |||
676 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); | 733 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); |
677 | } | 734 | } |
678 | 735 | ||
679 | if (!reserve_perfctr_nmi(perfctr_msr)) | 736 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
680 | goto fail; | 737 | goto fail; |
681 | 738 | ||
682 | if (!reserve_evntsel_nmi(evntsel_msr)) | 739 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
683 | goto fail1; | 740 | goto fail1; |
684 | 741 | ||
685 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) | 742 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) |
@@ -703,7 +760,7 @@ static int setup_p4_watchdog(void) | |||
703 | wd->check_bit = 1ULL<<39; | 760 | wd->check_bit = 1ULL<<39; |
704 | return 1; | 761 | return 1; |
705 | fail1: | 762 | fail1: |
706 | release_perfctr_nmi(perfctr_msr); | 763 | __release_perfctr_nmi(-1, perfctr_msr); |
707 | fail: | 764 | fail: |
708 | return 0; | 765 | return 0; |
709 | } | 766 | } |
@@ -715,8 +772,8 @@ static void stop_p4_watchdog(void) | |||
715 | wrmsr(wd->cccr_msr, 0, 0); | 772 | wrmsr(wd->cccr_msr, 0, 0); |
716 | wrmsr(wd->evntsel_msr, 0, 0); | 773 | wrmsr(wd->evntsel_msr, 0, 0); |
717 | 774 | ||
718 | release_evntsel_nmi(wd->evntsel_msr); | 775 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
719 | release_perfctr_nmi(wd->perfctr_msr); | 776 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
720 | } | 777 | } |
721 | 778 | ||
722 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL | 779 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL |
@@ -744,10 +801,10 @@ static int setup_intel_arch_watchdog(void) | |||
744 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; | 801 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; |
745 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; | 802 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; |
746 | 803 | ||
747 | if (!reserve_perfctr_nmi(perfctr_msr)) | 804 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
748 | goto fail; | 805 | goto fail; |
749 | 806 | ||
750 | if (!reserve_evntsel_nmi(evntsel_msr)) | 807 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
751 | goto fail1; | 808 | goto fail1; |
752 | 809 | ||
753 | wrmsrl(perfctr_msr, 0UL); | 810 | wrmsrl(perfctr_msr, 0UL); |
@@ -772,7 +829,7 @@ static int setup_intel_arch_watchdog(void) | |||
772 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); | 829 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); |
773 | return 1; | 830 | return 1; |
774 | fail1: | 831 | fail1: |
775 | release_perfctr_nmi(perfctr_msr); | 832 | __release_perfctr_nmi(-1, perfctr_msr); |
776 | fail: | 833 | fail: |
777 | return 0; | 834 | return 0; |
778 | } | 835 | } |
@@ -795,8 +852,8 @@ static void stop_intel_arch_watchdog(void) | |||
795 | return; | 852 | return; |
796 | 853 | ||
797 | wrmsr(wd->evntsel_msr, 0, 0); | 854 | wrmsr(wd->evntsel_msr, 0, 0); |
798 | release_evntsel_nmi(wd->evntsel_msr); | 855 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
799 | release_perfctr_nmi(wd->perfctr_msr); | 856 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
800 | } | 857 | } |
801 | 858 | ||
802 | void setup_apic_nmi_watchdog (void *unused) | 859 | void setup_apic_nmi_watchdog (void *unused) |
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index 9b0dd2744c82..4ff55e675576 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <linux/notifier.h> | 45 | #include <linux/notifier.h> |
46 | #include <linux/cpu.h> | 46 | #include <linux/cpu.h> |
47 | #include <linux/percpu.h> | 47 | #include <linux/percpu.h> |
48 | #include <linux/nmi.h> | ||
48 | 49 | ||
49 | #include <linux/delay.h> | 50 | #include <linux/delay.h> |
50 | #include <linux/mc146818rtc.h> | 51 | #include <linux/mc146818rtc.h> |
@@ -1278,8 +1279,9 @@ void __cpu_die(unsigned int cpu) | |||
1278 | 1279 | ||
1279 | int __cpuinit __cpu_up(unsigned int cpu) | 1280 | int __cpuinit __cpu_up(unsigned int cpu) |
1280 | { | 1281 | { |
1282 | unsigned long flags; | ||
1281 | #ifdef CONFIG_HOTPLUG_CPU | 1283 | #ifdef CONFIG_HOTPLUG_CPU |
1282 | int ret=0; | 1284 | int ret = 0; |
1283 | 1285 | ||
1284 | /* | 1286 | /* |
1285 | * We do warm boot only on cpus that had booted earlier | 1287 | * We do warm boot only on cpus that had booted earlier |
@@ -1297,23 +1299,25 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
1297 | /* In case one didn't come up */ | 1299 | /* In case one didn't come up */ |
1298 | if (!cpu_isset(cpu, cpu_callin_map)) { | 1300 | if (!cpu_isset(cpu, cpu_callin_map)) { |
1299 | printk(KERN_DEBUG "skipping cpu%d, didn't come online\n", cpu); | 1301 | printk(KERN_DEBUG "skipping cpu%d, didn't come online\n", cpu); |
1300 | local_irq_enable(); | ||
1301 | return -EIO; | 1302 | return -EIO; |
1302 | } | 1303 | } |
1303 | 1304 | ||
1304 | local_irq_enable(); | ||
1305 | |||
1306 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; | 1305 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; |
1307 | /* Unleash the CPU! */ | 1306 | /* Unleash the CPU! */ |
1308 | cpu_set(cpu, smp_commenced_mask); | 1307 | cpu_set(cpu, smp_commenced_mask); |
1309 | 1308 | ||
1310 | /* | 1309 | /* |
1311 | * Check TSC synchronization with the AP: | 1310 | * Check TSC synchronization with the AP (keep irqs disabled |
1311 | * while doing so): | ||
1312 | */ | 1312 | */ |
1313 | local_irq_save(flags); | ||
1313 | check_tsc_sync_source(cpu); | 1314 | check_tsc_sync_source(cpu); |
1315 | local_irq_restore(flags); | ||
1314 | 1316 | ||
1315 | while (!cpu_isset(cpu, cpu_online_map)) | 1317 | while (!cpu_isset(cpu, cpu_online_map)) { |
1316 | cpu_relax(); | 1318 | cpu_relax(); |
1319 | touch_nmi_watchdog(); | ||
1320 | } | ||
1317 | 1321 | ||
1318 | #ifdef CONFIG_X86_GENERICARCH | 1322 | #ifdef CONFIG_X86_GENERICARCH |
1319 | if (num_online_cpus() > 8 && genapic == &apic_default) | 1323 | if (num_online_cpus() > 8 && genapic == &apic_default) |
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index 602660df455c..6cb8f5336732 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c | |||
@@ -18,6 +18,8 @@ | |||
18 | 18 | ||
19 | #include "mach_timer.h" | 19 | #include "mach_timer.h" |
20 | 20 | ||
21 | static int tsc_enabled; | ||
22 | |||
21 | /* | 23 | /* |
22 | * On some systems the TSC frequency does not | 24 | * On some systems the TSC frequency does not |
23 | * change with the cpu frequency. So we need | 25 | * change with the cpu frequency. So we need |
@@ -105,7 +107,7 @@ unsigned long long sched_clock(void) | |||
105 | /* | 107 | /* |
106 | * Fall back to jiffies if there's no TSC available: | 108 | * Fall back to jiffies if there's no TSC available: |
107 | */ | 109 | */ |
108 | if (unlikely(tsc_disable)) | 110 | if (unlikely(!tsc_enabled)) |
109 | /* No locking but a rare wrong value is not a big deal: */ | 111 | /* No locking but a rare wrong value is not a big deal: */ |
110 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); | 112 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); |
111 | 113 | ||
@@ -283,6 +285,7 @@ void mark_tsc_unstable(void) | |||
283 | { | 285 | { |
284 | if (!tsc_unstable) { | 286 | if (!tsc_unstable) { |
285 | tsc_unstable = 1; | 287 | tsc_unstable = 1; |
288 | tsc_enabled = 0; | ||
286 | /* Can be called before registration */ | 289 | /* Can be called before registration */ |
287 | if (clocksource_tsc.mult) | 290 | if (clocksource_tsc.mult) |
288 | clocksource_change_rating(&clocksource_tsc, 0); | 291 | clocksource_change_rating(&clocksource_tsc, 0); |
@@ -383,7 +386,9 @@ void __init tsc_init(void) | |||
383 | if (check_tsc_unstable()) { | 386 | if (check_tsc_unstable()) { |
384 | clocksource_tsc.rating = 0; | 387 | clocksource_tsc.rating = 0; |
385 | clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS; | 388 | clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS; |
386 | } | 389 | } else |
390 | tsc_enabled = 1; | ||
391 | |||
387 | clocksource_register(&clocksource_tsc); | 392 | clocksource_register(&clocksource_tsc); |
388 | 393 | ||
389 | return; | 394 | return; |
diff --git a/arch/i386/kernel/vmi.c b/arch/i386/kernel/vmi.c index fbf45fa08320..edc339fa5038 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; |
@@ -71,6 +69,7 @@ struct { | |||
71 | void (*flush_tlb)(int); | 69 | void (*flush_tlb)(int); |
72 | void (*set_initial_ap_state)(int, int); | 70 | void (*set_initial_ap_state)(int, int); |
73 | void (*halt)(void); | 71 | void (*halt)(void); |
72 | void (*set_lazy_mode)(int mode); | ||
74 | } vmi_ops; | 73 | } vmi_ops; |
75 | 74 | ||
76 | /* XXX move this to alternative.h */ | 75 | /* XXX move this to alternative.h */ |
@@ -576,6 +575,26 @@ vmi_startup_ipi_hook(int phys_apicid, unsigned long start_eip, | |||
576 | } | 575 | } |
577 | #endif | 576 | #endif |
578 | 577 | ||
578 | static void vmi_set_lazy_mode(int mode) | ||
579 | { | ||
580 | static DEFINE_PER_CPU(int, lazy_mode); | ||
581 | |||
582 | if (!vmi_ops.set_lazy_mode) | ||
583 | return; | ||
584 | |||
585 | /* Modes should never nest or overlap */ | ||
586 | BUG_ON(__get_cpu_var(lazy_mode) && !(mode == PARAVIRT_LAZY_NONE || | ||
587 | mode == PARAVIRT_LAZY_FLUSH)); | ||
588 | |||
589 | if (mode == PARAVIRT_LAZY_FLUSH) { | ||
590 | vmi_ops.set_lazy_mode(0); | ||
591 | vmi_ops.set_lazy_mode(__get_cpu_var(lazy_mode)); | ||
592 | } else { | ||
593 | vmi_ops.set_lazy_mode(mode); | ||
594 | __get_cpu_var(lazy_mode) = mode; | ||
595 | } | ||
596 | } | ||
597 | |||
579 | static inline int __init check_vmi_rom(struct vrom_header *rom) | 598 | static inline int __init check_vmi_rom(struct vrom_header *rom) |
580 | { | 599 | { |
581 | struct pci_header *pci; | 600 | struct pci_header *pci; |
@@ -629,13 +648,14 @@ static inline int __init check_vmi_rom(struct vrom_header *rom) | |||
629 | rom->api_version_maj, rom->api_version_min, | 648 | rom->api_version_maj, rom->api_version_min, |
630 | pci->rom_version_maj, pci->rom_version_min); | 649 | pci->rom_version_maj, pci->rom_version_min); |
631 | 650 | ||
632 | license_gplok = license_is_gpl_compatible(license); | 651 | /* Don't allow BSD/MIT here for now because we don't want to end up |
633 | if (!license_gplok) { | 652 | with any binary only shim layers */ |
634 | printk(KERN_WARNING "VMI: ROM license '%s' taints kernel... " | 653 | if (strcmp(license, "GPL") && strcmp(license, "GPL v2")) { |
635 | "inlining disabled\n", | 654 | printk(KERN_WARNING "VMI: Non GPL license `%s' found for ROM. Not used.\n", |
636 | license); | 655 | license); |
637 | add_taint(TAINT_PROPRIETARY_MODULE); | 656 | return 0; |
638 | } | 657 | } |
658 | |||
639 | return 1; | 659 | return 1; |
640 | } | 660 | } |
641 | 661 | ||
@@ -805,7 +825,7 @@ static inline int __init activate_vmi(void) | |||
805 | para_wrap(load_esp0, vmi_load_esp0, set_kernel_stack, UpdateKernelStack); | 825 | para_wrap(load_esp0, vmi_load_esp0, set_kernel_stack, UpdateKernelStack); |
806 | para_fill(set_iopl_mask, SetIOPLMask); | 826 | para_fill(set_iopl_mask, SetIOPLMask); |
807 | para_fill(io_delay, IODelay); | 827 | para_fill(io_delay, IODelay); |
808 | para_fill(set_lazy_mode, SetLazyMode); | 828 | para_wrap(set_lazy_mode, vmi_set_lazy_mode, set_lazy_mode, SetLazyMode); |
809 | 829 | ||
810 | /* user and kernel flush are just handled with different flags to FlushTLB */ | 830 | /* user and kernel flush are just handled with different flags to FlushTLB */ |
811 | para_wrap(flush_tlb_user, vmi_flush_tlb_user, flush_tlb, FlushTLB); | 831 | para_wrap(flush_tlb_user, vmi_flush_tlb_user, flush_tlb, FlushTLB); |
diff --git a/arch/i386/lib/usercopy.c b/arch/i386/lib/usercopy.c index d22cfc9d656c..086b3726862a 100644 --- a/arch/i386/lib/usercopy.c +++ b/arch/i386/lib/usercopy.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/blkdev.h> | 10 | #include <linux/blkdev.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/backing-dev.h> | 12 | #include <linux/backing-dev.h> |
13 | #include <linux/interrupt.h> | ||
13 | #include <asm/uaccess.h> | 14 | #include <asm/uaccess.h> |
14 | #include <asm/mmx.h> | 15 | #include <asm/mmx.h> |
15 | 16 | ||
@@ -719,6 +720,14 @@ unsigned long __copy_to_user_ll(void __user *to, const void *from, | |||
719 | #ifndef CONFIG_X86_WP_WORKS_OK | 720 | #ifndef CONFIG_X86_WP_WORKS_OK |
720 | if (unlikely(boot_cpu_data.wp_works_ok == 0) && | 721 | if (unlikely(boot_cpu_data.wp_works_ok == 0) && |
721 | ((unsigned long )to) < TASK_SIZE) { | 722 | ((unsigned long )to) < TASK_SIZE) { |
723 | /* | ||
724 | * When we are in an atomic section (see | ||
725 | * mm/filemap.c:file_read_actor), return the full | ||
726 | * length to take the slow path. | ||
727 | */ | ||
728 | if (in_atomic()) | ||
729 | return n; | ||
730 | |||
722 | /* | 731 | /* |
723 | * CPU does not honor the WP bit when writing | 732 | * CPU does not honor the WP bit when writing |
724 | * from supervisory mode, and due to preemption or SMP, | 733 | * from supervisory mode, and due to preemption or SMP, |
diff --git a/arch/i386/mm/highmem.c b/arch/i386/mm/highmem.c index bb2de1089add..ac70d09df7ee 100644 --- a/arch/i386/mm/highmem.c +++ b/arch/i386/mm/highmem.c | |||
@@ -42,6 +42,7 @@ void *kmap_atomic(struct page *page, enum km_type type) | |||
42 | 42 | ||
43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
44 | set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); | 44 | set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); |
45 | arch_flush_lazy_mmu_mode(); | ||
45 | 46 | ||
46 | return (void*) vaddr; | 47 | return (void*) vaddr; |
47 | } | 48 | } |
@@ -82,6 +83,7 @@ void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) | |||
82 | idx = type + KM_TYPE_NR*smp_processor_id(); | 83 | idx = type + KM_TYPE_NR*smp_processor_id(); |
83 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 84 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
84 | set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot)); | 85 | set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot)); |
86 | arch_flush_lazy_mmu_mode(); | ||
85 | 87 | ||
86 | return (void*) vaddr; | 88 | return (void*) vaddr; |
87 | } | 89 | } |
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c index 1bb069372143..3f78d4d8ecf3 100644 --- a/arch/i386/pci/common.c +++ b/arch/i386/pci/common.c | |||
@@ -193,6 +193,14 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | |||
193 | }, | 193 | }, |
194 | { | 194 | { |
195 | .callback = set_bf_sort, | 195 | .callback = set_bf_sort, |
196 | .ident = "Dell PowerEdge R900", | ||
197 | .matches = { | ||
198 | DMI_MATCH(DMI_SYS_VENDOR, "Dell"), | ||
199 | DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R900"), | ||
200 | }, | ||
201 | }, | ||
202 | { | ||
203 | .callback = set_bf_sort, | ||
196 | .ident = "HP ProLiant BL20p G3", | 204 | .ident = "HP ProLiant BL20p G3", |
197 | .matches = { | 205 | .matches = { |
198 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | 206 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), |
@@ -426,11 +434,13 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
426 | if ((err = pcibios_enable_resources(dev, mask)) < 0) | 434 | if ((err = pcibios_enable_resources(dev, mask)) < 0) |
427 | return err; | 435 | return err; |
428 | 436 | ||
429 | return pcibios_enable_irq(dev); | 437 | if (!dev->msi_enabled) |
438 | return pcibios_enable_irq(dev); | ||
439 | return 0; | ||
430 | } | 440 | } |
431 | 441 | ||
432 | void pcibios_disable_device (struct pci_dev *dev) | 442 | void pcibios_disable_device (struct pci_dev *dev) |
433 | { | 443 | { |
434 | if (pcibios_disable_irq) | 444 | if (!dev->msi_enabled && pcibios_disable_irq) |
435 | pcibios_disable_irq(dev); | 445 | pcibios_disable_irq(dev); |
436 | } | 446 | } |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index d51f0f11f7f9..e19185d26554 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -13,6 +13,7 @@ config IA64 | |||
13 | bool | 13 | bool |
14 | select PCI if (!IA64_HP_SIM) | 14 | select PCI if (!IA64_HP_SIM) |
15 | select ACPI if (!IA64_HP_SIM) | 15 | select ACPI if (!IA64_HP_SIM) |
16 | select PM if (!IA64_HP_SIM) | ||
16 | default y | 17 | default y |
17 | help | 18 | help |
18 | The Itanium Processor Family is Intel's 64-bit successor to | 19 | The Itanium Processor Family is Intel's 64-bit successor to |
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig index 9d1cffb57cde..a1446931b401 100644 --- a/arch/ia64/configs/tiger_defconfig +++ b/arch/ia64/configs/tiger_defconfig | |||
@@ -1,8 +1,9 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-rc5 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Mon Feb 27 15:49:18 2006 | 4 | # Thu Mar 8 11:07:09 2007 |
5 | # | 5 | # |
6 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
6 | 7 | ||
7 | # | 8 | # |
8 | # Code maturity level options | 9 | # Code maturity level options |
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION="" | |||
18 | CONFIG_LOCALVERSION_AUTO=y | 19 | CONFIG_LOCALVERSION_AUTO=y |
19 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
20 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
22 | # CONFIG_IPC_NS is not set | ||
23 | CONFIG_SYSVIPC_SYSCTL=y | ||
21 | CONFIG_POSIX_MQUEUE=y | 24 | CONFIG_POSIX_MQUEUE=y |
22 | # CONFIG_BSD_PROCESS_ACCT is not set | 25 | # CONFIG_BSD_PROCESS_ACCT is not set |
23 | CONFIG_SYSCTL=y | 26 | # CONFIG_TASKSTATS is not set |
27 | # CONFIG_UTS_NS is not set | ||
24 | # CONFIG_AUDIT is not set | 28 | # CONFIG_AUDIT is not set |
25 | CONFIG_IKCONFIG=y | 29 | CONFIG_IKCONFIG=y |
26 | CONFIG_IKCONFIG_PROC=y | 30 | CONFIG_IKCONFIG_PROC=y |
27 | # CONFIG_CPUSETS is not set | 31 | # CONFIG_CPUSETS is not set |
32 | CONFIG_SYSFS_DEPRECATED=y | ||
33 | # CONFIG_RELAY is not set | ||
34 | CONFIG_BLK_DEV_INITRD=y | ||
28 | CONFIG_INITRAMFS_SOURCE="" | 35 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 36 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
37 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_EMBEDDED is not set | 38 | # CONFIG_EMBEDDED is not set |
39 | CONFIG_SYSCTL_SYSCALL=y | ||
31 | CONFIG_KALLSYMS=y | 40 | CONFIG_KALLSYMS=y |
32 | CONFIG_KALLSYMS_ALL=y | 41 | CONFIG_KALLSYMS_ALL=y |
33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 42 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y | |||
39 | CONFIG_FUTEX=y | 48 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 49 | CONFIG_EPOLL=y |
41 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
43 | CONFIG_CC_ALIGN_LABELS=0 | ||
44 | CONFIG_CC_ALIGN_LOOPS=0 | ||
45 | CONFIG_CC_ALIGN_JUMPS=0 | ||
46 | CONFIG_SLAB=y | 51 | CONFIG_SLAB=y |
52 | CONFIG_VM_EVENT_COUNTERS=y | ||
53 | CONFIG_RT_MUTEXES=y | ||
47 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
48 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
49 | # CONFIG_SLOB is not set | 56 | # CONFIG_SLOB is not set |
@@ -54,7 +61,6 @@ CONFIG_BASE_SMALL=0 | |||
54 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | CONFIG_MODVERSIONS=y | 64 | CONFIG_MODVERSIONS=y |
59 | CONFIG_MODULE_SRCVERSION_ALL=y | 65 | CONFIG_MODULE_SRCVERSION_ALL=y |
60 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
@@ -63,6 +69,8 @@ CONFIG_STOP_MACHINE=y | |||
63 | # | 69 | # |
64 | # Block layer | 70 | # Block layer |
65 | # | 71 | # |
72 | CONFIG_BLOCK=y | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
66 | 74 | ||
67 | # | 75 | # |
68 | # IO Schedulers | 76 | # IO Schedulers |
@@ -82,15 +90,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
82 | # | 90 | # |
83 | CONFIG_IA64=y | 91 | CONFIG_IA64=y |
84 | CONFIG_64BIT=y | 92 | CONFIG_64BIT=y |
93 | CONFIG_ZONE_DMA=y | ||
85 | CONFIG_MMU=y | 94 | CONFIG_MMU=y |
86 | CONFIG_SWIOTLB=y | 95 | CONFIG_SWIOTLB=y |
87 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 96 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
97 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
98 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
99 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
88 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 100 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
89 | CONFIG_TIME_INTERPOLATION=y | 101 | CONFIG_TIME_INTERPOLATION=y |
102 | CONFIG_DMI=y | ||
90 | CONFIG_EFI=y | 103 | CONFIG_EFI=y |
91 | CONFIG_GENERIC_IOMAP=y | 104 | CONFIG_GENERIC_IOMAP=y |
92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 105 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
93 | CONFIG_DMA_IS_DMA32=y | 106 | CONFIG_AUDIT_ARCH=y |
94 | # CONFIG_IA64_GENERIC is not set | 107 | # CONFIG_IA64_GENERIC is not set |
95 | CONFIG_IA64_DIG=y | 108 | CONFIG_IA64_DIG=y |
96 | # CONFIG_IA64_HP_ZX1 is not set | 109 | # CONFIG_IA64_HP_ZX1 is not set |
@@ -107,6 +120,7 @@ CONFIG_PGTABLE_3=y | |||
107 | # CONFIG_PGTABLE_4 is not set | 120 | # CONFIG_PGTABLE_4 is not set |
108 | # CONFIG_HZ_100 is not set | 121 | # CONFIG_HZ_100 is not set |
109 | CONFIG_HZ_250=y | 122 | CONFIG_HZ_250=y |
123 | # CONFIG_HZ_300 is not set | ||
110 | # CONFIG_HZ_1000 is not set | 124 | # CONFIG_HZ_1000 is not set |
111 | CONFIG_HZ=250 | 125 | CONFIG_HZ=250 |
112 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 126 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
@@ -116,9 +130,10 @@ CONFIG_FORCE_MAX_ZONEORDER=17 | |||
116 | CONFIG_SMP=y | 130 | CONFIG_SMP=y |
117 | CONFIG_NR_CPUS=16 | 131 | CONFIG_NR_CPUS=16 |
118 | CONFIG_HOTPLUG_CPU=y | 132 | CONFIG_HOTPLUG_CPU=y |
133 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
134 | # CONFIG_SCHED_SMT is not set | ||
119 | CONFIG_PERMIT_BSP_REMOVE=y | 135 | CONFIG_PERMIT_BSP_REMOVE=y |
120 | CONFIG_FORCE_CPEI_RETARGET=y | 136 | CONFIG_FORCE_CPEI_RETARGET=y |
121 | # CONFIG_SCHED_SMT is not set | ||
122 | # CONFIG_PREEMPT is not set | 137 | # CONFIG_PREEMPT is not set |
123 | CONFIG_SELECT_MEMORY_MODEL=y | 138 | CONFIG_SELECT_MEMORY_MODEL=y |
124 | CONFIG_FLATMEM_MANUAL=y | 139 | CONFIG_FLATMEM_MANUAL=y |
@@ -128,10 +143,13 @@ CONFIG_FLATMEM=y | |||
128 | CONFIG_FLAT_NODE_MEM_MAP=y | 143 | CONFIG_FLAT_NODE_MEM_MAP=y |
129 | # CONFIG_SPARSEMEM_STATIC is not set | 144 | # CONFIG_SPARSEMEM_STATIC is not set |
130 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 145 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
146 | CONFIG_RESOURCES_64BIT=y | ||
147 | CONFIG_ZONE_DMA_FLAG=1 | ||
131 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 148 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
132 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 149 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
133 | CONFIG_ARCH_FLATMEM_ENABLE=y | 150 | CONFIG_ARCH_FLATMEM_ENABLE=y |
134 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 151 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
152 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
135 | CONFIG_VIRTUAL_MEM_MAP=y | 153 | CONFIG_VIRTUAL_MEM_MAP=y |
136 | CONFIG_HOLES_IN_ZONE=y | 154 | CONFIG_HOLES_IN_ZONE=y |
137 | CONFIG_IA32_SUPPORT=y | 155 | CONFIG_IA32_SUPPORT=y |
@@ -139,6 +157,9 @@ CONFIG_COMPAT=y | |||
139 | CONFIG_IA64_MCA_RECOVERY=y | 157 | CONFIG_IA64_MCA_RECOVERY=y |
140 | CONFIG_PERFMON=y | 158 | CONFIG_PERFMON=y |
141 | CONFIG_IA64_PALINFO=y | 159 | CONFIG_IA64_PALINFO=y |
160 | # CONFIG_IA64_ESI is not set | ||
161 | CONFIG_KEXEC=y | ||
162 | # CONFIG_CRASH_DUMP is not set | ||
142 | 163 | ||
143 | # | 164 | # |
144 | # Firmware Drivers | 165 | # Firmware Drivers |
@@ -154,13 +175,16 @@ CONFIG_BINFMT_MISC=m | |||
154 | CONFIG_PM=y | 175 | CONFIG_PM=y |
155 | CONFIG_PM_LEGACY=y | 176 | CONFIG_PM_LEGACY=y |
156 | # CONFIG_PM_DEBUG is not set | 177 | # CONFIG_PM_DEBUG is not set |
178 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
157 | 179 | ||
158 | # | 180 | # |
159 | # ACPI (Advanced Configuration and Power Interface) Support | 181 | # ACPI (Advanced Configuration and Power Interface) Support |
160 | # | 182 | # |
161 | CONFIG_ACPI=y | 183 | CONFIG_ACPI=y |
184 | CONFIG_ACPI_PROCFS=y | ||
162 | CONFIG_ACPI_BUTTON=m | 185 | CONFIG_ACPI_BUTTON=m |
163 | CONFIG_ACPI_FAN=m | 186 | CONFIG_ACPI_FAN=m |
187 | # CONFIG_ACPI_DOCK is not set | ||
164 | CONFIG_ACPI_PROCESSOR=m | 188 | CONFIG_ACPI_PROCESSOR=m |
165 | CONFIG_ACPI_HOTPLUG_CPU=y | 189 | CONFIG_ACPI_HOTPLUG_CPU=y |
166 | CONFIG_ACPI_THERMAL=m | 190 | CONFIG_ACPI_THERMAL=m |
@@ -181,8 +205,8 @@ CONFIG_ACPI_CONTAINER=m | |||
181 | # | 205 | # |
182 | CONFIG_PCI=y | 206 | CONFIG_PCI=y |
183 | CONFIG_PCI_DOMAINS=y | 207 | CONFIG_PCI_DOMAINS=y |
208 | # CONFIG_PCIEPORTBUS is not set | ||
184 | # CONFIG_PCI_MSI is not set | 209 | # CONFIG_PCI_MSI is not set |
185 | CONFIG_PCI_LEGACY_PROC=y | ||
186 | # CONFIG_PCI_DEBUG is not set | 210 | # CONFIG_PCI_DEBUG is not set |
187 | 211 | ||
188 | # | 212 | # |
@@ -212,6 +236,10 @@ CONFIG_NET=y | |||
212 | CONFIG_PACKET=y | 236 | CONFIG_PACKET=y |
213 | # CONFIG_PACKET_MMAP is not set | 237 | # CONFIG_PACKET_MMAP is not set |
214 | CONFIG_UNIX=y | 238 | CONFIG_UNIX=y |
239 | CONFIG_XFRM=y | ||
240 | # CONFIG_XFRM_USER is not set | ||
241 | # CONFIG_XFRM_SUB_POLICY is not set | ||
242 | # CONFIG_XFRM_MIGRATE is not set | ||
215 | # CONFIG_NET_KEY is not set | 243 | # CONFIG_NET_KEY is not set |
216 | CONFIG_INET=y | 244 | CONFIG_INET=y |
217 | CONFIG_IP_MULTICAST=y | 245 | CONFIG_IP_MULTICAST=y |
@@ -226,12 +254,21 @@ CONFIG_SYN_COOKIES=y | |||
226 | # CONFIG_INET_AH is not set | 254 | # CONFIG_INET_AH is not set |
227 | # CONFIG_INET_ESP is not set | 255 | # CONFIG_INET_ESP is not set |
228 | # CONFIG_INET_IPCOMP is not set | 256 | # CONFIG_INET_IPCOMP is not set |
257 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
229 | # CONFIG_INET_TUNNEL is not set | 258 | # CONFIG_INET_TUNNEL is not set |
259 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
260 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
261 | CONFIG_INET_XFRM_MODE_BEET=y | ||
230 | CONFIG_INET_DIAG=y | 262 | CONFIG_INET_DIAG=y |
231 | CONFIG_INET_TCP_DIAG=y | 263 | CONFIG_INET_TCP_DIAG=y |
232 | # CONFIG_TCP_CONG_ADVANCED is not set | 264 | # CONFIG_TCP_CONG_ADVANCED is not set |
233 | CONFIG_TCP_CONG_BIC=y | 265 | CONFIG_TCP_CONG_CUBIC=y |
266 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
267 | # CONFIG_TCP_MD5SIG is not set | ||
234 | # CONFIG_IPV6 is not set | 268 | # CONFIG_IPV6 is not set |
269 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
270 | # CONFIG_INET6_TUNNEL is not set | ||
271 | # CONFIG_NETWORK_SECMARK is not set | ||
235 | # CONFIG_NETFILTER is not set | 272 | # CONFIG_NETFILTER is not set |
236 | 273 | ||
237 | # | 274 | # |
@@ -257,7 +294,6 @@ CONFIG_TCP_CONG_BIC=y | |||
257 | # CONFIG_ATALK is not set | 294 | # CONFIG_ATALK is not set |
258 | # CONFIG_X25 is not set | 295 | # CONFIG_X25 is not set |
259 | # CONFIG_LAPB is not set | 296 | # CONFIG_LAPB is not set |
260 | # CONFIG_NET_DIVERT is not set | ||
261 | # CONFIG_ECONET is not set | 297 | # CONFIG_ECONET is not set |
262 | # CONFIG_WAN_ROUTER is not set | 298 | # CONFIG_WAN_ROUTER is not set |
263 | 299 | ||
@@ -286,6 +322,8 @@ CONFIG_STANDALONE=y | |||
286 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 322 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
287 | CONFIG_FW_LOADER=m | 323 | CONFIG_FW_LOADER=m |
288 | # CONFIG_DEBUG_DRIVER is not set | 324 | # CONFIG_DEBUG_DRIVER is not set |
325 | # CONFIG_DEBUG_DEVRES is not set | ||
326 | # CONFIG_SYS_HYPERVISOR is not set | ||
289 | 327 | ||
290 | # | 328 | # |
291 | # Connector - unified userspace <-> kernelspace linker | 329 | # Connector - unified userspace <-> kernelspace linker |
@@ -329,11 +367,17 @@ CONFIG_BLK_DEV_NBD=m | |||
329 | CONFIG_BLK_DEV_RAM=y | 367 | CONFIG_BLK_DEV_RAM=y |
330 | CONFIG_BLK_DEV_RAM_COUNT=16 | 368 | CONFIG_BLK_DEV_RAM_COUNT=16 |
331 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 369 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
332 | CONFIG_BLK_DEV_INITRD=y | 370 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
333 | # CONFIG_CDROM_PKTCDVD is not set | 371 | # CONFIG_CDROM_PKTCDVD is not set |
334 | # CONFIG_ATA_OVER_ETH is not set | 372 | # CONFIG_ATA_OVER_ETH is not set |
335 | 373 | ||
336 | # | 374 | # |
375 | # Misc devices | ||
376 | # | ||
377 | # CONFIG_SGI_IOC4 is not set | ||
378 | # CONFIG_TIFM_CORE is not set | ||
379 | |||
380 | # | ||
337 | # ATA/ATAPI/MFM/RLL support | 381 | # ATA/ATAPI/MFM/RLL support |
338 | # | 382 | # |
339 | CONFIG_IDE=y | 383 | CONFIG_IDE=y |
@@ -350,6 +394,7 @@ CONFIG_BLK_DEV_IDECD=y | |||
350 | # CONFIG_BLK_DEV_IDETAPE is not set | 394 | # CONFIG_BLK_DEV_IDETAPE is not set |
351 | CONFIG_BLK_DEV_IDEFLOPPY=y | 395 | CONFIG_BLK_DEV_IDEFLOPPY=y |
352 | CONFIG_BLK_DEV_IDESCSI=m | 396 | CONFIG_BLK_DEV_IDESCSI=m |
397 | # CONFIG_BLK_DEV_IDEACPI is not set | ||
353 | # CONFIG_IDE_TASK_IOCTL is not set | 398 | # CONFIG_IDE_TASK_IOCTL is not set |
354 | 399 | ||
355 | # | 400 | # |
@@ -376,8 +421,10 @@ CONFIG_BLK_DEV_CMD64X=y | |||
376 | # CONFIG_BLK_DEV_CS5530 is not set | 421 | # CONFIG_BLK_DEV_CS5530 is not set |
377 | # CONFIG_BLK_DEV_HPT34X is not set | 422 | # CONFIG_BLK_DEV_HPT34X is not set |
378 | # CONFIG_BLK_DEV_HPT366 is not set | 423 | # CONFIG_BLK_DEV_HPT366 is not set |
424 | # CONFIG_BLK_DEV_JMICRON is not set | ||
379 | # CONFIG_BLK_DEV_SC1200 is not set | 425 | # CONFIG_BLK_DEV_SC1200 is not set |
380 | CONFIG_BLK_DEV_PIIX=y | 426 | CONFIG_BLK_DEV_PIIX=y |
427 | # CONFIG_BLK_DEV_IT8213 is not set | ||
381 | # CONFIG_BLK_DEV_IT821X is not set | 428 | # CONFIG_BLK_DEV_IT821X is not set |
382 | # CONFIG_BLK_DEV_NS87415 is not set | 429 | # CONFIG_BLK_DEV_NS87415 is not set |
383 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 430 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -387,6 +434,7 @@ CONFIG_BLK_DEV_PIIX=y | |||
387 | # CONFIG_BLK_DEV_SLC90E66 is not set | 434 | # CONFIG_BLK_DEV_SLC90E66 is not set |
388 | # CONFIG_BLK_DEV_TRM290 is not set | 435 | # CONFIG_BLK_DEV_TRM290 is not set |
389 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 436 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
437 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
390 | # CONFIG_IDE_ARM is not set | 438 | # CONFIG_IDE_ARM is not set |
391 | CONFIG_BLK_DEV_IDEDMA=y | 439 | CONFIG_BLK_DEV_IDEDMA=y |
392 | # CONFIG_IDEDMA_IVB is not set | 440 | # CONFIG_IDEDMA_IVB is not set |
@@ -398,6 +446,8 @@ CONFIG_IDEDMA_AUTO=y | |||
398 | # | 446 | # |
399 | # CONFIG_RAID_ATTRS is not set | 447 | # CONFIG_RAID_ATTRS is not set |
400 | CONFIG_SCSI=y | 448 | CONFIG_SCSI=y |
449 | # CONFIG_SCSI_TGT is not set | ||
450 | CONFIG_SCSI_NETLINK=y | ||
401 | CONFIG_SCSI_PROC_FS=y | 451 | CONFIG_SCSI_PROC_FS=y |
402 | 452 | ||
403 | # | 453 | # |
@@ -417,14 +467,16 @@ CONFIG_CHR_DEV_SG=m | |||
417 | # CONFIG_SCSI_MULTI_LUN is not set | 467 | # CONFIG_SCSI_MULTI_LUN is not set |
418 | # CONFIG_SCSI_CONSTANTS is not set | 468 | # CONFIG_SCSI_CONSTANTS is not set |
419 | # CONFIG_SCSI_LOGGING is not set | 469 | # CONFIG_SCSI_LOGGING is not set |
470 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
420 | 471 | ||
421 | # | 472 | # |
422 | # SCSI Transport Attributes | 473 | # SCSI Transports |
423 | # | 474 | # |
424 | CONFIG_SCSI_SPI_ATTRS=y | 475 | CONFIG_SCSI_SPI_ATTRS=y |
425 | CONFIG_SCSI_FC_ATTRS=y | 476 | CONFIG_SCSI_FC_ATTRS=y |
426 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 477 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
427 | # CONFIG_SCSI_SAS_ATTRS is not set | 478 | # CONFIG_SCSI_SAS_ATTRS is not set |
479 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
428 | 480 | ||
429 | # | 481 | # |
430 | # SCSI low-level drivers | 482 | # SCSI low-level drivers |
@@ -437,29 +489,36 @@ CONFIG_SCSI_FC_ATTRS=y | |||
437 | # CONFIG_SCSI_AIC7XXX is not set | 489 | # CONFIG_SCSI_AIC7XXX is not set |
438 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 490 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
439 | # CONFIG_SCSI_AIC79XX is not set | 491 | # CONFIG_SCSI_AIC79XX is not set |
492 | # CONFIG_SCSI_AIC94XX is not set | ||
493 | # CONFIG_SCSI_ARCMSR is not set | ||
440 | # CONFIG_MEGARAID_NEWGEN is not set | 494 | # CONFIG_MEGARAID_NEWGEN is not set |
441 | # CONFIG_MEGARAID_LEGACY is not set | 495 | # CONFIG_MEGARAID_LEGACY is not set |
442 | # CONFIG_MEGARAID_SAS is not set | 496 | # CONFIG_MEGARAID_SAS is not set |
443 | # CONFIG_SCSI_SATA is not set | 497 | # CONFIG_SCSI_HPTIOP is not set |
444 | # CONFIG_SCSI_DMX3191D is not set | 498 | # CONFIG_SCSI_DMX3191D is not set |
445 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 499 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
446 | # CONFIG_SCSI_IPS is not set | 500 | # CONFIG_SCSI_IPS is not set |
447 | # CONFIG_SCSI_INITIO is not set | 501 | # CONFIG_SCSI_INITIO is not set |
448 | # CONFIG_SCSI_INIA100 is not set | 502 | # CONFIG_SCSI_INIA100 is not set |
503 | # CONFIG_SCSI_STEX is not set | ||
449 | CONFIG_SCSI_SYM53C8XX_2=y | 504 | CONFIG_SCSI_SYM53C8XX_2=y |
450 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 505 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
451 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 506 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
452 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 507 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
453 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 508 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
454 | # CONFIG_SCSI_IPR is not set | ||
455 | CONFIG_SCSI_QLOGIC_FC=y | ||
456 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | ||
457 | CONFIG_SCSI_QLOGIC_1280=y | 509 | CONFIG_SCSI_QLOGIC_1280=y |
458 | # CONFIG_SCSI_QLA_FC is not set | 510 | # CONFIG_SCSI_QLA_FC is not set |
511 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
459 | # CONFIG_SCSI_LPFC is not set | 512 | # CONFIG_SCSI_LPFC is not set |
460 | # CONFIG_SCSI_DC395x is not set | 513 | # CONFIG_SCSI_DC395x is not set |
461 | # CONFIG_SCSI_DC390T is not set | 514 | # CONFIG_SCSI_DC390T is not set |
462 | # CONFIG_SCSI_DEBUG is not set | 515 | # CONFIG_SCSI_DEBUG is not set |
516 | # CONFIG_SCSI_SRP is not set | ||
517 | |||
518 | # | ||
519 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
520 | # | ||
521 | # CONFIG_ATA is not set | ||
463 | 522 | ||
464 | # | 523 | # |
465 | # Multi-device support (RAID and LVM) | 524 | # Multi-device support (RAID and LVM) |
@@ -470,11 +529,11 @@ CONFIG_MD_LINEAR=m | |||
470 | CONFIG_MD_RAID0=m | 529 | CONFIG_MD_RAID0=m |
471 | CONFIG_MD_RAID1=m | 530 | CONFIG_MD_RAID1=m |
472 | # CONFIG_MD_RAID10 is not set | 531 | # CONFIG_MD_RAID10 is not set |
473 | CONFIG_MD_RAID5=m | 532 | # CONFIG_MD_RAID456 is not set |
474 | CONFIG_MD_RAID6=m | ||
475 | CONFIG_MD_MULTIPATH=m | 533 | CONFIG_MD_MULTIPATH=m |
476 | # CONFIG_MD_FAULTY is not set | 534 | # CONFIG_MD_FAULTY is not set |
477 | CONFIG_BLK_DEV_DM=m | 535 | CONFIG_BLK_DEV_DM=m |
536 | # CONFIG_DM_DEBUG is not set | ||
478 | CONFIG_DM_CRYPT=m | 537 | CONFIG_DM_CRYPT=m |
479 | CONFIG_DM_SNAPSHOT=m | 538 | CONFIG_DM_SNAPSHOT=m |
480 | CONFIG_DM_MIRROR=m | 539 | CONFIG_DM_MIRROR=m |
@@ -563,6 +622,7 @@ CONFIG_E100=m | |||
563 | # CONFIG_EPIC100 is not set | 622 | # CONFIG_EPIC100 is not set |
564 | # CONFIG_SUNDANCE is not set | 623 | # CONFIG_SUNDANCE is not set |
565 | # CONFIG_VIA_RHINE is not set | 624 | # CONFIG_VIA_RHINE is not set |
625 | # CONFIG_SC92031 is not set | ||
566 | 626 | ||
567 | # | 627 | # |
568 | # Ethernet (1000 Mbit) | 628 | # Ethernet (1000 Mbit) |
@@ -583,13 +643,18 @@ CONFIG_E1000=y | |||
583 | # CONFIG_VIA_VELOCITY is not set | 643 | # CONFIG_VIA_VELOCITY is not set |
584 | CONFIG_TIGON3=y | 644 | CONFIG_TIGON3=y |
585 | # CONFIG_BNX2 is not set | 645 | # CONFIG_BNX2 is not set |
646 | # CONFIG_QLA3XXX is not set | ||
647 | # CONFIG_ATL1 is not set | ||
586 | 648 | ||
587 | # | 649 | # |
588 | # Ethernet (10000 Mbit) | 650 | # Ethernet (10000 Mbit) |
589 | # | 651 | # |
590 | # CONFIG_CHELSIO_T1 is not set | 652 | # CONFIG_CHELSIO_T1 is not set |
653 | # CONFIG_CHELSIO_T3 is not set | ||
591 | # CONFIG_IXGB is not set | 654 | # CONFIG_IXGB is not set |
592 | # CONFIG_S2IO is not set | 655 | # CONFIG_S2IO is not set |
656 | # CONFIG_MYRI10GE is not set | ||
657 | # CONFIG_NETXEN_NIC is not set | ||
593 | 658 | ||
594 | # | 659 | # |
595 | # Token Ring devices | 660 | # Token Ring devices |
@@ -631,6 +696,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
631 | # Input device support | 696 | # Input device support |
632 | # | 697 | # |
633 | CONFIG_INPUT=y | 698 | CONFIG_INPUT=y |
699 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
634 | 700 | ||
635 | # | 701 | # |
636 | # Userland interfaces | 702 | # Userland interfaces |
@@ -653,6 +719,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
653 | # CONFIG_KEYBOARD_LKKBD is not set | 719 | # CONFIG_KEYBOARD_LKKBD is not set |
654 | # CONFIG_KEYBOARD_XTKBD is not set | 720 | # CONFIG_KEYBOARD_XTKBD is not set |
655 | # CONFIG_KEYBOARD_NEWTON is not set | 721 | # CONFIG_KEYBOARD_NEWTON is not set |
722 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
656 | CONFIG_INPUT_MOUSE=y | 723 | CONFIG_INPUT_MOUSE=y |
657 | CONFIG_MOUSE_PS2=y | 724 | CONFIG_MOUSE_PS2=y |
658 | # CONFIG_MOUSE_SERIAL is not set | 725 | # CONFIG_MOUSE_SERIAL is not set |
@@ -682,6 +749,7 @@ CONFIG_GAMEPORT=m | |||
682 | CONFIG_VT=y | 749 | CONFIG_VT=y |
683 | CONFIG_VT_CONSOLE=y | 750 | CONFIG_VT_CONSOLE=y |
684 | CONFIG_HW_CONSOLE=y | 751 | CONFIG_HW_CONSOLE=y |
752 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
685 | CONFIG_SERIAL_NONSTANDARD=y | 753 | CONFIG_SERIAL_NONSTANDARD=y |
686 | # CONFIG_COMPUTONE is not set | 754 | # CONFIG_COMPUTONE is not set |
687 | # CONFIG_ROCKETPORT is not set | 755 | # CONFIG_ROCKETPORT is not set |
@@ -689,12 +757,14 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
689 | # CONFIG_DIGIEPCA is not set | 757 | # CONFIG_DIGIEPCA is not set |
690 | # CONFIG_MOXA_INTELLIO is not set | 758 | # CONFIG_MOXA_INTELLIO is not set |
691 | # CONFIG_MOXA_SMARTIO is not set | 759 | # CONFIG_MOXA_SMARTIO is not set |
760 | # CONFIG_MOXA_SMARTIO_NEW is not set | ||
692 | # CONFIG_ISI is not set | 761 | # CONFIG_ISI is not set |
693 | # CONFIG_SYNCLINKMP is not set | 762 | # CONFIG_SYNCLINKMP is not set |
694 | # CONFIG_SYNCLINK_GT is not set | 763 | # CONFIG_SYNCLINK_GT is not set |
695 | # CONFIG_N_HDLC is not set | 764 | # CONFIG_N_HDLC is not set |
696 | # CONFIG_SPECIALIX is not set | 765 | # CONFIG_SPECIALIX is not set |
697 | # CONFIG_SX is not set | 766 | # CONFIG_SX is not set |
767 | # CONFIG_RIO is not set | ||
698 | # CONFIG_STALDRV is not set | 768 | # CONFIG_STALDRV is not set |
699 | 769 | ||
700 | # | 770 | # |
@@ -702,7 +772,8 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
702 | # | 772 | # |
703 | CONFIG_SERIAL_8250=y | 773 | CONFIG_SERIAL_8250=y |
704 | CONFIG_SERIAL_8250_CONSOLE=y | 774 | CONFIG_SERIAL_8250_CONSOLE=y |
705 | CONFIG_SERIAL_8250_ACPI=y | 775 | CONFIG_SERIAL_8250_PCI=y |
776 | CONFIG_SERIAL_8250_PNP=y | ||
706 | CONFIG_SERIAL_8250_NR_UARTS=6 | 777 | CONFIG_SERIAL_8250_NR_UARTS=6 |
707 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 778 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
708 | CONFIG_SERIAL_8250_EXTENDED=y | 779 | CONFIG_SERIAL_8250_EXTENDED=y |
@@ -734,10 +805,6 @@ CONFIG_EFI_RTC=y | |||
734 | # CONFIG_DTLK is not set | 805 | # CONFIG_DTLK is not set |
735 | # CONFIG_R3964 is not set | 806 | # CONFIG_R3964 is not set |
736 | # CONFIG_APPLICOM is not set | 807 | # CONFIG_APPLICOM is not set |
737 | |||
738 | # | ||
739 | # Ftape, the floppy tape device driver | ||
740 | # | ||
741 | CONFIG_AGP=m | 808 | CONFIG_AGP=m |
742 | CONFIG_AGP_I460=m | 809 | CONFIG_AGP_I460=m |
743 | CONFIG_DRM=m | 810 | CONFIG_DRM=m |
@@ -759,7 +826,6 @@ CONFIG_HPET_MMAP=y | |||
759 | # TPM devices | 826 | # TPM devices |
760 | # | 827 | # |
761 | # CONFIG_TCG_TPM is not set | 828 | # CONFIG_TCG_TPM is not set |
762 | # CONFIG_TELCLOCK is not set | ||
763 | 829 | ||
764 | # | 830 | # |
765 | # I2C support | 831 | # I2C support |
@@ -782,16 +848,16 @@ CONFIG_HPET_MMAP=y | |||
782 | # | 848 | # |
783 | CONFIG_HWMON=y | 849 | CONFIG_HWMON=y |
784 | # CONFIG_HWMON_VID is not set | 850 | # CONFIG_HWMON_VID is not set |
851 | # CONFIG_SENSORS_ABITUGURU is not set | ||
785 | # CONFIG_SENSORS_F71805F is not set | 852 | # CONFIG_SENSORS_F71805F is not set |
853 | # CONFIG_SENSORS_PC87427 is not set | ||
854 | # CONFIG_SENSORS_VT1211 is not set | ||
786 | # CONFIG_HWMON_DEBUG_CHIP is not set | 855 | # CONFIG_HWMON_DEBUG_CHIP is not set |
787 | 856 | ||
788 | # | 857 | # |
789 | # Misc devices | 858 | # Multifunction device drivers |
790 | # | ||
791 | |||
792 | # | ||
793 | # Multimedia Capabilities Port drivers | ||
794 | # | 859 | # |
860 | # CONFIG_MFD_SM501 is not set | ||
795 | 861 | ||
796 | # | 862 | # |
797 | # Multimedia devices | 863 | # Multimedia devices |
@@ -802,16 +868,19 @@ CONFIG_HWMON=y | |||
802 | # Digital Video Broadcasting Devices | 868 | # Digital Video Broadcasting Devices |
803 | # | 869 | # |
804 | # CONFIG_DVB is not set | 870 | # CONFIG_DVB is not set |
871 | # CONFIG_USB_DABUSB is not set | ||
805 | 872 | ||
806 | # | 873 | # |
807 | # Graphics support | 874 | # Graphics support |
808 | # | 875 | # |
876 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
809 | # CONFIG_FB is not set | 877 | # CONFIG_FB is not set |
810 | 878 | ||
811 | # | 879 | # |
812 | # Console display driver support | 880 | # Console display driver support |
813 | # | 881 | # |
814 | CONFIG_VGA_CONSOLE=y | 882 | CONFIG_VGA_CONSOLE=y |
883 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
815 | CONFIG_DUMMY_CONSOLE=y | 884 | CONFIG_DUMMY_CONSOLE=y |
816 | 885 | ||
817 | # | 886 | # |
@@ -820,10 +889,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
820 | # CONFIG_SOUND is not set | 889 | # CONFIG_SOUND is not set |
821 | 890 | ||
822 | # | 891 | # |
892 | # HID Devices | ||
893 | # | ||
894 | CONFIG_HID=y | ||
895 | # CONFIG_HID_DEBUG is not set | ||
896 | |||
897 | # | ||
823 | # USB support | 898 | # USB support |
824 | # | 899 | # |
825 | CONFIG_USB_ARCH_HAS_HCD=y | 900 | CONFIG_USB_ARCH_HAS_HCD=y |
826 | CONFIG_USB_ARCH_HAS_OHCI=y | 901 | CONFIG_USB_ARCH_HAS_OHCI=y |
902 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
827 | CONFIG_USB=y | 903 | CONFIG_USB=y |
828 | # CONFIG_USB_DEBUG is not set | 904 | # CONFIG_USB_DEBUG is not set |
829 | 905 | ||
@@ -831,7 +907,6 @@ CONFIG_USB=y | |||
831 | # Miscellaneous USB options | 907 | # Miscellaneous USB options |
832 | # | 908 | # |
833 | CONFIG_USB_DEVICEFS=y | 909 | CONFIG_USB_DEVICEFS=y |
834 | # CONFIG_USB_BANDWIDTH is not set | ||
835 | # CONFIG_USB_DYNAMIC_MINORS is not set | 910 | # CONFIG_USB_DYNAMIC_MINORS is not set |
836 | # CONFIG_USB_SUSPEND is not set | 911 | # CONFIG_USB_SUSPEND is not set |
837 | # CONFIG_USB_OTG is not set | 912 | # CONFIG_USB_OTG is not set |
@@ -842,9 +917,12 @@ CONFIG_USB_DEVICEFS=y | |||
842 | CONFIG_USB_EHCI_HCD=m | 917 | CONFIG_USB_EHCI_HCD=m |
843 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 918 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
844 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 919 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
920 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
921 | # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set | ||
845 | # CONFIG_USB_ISP116X_HCD is not set | 922 | # CONFIG_USB_ISP116X_HCD is not set |
846 | CONFIG_USB_OHCI_HCD=m | 923 | CONFIG_USB_OHCI_HCD=m |
847 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 924 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
925 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
848 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 926 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
849 | CONFIG_USB_UHCI_HCD=y | 927 | CONFIG_USB_UHCI_HCD=y |
850 | # CONFIG_USB_SL811_HCD is not set | 928 | # CONFIG_USB_SL811_HCD is not set |
@@ -873,13 +951,13 @@ CONFIG_USB_STORAGE=m | |||
873 | # CONFIG_USB_STORAGE_SDDR55 is not set | 951 | # CONFIG_USB_STORAGE_SDDR55 is not set |
874 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 952 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
875 | # CONFIG_USB_STORAGE_ALAUDA is not set | 953 | # CONFIG_USB_STORAGE_ALAUDA is not set |
954 | # CONFIG_USB_STORAGE_KARMA is not set | ||
876 | # CONFIG_USB_LIBUSUAL is not set | 955 | # CONFIG_USB_LIBUSUAL is not set |
877 | 956 | ||
878 | # | 957 | # |
879 | # USB Input Devices | 958 | # USB Input Devices |
880 | # | 959 | # |
881 | CONFIG_USB_HID=y | 960 | CONFIG_USB_HID=y |
882 | CONFIG_USB_HIDINPUT=y | ||
883 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | 961 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set |
884 | # CONFIG_HID_FF is not set | 962 | # CONFIG_HID_FF is not set |
885 | # CONFIG_USB_HIDDEV is not set | 963 | # CONFIG_USB_HIDDEV is not set |
@@ -888,15 +966,14 @@ CONFIG_USB_HIDINPUT=y | |||
888 | # CONFIG_USB_ACECAD is not set | 966 | # CONFIG_USB_ACECAD is not set |
889 | # CONFIG_USB_KBTAB is not set | 967 | # CONFIG_USB_KBTAB is not set |
890 | # CONFIG_USB_POWERMATE is not set | 968 | # CONFIG_USB_POWERMATE is not set |
891 | # CONFIG_USB_MTOUCH is not set | 969 | # CONFIG_USB_TOUCHSCREEN is not set |
892 | # CONFIG_USB_ITMTOUCH is not set | ||
893 | # CONFIG_USB_EGALAX is not set | ||
894 | # CONFIG_USB_YEALINK is not set | 970 | # CONFIG_USB_YEALINK is not set |
895 | # CONFIG_USB_XPAD is not set | 971 | # CONFIG_USB_XPAD is not set |
896 | # CONFIG_USB_ATI_REMOTE is not set | 972 | # CONFIG_USB_ATI_REMOTE is not set |
897 | # CONFIG_USB_ATI_REMOTE2 is not set | 973 | # CONFIG_USB_ATI_REMOTE2 is not set |
898 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 974 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
899 | # CONFIG_USB_APPLETOUCH is not set | 975 | # CONFIG_USB_APPLETOUCH is not set |
976 | # CONFIG_USB_GTCO is not set | ||
900 | 977 | ||
901 | # | 978 | # |
902 | # USB Imaging devices | 979 | # USB Imaging devices |
@@ -905,21 +982,13 @@ CONFIG_USB_HIDINPUT=y | |||
905 | # CONFIG_USB_MICROTEK is not set | 982 | # CONFIG_USB_MICROTEK is not set |
906 | 983 | ||
907 | # | 984 | # |
908 | # USB Multimedia devices | ||
909 | # | ||
910 | # CONFIG_USB_DABUSB is not set | ||
911 | |||
912 | # | ||
913 | # Video4Linux support is needed for USB Multimedia device support | ||
914 | # | ||
915 | |||
916 | # | ||
917 | # USB Network Adapters | 985 | # USB Network Adapters |
918 | # | 986 | # |
919 | # CONFIG_USB_CATC is not set | 987 | # CONFIG_USB_CATC is not set |
920 | # CONFIG_USB_KAWETH is not set | 988 | # CONFIG_USB_KAWETH is not set |
921 | # CONFIG_USB_PEGASUS is not set | 989 | # CONFIG_USB_PEGASUS is not set |
922 | # CONFIG_USB_RTL8150 is not set | 990 | # CONFIG_USB_RTL8150 is not set |
991 | # CONFIG_USB_USBNET_MII is not set | ||
923 | # CONFIG_USB_USBNET is not set | 992 | # CONFIG_USB_USBNET is not set |
924 | # CONFIG_USB_MON is not set | 993 | # CONFIG_USB_MON is not set |
925 | 994 | ||
@@ -937,17 +1006,23 @@ CONFIG_USB_HIDINPUT=y | |||
937 | # | 1006 | # |
938 | # CONFIG_USB_EMI62 is not set | 1007 | # CONFIG_USB_EMI62 is not set |
939 | # CONFIG_USB_EMI26 is not set | 1008 | # CONFIG_USB_EMI26 is not set |
1009 | # CONFIG_USB_ADUTUX is not set | ||
940 | # CONFIG_USB_AUERSWALD is not set | 1010 | # CONFIG_USB_AUERSWALD is not set |
941 | # CONFIG_USB_RIO500 is not set | 1011 | # CONFIG_USB_RIO500 is not set |
942 | # CONFIG_USB_LEGOTOWER is not set | 1012 | # CONFIG_USB_LEGOTOWER is not set |
943 | # CONFIG_USB_LCD is not set | 1013 | # CONFIG_USB_LCD is not set |
1014 | # CONFIG_USB_BERRY_CHARGE is not set | ||
944 | # CONFIG_USB_LED is not set | 1015 | # CONFIG_USB_LED is not set |
1016 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
945 | # CONFIG_USB_CYTHERM is not set | 1017 | # CONFIG_USB_CYTHERM is not set |
946 | # CONFIG_USB_PHIDGETKIT is not set | 1018 | # CONFIG_USB_PHIDGET is not set |
947 | # CONFIG_USB_PHIDGETSERVO is not set | ||
948 | # CONFIG_USB_IDMOUSE is not set | 1019 | # CONFIG_USB_IDMOUSE is not set |
1020 | # CONFIG_USB_FTDI_ELAN is not set | ||
1021 | # CONFIG_USB_APPLEDISPLAY is not set | ||
949 | # CONFIG_USB_SISUSBVGA is not set | 1022 | # CONFIG_USB_SISUSBVGA is not set |
950 | # CONFIG_USB_LD is not set | 1023 | # CONFIG_USB_LD is not set |
1024 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1025 | # CONFIG_USB_IOWARRIOR is not set | ||
951 | # CONFIG_USB_TEST is not set | 1026 | # CONFIG_USB_TEST is not set |
952 | 1027 | ||
953 | # | 1028 | # |
@@ -965,15 +1040,55 @@ CONFIG_USB_HIDINPUT=y | |||
965 | # CONFIG_MMC is not set | 1040 | # CONFIG_MMC is not set |
966 | 1041 | ||
967 | # | 1042 | # |
1043 | # LED devices | ||
1044 | # | ||
1045 | # CONFIG_NEW_LEDS is not set | ||
1046 | |||
1047 | # | ||
1048 | # LED drivers | ||
1049 | # | ||
1050 | |||
1051 | # | ||
1052 | # LED Triggers | ||
1053 | # | ||
1054 | |||
1055 | # | ||
968 | # InfiniBand support | 1056 | # InfiniBand support |
969 | # | 1057 | # |
970 | # CONFIG_INFINIBAND is not set | 1058 | # CONFIG_INFINIBAND is not set |
971 | 1059 | ||
972 | # | 1060 | # |
973 | # EDAC - error detection and reporting (RAS) | 1061 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
1062 | # | ||
1063 | |||
1064 | # | ||
1065 | # Real Time Clock | ||
1066 | # | ||
1067 | # CONFIG_RTC_CLASS is not set | ||
1068 | |||
1069 | # | ||
1070 | # DMA Engine support | ||
1071 | # | ||
1072 | # CONFIG_DMA_ENGINE is not set | ||
1073 | |||
1074 | # | ||
1075 | # DMA Clients | ||
974 | # | 1076 | # |
975 | 1077 | ||
976 | # | 1078 | # |
1079 | # DMA Devices | ||
1080 | # | ||
1081 | |||
1082 | # | ||
1083 | # Auxiliary Display support | ||
1084 | # | ||
1085 | |||
1086 | # | ||
1087 | # Virtualization | ||
1088 | # | ||
1089 | # CONFIG_MSPEC is not set | ||
1090 | |||
1091 | # | ||
977 | # File systems | 1092 | # File systems |
978 | # | 1093 | # |
979 | CONFIG_EXT2_FS=y | 1094 | CONFIG_EXT2_FS=y |
@@ -985,6 +1100,7 @@ CONFIG_EXT3_FS=y | |||
985 | CONFIG_EXT3_FS_XATTR=y | 1100 | CONFIG_EXT3_FS_XATTR=y |
986 | CONFIG_EXT3_FS_POSIX_ACL=y | 1101 | CONFIG_EXT3_FS_POSIX_ACL=y |
987 | CONFIG_EXT3_FS_SECURITY=y | 1102 | CONFIG_EXT3_FS_SECURITY=y |
1103 | # CONFIG_EXT4DEV_FS is not set | ||
988 | CONFIG_JBD=y | 1104 | CONFIG_JBD=y |
989 | # CONFIG_JBD_DEBUG is not set | 1105 | # CONFIG_JBD_DEBUG is not set |
990 | CONFIG_FS_MBCACHE=y | 1106 | CONFIG_FS_MBCACHE=y |
@@ -997,15 +1113,16 @@ CONFIG_REISERFS_FS_SECURITY=y | |||
997 | # CONFIG_JFS_FS is not set | 1113 | # CONFIG_JFS_FS is not set |
998 | CONFIG_FS_POSIX_ACL=y | 1114 | CONFIG_FS_POSIX_ACL=y |
999 | CONFIG_XFS_FS=y | 1115 | CONFIG_XFS_FS=y |
1000 | CONFIG_XFS_EXPORT=y | ||
1001 | # CONFIG_XFS_QUOTA is not set | 1116 | # CONFIG_XFS_QUOTA is not set |
1002 | # CONFIG_XFS_SECURITY is not set | 1117 | # CONFIG_XFS_SECURITY is not set |
1003 | # CONFIG_XFS_POSIX_ACL is not set | 1118 | # CONFIG_XFS_POSIX_ACL is not set |
1004 | # CONFIG_XFS_RT is not set | 1119 | # CONFIG_XFS_RT is not set |
1120 | # CONFIG_GFS2_FS is not set | ||
1005 | # CONFIG_OCFS2_FS is not set | 1121 | # CONFIG_OCFS2_FS is not set |
1006 | # CONFIG_MINIX_FS is not set | 1122 | # CONFIG_MINIX_FS is not set |
1007 | # CONFIG_ROMFS_FS is not set | 1123 | # CONFIG_ROMFS_FS is not set |
1008 | CONFIG_INOTIFY=y | 1124 | CONFIG_INOTIFY=y |
1125 | CONFIG_INOTIFY_USER=y | ||
1009 | # CONFIG_QUOTA is not set | 1126 | # CONFIG_QUOTA is not set |
1010 | CONFIG_DNOTIFY=y | 1127 | CONFIG_DNOTIFY=y |
1011 | CONFIG_AUTOFS_FS=y | 1128 | CONFIG_AUTOFS_FS=y |
@@ -1038,12 +1155,13 @@ CONFIG_NTFS_FS=m | |||
1038 | # | 1155 | # |
1039 | CONFIG_PROC_FS=y | 1156 | CONFIG_PROC_FS=y |
1040 | CONFIG_PROC_KCORE=y | 1157 | CONFIG_PROC_KCORE=y |
1158 | CONFIG_PROC_SYSCTL=y | ||
1041 | CONFIG_SYSFS=y | 1159 | CONFIG_SYSFS=y |
1042 | CONFIG_TMPFS=y | 1160 | CONFIG_TMPFS=y |
1161 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1043 | CONFIG_HUGETLBFS=y | 1162 | CONFIG_HUGETLBFS=y |
1044 | CONFIG_HUGETLB_PAGE=y | 1163 | CONFIG_HUGETLB_PAGE=y |
1045 | CONFIG_RAMFS=y | 1164 | CONFIG_RAMFS=y |
1046 | # CONFIG_RELAYFS_FS is not set | ||
1047 | # CONFIG_CONFIGFS_FS is not set | 1165 | # CONFIG_CONFIGFS_FS is not set |
1048 | 1166 | ||
1049 | # | 1167 | # |
@@ -1078,7 +1196,7 @@ CONFIG_NFSD_V4=y | |||
1078 | CONFIG_NFSD_TCP=y | 1196 | CONFIG_NFSD_TCP=y |
1079 | CONFIG_LOCKD=m | 1197 | CONFIG_LOCKD=m |
1080 | CONFIG_LOCKD_V4=y | 1198 | CONFIG_LOCKD_V4=y |
1081 | CONFIG_EXPORTFS=y | 1199 | CONFIG_EXPORTFS=m |
1082 | CONFIG_NFS_COMMON=y | 1200 | CONFIG_NFS_COMMON=y |
1083 | CONFIG_SUNRPC=m | 1201 | CONFIG_SUNRPC=m |
1084 | CONFIG_SUNRPC_GSS=m | 1202 | CONFIG_SUNRPC_GSS=m |
@@ -1089,7 +1207,9 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
1089 | CONFIG_SMB_NLS_REMOTE="cp437" | 1207 | CONFIG_SMB_NLS_REMOTE="cp437" |
1090 | CONFIG_CIFS=m | 1208 | CONFIG_CIFS=m |
1091 | # CONFIG_CIFS_STATS is not set | 1209 | # CONFIG_CIFS_STATS is not set |
1210 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1092 | # CONFIG_CIFS_XATTR is not set | 1211 | # CONFIG_CIFS_XATTR is not set |
1212 | # CONFIG_CIFS_DEBUG2 is not set | ||
1093 | # CONFIG_CIFS_EXPERIMENTAL is not set | 1213 | # CONFIG_CIFS_EXPERIMENTAL is not set |
1094 | # CONFIG_NCP_FS is not set | 1214 | # CONFIG_NCP_FS is not set |
1095 | # CONFIG_CODA_FS is not set | 1215 | # CONFIG_CODA_FS is not set |
@@ -1162,15 +1282,25 @@ CONFIG_NLS_KOI8_U=m | |||
1162 | CONFIG_NLS_UTF8=m | 1282 | CONFIG_NLS_UTF8=m |
1163 | 1283 | ||
1164 | # | 1284 | # |
1285 | # Distributed Lock Manager | ||
1286 | # | ||
1287 | # CONFIG_DLM is not set | ||
1288 | |||
1289 | # | ||
1165 | # Library routines | 1290 | # Library routines |
1166 | # | 1291 | # |
1292 | CONFIG_BITREVERSE=y | ||
1167 | # CONFIG_CRC_CCITT is not set | 1293 | # CONFIG_CRC_CCITT is not set |
1168 | # CONFIG_CRC16 is not set | 1294 | # CONFIG_CRC16 is not set |
1169 | CONFIG_CRC32=y | 1295 | CONFIG_CRC32=y |
1170 | # CONFIG_LIBCRC32C is not set | 1296 | # CONFIG_LIBCRC32C is not set |
1297 | CONFIG_PLIST=y | ||
1298 | CONFIG_HAS_IOMEM=y | ||
1299 | CONFIG_HAS_IOPORT=y | ||
1171 | CONFIG_GENERIC_HARDIRQS=y | 1300 | CONFIG_GENERIC_HARDIRQS=y |
1172 | CONFIG_GENERIC_IRQ_PROBE=y | 1301 | CONFIG_GENERIC_IRQ_PROBE=y |
1173 | CONFIG_GENERIC_PENDING_IRQ=y | 1302 | CONFIG_GENERIC_PENDING_IRQ=y |
1303 | CONFIG_IRQ_PER_CPU=y | ||
1174 | 1304 | ||
1175 | # | 1305 | # |
1176 | # Instrumentation Support | 1306 | # Instrumentation Support |
@@ -1182,21 +1312,31 @@ CONFIG_GENERIC_PENDING_IRQ=y | |||
1182 | # Kernel hacking | 1312 | # Kernel hacking |
1183 | # | 1313 | # |
1184 | # CONFIG_PRINTK_TIME is not set | 1314 | # CONFIG_PRINTK_TIME is not set |
1315 | CONFIG_ENABLE_MUST_CHECK=y | ||
1185 | CONFIG_MAGIC_SYSRQ=y | 1316 | CONFIG_MAGIC_SYSRQ=y |
1317 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1318 | # CONFIG_DEBUG_FS is not set | ||
1319 | # CONFIG_HEADERS_CHECK is not set | ||
1186 | CONFIG_DEBUG_KERNEL=y | 1320 | CONFIG_DEBUG_KERNEL=y |
1321 | # CONFIG_DEBUG_SHIRQ is not set | ||
1187 | CONFIG_LOG_BUF_SHIFT=20 | 1322 | CONFIG_LOG_BUF_SHIFT=20 |
1188 | CONFIG_DETECT_SOFTLOCKUP=y | 1323 | CONFIG_DETECT_SOFTLOCKUP=y |
1189 | # CONFIG_SCHEDSTATS is not set | 1324 | # CONFIG_SCHEDSTATS is not set |
1325 | # CONFIG_TIMER_STATS is not set | ||
1190 | # CONFIG_DEBUG_SLAB is not set | 1326 | # CONFIG_DEBUG_SLAB is not set |
1191 | CONFIG_DEBUG_MUTEXES=y | 1327 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1328 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1192 | # CONFIG_DEBUG_SPINLOCK is not set | 1329 | # CONFIG_DEBUG_SPINLOCK is not set |
1330 | CONFIG_DEBUG_MUTEXES=y | ||
1193 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1331 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1332 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1194 | # CONFIG_DEBUG_KOBJECT is not set | 1333 | # CONFIG_DEBUG_KOBJECT is not set |
1195 | # CONFIG_DEBUG_INFO is not set | 1334 | # CONFIG_DEBUG_INFO is not set |
1196 | # CONFIG_DEBUG_FS is not set | ||
1197 | # CONFIG_DEBUG_VM is not set | 1335 | # CONFIG_DEBUG_VM is not set |
1336 | # CONFIG_DEBUG_LIST is not set | ||
1198 | CONFIG_FORCED_INLINING=y | 1337 | CONFIG_FORCED_INLINING=y |
1199 | # CONFIG_RCU_TORTURE_TEST is not set | 1338 | # CONFIG_RCU_TORTURE_TEST is not set |
1339 | # CONFIG_FAULT_INJECTION is not set | ||
1200 | CONFIG_IA64_GRANULE_16MB=y | 1340 | CONFIG_IA64_GRANULE_16MB=y |
1201 | # CONFIG_IA64_GRANULE_64MB is not set | 1341 | # CONFIG_IA64_GRANULE_64MB is not set |
1202 | # CONFIG_IA64_PRINT_HAZARDS is not set | 1342 | # CONFIG_IA64_PRINT_HAZARDS is not set |
@@ -1215,7 +1355,11 @@ CONFIG_SYSVIPC_COMPAT=y | |||
1215 | # Cryptographic options | 1355 | # Cryptographic options |
1216 | # | 1356 | # |
1217 | CONFIG_CRYPTO=y | 1357 | CONFIG_CRYPTO=y |
1358 | CONFIG_CRYPTO_ALGAPI=y | ||
1359 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1360 | CONFIG_CRYPTO_MANAGER=m | ||
1218 | # CONFIG_CRYPTO_HMAC is not set | 1361 | # CONFIG_CRYPTO_HMAC is not set |
1362 | # CONFIG_CRYPTO_XCBC is not set | ||
1219 | # CONFIG_CRYPTO_NULL is not set | 1363 | # CONFIG_CRYPTO_NULL is not set |
1220 | # CONFIG_CRYPTO_MD4 is not set | 1364 | # CONFIG_CRYPTO_MD4 is not set |
1221 | CONFIG_CRYPTO_MD5=y | 1365 | CONFIG_CRYPTO_MD5=y |
@@ -1224,7 +1368,13 @@ CONFIG_CRYPTO_MD5=y | |||
1224 | # CONFIG_CRYPTO_SHA512 is not set | 1368 | # CONFIG_CRYPTO_SHA512 is not set |
1225 | # CONFIG_CRYPTO_WP512 is not set | 1369 | # CONFIG_CRYPTO_WP512 is not set |
1226 | # CONFIG_CRYPTO_TGR192 is not set | 1370 | # CONFIG_CRYPTO_TGR192 is not set |
1371 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1372 | CONFIG_CRYPTO_ECB=m | ||
1373 | CONFIG_CRYPTO_CBC=m | ||
1374 | CONFIG_CRYPTO_PCBC=m | ||
1375 | # CONFIG_CRYPTO_LRW is not set | ||
1227 | CONFIG_CRYPTO_DES=m | 1376 | CONFIG_CRYPTO_DES=m |
1377 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1228 | # CONFIG_CRYPTO_BLOWFISH is not set | 1378 | # CONFIG_CRYPTO_BLOWFISH is not set |
1229 | # CONFIG_CRYPTO_TWOFISH is not set | 1379 | # CONFIG_CRYPTO_TWOFISH is not set |
1230 | # CONFIG_CRYPTO_SERPENT is not set | 1380 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1238,6 +1388,7 @@ CONFIG_CRYPTO_DES=m | |||
1238 | # CONFIG_CRYPTO_DEFLATE is not set | 1388 | # CONFIG_CRYPTO_DEFLATE is not set |
1239 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1389 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1240 | # CONFIG_CRYPTO_CRC32C is not set | 1390 | # CONFIG_CRYPTO_CRC32C is not set |
1391 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1241 | # CONFIG_CRYPTO_TEST is not set | 1392 | # CONFIG_CRYPTO_TEST is not set |
1242 | 1393 | ||
1243 | # | 1394 | # |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index 949dc4670a0c..1c7955c16358 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_defconfig | |||
@@ -1,8 +1,9 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-rc5 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Mon Feb 27 15:55:36 2006 | 4 | # Thu Mar 8 11:04:20 2007 |
5 | # | 5 | # |
6 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
6 | 7 | ||
7 | # | 8 | # |
8 | # Code maturity level options | 9 | # Code maturity level options |
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION="" | |||
18 | CONFIG_LOCALVERSION_AUTO=y | 19 | CONFIG_LOCALVERSION_AUTO=y |
19 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
20 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
22 | # CONFIG_IPC_NS is not set | ||
23 | CONFIG_SYSVIPC_SYSCTL=y | ||
21 | # CONFIG_POSIX_MQUEUE is not set | 24 | # CONFIG_POSIX_MQUEUE is not set |
22 | CONFIG_BSD_PROCESS_ACCT=y | 25 | CONFIG_BSD_PROCESS_ACCT=y |
23 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 26 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
24 | CONFIG_SYSCTL=y | 27 | # CONFIG_TASKSTATS is not set |
28 | # CONFIG_UTS_NS is not set | ||
25 | # CONFIG_AUDIT is not set | 29 | # CONFIG_AUDIT is not set |
26 | # CONFIG_IKCONFIG is not set | 30 | # CONFIG_IKCONFIG is not set |
27 | # CONFIG_CPUSETS is not set | 31 | # CONFIG_CPUSETS is not set |
32 | CONFIG_SYSFS_DEPRECATED=y | ||
33 | # CONFIG_RELAY is not set | ||
34 | CONFIG_BLK_DEV_INITRD=y | ||
28 | CONFIG_INITRAMFS_SOURCE="" | 35 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 36 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
37 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_EMBEDDED is not set | 38 | # CONFIG_EMBEDDED is not set |
39 | CONFIG_SYSCTL_SYSCALL=y | ||
31 | CONFIG_KALLSYMS=y | 40 | CONFIG_KALLSYMS=y |
32 | # CONFIG_KALLSYMS_ALL is not set | 41 | # CONFIG_KALLSYMS_ALL is not set |
33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 42 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y | |||
39 | CONFIG_FUTEX=y | 48 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 49 | CONFIG_EPOLL=y |
41 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
43 | CONFIG_CC_ALIGN_LABELS=0 | ||
44 | CONFIG_CC_ALIGN_LOOPS=0 | ||
45 | CONFIG_CC_ALIGN_JUMPS=0 | ||
46 | CONFIG_SLAB=y | 51 | CONFIG_SLAB=y |
52 | CONFIG_VM_EVENT_COUNTERS=y | ||
53 | CONFIG_RT_MUTEXES=y | ||
47 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
48 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
49 | # CONFIG_SLOB is not set | 56 | # CONFIG_SLOB is not set |
@@ -53,14 +60,16 @@ CONFIG_BASE_SMALL=0 | |||
53 | # | 60 | # |
54 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
55 | # CONFIG_MODULE_UNLOAD is not set | 62 | # CONFIG_MODULE_UNLOAD is not set |
56 | CONFIG_OBSOLETE_MODPARM=y | ||
57 | # CONFIG_MODVERSIONS is not set | 63 | # CONFIG_MODVERSIONS is not set |
58 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
59 | # CONFIG_KMOD is not set | 65 | # CONFIG_KMOD is not set |
66 | CONFIG_STOP_MACHINE=y | ||
60 | 67 | ||
61 | # | 68 | # |
62 | # Block layer | 69 | # Block layer |
63 | # | 70 | # |
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
64 | 73 | ||
65 | # | 74 | # |
66 | # IO Schedulers | 75 | # IO Schedulers |
@@ -80,15 +89,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
80 | # | 89 | # |
81 | CONFIG_IA64=y | 90 | CONFIG_IA64=y |
82 | CONFIG_64BIT=y | 91 | CONFIG_64BIT=y |
92 | CONFIG_ZONE_DMA=y | ||
83 | CONFIG_MMU=y | 93 | CONFIG_MMU=y |
84 | CONFIG_SWIOTLB=y | ||
85 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 94 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
95 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
96 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
97 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
86 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 98 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
87 | CONFIG_TIME_INTERPOLATION=y | 99 | CONFIG_TIME_INTERPOLATION=y |
100 | CONFIG_DMI=y | ||
88 | CONFIG_EFI=y | 101 | CONFIG_EFI=y |
89 | CONFIG_GENERIC_IOMAP=y | 102 | CONFIG_GENERIC_IOMAP=y |
90 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 103 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
91 | CONFIG_DMA_IS_DMA32=y | 104 | CONFIG_AUDIT_ARCH=y |
92 | # CONFIG_IA64_GENERIC is not set | 105 | # CONFIG_IA64_GENERIC is not set |
93 | # CONFIG_IA64_DIG is not set | 106 | # CONFIG_IA64_DIG is not set |
94 | CONFIG_IA64_HP_ZX1=y | 107 | CONFIG_IA64_HP_ZX1=y |
@@ -105,6 +118,7 @@ CONFIG_PGTABLE_3=y | |||
105 | # CONFIG_PGTABLE_4 is not set | 118 | # CONFIG_PGTABLE_4 is not set |
106 | # CONFIG_HZ_100 is not set | 119 | # CONFIG_HZ_100 is not set |
107 | CONFIG_HZ_250=y | 120 | CONFIG_HZ_250=y |
121 | # CONFIG_HZ_300 is not set | ||
108 | # CONFIG_HZ_1000 is not set | 122 | # CONFIG_HZ_1000 is not set |
109 | CONFIG_HZ=250 | 123 | CONFIG_HZ=250 |
110 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 124 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
@@ -113,8 +127,10 @@ CONFIG_IOSAPIC=y | |||
113 | CONFIG_FORCE_MAX_ZONEORDER=17 | 127 | CONFIG_FORCE_MAX_ZONEORDER=17 |
114 | CONFIG_SMP=y | 128 | CONFIG_SMP=y |
115 | CONFIG_NR_CPUS=16 | 129 | CONFIG_NR_CPUS=16 |
116 | # CONFIG_HOTPLUG_CPU is not set | 130 | CONFIG_HOTPLUG_CPU=y |
131 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
117 | # CONFIG_SCHED_SMT is not set | 132 | # CONFIG_SCHED_SMT is not set |
133 | # CONFIG_PERMIT_BSP_REMOVE is not set | ||
118 | # CONFIG_PREEMPT is not set | 134 | # CONFIG_PREEMPT is not set |
119 | CONFIG_SELECT_MEMORY_MODEL=y | 135 | CONFIG_SELECT_MEMORY_MODEL=y |
120 | CONFIG_FLATMEM_MANUAL=y | 136 | CONFIG_FLATMEM_MANUAL=y |
@@ -124,11 +140,14 @@ CONFIG_FLATMEM=y | |||
124 | CONFIG_FLAT_NODE_MEM_MAP=y | 140 | CONFIG_FLAT_NODE_MEM_MAP=y |
125 | # CONFIG_SPARSEMEM_STATIC is not set | 141 | # CONFIG_SPARSEMEM_STATIC is not set |
126 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 142 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
143 | CONFIG_RESOURCES_64BIT=y | ||
144 | CONFIG_ZONE_DMA_FLAG=1 | ||
127 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 145 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
128 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 146 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
129 | CONFIG_ARCH_FLATMEM_ENABLE=y | 147 | CONFIG_ARCH_FLATMEM_ENABLE=y |
130 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 148 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
131 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | 149 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y |
150 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
132 | CONFIG_VIRTUAL_MEM_MAP=y | 151 | CONFIG_VIRTUAL_MEM_MAP=y |
133 | CONFIG_HOLES_IN_ZONE=y | 152 | CONFIG_HOLES_IN_ZONE=y |
134 | CONFIG_IA32_SUPPORT=y | 153 | CONFIG_IA32_SUPPORT=y |
@@ -136,6 +155,9 @@ CONFIG_COMPAT=y | |||
136 | CONFIG_IA64_MCA_RECOVERY=y | 155 | CONFIG_IA64_MCA_RECOVERY=y |
137 | CONFIG_PERFMON=y | 156 | CONFIG_PERFMON=y |
138 | CONFIG_IA64_PALINFO=y | 157 | CONFIG_IA64_PALINFO=y |
158 | # CONFIG_IA64_ESI is not set | ||
159 | # CONFIG_KEXEC is not set | ||
160 | CONFIG_CRASH_DUMP=y | ||
139 | 161 | ||
140 | # | 162 | # |
141 | # Firmware Drivers | 163 | # Firmware Drivers |
@@ -151,21 +173,25 @@ CONFIG_BINFMT_MISC=y | |||
151 | CONFIG_PM=y | 173 | CONFIG_PM=y |
152 | CONFIG_PM_LEGACY=y | 174 | CONFIG_PM_LEGACY=y |
153 | # CONFIG_PM_DEBUG is not set | 175 | # CONFIG_PM_DEBUG is not set |
176 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
154 | 177 | ||
155 | # | 178 | # |
156 | # ACPI (Advanced Configuration and Power Interface) Support | 179 | # ACPI (Advanced Configuration and Power Interface) Support |
157 | # | 180 | # |
158 | CONFIG_ACPI=y | 181 | CONFIG_ACPI=y |
182 | CONFIG_ACPI_PROCFS=y | ||
159 | CONFIG_ACPI_BUTTON=y | 183 | CONFIG_ACPI_BUTTON=y |
160 | CONFIG_ACPI_FAN=y | 184 | CONFIG_ACPI_FAN=y |
185 | # CONFIG_ACPI_DOCK is not set | ||
161 | CONFIG_ACPI_PROCESSOR=y | 186 | CONFIG_ACPI_PROCESSOR=y |
187 | CONFIG_ACPI_HOTPLUG_CPU=y | ||
162 | CONFIG_ACPI_THERMAL=y | 188 | CONFIG_ACPI_THERMAL=y |
163 | CONFIG_ACPI_BLACKLIST_YEAR=0 | 189 | CONFIG_ACPI_BLACKLIST_YEAR=0 |
164 | # CONFIG_ACPI_DEBUG is not set | 190 | # CONFIG_ACPI_DEBUG is not set |
165 | CONFIG_ACPI_EC=y | 191 | CONFIG_ACPI_EC=y |
166 | CONFIG_ACPI_POWER=y | 192 | CONFIG_ACPI_POWER=y |
167 | CONFIG_ACPI_SYSTEM=y | 193 | CONFIG_ACPI_SYSTEM=y |
168 | # CONFIG_ACPI_CONTAINER is not set | 194 | CONFIG_ACPI_CONTAINER=y |
169 | 195 | ||
170 | # | 196 | # |
171 | # CPU Frequency scaling | 197 | # CPU Frequency scaling |
@@ -177,8 +203,8 @@ CONFIG_ACPI_SYSTEM=y | |||
177 | # | 203 | # |
178 | CONFIG_PCI=y | 204 | CONFIG_PCI=y |
179 | CONFIG_PCI_DOMAINS=y | 205 | CONFIG_PCI_DOMAINS=y |
206 | # CONFIG_PCIEPORTBUS is not set | ||
180 | # CONFIG_PCI_MSI is not set | 207 | # CONFIG_PCI_MSI is not set |
181 | CONFIG_PCI_LEGACY_PROC=y | ||
182 | # CONFIG_PCI_DEBUG is not set | 208 | # CONFIG_PCI_DEBUG is not set |
183 | 209 | ||
184 | # | 210 | # |
@@ -208,6 +234,10 @@ CONFIG_NET=y | |||
208 | CONFIG_PACKET=y | 234 | CONFIG_PACKET=y |
209 | # CONFIG_PACKET_MMAP is not set | 235 | # CONFIG_PACKET_MMAP is not set |
210 | CONFIG_UNIX=y | 236 | CONFIG_UNIX=y |
237 | CONFIG_XFRM=y | ||
238 | # CONFIG_XFRM_USER is not set | ||
239 | # CONFIG_XFRM_SUB_POLICY is not set | ||
240 | # CONFIG_XFRM_MIGRATE is not set | ||
211 | # CONFIG_NET_KEY is not set | 241 | # CONFIG_NET_KEY is not set |
212 | CONFIG_INET=y | 242 | CONFIG_INET=y |
213 | CONFIG_IP_MULTICAST=y | 243 | CONFIG_IP_MULTICAST=y |
@@ -222,17 +252,26 @@ CONFIG_IP_FIB_HASH=y | |||
222 | # CONFIG_INET_AH is not set | 252 | # CONFIG_INET_AH is not set |
223 | # CONFIG_INET_ESP is not set | 253 | # CONFIG_INET_ESP is not set |
224 | # CONFIG_INET_IPCOMP is not set | 254 | # CONFIG_INET_IPCOMP is not set |
255 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
225 | # CONFIG_INET_TUNNEL is not set | 256 | # CONFIG_INET_TUNNEL is not set |
257 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
258 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
259 | CONFIG_INET_XFRM_MODE_BEET=y | ||
226 | CONFIG_INET_DIAG=y | 260 | CONFIG_INET_DIAG=y |
227 | CONFIG_INET_TCP_DIAG=y | 261 | CONFIG_INET_TCP_DIAG=y |
228 | # CONFIG_TCP_CONG_ADVANCED is not set | 262 | # CONFIG_TCP_CONG_ADVANCED is not set |
229 | CONFIG_TCP_CONG_BIC=y | 263 | CONFIG_TCP_CONG_CUBIC=y |
264 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
265 | # CONFIG_TCP_MD5SIG is not set | ||
230 | 266 | ||
231 | # | 267 | # |
232 | # IP: Virtual Server Configuration | 268 | # IP: Virtual Server Configuration |
233 | # | 269 | # |
234 | # CONFIG_IP_VS is not set | 270 | # CONFIG_IP_VS is not set |
235 | # CONFIG_IPV6 is not set | 271 | # CONFIG_IPV6 is not set |
272 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
273 | # CONFIG_INET6_TUNNEL is not set | ||
274 | # CONFIG_NETWORK_SECMARK is not set | ||
236 | CONFIG_NETFILTER=y | 275 | CONFIG_NETFILTER=y |
237 | # CONFIG_NETFILTER_DEBUG is not set | 276 | # CONFIG_NETFILTER_DEBUG is not set |
238 | 277 | ||
@@ -240,14 +279,15 @@ CONFIG_NETFILTER=y | |||
240 | # Core Netfilter Configuration | 279 | # Core Netfilter Configuration |
241 | # | 280 | # |
242 | # CONFIG_NETFILTER_NETLINK is not set | 281 | # CONFIG_NETFILTER_NETLINK is not set |
243 | # CONFIG_NF_CONNTRACK is not set | 282 | # CONFIG_NF_CONNTRACK_ENABLED is not set |
244 | # CONFIG_NETFILTER_XTABLES is not set | 283 | # CONFIG_NETFILTER_XTABLES is not set |
245 | 284 | ||
246 | # | 285 | # |
247 | # IP: Netfilter Configuration | 286 | # IP: Netfilter Configuration |
248 | # | 287 | # |
249 | # CONFIG_IP_NF_CONNTRACK is not set | ||
250 | # CONFIG_IP_NF_QUEUE is not set | 288 | # CONFIG_IP_NF_QUEUE is not set |
289 | # CONFIG_IP_NF_IPTABLES is not set | ||
290 | # CONFIG_IP_NF_ARPTABLES is not set | ||
251 | 291 | ||
252 | # | 292 | # |
253 | # DCCP Configuration (EXPERIMENTAL) | 293 | # DCCP Configuration (EXPERIMENTAL) |
@@ -272,7 +312,6 @@ CONFIG_NETFILTER=y | |||
272 | # CONFIG_ATALK is not set | 312 | # CONFIG_ATALK is not set |
273 | # CONFIG_X25 is not set | 313 | # CONFIG_X25 is not set |
274 | # CONFIG_LAPB is not set | 314 | # CONFIG_LAPB is not set |
275 | # CONFIG_NET_DIVERT is not set | ||
276 | # CONFIG_ECONET is not set | 315 | # CONFIG_ECONET is not set |
277 | # CONFIG_WAN_ROUTER is not set | 316 | # CONFIG_WAN_ROUTER is not set |
278 | 317 | ||
@@ -285,6 +324,7 @@ CONFIG_NETFILTER=y | |||
285 | # Network testing | 324 | # Network testing |
286 | # | 325 | # |
287 | # CONFIG_NET_PKTGEN is not set | 326 | # CONFIG_NET_PKTGEN is not set |
327 | # CONFIG_NET_TCPPROBE is not set | ||
288 | # CONFIG_HAMRADIO is not set | 328 | # CONFIG_HAMRADIO is not set |
289 | # CONFIG_IRDA is not set | 329 | # CONFIG_IRDA is not set |
290 | # CONFIG_BT is not set | 330 | # CONFIG_BT is not set |
@@ -301,6 +341,8 @@ CONFIG_STANDALONE=y | |||
301 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 341 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
302 | # CONFIG_FW_LOADER is not set | 342 | # CONFIG_FW_LOADER is not set |
303 | # CONFIG_DEBUG_DRIVER is not set | 343 | # CONFIG_DEBUG_DRIVER is not set |
344 | # CONFIG_DEBUG_DEVRES is not set | ||
345 | # CONFIG_SYS_HYPERVISOR is not set | ||
304 | 346 | ||
305 | # | 347 | # |
306 | # Connector - unified userspace <-> kernelspace linker | 348 | # Connector - unified userspace <-> kernelspace linker |
@@ -344,11 +386,17 @@ CONFIG_BLK_DEV_LOOP=y | |||
344 | CONFIG_BLK_DEV_RAM=y | 386 | CONFIG_BLK_DEV_RAM=y |
345 | CONFIG_BLK_DEV_RAM_COUNT=16 | 387 | CONFIG_BLK_DEV_RAM_COUNT=16 |
346 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 388 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
347 | CONFIG_BLK_DEV_INITRD=y | 389 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
348 | # CONFIG_CDROM_PKTCDVD is not set | 390 | # CONFIG_CDROM_PKTCDVD is not set |
349 | # CONFIG_ATA_OVER_ETH is not set | 391 | # CONFIG_ATA_OVER_ETH is not set |
350 | 392 | ||
351 | # | 393 | # |
394 | # Misc devices | ||
395 | # | ||
396 | # CONFIG_SGI_IOC4 is not set | ||
397 | # CONFIG_TIFM_CORE is not set | ||
398 | |||
399 | # | ||
352 | # ATA/ATAPI/MFM/RLL support | 400 | # ATA/ATAPI/MFM/RLL support |
353 | # | 401 | # |
354 | CONFIG_IDE=y | 402 | CONFIG_IDE=y |
@@ -365,6 +413,7 @@ CONFIG_BLK_DEV_IDECD=y | |||
365 | # CONFIG_BLK_DEV_IDETAPE is not set | 413 | # CONFIG_BLK_DEV_IDETAPE is not set |
366 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 414 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
367 | # CONFIG_BLK_DEV_IDESCSI is not set | 415 | # CONFIG_BLK_DEV_IDESCSI is not set |
416 | # CONFIG_BLK_DEV_IDEACPI is not set | ||
368 | # CONFIG_IDE_TASK_IOCTL is not set | 417 | # CONFIG_IDE_TASK_IOCTL is not set |
369 | 418 | ||
370 | # | 419 | # |
@@ -390,8 +439,10 @@ CONFIG_BLK_DEV_CMD64X=y | |||
390 | # CONFIG_BLK_DEV_CS5530 is not set | 439 | # CONFIG_BLK_DEV_CS5530 is not set |
391 | # CONFIG_BLK_DEV_HPT34X is not set | 440 | # CONFIG_BLK_DEV_HPT34X is not set |
392 | # CONFIG_BLK_DEV_HPT366 is not set | 441 | # CONFIG_BLK_DEV_HPT366 is not set |
442 | # CONFIG_BLK_DEV_JMICRON is not set | ||
393 | # CONFIG_BLK_DEV_SC1200 is not set | 443 | # CONFIG_BLK_DEV_SC1200 is not set |
394 | # CONFIG_BLK_DEV_PIIX is not set | 444 | # CONFIG_BLK_DEV_PIIX is not set |
445 | # CONFIG_BLK_DEV_IT8213 is not set | ||
395 | # CONFIG_BLK_DEV_IT821X is not set | 446 | # CONFIG_BLK_DEV_IT821X is not set |
396 | # CONFIG_BLK_DEV_NS87415 is not set | 447 | # CONFIG_BLK_DEV_NS87415 is not set |
397 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 448 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -401,6 +452,7 @@ CONFIG_BLK_DEV_CMD64X=y | |||
401 | # CONFIG_BLK_DEV_SLC90E66 is not set | 452 | # CONFIG_BLK_DEV_SLC90E66 is not set |
402 | # CONFIG_BLK_DEV_TRM290 is not set | 453 | # CONFIG_BLK_DEV_TRM290 is not set |
403 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 454 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
455 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
404 | # CONFIG_IDE_ARM is not set | 456 | # CONFIG_IDE_ARM is not set |
405 | CONFIG_BLK_DEV_IDEDMA=y | 457 | CONFIG_BLK_DEV_IDEDMA=y |
406 | # CONFIG_IDEDMA_IVB is not set | 458 | # CONFIG_IDEDMA_IVB is not set |
@@ -412,6 +464,8 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
412 | # | 464 | # |
413 | # CONFIG_RAID_ATTRS is not set | 465 | # CONFIG_RAID_ATTRS is not set |
414 | CONFIG_SCSI=y | 466 | CONFIG_SCSI=y |
467 | # CONFIG_SCSI_TGT is not set | ||
468 | CONFIG_SCSI_NETLINK=y | ||
415 | CONFIG_SCSI_PROC_FS=y | 469 | CONFIG_SCSI_PROC_FS=y |
416 | 470 | ||
417 | # | 471 | # |
@@ -431,14 +485,16 @@ CONFIG_CHR_DEV_SG=y | |||
431 | CONFIG_SCSI_MULTI_LUN=y | 485 | CONFIG_SCSI_MULTI_LUN=y |
432 | CONFIG_SCSI_CONSTANTS=y | 486 | CONFIG_SCSI_CONSTANTS=y |
433 | CONFIG_SCSI_LOGGING=y | 487 | CONFIG_SCSI_LOGGING=y |
488 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
434 | 489 | ||
435 | # | 490 | # |
436 | # SCSI Transport Attributes | 491 | # SCSI Transports |
437 | # | 492 | # |
438 | CONFIG_SCSI_SPI_ATTRS=y | 493 | CONFIG_SCSI_SPI_ATTRS=y |
439 | CONFIG_SCSI_FC_ATTRS=y | 494 | CONFIG_SCSI_FC_ATTRS=y |
440 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 495 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
441 | # CONFIG_SCSI_SAS_ATTRS is not set | 496 | # CONFIG_SCSI_SAS_ATTRS is not set |
497 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
442 | 498 | ||
443 | # | 499 | # |
444 | # SCSI low-level drivers | 500 | # SCSI low-level drivers |
@@ -451,28 +507,36 @@ CONFIG_SCSI_FC_ATTRS=y | |||
451 | # CONFIG_SCSI_AIC7XXX is not set | 507 | # CONFIG_SCSI_AIC7XXX is not set |
452 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 508 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
453 | # CONFIG_SCSI_AIC79XX is not set | 509 | # CONFIG_SCSI_AIC79XX is not set |
510 | # CONFIG_SCSI_AIC94XX is not set | ||
511 | # CONFIG_SCSI_ARCMSR is not set | ||
454 | # CONFIG_MEGARAID_NEWGEN is not set | 512 | # CONFIG_MEGARAID_NEWGEN is not set |
455 | # CONFIG_MEGARAID_LEGACY is not set | 513 | # CONFIG_MEGARAID_LEGACY is not set |
456 | # CONFIG_MEGARAID_SAS is not set | 514 | # CONFIG_MEGARAID_SAS is not set |
457 | # CONFIG_SCSI_SATA is not set | 515 | # CONFIG_SCSI_HPTIOP is not set |
458 | # CONFIG_SCSI_DMX3191D is not set | 516 | # CONFIG_SCSI_DMX3191D is not set |
459 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 517 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
460 | # CONFIG_SCSI_IPS is not set | 518 | # CONFIG_SCSI_IPS is not set |
461 | # CONFIG_SCSI_INITIO is not set | 519 | # CONFIG_SCSI_INITIO is not set |
462 | # CONFIG_SCSI_INIA100 is not set | 520 | # CONFIG_SCSI_INIA100 is not set |
521 | # CONFIG_SCSI_STEX is not set | ||
463 | CONFIG_SCSI_SYM53C8XX_2=y | 522 | CONFIG_SCSI_SYM53C8XX_2=y |
464 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 523 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
465 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 524 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
466 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 525 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
467 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 526 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
468 | # CONFIG_SCSI_IPR is not set | ||
469 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
470 | CONFIG_SCSI_QLOGIC_1280=y | 527 | CONFIG_SCSI_QLOGIC_1280=y |
471 | # CONFIG_SCSI_QLA_FC is not set | 528 | # CONFIG_SCSI_QLA_FC is not set |
529 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
472 | # CONFIG_SCSI_LPFC is not set | 530 | # CONFIG_SCSI_LPFC is not set |
473 | # CONFIG_SCSI_DC395x is not set | 531 | # CONFIG_SCSI_DC395x is not set |
474 | # CONFIG_SCSI_DC390T is not set | 532 | # CONFIG_SCSI_DC390T is not set |
475 | # CONFIG_SCSI_DEBUG is not set | 533 | # CONFIG_SCSI_DEBUG is not set |
534 | # CONFIG_SCSI_SRP is not set | ||
535 | |||
536 | # | ||
537 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
538 | # | ||
539 | # CONFIG_ATA is not set | ||
476 | 540 | ||
477 | # | 541 | # |
478 | # Multi-device support (RAID and LVM) | 542 | # Multi-device support (RAID and LVM) |
@@ -562,6 +626,7 @@ CONFIG_E100=y | |||
562 | # CONFIG_EPIC100 is not set | 626 | # CONFIG_EPIC100 is not set |
563 | # CONFIG_SUNDANCE is not set | 627 | # CONFIG_SUNDANCE is not set |
564 | # CONFIG_VIA_RHINE is not set | 628 | # CONFIG_VIA_RHINE is not set |
629 | # CONFIG_SC92031 is not set | ||
565 | 630 | ||
566 | # | 631 | # |
567 | # Ethernet (1000 Mbit) | 632 | # Ethernet (1000 Mbit) |
@@ -582,13 +647,18 @@ CONFIG_E1000=y | |||
582 | # CONFIG_VIA_VELOCITY is not set | 647 | # CONFIG_VIA_VELOCITY is not set |
583 | CONFIG_TIGON3=y | 648 | CONFIG_TIGON3=y |
584 | # CONFIG_BNX2 is not set | 649 | # CONFIG_BNX2 is not set |
650 | # CONFIG_QLA3XXX is not set | ||
651 | # CONFIG_ATL1 is not set | ||
585 | 652 | ||
586 | # | 653 | # |
587 | # Ethernet (10000 Mbit) | 654 | # Ethernet (10000 Mbit) |
588 | # | 655 | # |
589 | # CONFIG_CHELSIO_T1 is not set | 656 | # CONFIG_CHELSIO_T1 is not set |
657 | # CONFIG_CHELSIO_T3 is not set | ||
590 | # CONFIG_IXGB is not set | 658 | # CONFIG_IXGB is not set |
591 | # CONFIG_S2IO is not set | 659 | # CONFIG_S2IO is not set |
660 | # CONFIG_MYRI10GE is not set | ||
661 | # CONFIG_NETXEN_NIC is not set | ||
592 | 662 | ||
593 | # | 663 | # |
594 | # Token Ring devices | 664 | # Token Ring devices |
@@ -628,6 +698,7 @@ CONFIG_TIGON3=y | |||
628 | # Input device support | 698 | # Input device support |
629 | # | 699 | # |
630 | CONFIG_INPUT=y | 700 | CONFIG_INPUT=y |
701 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
631 | 702 | ||
632 | # | 703 | # |
633 | # Userland interfaces | 704 | # Userland interfaces |
@@ -666,6 +737,7 @@ CONFIG_SERIO=y | |||
666 | CONFIG_VT=y | 737 | CONFIG_VT=y |
667 | CONFIG_VT_CONSOLE=y | 738 | CONFIG_VT_CONSOLE=y |
668 | CONFIG_HW_CONSOLE=y | 739 | CONFIG_HW_CONSOLE=y |
740 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
669 | # CONFIG_SERIAL_NONSTANDARD is not set | 741 | # CONFIG_SERIAL_NONSTANDARD is not set |
670 | 742 | ||
671 | # | 743 | # |
@@ -673,7 +745,8 @@ CONFIG_HW_CONSOLE=y | |||
673 | # | 745 | # |
674 | CONFIG_SERIAL_8250=y | 746 | CONFIG_SERIAL_8250=y |
675 | CONFIG_SERIAL_8250_CONSOLE=y | 747 | CONFIG_SERIAL_8250_CONSOLE=y |
676 | CONFIG_SERIAL_8250_ACPI=y | 748 | CONFIG_SERIAL_8250_PCI=y |
749 | CONFIG_SERIAL_8250_PNP=y | ||
677 | CONFIG_SERIAL_8250_NR_UARTS=8 | 750 | CONFIG_SERIAL_8250_NR_UARTS=8 |
678 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 751 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
679 | CONFIG_SERIAL_8250_EXTENDED=y | 752 | CONFIG_SERIAL_8250_EXTENDED=y |
@@ -705,10 +778,6 @@ CONFIG_EFI_RTC=y | |||
705 | # CONFIG_DTLK is not set | 778 | # CONFIG_DTLK is not set |
706 | # CONFIG_R3964 is not set | 779 | # CONFIG_R3964 is not set |
707 | # CONFIG_APPLICOM is not set | 780 | # CONFIG_APPLICOM is not set |
708 | |||
709 | # | ||
710 | # Ftape, the floppy tape device driver | ||
711 | # | ||
712 | CONFIG_AGP=y | 781 | CONFIG_AGP=y |
713 | CONFIG_AGP_HP_ZX1=y | 782 | CONFIG_AGP_HP_ZX1=y |
714 | CONFIG_DRM=y | 783 | CONFIG_DRM=y |
@@ -727,7 +796,6 @@ CONFIG_DRM_RADEON=y | |||
727 | # TPM devices | 796 | # TPM devices |
728 | # | 797 | # |
729 | # CONFIG_TCG_TPM is not set | 798 | # CONFIG_TCG_TPM is not set |
730 | # CONFIG_TELCLOCK is not set | ||
731 | 799 | ||
732 | # | 800 | # |
733 | # I2C support | 801 | # I2C support |
@@ -754,10 +822,11 @@ CONFIG_I2C_ALGOPCF=y | |||
754 | # CONFIG_I2C_I810 is not set | 822 | # CONFIG_I2C_I810 is not set |
755 | # CONFIG_I2C_PIIX4 is not set | 823 | # CONFIG_I2C_PIIX4 is not set |
756 | # CONFIG_I2C_NFORCE2 is not set | 824 | # CONFIG_I2C_NFORCE2 is not set |
825 | # CONFIG_I2C_OCORES is not set | ||
757 | # CONFIG_I2C_PARPORT_LIGHT is not set | 826 | # CONFIG_I2C_PARPORT_LIGHT is not set |
827 | # CONFIG_I2C_PASEMI is not set | ||
758 | # CONFIG_I2C_PROSAVAGE is not set | 828 | # CONFIG_I2C_PROSAVAGE is not set |
759 | # CONFIG_I2C_SAVAGE4 is not set | 829 | # CONFIG_I2C_SAVAGE4 is not set |
760 | # CONFIG_SCx200_ACB is not set | ||
761 | # CONFIG_I2C_SIS5595 is not set | 830 | # CONFIG_I2C_SIS5595 is not set |
762 | # CONFIG_I2C_SIS630 is not set | 831 | # CONFIG_I2C_SIS630 is not set |
763 | # CONFIG_I2C_SIS96X is not set | 832 | # CONFIG_I2C_SIS96X is not set |
@@ -776,9 +845,7 @@ CONFIG_I2C_ALGOPCF=y | |||
776 | # CONFIG_SENSORS_PCF8574 is not set | 845 | # CONFIG_SENSORS_PCF8574 is not set |
777 | # CONFIG_SENSORS_PCA9539 is not set | 846 | # CONFIG_SENSORS_PCA9539 is not set |
778 | # CONFIG_SENSORS_PCF8591 is not set | 847 | # CONFIG_SENSORS_PCF8591 is not set |
779 | # CONFIG_SENSORS_RTC8564 is not set | ||
780 | # CONFIG_SENSORS_MAX6875 is not set | 848 | # CONFIG_SENSORS_MAX6875 is not set |
781 | # CONFIG_RTC_X1205_I2C is not set | ||
782 | # CONFIG_I2C_DEBUG_CORE is not set | 849 | # CONFIG_I2C_DEBUG_CORE is not set |
783 | # CONFIG_I2C_DEBUG_ALGO is not set | 850 | # CONFIG_I2C_DEBUG_ALGO is not set |
784 | # CONFIG_I2C_DEBUG_BUS is not set | 851 | # CONFIG_I2C_DEBUG_BUS is not set |
@@ -802,28 +869,31 @@ CONFIG_I2C_ALGOPCF=y | |||
802 | # CONFIG_HWMON_VID is not set | 869 | # CONFIG_HWMON_VID is not set |
803 | 870 | ||
804 | # | 871 | # |
805 | # Misc devices | 872 | # Multifunction device drivers |
806 | # | ||
807 | |||
808 | # | ||
809 | # Multimedia Capabilities Port drivers | ||
810 | # | 873 | # |
874 | # CONFIG_MFD_SM501 is not set | ||
811 | 875 | ||
812 | # | 876 | # |
813 | # Multimedia devices | 877 | # Multimedia devices |
814 | # | 878 | # |
815 | CONFIG_VIDEO_DEV=y | 879 | CONFIG_VIDEO_DEV=y |
880 | CONFIG_VIDEO_V4L1=y | ||
881 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
882 | CONFIG_VIDEO_V4L2=y | ||
816 | 883 | ||
817 | # | 884 | # |
818 | # Video For Linux | 885 | # Video Capture Adapters |
819 | # | 886 | # |
820 | 887 | ||
821 | # | 888 | # |
822 | # Video Adapters | 889 | # Video Capture Adapters |
823 | # | 890 | # |
824 | # CONFIG_VIDEO_ADV_DEBUG is not set | 891 | # CONFIG_VIDEO_ADV_DEBUG is not set |
892 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
893 | # CONFIG_VIDEO_VIVI is not set | ||
825 | # CONFIG_VIDEO_BT848 is not set | 894 | # CONFIG_VIDEO_BT848 is not set |
826 | # CONFIG_VIDEO_CPIA is not set | 895 | # CONFIG_VIDEO_CPIA is not set |
896 | # CONFIG_VIDEO_CPIA2 is not set | ||
827 | # CONFIG_VIDEO_SAA5246A is not set | 897 | # CONFIG_VIDEO_SAA5246A is not set |
828 | # CONFIG_VIDEO_SAA5249 is not set | 898 | # CONFIG_VIDEO_SAA5249 is not set |
829 | # CONFIG_TUNER_3036 is not set | 899 | # CONFIG_TUNER_3036 is not set |
@@ -835,10 +905,27 @@ CONFIG_VIDEO_DEV=y | |||
835 | # CONFIG_VIDEO_HEXIUM_ORION is not set | 905 | # CONFIG_VIDEO_HEXIUM_ORION is not set |
836 | # CONFIG_VIDEO_HEXIUM_GEMINI is not set | 906 | # CONFIG_VIDEO_HEXIUM_GEMINI is not set |
837 | # CONFIG_VIDEO_CX88 is not set | 907 | # CONFIG_VIDEO_CX88 is not set |
908 | # CONFIG_VIDEO_CAFE_CCIC is not set | ||
909 | |||
910 | # | ||
911 | # V4L USB devices | ||
912 | # | ||
913 | # CONFIG_VIDEO_PVRUSB2 is not set | ||
838 | # CONFIG_VIDEO_EM28XX is not set | 914 | # CONFIG_VIDEO_EM28XX is not set |
915 | # CONFIG_VIDEO_USBVISION is not set | ||
916 | # CONFIG_USB_VICAM is not set | ||
917 | # CONFIG_USB_IBMCAM is not set | ||
918 | # CONFIG_USB_KONICAWC is not set | ||
919 | # CONFIG_USB_QUICKCAM_MESSENGER is not set | ||
920 | # CONFIG_USB_ET61X251 is not set | ||
839 | # CONFIG_VIDEO_OVCAMCHIP is not set | 921 | # CONFIG_VIDEO_OVCAMCHIP is not set |
840 | # CONFIG_VIDEO_AUDIO_DECODER is not set | 922 | # CONFIG_USB_W9968CF is not set |
841 | # CONFIG_VIDEO_DECODER is not set | 923 | # CONFIG_USB_OV511 is not set |
924 | # CONFIG_USB_SE401 is not set | ||
925 | # CONFIG_USB_SN9C102 is not set | ||
926 | # CONFIG_USB_STV680 is not set | ||
927 | # CONFIG_USB_ZC0301 is not set | ||
928 | # CONFIG_USB_PWC is not set | ||
842 | 929 | ||
843 | # | 930 | # |
844 | # Radio Adapters | 931 | # Radio Adapters |
@@ -846,22 +933,35 @@ CONFIG_VIDEO_DEV=y | |||
846 | # CONFIG_RADIO_GEMTEK_PCI is not set | 933 | # CONFIG_RADIO_GEMTEK_PCI is not set |
847 | # CONFIG_RADIO_MAXIRADIO is not set | 934 | # CONFIG_RADIO_MAXIRADIO is not set |
848 | # CONFIG_RADIO_MAESTRO is not set | 935 | # CONFIG_RADIO_MAESTRO is not set |
936 | # CONFIG_USB_DSBR is not set | ||
849 | 937 | ||
850 | # | 938 | # |
851 | # Digital Video Broadcasting Devices | 939 | # Digital Video Broadcasting Devices |
852 | # | 940 | # |
853 | # CONFIG_DVB is not set | 941 | # CONFIG_DVB is not set |
942 | # CONFIG_USB_DABUSB is not set | ||
854 | 943 | ||
855 | # | 944 | # |
856 | # Graphics support | 945 | # Graphics support |
857 | # | 946 | # |
947 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
948 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
949 | CONFIG_LCD_CLASS_DEVICE=m | ||
858 | CONFIG_FB=y | 950 | CONFIG_FB=y |
951 | # CONFIG_FIRMWARE_EDID is not set | ||
952 | CONFIG_FB_DDC=y | ||
859 | CONFIG_FB_CFB_FILLRECT=y | 953 | CONFIG_FB_CFB_FILLRECT=y |
860 | CONFIG_FB_CFB_COPYAREA=y | 954 | CONFIG_FB_CFB_COPYAREA=y |
861 | CONFIG_FB_CFB_IMAGEBLIT=y | 955 | CONFIG_FB_CFB_IMAGEBLIT=y |
956 | # CONFIG_FB_SVGALIB is not set | ||
862 | # CONFIG_FB_MACMODES is not set | 957 | # CONFIG_FB_MACMODES is not set |
958 | CONFIG_FB_BACKLIGHT=y | ||
863 | CONFIG_FB_MODE_HELPERS=y | 959 | CONFIG_FB_MODE_HELPERS=y |
864 | # CONFIG_FB_TILEBLITTING is not set | 960 | # CONFIG_FB_TILEBLITTING is not set |
961 | |||
962 | # | ||
963 | # Frambuffer hardware drivers | ||
964 | # | ||
865 | # CONFIG_FB_CIRRUS is not set | 965 | # CONFIG_FB_CIRRUS is not set |
866 | # CONFIG_FB_PM2 is not set | 966 | # CONFIG_FB_PM2 is not set |
867 | # CONFIG_FB_CYBER2000 is not set | 967 | # CONFIG_FB_CYBER2000 is not set |
@@ -871,12 +971,13 @@ CONFIG_FB_MODE_HELPERS=y | |||
871 | # CONFIG_FB_NVIDIA is not set | 971 | # CONFIG_FB_NVIDIA is not set |
872 | # CONFIG_FB_RIVA is not set | 972 | # CONFIG_FB_RIVA is not set |
873 | # CONFIG_FB_MATROX is not set | 973 | # CONFIG_FB_MATROX is not set |
874 | # CONFIG_FB_RADEON_OLD is not set | ||
875 | CONFIG_FB_RADEON=y | 974 | CONFIG_FB_RADEON=y |
876 | CONFIG_FB_RADEON_I2C=y | 975 | CONFIG_FB_RADEON_I2C=y |
976 | CONFIG_FB_RADEON_BACKLIGHT=y | ||
877 | CONFIG_FB_RADEON_DEBUG=y | 977 | CONFIG_FB_RADEON_DEBUG=y |
878 | # CONFIG_FB_ATY128 is not set | 978 | # CONFIG_FB_ATY128 is not set |
879 | # CONFIG_FB_ATY is not set | 979 | # CONFIG_FB_ATY is not set |
980 | # CONFIG_FB_S3 is not set | ||
880 | # CONFIG_FB_SAVAGE is not set | 981 | # CONFIG_FB_SAVAGE is not set |
881 | # CONFIG_FB_SIS is not set | 982 | # CONFIG_FB_SIS is not set |
882 | # CONFIG_FB_NEOMAGIC is not set | 983 | # CONFIG_FB_NEOMAGIC is not set |
@@ -890,6 +991,7 @@ CONFIG_FB_RADEON_DEBUG=y | |||
890 | # Console display driver support | 991 | # Console display driver support |
891 | # | 992 | # |
892 | CONFIG_VGA_CONSOLE=y | 993 | CONFIG_VGA_CONSOLE=y |
994 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
893 | CONFIG_DUMMY_CONSOLE=y | 995 | CONFIG_DUMMY_CONSOLE=y |
894 | CONFIG_FRAMEBUFFER_CONSOLE=y | 996 | CONFIG_FRAMEBUFFER_CONSOLE=y |
895 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 997 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
@@ -904,7 +1006,6 @@ CONFIG_LOGO=y | |||
904 | # CONFIG_LOGO_LINUX_MONO is not set | 1006 | # CONFIG_LOGO_LINUX_MONO is not set |
905 | # CONFIG_LOGO_LINUX_VGA16 is not set | 1007 | # CONFIG_LOGO_LINUX_VGA16 is not set |
906 | CONFIG_LOGO_LINUX_CLUT224=y | 1008 | CONFIG_LOGO_LINUX_CLUT224=y |
907 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
908 | 1009 | ||
909 | # | 1010 | # |
910 | # Sound | 1011 | # Sound |
@@ -924,9 +1025,11 @@ CONFIG_SND_SEQUENCER=y | |||
924 | CONFIG_SND_OSSEMUL=y | 1025 | CONFIG_SND_OSSEMUL=y |
925 | CONFIG_SND_MIXER_OSS=y | 1026 | CONFIG_SND_MIXER_OSS=y |
926 | CONFIG_SND_PCM_OSS=y | 1027 | CONFIG_SND_PCM_OSS=y |
1028 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
927 | CONFIG_SND_SEQUENCER_OSS=y | 1029 | CONFIG_SND_SEQUENCER_OSS=y |
928 | # CONFIG_SND_DYNAMIC_MINORS is not set | 1030 | # CONFIG_SND_DYNAMIC_MINORS is not set |
929 | CONFIG_SND_SUPPORT_OLD_API=y | 1031 | CONFIG_SND_SUPPORT_OLD_API=y |
1032 | CONFIG_SND_VERBOSE_PROCFS=y | ||
930 | # CONFIG_SND_VERBOSE_PRINTK is not set | 1033 | # CONFIG_SND_VERBOSE_PRINTK is not set |
931 | # CONFIG_SND_DEBUG is not set | 1034 | # CONFIG_SND_DEBUG is not set |
932 | 1035 | ||
@@ -936,7 +1039,6 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
936 | CONFIG_SND_MPU401_UART=y | 1039 | CONFIG_SND_MPU401_UART=y |
937 | CONFIG_SND_OPL3_LIB=y | 1040 | CONFIG_SND_OPL3_LIB=y |
938 | CONFIG_SND_AC97_CODEC=y | 1041 | CONFIG_SND_AC97_CODEC=y |
939 | CONFIG_SND_AC97_BUS=y | ||
940 | # CONFIG_SND_DUMMY is not set | 1042 | # CONFIG_SND_DUMMY is not set |
941 | # CONFIG_SND_VIRMIDI is not set | 1043 | # CONFIG_SND_VIRMIDI is not set |
942 | # CONFIG_SND_MTPAV is not set | 1044 | # CONFIG_SND_MTPAV is not set |
@@ -947,6 +1049,7 @@ CONFIG_SND_AC97_BUS=y | |||
947 | # PCI devices | 1049 | # PCI devices |
948 | # | 1050 | # |
949 | # CONFIG_SND_AD1889 is not set | 1051 | # CONFIG_SND_AD1889 is not set |
1052 | # CONFIG_SND_ALS300 is not set | ||
950 | # CONFIG_SND_ALI5451 is not set | 1053 | # CONFIG_SND_ALI5451 is not set |
951 | # CONFIG_SND_ATIIXP is not set | 1054 | # CONFIG_SND_ATIIXP is not set |
952 | # CONFIG_SND_ATIIXP_MODEM is not set | 1055 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -959,6 +1062,18 @@ CONFIG_SND_AC97_BUS=y | |||
959 | # CONFIG_SND_CMIPCI is not set | 1062 | # CONFIG_SND_CMIPCI is not set |
960 | # CONFIG_SND_CS4281 is not set | 1063 | # CONFIG_SND_CS4281 is not set |
961 | # CONFIG_SND_CS46XX is not set | 1064 | # CONFIG_SND_CS46XX is not set |
1065 | # CONFIG_SND_DARLA20 is not set | ||
1066 | # CONFIG_SND_GINA20 is not set | ||
1067 | # CONFIG_SND_LAYLA20 is not set | ||
1068 | # CONFIG_SND_DARLA24 is not set | ||
1069 | # CONFIG_SND_GINA24 is not set | ||
1070 | # CONFIG_SND_LAYLA24 is not set | ||
1071 | # CONFIG_SND_MONA is not set | ||
1072 | # CONFIG_SND_MIA is not set | ||
1073 | # CONFIG_SND_ECHO3G is not set | ||
1074 | # CONFIG_SND_INDIGO is not set | ||
1075 | # CONFIG_SND_INDIGOIO is not set | ||
1076 | # CONFIG_SND_INDIGODJ is not set | ||
962 | # CONFIG_SND_EMU10K1 is not set | 1077 | # CONFIG_SND_EMU10K1 is not set |
963 | # CONFIG_SND_EMU10K1X is not set | 1078 | # CONFIG_SND_EMU10K1X is not set |
964 | # CONFIG_SND_ENS1370 is not set | 1079 | # CONFIG_SND_ENS1370 is not set |
@@ -966,7 +1081,7 @@ CONFIG_SND_AC97_BUS=y | |||
966 | # CONFIG_SND_ES1938 is not set | 1081 | # CONFIG_SND_ES1938 is not set |
967 | # CONFIG_SND_ES1968 is not set | 1082 | # CONFIG_SND_ES1968 is not set |
968 | CONFIG_SND_FM801=y | 1083 | CONFIG_SND_FM801=y |
969 | CONFIG_SND_FM801_TEA575X=y | 1084 | # CONFIG_SND_FM801_TEA575X_BOOL is not set |
970 | # CONFIG_SND_HDA_INTEL is not set | 1085 | # CONFIG_SND_HDA_INTEL is not set |
971 | # CONFIG_SND_HDSP is not set | 1086 | # CONFIG_SND_HDSP is not set |
972 | # CONFIG_SND_HDSPM is not set | 1087 | # CONFIG_SND_HDSPM is not set |
@@ -979,6 +1094,7 @@ CONFIG_SND_FM801_TEA575X=y | |||
979 | # CONFIG_SND_MIXART is not set | 1094 | # CONFIG_SND_MIXART is not set |
980 | # CONFIG_SND_NM256 is not set | 1095 | # CONFIG_SND_NM256 is not set |
981 | # CONFIG_SND_PCXHR is not set | 1096 | # CONFIG_SND_PCXHR is not set |
1097 | # CONFIG_SND_RIPTIDE is not set | ||
982 | # CONFIG_SND_RME32 is not set | 1098 | # CONFIG_SND_RME32 is not set |
983 | # CONFIG_SND_RME96 is not set | 1099 | # CONFIG_SND_RME96 is not set |
984 | # CONFIG_SND_RME9652 is not set | 1100 | # CONFIG_SND_RME9652 is not set |
@@ -988,6 +1104,7 @@ CONFIG_SND_FM801_TEA575X=y | |||
988 | # CONFIG_SND_VIA82XX_MODEM is not set | 1104 | # CONFIG_SND_VIA82XX_MODEM is not set |
989 | # CONFIG_SND_VX222 is not set | 1105 | # CONFIG_SND_VX222 is not set |
990 | # CONFIG_SND_YMFPCI is not set | 1106 | # CONFIG_SND_YMFPCI is not set |
1107 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
991 | 1108 | ||
992 | # | 1109 | # |
993 | # USB devices | 1110 | # USB devices |
@@ -995,15 +1112,28 @@ CONFIG_SND_FM801_TEA575X=y | |||
995 | # CONFIG_SND_USB_AUDIO is not set | 1112 | # CONFIG_SND_USB_AUDIO is not set |
996 | 1113 | ||
997 | # | 1114 | # |
1115 | # SoC audio support | ||
1116 | # | ||
1117 | # CONFIG_SND_SOC is not set | ||
1118 | |||
1119 | # | ||
998 | # Open Sound System | 1120 | # Open Sound System |
999 | # | 1121 | # |
1000 | # CONFIG_SOUND_PRIME is not set | 1122 | # CONFIG_SOUND_PRIME is not set |
1123 | CONFIG_AC97_BUS=y | ||
1124 | |||
1125 | # | ||
1126 | # HID Devices | ||
1127 | # | ||
1128 | CONFIG_HID=y | ||
1129 | # CONFIG_HID_DEBUG is not set | ||
1001 | 1130 | ||
1002 | # | 1131 | # |
1003 | # USB support | 1132 | # USB support |
1004 | # | 1133 | # |
1005 | CONFIG_USB_ARCH_HAS_HCD=y | 1134 | CONFIG_USB_ARCH_HAS_HCD=y |
1006 | CONFIG_USB_ARCH_HAS_OHCI=y | 1135 | CONFIG_USB_ARCH_HAS_OHCI=y |
1136 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
1007 | CONFIG_USB=y | 1137 | CONFIG_USB=y |
1008 | # CONFIG_USB_DEBUG is not set | 1138 | # CONFIG_USB_DEBUG is not set |
1009 | 1139 | ||
@@ -1011,7 +1141,6 @@ CONFIG_USB=y | |||
1011 | # Miscellaneous USB options | 1141 | # Miscellaneous USB options |
1012 | # | 1142 | # |
1013 | # CONFIG_USB_DEVICEFS is not set | 1143 | # CONFIG_USB_DEVICEFS is not set |
1014 | CONFIG_USB_BANDWIDTH=y | ||
1015 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1144 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1016 | # CONFIG_USB_SUSPEND is not set | 1145 | # CONFIG_USB_SUSPEND is not set |
1017 | # CONFIG_USB_OTG is not set | 1146 | # CONFIG_USB_OTG is not set |
@@ -1022,9 +1151,12 @@ CONFIG_USB_BANDWIDTH=y | |||
1022 | CONFIG_USB_EHCI_HCD=y | 1151 | CONFIG_USB_EHCI_HCD=y |
1023 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 1152 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
1024 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1153 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1154 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
1155 | # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set | ||
1025 | # CONFIG_USB_ISP116X_HCD is not set | 1156 | # CONFIG_USB_ISP116X_HCD is not set |
1026 | CONFIG_USB_OHCI_HCD=y | 1157 | CONFIG_USB_OHCI_HCD=y |
1027 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1158 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1159 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1028 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1160 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1029 | CONFIG_USB_UHCI_HCD=y | 1161 | CONFIG_USB_UHCI_HCD=y |
1030 | # CONFIG_USB_SL811_HCD is not set | 1162 | # CONFIG_USB_SL811_HCD is not set |
@@ -1032,7 +1164,6 @@ CONFIG_USB_UHCI_HCD=y | |||
1032 | # | 1164 | # |
1033 | # USB Device Class drivers | 1165 | # USB Device Class drivers |
1034 | # | 1166 | # |
1035 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
1036 | # CONFIG_USB_ACM is not set | 1167 | # CONFIG_USB_ACM is not set |
1037 | # CONFIG_USB_PRINTER is not set | 1168 | # CONFIG_USB_PRINTER is not set |
1038 | 1169 | ||
@@ -1054,13 +1185,13 @@ CONFIG_USB_STORAGE=y | |||
1054 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1185 | # CONFIG_USB_STORAGE_SDDR55 is not set |
1055 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1186 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1056 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1187 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1188 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1057 | # CONFIG_USB_LIBUSUAL is not set | 1189 | # CONFIG_USB_LIBUSUAL is not set |
1058 | 1190 | ||
1059 | # | 1191 | # |
1060 | # USB Input Devices | 1192 | # USB Input Devices |
1061 | # | 1193 | # |
1062 | CONFIG_USB_HID=y | 1194 | CONFIG_USB_HID=y |
1063 | CONFIG_USB_HIDINPUT=y | ||
1064 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | 1195 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set |
1065 | # CONFIG_HID_FF is not set | 1196 | # CONFIG_HID_FF is not set |
1066 | CONFIG_USB_HIDDEV=y | 1197 | CONFIG_USB_HIDDEV=y |
@@ -1069,15 +1200,14 @@ CONFIG_USB_HIDDEV=y | |||
1069 | # CONFIG_USB_ACECAD is not set | 1200 | # CONFIG_USB_ACECAD is not set |
1070 | # CONFIG_USB_KBTAB is not set | 1201 | # CONFIG_USB_KBTAB is not set |
1071 | # CONFIG_USB_POWERMATE is not set | 1202 | # CONFIG_USB_POWERMATE is not set |
1072 | # CONFIG_USB_MTOUCH is not set | 1203 | # CONFIG_USB_TOUCHSCREEN is not set |
1073 | # CONFIG_USB_ITMTOUCH is not set | ||
1074 | # CONFIG_USB_EGALAX is not set | ||
1075 | # CONFIG_USB_YEALINK is not set | 1204 | # CONFIG_USB_YEALINK is not set |
1076 | # CONFIG_USB_XPAD is not set | 1205 | # CONFIG_USB_XPAD is not set |
1077 | # CONFIG_USB_ATI_REMOTE is not set | 1206 | # CONFIG_USB_ATI_REMOTE is not set |
1078 | # CONFIG_USB_ATI_REMOTE2 is not set | 1207 | # CONFIG_USB_ATI_REMOTE2 is not set |
1079 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1208 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1080 | # CONFIG_USB_APPLETOUCH is not set | 1209 | # CONFIG_USB_APPLETOUCH is not set |
1210 | # CONFIG_USB_GTCO is not set | ||
1081 | 1211 | ||
1082 | # | 1212 | # |
1083 | # USB Imaging devices | 1213 | # USB Imaging devices |
@@ -1086,27 +1216,13 @@ CONFIG_USB_HIDDEV=y | |||
1086 | # CONFIG_USB_MICROTEK is not set | 1216 | # CONFIG_USB_MICROTEK is not set |
1087 | 1217 | ||
1088 | # | 1218 | # |
1089 | # USB Multimedia devices | ||
1090 | # | ||
1091 | # CONFIG_USB_DABUSB is not set | ||
1092 | # CONFIG_USB_VICAM is not set | ||
1093 | # CONFIG_USB_DSBR is not set | ||
1094 | # CONFIG_USB_ET61X251 is not set | ||
1095 | # CONFIG_USB_IBMCAM is not set | ||
1096 | # CONFIG_USB_KONICAWC is not set | ||
1097 | # CONFIG_USB_OV511 is not set | ||
1098 | # CONFIG_USB_SE401 is not set | ||
1099 | # CONFIG_USB_SN9C102 is not set | ||
1100 | # CONFIG_USB_STV680 is not set | ||
1101 | # CONFIG_USB_PWC is not set | ||
1102 | |||
1103 | # | ||
1104 | # USB Network Adapters | 1219 | # USB Network Adapters |
1105 | # | 1220 | # |
1106 | # CONFIG_USB_CATC is not set | 1221 | # CONFIG_USB_CATC is not set |
1107 | # CONFIG_USB_KAWETH is not set | 1222 | # CONFIG_USB_KAWETH is not set |
1108 | # CONFIG_USB_PEGASUS is not set | 1223 | # CONFIG_USB_PEGASUS is not set |
1109 | # CONFIG_USB_RTL8150 is not set | 1224 | # CONFIG_USB_RTL8150 is not set |
1225 | # CONFIG_USB_USBNET_MII is not set | ||
1110 | # CONFIG_USB_USBNET is not set | 1226 | # CONFIG_USB_USBNET is not set |
1111 | CONFIG_USB_MON=y | 1227 | CONFIG_USB_MON=y |
1112 | 1228 | ||
@@ -1124,17 +1240,23 @@ CONFIG_USB_MON=y | |||
1124 | # | 1240 | # |
1125 | # CONFIG_USB_EMI62 is not set | 1241 | # CONFIG_USB_EMI62 is not set |
1126 | # CONFIG_USB_EMI26 is not set | 1242 | # CONFIG_USB_EMI26 is not set |
1243 | # CONFIG_USB_ADUTUX is not set | ||
1127 | # CONFIG_USB_AUERSWALD is not set | 1244 | # CONFIG_USB_AUERSWALD is not set |
1128 | # CONFIG_USB_RIO500 is not set | 1245 | # CONFIG_USB_RIO500 is not set |
1129 | # CONFIG_USB_LEGOTOWER is not set | 1246 | # CONFIG_USB_LEGOTOWER is not set |
1130 | # CONFIG_USB_LCD is not set | 1247 | # CONFIG_USB_LCD is not set |
1248 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1131 | # CONFIG_USB_LED is not set | 1249 | # CONFIG_USB_LED is not set |
1250 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1132 | # CONFIG_USB_CYTHERM is not set | 1251 | # CONFIG_USB_CYTHERM is not set |
1133 | # CONFIG_USB_PHIDGETKIT is not set | 1252 | # CONFIG_USB_PHIDGET is not set |
1134 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1135 | # CONFIG_USB_IDMOUSE is not set | 1253 | # CONFIG_USB_IDMOUSE is not set |
1254 | # CONFIG_USB_FTDI_ELAN is not set | ||
1255 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1136 | # CONFIG_USB_SISUSBVGA is not set | 1256 | # CONFIG_USB_SISUSBVGA is not set |
1137 | # CONFIG_USB_LD is not set | 1257 | # CONFIG_USB_LD is not set |
1258 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1259 | # CONFIG_USB_IOWARRIOR is not set | ||
1138 | 1260 | ||
1139 | # | 1261 | # |
1140 | # USB DSL modem support | 1262 | # USB DSL modem support |
@@ -1151,13 +1273,53 @@ CONFIG_USB_MON=y | |||
1151 | # CONFIG_MMC is not set | 1273 | # CONFIG_MMC is not set |
1152 | 1274 | ||
1153 | # | 1275 | # |
1276 | # LED devices | ||
1277 | # | ||
1278 | # CONFIG_NEW_LEDS is not set | ||
1279 | |||
1280 | # | ||
1281 | # LED drivers | ||
1282 | # | ||
1283 | |||
1284 | # | ||
1285 | # LED Triggers | ||
1286 | # | ||
1287 | |||
1288 | # | ||
1154 | # InfiniBand support | 1289 | # InfiniBand support |
1155 | # | 1290 | # |
1156 | # CONFIG_INFINIBAND is not set | 1291 | # CONFIG_INFINIBAND is not set |
1157 | 1292 | ||
1158 | # | 1293 | # |
1159 | # EDAC - error detection and reporting (RAS) | 1294 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
1295 | # | ||
1296 | |||
1297 | # | ||
1298 | # Real Time Clock | ||
1160 | # | 1299 | # |
1300 | # CONFIG_RTC_CLASS is not set | ||
1301 | |||
1302 | # | ||
1303 | # DMA Engine support | ||
1304 | # | ||
1305 | # CONFIG_DMA_ENGINE is not set | ||
1306 | |||
1307 | # | ||
1308 | # DMA Clients | ||
1309 | # | ||
1310 | |||
1311 | # | ||
1312 | # DMA Devices | ||
1313 | # | ||
1314 | |||
1315 | # | ||
1316 | # Auxiliary Display support | ||
1317 | # | ||
1318 | |||
1319 | # | ||
1320 | # Virtualization | ||
1321 | # | ||
1322 | # CONFIG_MSPEC is not set | ||
1161 | 1323 | ||
1162 | # | 1324 | # |
1163 | # File systems | 1325 | # File systems |
@@ -1171,6 +1333,7 @@ CONFIG_EXT3_FS=y | |||
1171 | CONFIG_EXT3_FS_XATTR=y | 1333 | CONFIG_EXT3_FS_XATTR=y |
1172 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1334 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
1173 | # CONFIG_EXT3_FS_SECURITY is not set | 1335 | # CONFIG_EXT3_FS_SECURITY is not set |
1336 | # CONFIG_EXT4DEV_FS is not set | ||
1174 | CONFIG_JBD=y | 1337 | CONFIG_JBD=y |
1175 | # CONFIG_JBD_DEBUG is not set | 1338 | # CONFIG_JBD_DEBUG is not set |
1176 | CONFIG_FS_MBCACHE=y | 1339 | CONFIG_FS_MBCACHE=y |
@@ -1178,6 +1341,7 @@ CONFIG_FS_MBCACHE=y | |||
1178 | # CONFIG_JFS_FS is not set | 1341 | # CONFIG_JFS_FS is not set |
1179 | # CONFIG_FS_POSIX_ACL is not set | 1342 | # CONFIG_FS_POSIX_ACL is not set |
1180 | # CONFIG_XFS_FS is not set | 1343 | # CONFIG_XFS_FS is not set |
1344 | # CONFIG_GFS2_FS is not set | ||
1181 | # CONFIG_OCFS2_FS is not set | 1345 | # CONFIG_OCFS2_FS is not set |
1182 | # CONFIG_MINIX_FS is not set | 1346 | # CONFIG_MINIX_FS is not set |
1183 | # CONFIG_ROMFS_FS is not set | 1347 | # CONFIG_ROMFS_FS is not set |
@@ -1212,12 +1376,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1212 | # | 1376 | # |
1213 | CONFIG_PROC_FS=y | 1377 | CONFIG_PROC_FS=y |
1214 | CONFIG_PROC_KCORE=y | 1378 | CONFIG_PROC_KCORE=y |
1379 | CONFIG_PROC_VMCORE=y | ||
1380 | CONFIG_PROC_SYSCTL=y | ||
1215 | CONFIG_SYSFS=y | 1381 | CONFIG_SYSFS=y |
1216 | CONFIG_TMPFS=y | 1382 | CONFIG_TMPFS=y |
1383 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1217 | CONFIG_HUGETLBFS=y | 1384 | CONFIG_HUGETLBFS=y |
1218 | CONFIG_HUGETLB_PAGE=y | 1385 | CONFIG_HUGETLB_PAGE=y |
1219 | CONFIG_RAMFS=y | 1386 | CONFIG_RAMFS=y |
1220 | # CONFIG_RELAYFS_FS is not set | ||
1221 | # CONFIG_CONFIGFS_FS is not set | 1387 | # CONFIG_CONFIGFS_FS is not set |
1222 | 1388 | ||
1223 | # | 1389 | # |
@@ -1331,15 +1497,25 @@ CONFIG_NLS_KOI8_U=y | |||
1331 | CONFIG_NLS_UTF8=y | 1497 | CONFIG_NLS_UTF8=y |
1332 | 1498 | ||
1333 | # | 1499 | # |
1500 | # Distributed Lock Manager | ||
1501 | # | ||
1502 | # CONFIG_DLM is not set | ||
1503 | |||
1504 | # | ||
1334 | # Library routines | 1505 | # Library routines |
1335 | # | 1506 | # |
1507 | CONFIG_BITREVERSE=y | ||
1336 | # CONFIG_CRC_CCITT is not set | 1508 | # CONFIG_CRC_CCITT is not set |
1337 | # CONFIG_CRC16 is not set | 1509 | # CONFIG_CRC16 is not set |
1338 | CONFIG_CRC32=y | 1510 | CONFIG_CRC32=y |
1339 | # CONFIG_LIBCRC32C is not set | 1511 | # CONFIG_LIBCRC32C is not set |
1512 | CONFIG_PLIST=y | ||
1513 | CONFIG_HAS_IOMEM=y | ||
1514 | CONFIG_HAS_IOPORT=y | ||
1340 | CONFIG_GENERIC_HARDIRQS=y | 1515 | CONFIG_GENERIC_HARDIRQS=y |
1341 | CONFIG_GENERIC_IRQ_PROBE=y | 1516 | CONFIG_GENERIC_IRQ_PROBE=y |
1342 | CONFIG_GENERIC_PENDING_IRQ=y | 1517 | CONFIG_GENERIC_PENDING_IRQ=y |
1518 | CONFIG_IRQ_PER_CPU=y | ||
1343 | 1519 | ||
1344 | # | 1520 | # |
1345 | # Instrumentation Support | 1521 | # Instrumentation Support |
@@ -1351,21 +1527,32 @@ CONFIG_KPROBES=y | |||
1351 | # Kernel hacking | 1527 | # Kernel hacking |
1352 | # | 1528 | # |
1353 | # CONFIG_PRINTK_TIME is not set | 1529 | # CONFIG_PRINTK_TIME is not set |
1530 | CONFIG_ENABLE_MUST_CHECK=y | ||
1354 | CONFIG_MAGIC_SYSRQ=y | 1531 | CONFIG_MAGIC_SYSRQ=y |
1532 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1533 | # CONFIG_DEBUG_FS is not set | ||
1534 | # CONFIG_HEADERS_CHECK is not set | ||
1355 | CONFIG_DEBUG_KERNEL=y | 1535 | CONFIG_DEBUG_KERNEL=y |
1536 | # CONFIG_DEBUG_SHIRQ is not set | ||
1356 | CONFIG_LOG_BUF_SHIFT=17 | 1537 | CONFIG_LOG_BUF_SHIFT=17 |
1357 | CONFIG_DETECT_SOFTLOCKUP=y | 1538 | CONFIG_DETECT_SOFTLOCKUP=y |
1358 | # CONFIG_SCHEDSTATS is not set | 1539 | # CONFIG_SCHEDSTATS is not set |
1540 | # CONFIG_TIMER_STATS is not set | ||
1359 | # CONFIG_DEBUG_SLAB is not set | 1541 | # CONFIG_DEBUG_SLAB is not set |
1360 | CONFIG_DEBUG_MUTEXES=y | 1542 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1543 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1361 | # CONFIG_DEBUG_SPINLOCK is not set | 1544 | # CONFIG_DEBUG_SPINLOCK is not set |
1545 | CONFIG_DEBUG_MUTEXES=y | ||
1362 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1546 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1547 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1363 | # CONFIG_DEBUG_KOBJECT is not set | 1548 | # CONFIG_DEBUG_KOBJECT is not set |
1364 | # CONFIG_DEBUG_INFO is not set | 1549 | # CONFIG_DEBUG_INFO is not set |
1365 | # CONFIG_DEBUG_FS is not set | ||
1366 | # CONFIG_DEBUG_VM is not set | 1550 | # CONFIG_DEBUG_VM is not set |
1551 | # CONFIG_DEBUG_LIST is not set | ||
1367 | CONFIG_FORCED_INLINING=y | 1552 | CONFIG_FORCED_INLINING=y |
1368 | # CONFIG_RCU_TORTURE_TEST is not set | 1553 | # CONFIG_RCU_TORTURE_TEST is not set |
1554 | # CONFIG_LKDTM is not set | ||
1555 | # CONFIG_FAULT_INJECTION is not set | ||
1369 | CONFIG_IA64_GRANULE_16MB=y | 1556 | CONFIG_IA64_GRANULE_16MB=y |
1370 | # CONFIG_IA64_GRANULE_64MB is not set | 1557 | # CONFIG_IA64_GRANULE_64MB is not set |
1371 | CONFIG_IA64_PRINT_HAZARDS=y | 1558 | CONFIG_IA64_PRINT_HAZARDS=y |
@@ -1384,7 +1571,11 @@ CONFIG_SYSVIPC_COMPAT=y | |||
1384 | # Cryptographic options | 1571 | # Cryptographic options |
1385 | # | 1572 | # |
1386 | CONFIG_CRYPTO=y | 1573 | CONFIG_CRYPTO=y |
1574 | CONFIG_CRYPTO_ALGAPI=y | ||
1575 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1576 | CONFIG_CRYPTO_MANAGER=y | ||
1387 | # CONFIG_CRYPTO_HMAC is not set | 1577 | # CONFIG_CRYPTO_HMAC is not set |
1578 | # CONFIG_CRYPTO_XCBC is not set | ||
1388 | # CONFIG_CRYPTO_NULL is not set | 1579 | # CONFIG_CRYPTO_NULL is not set |
1389 | # CONFIG_CRYPTO_MD4 is not set | 1580 | # CONFIG_CRYPTO_MD4 is not set |
1390 | CONFIG_CRYPTO_MD5=y | 1581 | CONFIG_CRYPTO_MD5=y |
@@ -1393,7 +1584,13 @@ CONFIG_CRYPTO_MD5=y | |||
1393 | # CONFIG_CRYPTO_SHA512 is not set | 1584 | # CONFIG_CRYPTO_SHA512 is not set |
1394 | # CONFIG_CRYPTO_WP512 is not set | 1585 | # CONFIG_CRYPTO_WP512 is not set |
1395 | # CONFIG_CRYPTO_TGR192 is not set | 1586 | # CONFIG_CRYPTO_TGR192 is not set |
1587 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1588 | CONFIG_CRYPTO_ECB=m | ||
1589 | CONFIG_CRYPTO_CBC=y | ||
1590 | CONFIG_CRYPTO_PCBC=m | ||
1591 | # CONFIG_CRYPTO_LRW is not set | ||
1396 | CONFIG_CRYPTO_DES=y | 1592 | CONFIG_CRYPTO_DES=y |
1593 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1397 | # CONFIG_CRYPTO_BLOWFISH is not set | 1594 | # CONFIG_CRYPTO_BLOWFISH is not set |
1398 | # CONFIG_CRYPTO_TWOFISH is not set | 1595 | # CONFIG_CRYPTO_TWOFISH is not set |
1399 | # CONFIG_CRYPTO_SERPENT is not set | 1596 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1407,6 +1604,7 @@ CONFIG_CRYPTO_DES=y | |||
1407 | # CONFIG_CRYPTO_DEFLATE is not set | 1604 | # CONFIG_CRYPTO_DEFLATE is not set |
1408 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1605 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1409 | # CONFIG_CRYPTO_CRC32C is not set | 1606 | # CONFIG_CRYPTO_CRC32C is not set |
1607 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1410 | # CONFIG_CRYPTO_TEST is not set | 1608 | # CONFIG_CRYPTO_TEST is not set |
1411 | 1609 | ||
1412 | # | 1610 | # |
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig index 9001b3fbaa32..153bfdc0182d 100644 --- a/arch/ia64/defconfig +++ b/arch/ia64/defconfig | |||
@@ -1,8 +1,9 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-rc5 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Mon Feb 27 16:02:28 2006 | 4 | # Thu Mar 8 11:01:03 2007 |
5 | # | 5 | # |
6 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
6 | 7 | ||
7 | # | 8 | # |
8 | # Code maturity level options | 9 | # Code maturity level options |
@@ -18,16 +19,24 @@ CONFIG_LOCALVERSION="" | |||
18 | CONFIG_LOCALVERSION_AUTO=y | 19 | CONFIG_LOCALVERSION_AUTO=y |
19 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
20 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
22 | # CONFIG_IPC_NS is not set | ||
23 | CONFIG_SYSVIPC_SYSCTL=y | ||
21 | CONFIG_POSIX_MQUEUE=y | 24 | CONFIG_POSIX_MQUEUE=y |
22 | # CONFIG_BSD_PROCESS_ACCT is not set | 25 | # CONFIG_BSD_PROCESS_ACCT is not set |
23 | CONFIG_SYSCTL=y | 26 | # CONFIG_TASKSTATS is not set |
27 | # CONFIG_UTS_NS is not set | ||
24 | # CONFIG_AUDIT is not set | 28 | # CONFIG_AUDIT is not set |
25 | CONFIG_IKCONFIG=y | 29 | CONFIG_IKCONFIG=y |
26 | CONFIG_IKCONFIG_PROC=y | 30 | CONFIG_IKCONFIG_PROC=y |
27 | # CONFIG_CPUSETS is not set | 31 | # CONFIG_CPUSETS is not set |
32 | CONFIG_SYSFS_DEPRECATED=y | ||
33 | # CONFIG_RELAY is not set | ||
34 | CONFIG_BLK_DEV_INITRD=y | ||
28 | CONFIG_INITRAMFS_SOURCE="" | 35 | CONFIG_INITRAMFS_SOURCE="" |
29 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 36 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
37 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_EMBEDDED is not set | 38 | # CONFIG_EMBEDDED is not set |
39 | CONFIG_SYSCTL_SYSCALL=y | ||
31 | CONFIG_KALLSYMS=y | 40 | CONFIG_KALLSYMS=y |
32 | CONFIG_KALLSYMS_ALL=y | 41 | CONFIG_KALLSYMS_ALL=y |
33 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 42 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -39,11 +48,9 @@ CONFIG_BASE_FULL=y | |||
39 | CONFIG_FUTEX=y | 48 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 49 | CONFIG_EPOLL=y |
41 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
43 | CONFIG_CC_ALIGN_LABELS=0 | ||
44 | CONFIG_CC_ALIGN_LOOPS=0 | ||
45 | CONFIG_CC_ALIGN_JUMPS=0 | ||
46 | CONFIG_SLAB=y | 51 | CONFIG_SLAB=y |
52 | CONFIG_VM_EVENT_COUNTERS=y | ||
53 | CONFIG_RT_MUTEXES=y | ||
47 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
48 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
49 | # CONFIG_SLOB is not set | 56 | # CONFIG_SLOB is not set |
@@ -54,7 +61,6 @@ CONFIG_BASE_SMALL=0 | |||
54 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | CONFIG_MODVERSIONS=y | 64 | CONFIG_MODVERSIONS=y |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
@@ -63,6 +69,8 @@ CONFIG_STOP_MACHINE=y | |||
63 | # | 69 | # |
64 | # Block layer | 70 | # Block layer |
65 | # | 71 | # |
72 | CONFIG_BLOCK=y | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
66 | 74 | ||
67 | # | 75 | # |
68 | # IO Schedulers | 76 | # IO Schedulers |
@@ -82,15 +90,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
82 | # | 90 | # |
83 | CONFIG_IA64=y | 91 | CONFIG_IA64=y |
84 | CONFIG_64BIT=y | 92 | CONFIG_64BIT=y |
93 | CONFIG_ZONE_DMA=y | ||
85 | CONFIG_MMU=y | 94 | CONFIG_MMU=y |
86 | CONFIG_SWIOTLB=y | 95 | CONFIG_SWIOTLB=y |
87 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 96 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
97 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
98 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
99 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
88 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 100 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
89 | CONFIG_TIME_INTERPOLATION=y | 101 | CONFIG_TIME_INTERPOLATION=y |
102 | CONFIG_DMI=y | ||
90 | CONFIG_EFI=y | 103 | CONFIG_EFI=y |
91 | CONFIG_GENERIC_IOMAP=y | 104 | CONFIG_GENERIC_IOMAP=y |
92 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 105 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
93 | CONFIG_DMA_IS_DMA32=y | 106 | CONFIG_AUDIT_ARCH=y |
94 | CONFIG_IA64_GENERIC=y | 107 | CONFIG_IA64_GENERIC=y |
95 | # CONFIG_IA64_DIG is not set | 108 | # CONFIG_IA64_DIG is not set |
96 | # CONFIG_IA64_HP_ZX1 is not set | 109 | # CONFIG_IA64_HP_ZX1 is not set |
@@ -107,6 +120,7 @@ CONFIG_PGTABLE_3=y | |||
107 | # CONFIG_PGTABLE_4 is not set | 120 | # CONFIG_PGTABLE_4 is not set |
108 | # CONFIG_HZ_100 is not set | 121 | # CONFIG_HZ_100 is not set |
109 | CONFIG_HZ_250=y | 122 | CONFIG_HZ_250=y |
123 | # CONFIG_HZ_300 is not set | ||
110 | # CONFIG_HZ_1000 is not set | 124 | # CONFIG_HZ_1000 is not set |
111 | CONFIG_HZ=250 | 125 | CONFIG_HZ=250 |
112 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 126 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
@@ -116,9 +130,10 @@ CONFIG_IOSAPIC=y | |||
116 | CONFIG_FORCE_MAX_ZONEORDER=17 | 130 | CONFIG_FORCE_MAX_ZONEORDER=17 |
117 | CONFIG_SMP=y | 131 | CONFIG_SMP=y |
118 | CONFIG_NR_CPUS=512 | 132 | CONFIG_NR_CPUS=512 |
119 | CONFIG_IA64_NR_NODES=256 | ||
120 | CONFIG_HOTPLUG_CPU=y | 133 | CONFIG_HOTPLUG_CPU=y |
134 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
121 | # CONFIG_SCHED_SMT is not set | 135 | # CONFIG_SCHED_SMT is not set |
136 | # CONFIG_PERMIT_BSP_REMOVE is not set | ||
122 | # CONFIG_PREEMPT is not set | 137 | # CONFIG_PREEMPT is not set |
123 | CONFIG_SELECT_MEMORY_MODEL=y | 138 | CONFIG_SELECT_MEMORY_MODEL=y |
124 | # CONFIG_FLATMEM_MANUAL is not set | 139 | # CONFIG_FLATMEM_MANUAL is not set |
@@ -130,21 +145,34 @@ CONFIG_NEED_MULTIPLE_NODES=y | |||
130 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
131 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 146 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
132 | CONFIG_MIGRATION=y | 147 | CONFIG_MIGRATION=y |
148 | CONFIG_RESOURCES_64BIT=y | ||
149 | CONFIG_ZONE_DMA_FLAG=1 | ||
133 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 150 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
134 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 151 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
135 | CONFIG_ARCH_FLATMEM_ENABLE=y | 152 | CONFIG_ARCH_FLATMEM_ENABLE=y |
136 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 153 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
137 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | 154 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y |
138 | CONFIG_NUMA=y | 155 | CONFIG_NUMA=y |
156 | CONFIG_NODES_SHIFT=10 | ||
157 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
139 | CONFIG_VIRTUAL_MEM_MAP=y | 158 | CONFIG_VIRTUAL_MEM_MAP=y |
140 | CONFIG_HOLES_IN_ZONE=y | 159 | CONFIG_HOLES_IN_ZONE=y |
141 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | 160 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y |
161 | CONFIG_HAVE_ARCH_NODEDATA_EXTENSION=y | ||
142 | CONFIG_IA32_SUPPORT=y | 162 | CONFIG_IA32_SUPPORT=y |
143 | CONFIG_COMPAT=y | 163 | CONFIG_COMPAT=y |
144 | CONFIG_IA64_MCA_RECOVERY=y | 164 | CONFIG_IA64_MCA_RECOVERY=y |
145 | CONFIG_PERFMON=y | 165 | CONFIG_PERFMON=y |
146 | CONFIG_IA64_PALINFO=y | 166 | CONFIG_IA64_PALINFO=y |
147 | CONFIG_SGI_SN=y | 167 | CONFIG_SGI_SN=y |
168 | # CONFIG_IA64_ESI is not set | ||
169 | |||
170 | # | ||
171 | # SN Devices | ||
172 | # | ||
173 | CONFIG_SGI_IOC3=m | ||
174 | CONFIG_KEXEC=y | ||
175 | CONFIG_CRASH_DUMP=y | ||
148 | 176 | ||
149 | # | 177 | # |
150 | # Firmware Drivers | 178 | # Firmware Drivers |
@@ -160,13 +188,16 @@ CONFIG_BINFMT_MISC=m | |||
160 | CONFIG_PM=y | 188 | CONFIG_PM=y |
161 | CONFIG_PM_LEGACY=y | 189 | CONFIG_PM_LEGACY=y |
162 | # CONFIG_PM_DEBUG is not set | 190 | # CONFIG_PM_DEBUG is not set |
191 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
163 | 192 | ||
164 | # | 193 | # |
165 | # ACPI (Advanced Configuration and Power Interface) Support | 194 | # ACPI (Advanced Configuration and Power Interface) Support |
166 | # | 195 | # |
167 | CONFIG_ACPI=y | 196 | CONFIG_ACPI=y |
197 | CONFIG_ACPI_PROCFS=y | ||
168 | CONFIG_ACPI_BUTTON=m | 198 | CONFIG_ACPI_BUTTON=m |
169 | CONFIG_ACPI_FAN=m | 199 | CONFIG_ACPI_FAN=m |
200 | # CONFIG_ACPI_DOCK is not set | ||
170 | CONFIG_ACPI_PROCESSOR=m | 201 | CONFIG_ACPI_PROCESSOR=m |
171 | CONFIG_ACPI_HOTPLUG_CPU=y | 202 | CONFIG_ACPI_HOTPLUG_CPU=y |
172 | CONFIG_ACPI_THERMAL=m | 203 | CONFIG_ACPI_THERMAL=m |
@@ -188,8 +219,8 @@ CONFIG_ACPI_CONTAINER=m | |||
188 | # | 219 | # |
189 | CONFIG_PCI=y | 220 | CONFIG_PCI=y |
190 | CONFIG_PCI_DOMAINS=y | 221 | CONFIG_PCI_DOMAINS=y |
222 | # CONFIG_PCIEPORTBUS is not set | ||
191 | # CONFIG_PCI_MSI is not set | 223 | # CONFIG_PCI_MSI is not set |
192 | CONFIG_PCI_LEGACY_PROC=y | ||
193 | # CONFIG_PCI_DEBUG is not set | 224 | # CONFIG_PCI_DEBUG is not set |
194 | 225 | ||
195 | # | 226 | # |
@@ -220,6 +251,10 @@ CONFIG_NET=y | |||
220 | CONFIG_PACKET=y | 251 | CONFIG_PACKET=y |
221 | # CONFIG_PACKET_MMAP is not set | 252 | # CONFIG_PACKET_MMAP is not set |
222 | CONFIG_UNIX=y | 253 | CONFIG_UNIX=y |
254 | CONFIG_XFRM=y | ||
255 | # CONFIG_XFRM_USER is not set | ||
256 | # CONFIG_XFRM_SUB_POLICY is not set | ||
257 | # CONFIG_XFRM_MIGRATE is not set | ||
223 | # CONFIG_NET_KEY is not set | 258 | # CONFIG_NET_KEY is not set |
224 | CONFIG_INET=y | 259 | CONFIG_INET=y |
225 | CONFIG_IP_MULTICAST=y | 260 | CONFIG_IP_MULTICAST=y |
@@ -234,12 +269,21 @@ CONFIG_SYN_COOKIES=y | |||
234 | # CONFIG_INET_AH is not set | 269 | # CONFIG_INET_AH is not set |
235 | # CONFIG_INET_ESP is not set | 270 | # CONFIG_INET_ESP is not set |
236 | # CONFIG_INET_IPCOMP is not set | 271 | # CONFIG_INET_IPCOMP is not set |
272 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
237 | # CONFIG_INET_TUNNEL is not set | 273 | # CONFIG_INET_TUNNEL is not set |
274 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
275 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
276 | CONFIG_INET_XFRM_MODE_BEET=y | ||
238 | CONFIG_INET_DIAG=y | 277 | CONFIG_INET_DIAG=y |
239 | CONFIG_INET_TCP_DIAG=y | 278 | CONFIG_INET_TCP_DIAG=y |
240 | # CONFIG_TCP_CONG_ADVANCED is not set | 279 | # CONFIG_TCP_CONG_ADVANCED is not set |
241 | CONFIG_TCP_CONG_BIC=y | 280 | CONFIG_TCP_CONG_CUBIC=y |
281 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
282 | # CONFIG_TCP_MD5SIG is not set | ||
242 | # CONFIG_IPV6 is not set | 283 | # CONFIG_IPV6 is not set |
284 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
285 | # CONFIG_INET6_TUNNEL is not set | ||
286 | # CONFIG_NETWORK_SECMARK is not set | ||
243 | # CONFIG_NETFILTER is not set | 287 | # CONFIG_NETFILTER is not set |
244 | 288 | ||
245 | # | 289 | # |
@@ -265,7 +309,6 @@ CONFIG_TCP_CONG_BIC=y | |||
265 | # CONFIG_ATALK is not set | 309 | # CONFIG_ATALK is not set |
266 | # CONFIG_X25 is not set | 310 | # CONFIG_X25 is not set |
267 | # CONFIG_LAPB is not set | 311 | # CONFIG_LAPB is not set |
268 | # CONFIG_NET_DIVERT is not set | ||
269 | # CONFIG_ECONET is not set | 312 | # CONFIG_ECONET is not set |
270 | # CONFIG_WAN_ROUTER is not set | 313 | # CONFIG_WAN_ROUTER is not set |
271 | 314 | ||
@@ -294,6 +337,8 @@ CONFIG_STANDALONE=y | |||
294 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 337 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
295 | CONFIG_FW_LOADER=m | 338 | CONFIG_FW_LOADER=m |
296 | # CONFIG_DEBUG_DRIVER is not set | 339 | # CONFIG_DEBUG_DRIVER is not set |
340 | # CONFIG_DEBUG_DEVRES is not set | ||
341 | # CONFIG_SYS_HYPERVISOR is not set | ||
297 | 342 | ||
298 | # | 343 | # |
299 | # Connector - unified userspace <-> kernelspace linker | 344 | # Connector - unified userspace <-> kernelspace linker |
@@ -337,11 +382,17 @@ CONFIG_BLK_DEV_NBD=m | |||
337 | CONFIG_BLK_DEV_RAM=y | 382 | CONFIG_BLK_DEV_RAM=y |
338 | CONFIG_BLK_DEV_RAM_COUNT=16 | 383 | CONFIG_BLK_DEV_RAM_COUNT=16 |
339 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 384 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
340 | CONFIG_BLK_DEV_INITRD=y | 385 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
341 | # CONFIG_CDROM_PKTCDVD is not set | 386 | # CONFIG_CDROM_PKTCDVD is not set |
342 | # CONFIG_ATA_OVER_ETH is not set | 387 | # CONFIG_ATA_OVER_ETH is not set |
343 | 388 | ||
344 | # | 389 | # |
390 | # Misc devices | ||
391 | # | ||
392 | CONFIG_SGI_IOC4=y | ||
393 | # CONFIG_TIFM_CORE is not set | ||
394 | |||
395 | # | ||
345 | # ATA/ATAPI/MFM/RLL support | 396 | # ATA/ATAPI/MFM/RLL support |
346 | # | 397 | # |
347 | CONFIG_IDE=y | 398 | CONFIG_IDE=y |
@@ -358,6 +409,7 @@ CONFIG_BLK_DEV_IDECD=y | |||
358 | # CONFIG_BLK_DEV_IDETAPE is not set | 409 | # CONFIG_BLK_DEV_IDETAPE is not set |
359 | CONFIG_BLK_DEV_IDEFLOPPY=y | 410 | CONFIG_BLK_DEV_IDEFLOPPY=y |
360 | CONFIG_BLK_DEV_IDESCSI=m | 411 | CONFIG_BLK_DEV_IDESCSI=m |
412 | # CONFIG_BLK_DEV_IDEACPI is not set | ||
361 | # CONFIG_IDE_TASK_IOCTL is not set | 413 | # CONFIG_IDE_TASK_IOCTL is not set |
362 | 414 | ||
363 | # | 415 | # |
@@ -384,8 +436,10 @@ CONFIG_BLK_DEV_CMD64X=y | |||
384 | # CONFIG_BLK_DEV_CS5530 is not set | 436 | # CONFIG_BLK_DEV_CS5530 is not set |
385 | # CONFIG_BLK_DEV_HPT34X is not set | 437 | # CONFIG_BLK_DEV_HPT34X is not set |
386 | # CONFIG_BLK_DEV_HPT366 is not set | 438 | # CONFIG_BLK_DEV_HPT366 is not set |
439 | # CONFIG_BLK_DEV_JMICRON is not set | ||
387 | # CONFIG_BLK_DEV_SC1200 is not set | 440 | # CONFIG_BLK_DEV_SC1200 is not set |
388 | CONFIG_BLK_DEV_PIIX=y | 441 | CONFIG_BLK_DEV_PIIX=y |
442 | # CONFIG_BLK_DEV_IT8213 is not set | ||
389 | # CONFIG_BLK_DEV_IT821X is not set | 443 | # CONFIG_BLK_DEV_IT821X is not set |
390 | # CONFIG_BLK_DEV_NS87415 is not set | 444 | # CONFIG_BLK_DEV_NS87415 is not set |
391 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 445 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -396,6 +450,7 @@ CONFIG_BLK_DEV_SGIIOC4=y | |||
396 | # CONFIG_BLK_DEV_SLC90E66 is not set | 450 | # CONFIG_BLK_DEV_SLC90E66 is not set |
397 | # CONFIG_BLK_DEV_TRM290 is not set | 451 | # CONFIG_BLK_DEV_TRM290 is not set |
398 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 452 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
453 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
399 | # CONFIG_IDE_ARM is not set | 454 | # CONFIG_IDE_ARM is not set |
400 | CONFIG_BLK_DEV_IDEDMA=y | 455 | CONFIG_BLK_DEV_IDEDMA=y |
401 | # CONFIG_IDEDMA_IVB is not set | 456 | # CONFIG_IDEDMA_IVB is not set |
@@ -407,6 +462,8 @@ CONFIG_IDEDMA_AUTO=y | |||
407 | # | 462 | # |
408 | # CONFIG_RAID_ATTRS is not set | 463 | # CONFIG_RAID_ATTRS is not set |
409 | CONFIG_SCSI=y | 464 | CONFIG_SCSI=y |
465 | # CONFIG_SCSI_TGT is not set | ||
466 | CONFIG_SCSI_NETLINK=y | ||
410 | CONFIG_SCSI_PROC_FS=y | 467 | CONFIG_SCSI_PROC_FS=y |
411 | 468 | ||
412 | # | 469 | # |
@@ -426,14 +483,16 @@ CONFIG_CHR_DEV_SG=m | |||
426 | # CONFIG_SCSI_MULTI_LUN is not set | 483 | # CONFIG_SCSI_MULTI_LUN is not set |
427 | # CONFIG_SCSI_CONSTANTS is not set | 484 | # CONFIG_SCSI_CONSTANTS is not set |
428 | # CONFIG_SCSI_LOGGING is not set | 485 | # CONFIG_SCSI_LOGGING is not set |
486 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
429 | 487 | ||
430 | # | 488 | # |
431 | # SCSI Transport Attributes | 489 | # SCSI Transports |
432 | # | 490 | # |
433 | CONFIG_SCSI_SPI_ATTRS=y | 491 | CONFIG_SCSI_SPI_ATTRS=y |
434 | CONFIG_SCSI_FC_ATTRS=y | 492 | CONFIG_SCSI_FC_ATTRS=y |
435 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 493 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
436 | # CONFIG_SCSI_SAS_ATTRS is not set | 494 | # CONFIG_SCSI_SAS_ATTRS is not set |
495 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
437 | 496 | ||
438 | # | 497 | # |
439 | # SCSI low-level drivers | 498 | # SCSI low-level drivers |
@@ -446,43 +505,36 @@ CONFIG_SCSI_FC_ATTRS=y | |||
446 | # CONFIG_SCSI_AIC7XXX is not set | 505 | # CONFIG_SCSI_AIC7XXX is not set |
447 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 506 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
448 | # CONFIG_SCSI_AIC79XX is not set | 507 | # CONFIG_SCSI_AIC79XX is not set |
508 | # CONFIG_SCSI_AIC94XX is not set | ||
509 | # CONFIG_SCSI_ARCMSR is not set | ||
449 | # CONFIG_MEGARAID_NEWGEN is not set | 510 | # CONFIG_MEGARAID_NEWGEN is not set |
450 | # CONFIG_MEGARAID_LEGACY is not set | 511 | # CONFIG_MEGARAID_LEGACY is not set |
451 | # CONFIG_MEGARAID_SAS is not set | 512 | # CONFIG_MEGARAID_SAS is not set |
452 | CONFIG_SCSI_SATA=y | 513 | # CONFIG_SCSI_HPTIOP is not set |
453 | # CONFIG_SCSI_SATA_AHCI is not set | ||
454 | # CONFIG_SCSI_SATA_SVW is not set | ||
455 | # CONFIG_SCSI_ATA_PIIX is not set | ||
456 | # CONFIG_SCSI_SATA_MV is not set | ||
457 | # CONFIG_SCSI_SATA_NV is not set | ||
458 | # CONFIG_SCSI_PDC_ADMA is not set | ||
459 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
460 | # CONFIG_SCSI_SATA_PROMISE is not set | ||
461 | # CONFIG_SCSI_SATA_SX4 is not set | ||
462 | # CONFIG_SCSI_SATA_SIL is not set | ||
463 | # CONFIG_SCSI_SATA_SIL24 is not set | ||
464 | # CONFIG_SCSI_SATA_SIS is not set | ||
465 | # CONFIG_SCSI_SATA_ULI is not set | ||
466 | # CONFIG_SCSI_SATA_VIA is not set | ||
467 | CONFIG_SCSI_SATA_VITESSE=y | ||
468 | # CONFIG_SCSI_DMX3191D is not set | 514 | # CONFIG_SCSI_DMX3191D is not set |
469 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 515 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
470 | # CONFIG_SCSI_IPS is not set | 516 | # CONFIG_SCSI_IPS is not set |
471 | # CONFIG_SCSI_INITIO is not set | 517 | # CONFIG_SCSI_INITIO is not set |
472 | # CONFIG_SCSI_INIA100 is not set | 518 | # CONFIG_SCSI_INIA100 is not set |
519 | # CONFIG_SCSI_STEX is not set | ||
473 | CONFIG_SCSI_SYM53C8XX_2=y | 520 | CONFIG_SCSI_SYM53C8XX_2=y |
474 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 521 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
475 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 522 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
476 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 523 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
477 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 524 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
478 | # CONFIG_SCSI_IPR is not set | ||
479 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
480 | CONFIG_SCSI_QLOGIC_1280=y | 525 | CONFIG_SCSI_QLOGIC_1280=y |
481 | # CONFIG_SCSI_QLA_FC is not set | 526 | # CONFIG_SCSI_QLA_FC is not set |
527 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
482 | # CONFIG_SCSI_LPFC is not set | 528 | # CONFIG_SCSI_LPFC is not set |
483 | # CONFIG_SCSI_DC395x is not set | 529 | # CONFIG_SCSI_DC395x is not set |
484 | # CONFIG_SCSI_DC390T is not set | 530 | # CONFIG_SCSI_DC390T is not set |
485 | # CONFIG_SCSI_DEBUG is not set | 531 | # CONFIG_SCSI_DEBUG is not set |
532 | # CONFIG_SCSI_SRP is not set | ||
533 | |||
534 | # | ||
535 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
536 | # | ||
537 | # CONFIG_ATA is not set | ||
486 | 538 | ||
487 | # | 539 | # |
488 | # Multi-device support (RAID and LVM) | 540 | # Multi-device support (RAID and LVM) |
@@ -493,11 +545,11 @@ CONFIG_MD_LINEAR=m | |||
493 | CONFIG_MD_RAID0=m | 545 | CONFIG_MD_RAID0=m |
494 | CONFIG_MD_RAID1=m | 546 | CONFIG_MD_RAID1=m |
495 | # CONFIG_MD_RAID10 is not set | 547 | # CONFIG_MD_RAID10 is not set |
496 | CONFIG_MD_RAID5=m | 548 | # CONFIG_MD_RAID456 is not set |
497 | CONFIG_MD_RAID6=m | ||
498 | CONFIG_MD_MULTIPATH=m | 549 | CONFIG_MD_MULTIPATH=m |
499 | # CONFIG_MD_FAULTY is not set | 550 | # CONFIG_MD_FAULTY is not set |
500 | CONFIG_BLK_DEV_DM=m | 551 | CONFIG_BLK_DEV_DM=m |
552 | # CONFIG_DM_DEBUG is not set | ||
501 | CONFIG_DM_CRYPT=m | 553 | CONFIG_DM_CRYPT=m |
502 | CONFIG_DM_SNAPSHOT=m | 554 | CONFIG_DM_SNAPSHOT=m |
503 | CONFIG_DM_MIRROR=m | 555 | CONFIG_DM_MIRROR=m |
@@ -587,6 +639,7 @@ CONFIG_E100=m | |||
587 | # CONFIG_EPIC100 is not set | 639 | # CONFIG_EPIC100 is not set |
588 | # CONFIG_SUNDANCE is not set | 640 | # CONFIG_SUNDANCE is not set |
589 | # CONFIG_VIA_RHINE is not set | 641 | # CONFIG_VIA_RHINE is not set |
642 | # CONFIG_SC92031 is not set | ||
590 | 643 | ||
591 | # | 644 | # |
592 | # Ethernet (1000 Mbit) | 645 | # Ethernet (1000 Mbit) |
@@ -607,13 +660,18 @@ CONFIG_E1000=y | |||
607 | # CONFIG_VIA_VELOCITY is not set | 660 | # CONFIG_VIA_VELOCITY is not set |
608 | CONFIG_TIGON3=y | 661 | CONFIG_TIGON3=y |
609 | # CONFIG_BNX2 is not set | 662 | # CONFIG_BNX2 is not set |
663 | # CONFIG_QLA3XXX is not set | ||
664 | # CONFIG_ATL1 is not set | ||
610 | 665 | ||
611 | # | 666 | # |
612 | # Ethernet (10000 Mbit) | 667 | # Ethernet (10000 Mbit) |
613 | # | 668 | # |
614 | # CONFIG_CHELSIO_T1 is not set | 669 | # CONFIG_CHELSIO_T1 is not set |
670 | # CONFIG_CHELSIO_T3 is not set | ||
615 | # CONFIG_IXGB is not set | 671 | # CONFIG_IXGB is not set |
616 | # CONFIG_S2IO is not set | 672 | # CONFIG_S2IO is not set |
673 | # CONFIG_MYRI10GE is not set | ||
674 | # CONFIG_NETXEN_NIC is not set | ||
617 | 675 | ||
618 | # | 676 | # |
619 | # Token Ring devices | 677 | # Token Ring devices |
@@ -655,6 +713,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
655 | # Input device support | 713 | # Input device support |
656 | # | 714 | # |
657 | CONFIG_INPUT=y | 715 | CONFIG_INPUT=y |
716 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
658 | 717 | ||
659 | # | 718 | # |
660 | # Userland interfaces | 719 | # Userland interfaces |
@@ -677,6 +736,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
677 | # CONFIG_KEYBOARD_LKKBD is not set | 736 | # CONFIG_KEYBOARD_LKKBD is not set |
678 | # CONFIG_KEYBOARD_XTKBD is not set | 737 | # CONFIG_KEYBOARD_XTKBD is not set |
679 | # CONFIG_KEYBOARD_NEWTON is not set | 738 | # CONFIG_KEYBOARD_NEWTON is not set |
739 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
680 | CONFIG_INPUT_MOUSE=y | 740 | CONFIG_INPUT_MOUSE=y |
681 | CONFIG_MOUSE_PS2=y | 741 | CONFIG_MOUSE_PS2=y |
682 | # CONFIG_MOUSE_SERIAL is not set | 742 | # CONFIG_MOUSE_SERIAL is not set |
@@ -706,6 +766,7 @@ CONFIG_GAMEPORT=m | |||
706 | CONFIG_VT=y | 766 | CONFIG_VT=y |
707 | CONFIG_VT_CONSOLE=y | 767 | CONFIG_VT_CONSOLE=y |
708 | CONFIG_HW_CONSOLE=y | 768 | CONFIG_HW_CONSOLE=y |
769 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
709 | CONFIG_SERIAL_NONSTANDARD=y | 770 | CONFIG_SERIAL_NONSTANDARD=y |
710 | # CONFIG_COMPUTONE is not set | 771 | # CONFIG_COMPUTONE is not set |
711 | # CONFIG_ROCKETPORT is not set | 772 | # CONFIG_ROCKETPORT is not set |
@@ -713,12 +774,14 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
713 | # CONFIG_DIGIEPCA is not set | 774 | # CONFIG_DIGIEPCA is not set |
714 | # CONFIG_MOXA_INTELLIO is not set | 775 | # CONFIG_MOXA_INTELLIO is not set |
715 | # CONFIG_MOXA_SMARTIO is not set | 776 | # CONFIG_MOXA_SMARTIO is not set |
777 | # CONFIG_MOXA_SMARTIO_NEW is not set | ||
716 | # CONFIG_ISI is not set | 778 | # CONFIG_ISI is not set |
717 | # CONFIG_SYNCLINKMP is not set | 779 | # CONFIG_SYNCLINKMP is not set |
718 | # CONFIG_SYNCLINK_GT is not set | 780 | # CONFIG_SYNCLINK_GT is not set |
719 | # CONFIG_N_HDLC is not set | 781 | # CONFIG_N_HDLC is not set |
720 | # CONFIG_SPECIALIX is not set | 782 | # CONFIG_SPECIALIX is not set |
721 | # CONFIG_SX is not set | 783 | # CONFIG_SX is not set |
784 | # CONFIG_RIO is not set | ||
722 | # CONFIG_STALDRV is not set | 785 | # CONFIG_STALDRV is not set |
723 | CONFIG_SGI_SNSC=y | 786 | CONFIG_SGI_SNSC=y |
724 | CONFIG_SGI_TIOCX=y | 787 | CONFIG_SGI_TIOCX=y |
@@ -729,7 +792,8 @@ CONFIG_SGI_MBCS=m | |||
729 | # | 792 | # |
730 | CONFIG_SERIAL_8250=y | 793 | CONFIG_SERIAL_8250=y |
731 | CONFIG_SERIAL_8250_CONSOLE=y | 794 | CONFIG_SERIAL_8250_CONSOLE=y |
732 | CONFIG_SERIAL_8250_ACPI=y | 795 | CONFIG_SERIAL_8250_PCI=y |
796 | CONFIG_SERIAL_8250_PNP=y | ||
733 | CONFIG_SERIAL_8250_NR_UARTS=6 | 797 | CONFIG_SERIAL_8250_NR_UARTS=6 |
734 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 798 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
735 | CONFIG_SERIAL_8250_EXTENDED=y | 799 | CONFIG_SERIAL_8250_EXTENDED=y |
@@ -764,10 +828,6 @@ CONFIG_EFI_RTC=y | |||
764 | # CONFIG_DTLK is not set | 828 | # CONFIG_DTLK is not set |
765 | # CONFIG_R3964 is not set | 829 | # CONFIG_R3964 is not set |
766 | # CONFIG_APPLICOM is not set | 830 | # CONFIG_APPLICOM is not set |
767 | |||
768 | # | ||
769 | # Ftape, the floppy tape device driver | ||
770 | # | ||
771 | CONFIG_AGP=m | 831 | CONFIG_AGP=m |
772 | CONFIG_AGP_I460=m | 832 | CONFIG_AGP_I460=m |
773 | CONFIG_AGP_HP_ZX1=m | 833 | CONFIG_AGP_HP_ZX1=m |
@@ -792,7 +852,6 @@ CONFIG_MMTIMER=y | |||
792 | # TPM devices | 852 | # TPM devices |
793 | # | 853 | # |
794 | # CONFIG_TCG_TPM is not set | 854 | # CONFIG_TCG_TPM is not set |
795 | # CONFIG_TELCLOCK is not set | ||
796 | 855 | ||
797 | # | 856 | # |
798 | # I2C support | 857 | # I2C support |
@@ -815,16 +874,16 @@ CONFIG_MMTIMER=y | |||
815 | # | 874 | # |
816 | CONFIG_HWMON=y | 875 | CONFIG_HWMON=y |
817 | # CONFIG_HWMON_VID is not set | 876 | # CONFIG_HWMON_VID is not set |
877 | # CONFIG_SENSORS_ABITUGURU is not set | ||
818 | # CONFIG_SENSORS_F71805F is not set | 878 | # CONFIG_SENSORS_F71805F is not set |
879 | # CONFIG_SENSORS_PC87427 is not set | ||
880 | # CONFIG_SENSORS_VT1211 is not set | ||
819 | # CONFIG_HWMON_DEBUG_CHIP is not set | 881 | # CONFIG_HWMON_DEBUG_CHIP is not set |
820 | 882 | ||
821 | # | 883 | # |
822 | # Misc devices | 884 | # Multifunction device drivers |
823 | # | ||
824 | |||
825 | # | ||
826 | # Multimedia Capabilities Port drivers | ||
827 | # | 885 | # |
886 | # CONFIG_MFD_SM501 is not set | ||
828 | 887 | ||
829 | # | 888 | # |
830 | # Multimedia devices | 889 | # Multimedia devices |
@@ -835,16 +894,19 @@ CONFIG_HWMON=y | |||
835 | # Digital Video Broadcasting Devices | 894 | # Digital Video Broadcasting Devices |
836 | # | 895 | # |
837 | # CONFIG_DVB is not set | 896 | # CONFIG_DVB is not set |
897 | # CONFIG_USB_DABUSB is not set | ||
838 | 898 | ||
839 | # | 899 | # |
840 | # Graphics support | 900 | # Graphics support |
841 | # | 901 | # |
902 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
842 | # CONFIG_FB is not set | 903 | # CONFIG_FB is not set |
843 | 904 | ||
844 | # | 905 | # |
845 | # Console display driver support | 906 | # Console display driver support |
846 | # | 907 | # |
847 | CONFIG_VGA_CONSOLE=y | 908 | CONFIG_VGA_CONSOLE=y |
909 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
848 | CONFIG_DUMMY_CONSOLE=y | 910 | CONFIG_DUMMY_CONSOLE=y |
849 | 911 | ||
850 | # | 912 | # |
@@ -865,9 +927,11 @@ CONFIG_SND_SEQ_DUMMY=m | |||
865 | CONFIG_SND_OSSEMUL=y | 927 | CONFIG_SND_OSSEMUL=y |
866 | CONFIG_SND_MIXER_OSS=m | 928 | CONFIG_SND_MIXER_OSS=m |
867 | CONFIG_SND_PCM_OSS=m | 929 | CONFIG_SND_PCM_OSS=m |
930 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
868 | CONFIG_SND_SEQUENCER_OSS=y | 931 | CONFIG_SND_SEQUENCER_OSS=y |
869 | # CONFIG_SND_DYNAMIC_MINORS is not set | 932 | # CONFIG_SND_DYNAMIC_MINORS is not set |
870 | CONFIG_SND_SUPPORT_OLD_API=y | 933 | CONFIG_SND_SUPPORT_OLD_API=y |
934 | CONFIG_SND_VERBOSE_PROCFS=y | ||
871 | CONFIG_SND_VERBOSE_PRINTK=y | 935 | CONFIG_SND_VERBOSE_PRINTK=y |
872 | # CONFIG_SND_DEBUG is not set | 936 | # CONFIG_SND_DEBUG is not set |
873 | 937 | ||
@@ -877,7 +941,6 @@ CONFIG_SND_VERBOSE_PRINTK=y | |||
877 | CONFIG_SND_MPU401_UART=m | 941 | CONFIG_SND_MPU401_UART=m |
878 | CONFIG_SND_OPL3_LIB=m | 942 | CONFIG_SND_OPL3_LIB=m |
879 | CONFIG_SND_AC97_CODEC=m | 943 | CONFIG_SND_AC97_CODEC=m |
880 | CONFIG_SND_AC97_BUS=m | ||
881 | CONFIG_SND_DUMMY=m | 944 | CONFIG_SND_DUMMY=m |
882 | CONFIG_SND_VIRMIDI=m | 945 | CONFIG_SND_VIRMIDI=m |
883 | CONFIG_SND_MTPAV=m | 946 | CONFIG_SND_MTPAV=m |
@@ -888,6 +951,7 @@ CONFIG_SND_MPU401=m | |||
888 | # PCI devices | 951 | # PCI devices |
889 | # | 952 | # |
890 | # CONFIG_SND_AD1889 is not set | 953 | # CONFIG_SND_AD1889 is not set |
954 | # CONFIG_SND_ALS300 is not set | ||
891 | # CONFIG_SND_ALI5451 is not set | 955 | # CONFIG_SND_ALI5451 is not set |
892 | # CONFIG_SND_ATIIXP is not set | 956 | # CONFIG_SND_ATIIXP is not set |
893 | # CONFIG_SND_ATIIXP_MODEM is not set | 957 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -901,6 +965,18 @@ CONFIG_SND_MPU401=m | |||
901 | CONFIG_SND_CS4281=m | 965 | CONFIG_SND_CS4281=m |
902 | CONFIG_SND_CS46XX=m | 966 | CONFIG_SND_CS46XX=m |
903 | CONFIG_SND_CS46XX_NEW_DSP=y | 967 | CONFIG_SND_CS46XX_NEW_DSP=y |
968 | # CONFIG_SND_DARLA20 is not set | ||
969 | # CONFIG_SND_GINA20 is not set | ||
970 | # CONFIG_SND_LAYLA20 is not set | ||
971 | # CONFIG_SND_DARLA24 is not set | ||
972 | # CONFIG_SND_GINA24 is not set | ||
973 | # CONFIG_SND_LAYLA24 is not set | ||
974 | # CONFIG_SND_MONA is not set | ||
975 | # CONFIG_SND_MIA is not set | ||
976 | # CONFIG_SND_ECHO3G is not set | ||
977 | # CONFIG_SND_INDIGO is not set | ||
978 | # CONFIG_SND_INDIGOIO is not set | ||
979 | # CONFIG_SND_INDIGODJ is not set | ||
904 | CONFIG_SND_EMU10K1=m | 980 | CONFIG_SND_EMU10K1=m |
905 | # CONFIG_SND_EMU10K1X is not set | 981 | # CONFIG_SND_EMU10K1X is not set |
906 | # CONFIG_SND_ENS1370 is not set | 982 | # CONFIG_SND_ENS1370 is not set |
@@ -908,7 +984,7 @@ CONFIG_SND_EMU10K1=m | |||
908 | # CONFIG_SND_ES1938 is not set | 984 | # CONFIG_SND_ES1938 is not set |
909 | # CONFIG_SND_ES1968 is not set | 985 | # CONFIG_SND_ES1968 is not set |
910 | CONFIG_SND_FM801=m | 986 | CONFIG_SND_FM801=m |
911 | # CONFIG_SND_FM801_TEA575X is not set | 987 | # CONFIG_SND_FM801_TEA575X_BOOL is not set |
912 | # CONFIG_SND_HDA_INTEL is not set | 988 | # CONFIG_SND_HDA_INTEL is not set |
913 | # CONFIG_SND_HDSP is not set | 989 | # CONFIG_SND_HDSP is not set |
914 | # CONFIG_SND_HDSPM is not set | 990 | # CONFIG_SND_HDSPM is not set |
@@ -921,6 +997,7 @@ CONFIG_SND_FM801=m | |||
921 | # CONFIG_SND_MIXART is not set | 997 | # CONFIG_SND_MIXART is not set |
922 | # CONFIG_SND_NM256 is not set | 998 | # CONFIG_SND_NM256 is not set |
923 | # CONFIG_SND_PCXHR is not set | 999 | # CONFIG_SND_PCXHR is not set |
1000 | # CONFIG_SND_RIPTIDE is not set | ||
924 | # CONFIG_SND_RME32 is not set | 1001 | # CONFIG_SND_RME32 is not set |
925 | # CONFIG_SND_RME96 is not set | 1002 | # CONFIG_SND_RME96 is not set |
926 | # CONFIG_SND_RME9652 is not set | 1003 | # CONFIG_SND_RME9652 is not set |
@@ -930,6 +1007,7 @@ CONFIG_SND_FM801=m | |||
930 | # CONFIG_SND_VIA82XX_MODEM is not set | 1007 | # CONFIG_SND_VIA82XX_MODEM is not set |
931 | # CONFIG_SND_VX222 is not set | 1008 | # CONFIG_SND_VX222 is not set |
932 | # CONFIG_SND_YMFPCI is not set | 1009 | # CONFIG_SND_YMFPCI is not set |
1010 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
933 | 1011 | ||
934 | # | 1012 | # |
935 | # USB devices | 1013 | # USB devices |
@@ -937,15 +1015,28 @@ CONFIG_SND_FM801=m | |||
937 | # CONFIG_SND_USB_AUDIO is not set | 1015 | # CONFIG_SND_USB_AUDIO is not set |
938 | 1016 | ||
939 | # | 1017 | # |
1018 | # SoC audio support | ||
1019 | # | ||
1020 | # CONFIG_SND_SOC is not set | ||
1021 | |||
1022 | # | ||
940 | # Open Sound System | 1023 | # Open Sound System |
941 | # | 1024 | # |
942 | # CONFIG_SOUND_PRIME is not set | 1025 | # CONFIG_SOUND_PRIME is not set |
1026 | CONFIG_AC97_BUS=m | ||
1027 | |||
1028 | # | ||
1029 | # HID Devices | ||
1030 | # | ||
1031 | CONFIG_HID=y | ||
1032 | # CONFIG_HID_DEBUG is not set | ||
943 | 1033 | ||
944 | # | 1034 | # |
945 | # USB support | 1035 | # USB support |
946 | # | 1036 | # |
947 | CONFIG_USB_ARCH_HAS_HCD=y | 1037 | CONFIG_USB_ARCH_HAS_HCD=y |
948 | CONFIG_USB_ARCH_HAS_OHCI=y | 1038 | CONFIG_USB_ARCH_HAS_OHCI=y |
1039 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
949 | CONFIG_USB=m | 1040 | CONFIG_USB=m |
950 | # CONFIG_USB_DEBUG is not set | 1041 | # CONFIG_USB_DEBUG is not set |
951 | 1042 | ||
@@ -953,7 +1044,6 @@ CONFIG_USB=m | |||
953 | # Miscellaneous USB options | 1044 | # Miscellaneous USB options |
954 | # | 1045 | # |
955 | CONFIG_USB_DEVICEFS=y | 1046 | CONFIG_USB_DEVICEFS=y |
956 | # CONFIG_USB_BANDWIDTH is not set | ||
957 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1047 | # CONFIG_USB_DYNAMIC_MINORS is not set |
958 | # CONFIG_USB_SUSPEND is not set | 1048 | # CONFIG_USB_SUSPEND is not set |
959 | # CONFIG_USB_OTG is not set | 1049 | # CONFIG_USB_OTG is not set |
@@ -964,9 +1054,12 @@ CONFIG_USB_DEVICEFS=y | |||
964 | CONFIG_USB_EHCI_HCD=m | 1054 | CONFIG_USB_EHCI_HCD=m |
965 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 1055 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
966 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1056 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1057 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
1058 | # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set | ||
967 | # CONFIG_USB_ISP116X_HCD is not set | 1059 | # CONFIG_USB_ISP116X_HCD is not set |
968 | CONFIG_USB_OHCI_HCD=m | 1060 | CONFIG_USB_OHCI_HCD=m |
969 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1061 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1062 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
970 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1063 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
971 | CONFIG_USB_UHCI_HCD=m | 1064 | CONFIG_USB_UHCI_HCD=m |
972 | # CONFIG_USB_SL811_HCD is not set | 1065 | # CONFIG_USB_SL811_HCD is not set |
@@ -974,7 +1067,6 @@ CONFIG_USB_UHCI_HCD=m | |||
974 | # | 1067 | # |
975 | # USB Device Class drivers | 1068 | # USB Device Class drivers |
976 | # | 1069 | # |
977 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
978 | # CONFIG_USB_ACM is not set | 1070 | # CONFIG_USB_ACM is not set |
979 | # CONFIG_USB_PRINTER is not set | 1071 | # CONFIG_USB_PRINTER is not set |
980 | 1072 | ||
@@ -996,13 +1088,13 @@ CONFIG_USB_STORAGE=m | |||
996 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1088 | # CONFIG_USB_STORAGE_SDDR55 is not set |
997 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1089 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
998 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1090 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1091 | # CONFIG_USB_STORAGE_KARMA is not set | ||
999 | # CONFIG_USB_LIBUSUAL is not set | 1092 | # CONFIG_USB_LIBUSUAL is not set |
1000 | 1093 | ||
1001 | # | 1094 | # |
1002 | # USB Input Devices | 1095 | # USB Input Devices |
1003 | # | 1096 | # |
1004 | CONFIG_USB_HID=m | 1097 | CONFIG_USB_HID=m |
1005 | CONFIG_USB_HIDINPUT=y | ||
1006 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | 1098 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set |
1007 | # CONFIG_HID_FF is not set | 1099 | # CONFIG_HID_FF is not set |
1008 | # CONFIG_USB_HIDDEV is not set | 1100 | # CONFIG_USB_HIDDEV is not set |
@@ -1017,15 +1109,14 @@ CONFIG_USB_HIDINPUT=y | |||
1017 | # CONFIG_USB_ACECAD is not set | 1109 | # CONFIG_USB_ACECAD is not set |
1018 | # CONFIG_USB_KBTAB is not set | 1110 | # CONFIG_USB_KBTAB is not set |
1019 | # CONFIG_USB_POWERMATE is not set | 1111 | # CONFIG_USB_POWERMATE is not set |
1020 | # CONFIG_USB_MTOUCH is not set | 1112 | # CONFIG_USB_TOUCHSCREEN is not set |
1021 | # CONFIG_USB_ITMTOUCH is not set | ||
1022 | # CONFIG_USB_EGALAX is not set | ||
1023 | # CONFIG_USB_YEALINK is not set | 1113 | # CONFIG_USB_YEALINK is not set |
1024 | # CONFIG_USB_XPAD is not set | 1114 | # CONFIG_USB_XPAD is not set |
1025 | # CONFIG_USB_ATI_REMOTE is not set | 1115 | # CONFIG_USB_ATI_REMOTE is not set |
1026 | # CONFIG_USB_ATI_REMOTE2 is not set | 1116 | # CONFIG_USB_ATI_REMOTE2 is not set |
1027 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1117 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1028 | # CONFIG_USB_APPLETOUCH is not set | 1118 | # CONFIG_USB_APPLETOUCH is not set |
1119 | # CONFIG_USB_GTCO is not set | ||
1029 | 1120 | ||
1030 | # | 1121 | # |
1031 | # USB Imaging devices | 1122 | # USB Imaging devices |
@@ -1034,21 +1125,13 @@ CONFIG_USB_HIDINPUT=y | |||
1034 | # CONFIG_USB_MICROTEK is not set | 1125 | # CONFIG_USB_MICROTEK is not set |
1035 | 1126 | ||
1036 | # | 1127 | # |
1037 | # USB Multimedia devices | ||
1038 | # | ||
1039 | # CONFIG_USB_DABUSB is not set | ||
1040 | |||
1041 | # | ||
1042 | # Video4Linux support is needed for USB Multimedia device support | ||
1043 | # | ||
1044 | |||
1045 | # | ||
1046 | # USB Network Adapters | 1128 | # USB Network Adapters |
1047 | # | 1129 | # |
1048 | # CONFIG_USB_CATC is not set | 1130 | # CONFIG_USB_CATC is not set |
1049 | # CONFIG_USB_KAWETH is not set | 1131 | # CONFIG_USB_KAWETH is not set |
1050 | # CONFIG_USB_PEGASUS is not set | 1132 | # CONFIG_USB_PEGASUS is not set |
1051 | # CONFIG_USB_RTL8150 is not set | 1133 | # CONFIG_USB_RTL8150 is not set |
1134 | # CONFIG_USB_USBNET_MII is not set | ||
1052 | # CONFIG_USB_USBNET is not set | 1135 | # CONFIG_USB_USBNET is not set |
1053 | CONFIG_USB_MON=y | 1136 | CONFIG_USB_MON=y |
1054 | 1137 | ||
@@ -1066,17 +1149,23 @@ CONFIG_USB_MON=y | |||
1066 | # | 1149 | # |
1067 | # CONFIG_USB_EMI62 is not set | 1150 | # CONFIG_USB_EMI62 is not set |
1068 | # CONFIG_USB_EMI26 is not set | 1151 | # CONFIG_USB_EMI26 is not set |
1152 | # CONFIG_USB_ADUTUX is not set | ||
1069 | # CONFIG_USB_AUERSWALD is not set | 1153 | # CONFIG_USB_AUERSWALD is not set |
1070 | # CONFIG_USB_RIO500 is not set | 1154 | # CONFIG_USB_RIO500 is not set |
1071 | # CONFIG_USB_LEGOTOWER is not set | 1155 | # CONFIG_USB_LEGOTOWER is not set |
1072 | # CONFIG_USB_LCD is not set | 1156 | # CONFIG_USB_LCD is not set |
1157 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1073 | # CONFIG_USB_LED is not set | 1158 | # CONFIG_USB_LED is not set |
1159 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1074 | # CONFIG_USB_CYTHERM is not set | 1160 | # CONFIG_USB_CYTHERM is not set |
1075 | # CONFIG_USB_PHIDGETKIT is not set | 1161 | # CONFIG_USB_PHIDGET is not set |
1076 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1077 | # CONFIG_USB_IDMOUSE is not set | 1162 | # CONFIG_USB_IDMOUSE is not set |
1163 | # CONFIG_USB_FTDI_ELAN is not set | ||
1164 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1078 | # CONFIG_USB_SISUSBVGA is not set | 1165 | # CONFIG_USB_SISUSBVGA is not set |
1079 | # CONFIG_USB_LD is not set | 1166 | # CONFIG_USB_LD is not set |
1167 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1168 | # CONFIG_USB_IOWARRIOR is not set | ||
1080 | # CONFIG_USB_TEST is not set | 1169 | # CONFIG_USB_TEST is not set |
1081 | 1170 | ||
1082 | # | 1171 | # |
@@ -1094,26 +1183,65 @@ CONFIG_USB_MON=y | |||
1094 | # CONFIG_MMC is not set | 1183 | # CONFIG_MMC is not set |
1095 | 1184 | ||
1096 | # | 1185 | # |
1186 | # LED devices | ||
1187 | # | ||
1188 | # CONFIG_NEW_LEDS is not set | ||
1189 | |||
1190 | # | ||
1191 | # LED drivers | ||
1192 | # | ||
1193 | |||
1194 | # | ||
1195 | # LED Triggers | ||
1196 | # | ||
1197 | |||
1198 | # | ||
1097 | # InfiniBand support | 1199 | # InfiniBand support |
1098 | # | 1200 | # |
1099 | CONFIG_INFINIBAND=m | 1201 | CONFIG_INFINIBAND=m |
1100 | # CONFIG_INFINIBAND_USER_MAD is not set | 1202 | # CONFIG_INFINIBAND_USER_MAD is not set |
1101 | # CONFIG_INFINIBAND_USER_ACCESS is not set | 1203 | # CONFIG_INFINIBAND_USER_ACCESS is not set |
1204 | CONFIG_INFINIBAND_ADDR_TRANS=y | ||
1102 | CONFIG_INFINIBAND_MTHCA=m | 1205 | CONFIG_INFINIBAND_MTHCA=m |
1103 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | 1206 | CONFIG_INFINIBAND_MTHCA_DEBUG=y |
1207 | # CONFIG_INFINIBAND_AMSO1100 is not set | ||
1104 | CONFIG_INFINIBAND_IPOIB=m | 1208 | CONFIG_INFINIBAND_IPOIB=m |
1105 | # CONFIG_INFINIBAND_IPOIB_DEBUG is not set | 1209 | # CONFIG_INFINIBAND_IPOIB_CM is not set |
1210 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | ||
1211 | # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set | ||
1106 | # CONFIG_INFINIBAND_SRP is not set | 1212 | # CONFIG_INFINIBAND_SRP is not set |
1213 | # CONFIG_INFINIBAND_ISER is not set | ||
1107 | 1214 | ||
1108 | # | 1215 | # |
1109 | # SN Devices | 1216 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
1217 | # | ||
1218 | |||
1219 | # | ||
1220 | # Real Time Clock | ||
1221 | # | ||
1222 | # CONFIG_RTC_CLASS is not set | ||
1223 | |||
1224 | # | ||
1225 | # DMA Engine support | ||
1226 | # | ||
1227 | # CONFIG_DMA_ENGINE is not set | ||
1228 | |||
1229 | # | ||
1230 | # DMA Clients | ||
1231 | # | ||
1232 | |||
1233 | # | ||
1234 | # DMA Devices | ||
1235 | # | ||
1236 | |||
1237 | # | ||
1238 | # Auxiliary Display support | ||
1110 | # | 1239 | # |
1111 | CONFIG_SGI_IOC4=y | ||
1112 | CONFIG_SGI_IOC3=m | ||
1113 | 1240 | ||
1114 | # | 1241 | # |
1115 | # EDAC - error detection and reporting (RAS) | 1242 | # Virtualization |
1116 | # | 1243 | # |
1244 | # CONFIG_MSPEC is not set | ||
1117 | 1245 | ||
1118 | # | 1246 | # |
1119 | # File systems | 1247 | # File systems |
@@ -1127,6 +1255,7 @@ CONFIG_EXT3_FS=y | |||
1127 | CONFIG_EXT3_FS_XATTR=y | 1255 | CONFIG_EXT3_FS_XATTR=y |
1128 | CONFIG_EXT3_FS_POSIX_ACL=y | 1256 | CONFIG_EXT3_FS_POSIX_ACL=y |
1129 | CONFIG_EXT3_FS_SECURITY=y | 1257 | CONFIG_EXT3_FS_SECURITY=y |
1258 | # CONFIG_EXT4DEV_FS is not set | ||
1130 | CONFIG_JBD=y | 1259 | CONFIG_JBD=y |
1131 | # CONFIG_JBD_DEBUG is not set | 1260 | # CONFIG_JBD_DEBUG is not set |
1132 | CONFIG_FS_MBCACHE=y | 1261 | CONFIG_FS_MBCACHE=y |
@@ -1139,15 +1268,16 @@ CONFIG_REISERFS_FS_SECURITY=y | |||
1139 | # CONFIG_JFS_FS is not set | 1268 | # CONFIG_JFS_FS is not set |
1140 | CONFIG_FS_POSIX_ACL=y | 1269 | CONFIG_FS_POSIX_ACL=y |
1141 | CONFIG_XFS_FS=y | 1270 | CONFIG_XFS_FS=y |
1142 | CONFIG_XFS_EXPORT=y | ||
1143 | # CONFIG_XFS_QUOTA is not set | 1271 | # CONFIG_XFS_QUOTA is not set |
1144 | # CONFIG_XFS_SECURITY is not set | 1272 | # CONFIG_XFS_SECURITY is not set |
1145 | # CONFIG_XFS_POSIX_ACL is not set | 1273 | # CONFIG_XFS_POSIX_ACL is not set |
1146 | # CONFIG_XFS_RT is not set | 1274 | # CONFIG_XFS_RT is not set |
1275 | # CONFIG_GFS2_FS is not set | ||
1147 | # CONFIG_OCFS2_FS is not set | 1276 | # CONFIG_OCFS2_FS is not set |
1148 | # CONFIG_MINIX_FS is not set | 1277 | # CONFIG_MINIX_FS is not set |
1149 | # CONFIG_ROMFS_FS is not set | 1278 | # CONFIG_ROMFS_FS is not set |
1150 | CONFIG_INOTIFY=y | 1279 | CONFIG_INOTIFY=y |
1280 | CONFIG_INOTIFY_USER=y | ||
1151 | # CONFIG_QUOTA is not set | 1281 | # CONFIG_QUOTA is not set |
1152 | CONFIG_DNOTIFY=y | 1282 | CONFIG_DNOTIFY=y |
1153 | CONFIG_AUTOFS_FS=y | 1283 | CONFIG_AUTOFS_FS=y |
@@ -1180,12 +1310,14 @@ CONFIG_NTFS_FS=m | |||
1180 | # | 1310 | # |
1181 | CONFIG_PROC_FS=y | 1311 | CONFIG_PROC_FS=y |
1182 | CONFIG_PROC_KCORE=y | 1312 | CONFIG_PROC_KCORE=y |
1313 | CONFIG_PROC_VMCORE=y | ||
1314 | CONFIG_PROC_SYSCTL=y | ||
1183 | CONFIG_SYSFS=y | 1315 | CONFIG_SYSFS=y |
1184 | CONFIG_TMPFS=y | 1316 | CONFIG_TMPFS=y |
1317 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1185 | CONFIG_HUGETLBFS=y | 1318 | CONFIG_HUGETLBFS=y |
1186 | CONFIG_HUGETLB_PAGE=y | 1319 | CONFIG_HUGETLB_PAGE=y |
1187 | CONFIG_RAMFS=y | 1320 | CONFIG_RAMFS=y |
1188 | # CONFIG_RELAYFS_FS is not set | ||
1189 | # CONFIG_CONFIGFS_FS is not set | 1321 | # CONFIG_CONFIGFS_FS is not set |
1190 | 1322 | ||
1191 | # | 1323 | # |
@@ -1220,7 +1352,7 @@ CONFIG_NFSD_V4=y | |||
1220 | CONFIG_NFSD_TCP=y | 1352 | CONFIG_NFSD_TCP=y |
1221 | CONFIG_LOCKD=m | 1353 | CONFIG_LOCKD=m |
1222 | CONFIG_LOCKD_V4=y | 1354 | CONFIG_LOCKD_V4=y |
1223 | CONFIG_EXPORTFS=y | 1355 | CONFIG_EXPORTFS=m |
1224 | CONFIG_NFS_COMMON=y | 1356 | CONFIG_NFS_COMMON=y |
1225 | CONFIG_SUNRPC=m | 1357 | CONFIG_SUNRPC=m |
1226 | CONFIG_SUNRPC_GSS=m | 1358 | CONFIG_SUNRPC_GSS=m |
@@ -1231,7 +1363,9 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
1231 | CONFIG_SMB_NLS_REMOTE="cp437" | 1363 | CONFIG_SMB_NLS_REMOTE="cp437" |
1232 | CONFIG_CIFS=m | 1364 | CONFIG_CIFS=m |
1233 | # CONFIG_CIFS_STATS is not set | 1365 | # CONFIG_CIFS_STATS is not set |
1366 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1234 | # CONFIG_CIFS_XATTR is not set | 1367 | # CONFIG_CIFS_XATTR is not set |
1368 | # CONFIG_CIFS_DEBUG2 is not set | ||
1235 | # CONFIG_CIFS_EXPERIMENTAL is not set | 1369 | # CONFIG_CIFS_EXPERIMENTAL is not set |
1236 | # CONFIG_NCP_FS is not set | 1370 | # CONFIG_NCP_FS is not set |
1237 | # CONFIG_CODA_FS is not set | 1371 | # CONFIG_CODA_FS is not set |
@@ -1304,15 +1438,25 @@ CONFIG_NLS_KOI8_U=m | |||
1304 | CONFIG_NLS_UTF8=m | 1438 | CONFIG_NLS_UTF8=m |
1305 | 1439 | ||
1306 | # | 1440 | # |
1441 | # Distributed Lock Manager | ||
1442 | # | ||
1443 | # CONFIG_DLM is not set | ||
1444 | |||
1445 | # | ||
1307 | # Library routines | 1446 | # Library routines |
1308 | # | 1447 | # |
1448 | CONFIG_BITREVERSE=y | ||
1309 | # CONFIG_CRC_CCITT is not set | 1449 | # CONFIG_CRC_CCITT is not set |
1310 | # CONFIG_CRC16 is not set | 1450 | # CONFIG_CRC16 is not set |
1311 | CONFIG_CRC32=y | 1451 | CONFIG_CRC32=y |
1312 | # CONFIG_LIBCRC32C is not set | 1452 | # CONFIG_LIBCRC32C is not set |
1453 | CONFIG_PLIST=y | ||
1454 | CONFIG_HAS_IOMEM=y | ||
1455 | CONFIG_HAS_IOPORT=y | ||
1313 | CONFIG_GENERIC_HARDIRQS=y | 1456 | CONFIG_GENERIC_HARDIRQS=y |
1314 | CONFIG_GENERIC_IRQ_PROBE=y | 1457 | CONFIG_GENERIC_IRQ_PROBE=y |
1315 | CONFIG_GENERIC_PENDING_IRQ=y | 1458 | CONFIG_GENERIC_PENDING_IRQ=y |
1459 | CONFIG_IRQ_PER_CPU=y | ||
1316 | 1460 | ||
1317 | # | 1461 | # |
1318 | # HP Simulator drivers | 1462 | # HP Simulator drivers |
@@ -1331,21 +1475,31 @@ CONFIG_GENERIC_PENDING_IRQ=y | |||
1331 | # Kernel hacking | 1475 | # Kernel hacking |
1332 | # | 1476 | # |
1333 | # CONFIG_PRINTK_TIME is not set | 1477 | # CONFIG_PRINTK_TIME is not set |
1478 | CONFIG_ENABLE_MUST_CHECK=y | ||
1334 | CONFIG_MAGIC_SYSRQ=y | 1479 | CONFIG_MAGIC_SYSRQ=y |
1480 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1481 | # CONFIG_DEBUG_FS is not set | ||
1482 | # CONFIG_HEADERS_CHECK is not set | ||
1335 | CONFIG_DEBUG_KERNEL=y | 1483 | CONFIG_DEBUG_KERNEL=y |
1484 | # CONFIG_DEBUG_SHIRQ is not set | ||
1336 | CONFIG_LOG_BUF_SHIFT=20 | 1485 | CONFIG_LOG_BUF_SHIFT=20 |
1337 | CONFIG_DETECT_SOFTLOCKUP=y | 1486 | CONFIG_DETECT_SOFTLOCKUP=y |
1338 | # CONFIG_SCHEDSTATS is not set | 1487 | # CONFIG_SCHEDSTATS is not set |
1488 | # CONFIG_TIMER_STATS is not set | ||
1339 | # CONFIG_DEBUG_SLAB is not set | 1489 | # CONFIG_DEBUG_SLAB is not set |
1340 | CONFIG_DEBUG_MUTEXES=y | 1490 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1491 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1341 | # CONFIG_DEBUG_SPINLOCK is not set | 1492 | # CONFIG_DEBUG_SPINLOCK is not set |
1493 | CONFIG_DEBUG_MUTEXES=y | ||
1342 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1494 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1495 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1343 | # CONFIG_DEBUG_KOBJECT is not set | 1496 | # CONFIG_DEBUG_KOBJECT is not set |
1344 | # CONFIG_DEBUG_INFO is not set | 1497 | # CONFIG_DEBUG_INFO is not set |
1345 | # CONFIG_DEBUG_FS is not set | ||
1346 | # CONFIG_DEBUG_VM is not set | 1498 | # CONFIG_DEBUG_VM is not set |
1499 | # CONFIG_DEBUG_LIST is not set | ||
1347 | CONFIG_FORCED_INLINING=y | 1500 | CONFIG_FORCED_INLINING=y |
1348 | # CONFIG_RCU_TORTURE_TEST is not set | 1501 | # CONFIG_RCU_TORTURE_TEST is not set |
1502 | # CONFIG_FAULT_INJECTION is not set | ||
1349 | CONFIG_IA64_GRANULE_16MB=y | 1503 | CONFIG_IA64_GRANULE_16MB=y |
1350 | # CONFIG_IA64_GRANULE_64MB is not set | 1504 | # CONFIG_IA64_GRANULE_64MB is not set |
1351 | # CONFIG_IA64_PRINT_HAZARDS is not set | 1505 | # CONFIG_IA64_PRINT_HAZARDS is not set |
@@ -1364,7 +1518,11 @@ CONFIG_SYSVIPC_COMPAT=y | |||
1364 | # Cryptographic options | 1518 | # Cryptographic options |
1365 | # | 1519 | # |
1366 | CONFIG_CRYPTO=y | 1520 | CONFIG_CRYPTO=y |
1521 | CONFIG_CRYPTO_ALGAPI=y | ||
1522 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1523 | CONFIG_CRYPTO_MANAGER=m | ||
1367 | # CONFIG_CRYPTO_HMAC is not set | 1524 | # CONFIG_CRYPTO_HMAC is not set |
1525 | # CONFIG_CRYPTO_XCBC is not set | ||
1368 | # CONFIG_CRYPTO_NULL is not set | 1526 | # CONFIG_CRYPTO_NULL is not set |
1369 | # CONFIG_CRYPTO_MD4 is not set | 1527 | # CONFIG_CRYPTO_MD4 is not set |
1370 | CONFIG_CRYPTO_MD5=y | 1528 | CONFIG_CRYPTO_MD5=y |
@@ -1373,7 +1531,13 @@ CONFIG_CRYPTO_MD5=y | |||
1373 | # CONFIG_CRYPTO_SHA512 is not set | 1531 | # CONFIG_CRYPTO_SHA512 is not set |
1374 | # CONFIG_CRYPTO_WP512 is not set | 1532 | # CONFIG_CRYPTO_WP512 is not set |
1375 | # CONFIG_CRYPTO_TGR192 is not set | 1533 | # CONFIG_CRYPTO_TGR192 is not set |
1534 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1535 | CONFIG_CRYPTO_ECB=m | ||
1536 | CONFIG_CRYPTO_CBC=m | ||
1537 | CONFIG_CRYPTO_PCBC=m | ||
1538 | # CONFIG_CRYPTO_LRW is not set | ||
1376 | CONFIG_CRYPTO_DES=m | 1539 | CONFIG_CRYPTO_DES=m |
1540 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1377 | # CONFIG_CRYPTO_BLOWFISH is not set | 1541 | # CONFIG_CRYPTO_BLOWFISH is not set |
1378 | # CONFIG_CRYPTO_TWOFISH is not set | 1542 | # CONFIG_CRYPTO_TWOFISH is not set |
1379 | # CONFIG_CRYPTO_SERPENT is not set | 1543 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1387,6 +1551,7 @@ CONFIG_CRYPTO_DES=m | |||
1387 | # CONFIG_CRYPTO_DEFLATE is not set | 1551 | # CONFIG_CRYPTO_DEFLATE is not set |
1388 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1552 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1389 | # CONFIG_CRYPTO_CRC32C is not set | 1553 | # CONFIG_CRYPTO_CRC32C is not set |
1554 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1390 | # CONFIG_CRYPTO_TEST is not set | 1555 | # CONFIG_CRYPTO_TEST is not set |
1391 | 1556 | ||
1392 | # | 1557 | # |
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c index 75a2a2c12258..2236fabbb3c6 100644 --- a/arch/ia64/kernel/asm-offsets.c +++ b/arch/ia64/kernel/asm-offsets.c | |||
@@ -35,6 +35,7 @@ void foo(void) | |||
35 | BLANK(); | 35 | BLANK(); |
36 | 36 | ||
37 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); | 37 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); |
38 | DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); | ||
38 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); | 39 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); |
39 | 40 | ||
40 | BLANK(); | 41 | BLANK(); |
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c index 5cdd2f5fa064..80a94e707827 100644 --- a/arch/ia64/kernel/crash.c +++ b/arch/ia64/kernel/crash.c | |||
@@ -21,9 +21,9 @@ | |||
21 | #include <asm/mca.h> | 21 | #include <asm/mca.h> |
22 | 22 | ||
23 | int kdump_status[NR_CPUS]; | 23 | int kdump_status[NR_CPUS]; |
24 | atomic_t kdump_cpu_freezed; | 24 | static atomic_t kdump_cpu_frozen; |
25 | atomic_t kdump_in_progress; | 25 | atomic_t kdump_in_progress; |
26 | int kdump_on_init = 1; | 26 | static int kdump_on_init = 1; |
27 | 27 | ||
28 | static inline Elf64_Word | 28 | static inline Elf64_Word |
29 | *append_elf_note(Elf64_Word *buf, char *name, unsigned type, void *data, | 29 | *append_elf_note(Elf64_Word *buf, char *name, unsigned type, void *data, |
@@ -86,7 +86,7 @@ kdump_wait_cpu_freeze(void) | |||
86 | int cpu_num = num_online_cpus() - 1; | 86 | int cpu_num = num_online_cpus() - 1; |
87 | int timeout = 1000; | 87 | int timeout = 1000; |
88 | while(timeout-- > 0) { | 88 | while(timeout-- > 0) { |
89 | if (atomic_read(&kdump_cpu_freezed) == cpu_num) | 89 | if (atomic_read(&kdump_cpu_frozen) == cpu_num) |
90 | return 0; | 90 | return 0; |
91 | udelay(1000); | 91 | udelay(1000); |
92 | } | 92 | } |
@@ -108,8 +108,8 @@ machine_crash_shutdown(struct pt_regs *pt) | |||
108 | kexec_disable_iosapic(); | 108 | kexec_disable_iosapic(); |
109 | #ifdef CONFIG_SMP | 109 | #ifdef CONFIG_SMP |
110 | kdump_smp_send_stop(); | 110 | kdump_smp_send_stop(); |
111 | /* not all cpu response to IPI, send INIT to freeze them */ | ||
111 | if (kdump_wait_cpu_freeze() && kdump_on_init) { | 112 | if (kdump_wait_cpu_freeze() && kdump_on_init) { |
112 | //not all cpu response to IPI, send INIT to freeze them | ||
113 | kdump_smp_send_init(); | 113 | kdump_smp_send_init(); |
114 | } | 114 | } |
115 | #endif | 115 | #endif |
@@ -136,7 +136,7 @@ kdump_cpu_freeze(struct unw_frame_info *info, void *arg) | |||
136 | cpuid = smp_processor_id(); | 136 | cpuid = smp_processor_id(); |
137 | crash_save_this_cpu(); | 137 | crash_save_this_cpu(); |
138 | current->thread.ksp = (__u64)info->sw - 16; | 138 | current->thread.ksp = (__u64)info->sw - 16; |
139 | atomic_inc(&kdump_cpu_freezed); | 139 | atomic_inc(&kdump_cpu_frozen); |
140 | kdump_status[cpuid] = 1; | 140 | kdump_status[cpuid] = 1; |
141 | mb(); | 141 | mb(); |
142 | #ifdef CONFIG_HOTPLUG_CPU | 142 | #ifdef CONFIG_HOTPLUG_CPU |
@@ -164,7 +164,7 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data) | |||
164 | 164 | ||
165 | nd = (struct ia64_mca_notify_die *)args->err; | 165 | nd = (struct ia64_mca_notify_die *)args->err; |
166 | /* Reason code 1 means machine check rendezous*/ | 166 | /* Reason code 1 means machine check rendezous*/ |
167 | if ((val == DIE_INIT_MONARCH_ENTER || DIE_INIT_SLAVE_ENTER) && | 167 | if ((val == DIE_INIT_MONARCH_ENTER || val == DIE_INIT_SLAVE_ENTER) && |
168 | nd->sos->rv_rc == 1) | 168 | nd->sos->rv_rc == 1) |
169 | return NOTIFY_DONE; | 169 | return NOTIFY_DONE; |
170 | 170 | ||
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 4061593e5b17..f45f91d38cab 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -971,6 +971,11 @@ efi_memmap_init(unsigned long *s, unsigned long *e) | |||
971 | if (!is_memory_available(md)) | 971 | if (!is_memory_available(md)) |
972 | continue; | 972 | continue; |
973 | 973 | ||
974 | #ifdef CONFIG_CRASH_DUMP | ||
975 | /* saved_max_pfn should ignore max_addr= command line arg */ | ||
976 | if (saved_max_pfn < (efi_md_end(md) >> PAGE_SHIFT)) | ||
977 | saved_max_pfn = (efi_md_end(md) >> PAGE_SHIFT); | ||
978 | #endif | ||
974 | /* | 979 | /* |
975 | * Round ends inward to granule boundaries | 980 | * Round ends inward to granule boundaries |
976 | * Give trimmings to uncached allocator | 981 | * Give trimmings to uncached allocator |
@@ -1010,11 +1015,6 @@ efi_memmap_init(unsigned long *s, unsigned long *e) | |||
1010 | } else | 1015 | } else |
1011 | ae = efi_md_end(md); | 1016 | ae = efi_md_end(md); |
1012 | 1017 | ||
1013 | #ifdef CONFIG_CRASH_DUMP | ||
1014 | /* saved_max_pfn should ignore max_addr= command line arg */ | ||
1015 | if (saved_max_pfn < (ae >> PAGE_SHIFT)) | ||
1016 | saved_max_pfn = (ae >> PAGE_SHIFT); | ||
1017 | #endif | ||
1018 | /* keep within max_addr= and min_addr= command line arg */ | 1018 | /* keep within max_addr= and min_addr= command line arg */ |
1019 | as = max(as, min_addr); | 1019 | as = max(as, min_addr); |
1020 | ae = min(ae, max_addr); | 1020 | ae = min(ae, max_addr); |
@@ -1142,7 +1142,7 @@ efi_initialize_iomem_resources(struct resource *code_resource, | |||
1142 | /* find a block of memory aligned to 64M exclude reserved regions | 1142 | /* find a block of memory aligned to 64M exclude reserved regions |
1143 | rsvd_regions are sorted | 1143 | rsvd_regions are sorted |
1144 | */ | 1144 | */ |
1145 | unsigned long | 1145 | unsigned long __init |
1146 | kdump_find_rsvd_region (unsigned long size, | 1146 | kdump_find_rsvd_region (unsigned long size, |
1147 | struct rsvd_region *r, int n) | 1147 | struct rsvd_region *r, int n) |
1148 | { | 1148 | { |
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S index 7a05b1cb2ad5..8589e84a27c6 100644 --- a/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S | |||
@@ -10,6 +10,8 @@ | |||
10 | * probably broke it along the way... ;-) | 10 | * probably broke it along the way... ;-) |
11 | * 13-Jul-04 clameter Implement fsys_clock_gettime and revise fsys_gettimeofday to make | 11 | * 13-Jul-04 clameter Implement fsys_clock_gettime and revise fsys_gettimeofday to make |
12 | * it capable of using memory based clocks without falling back to C code. | 12 | * it capable of using memory based clocks without falling back to C code. |
13 | * 08-Feb-07 Fenghua Yu Implement fsys_getcpu. | ||
14 | * | ||
13 | */ | 15 | */ |
14 | 16 | ||
15 | #include <asm/asmmacro.h> | 17 | #include <asm/asmmacro.h> |
@@ -505,6 +507,59 @@ EX(.fail_efault, (p15) st8 [r34]=r3) | |||
505 | #endif | 507 | #endif |
506 | END(fsys_rt_sigprocmask) | 508 | END(fsys_rt_sigprocmask) |
507 | 509 | ||
510 | /* | ||
511 | * fsys_getcpu doesn't use the third parameter in this implementation. It reads | ||
512 | * current_thread_info()->cpu and corresponding node in cpu_to_node_map. | ||
513 | */ | ||
514 | ENTRY(fsys_getcpu) | ||
515 | .prologue | ||
516 | .altrp b6 | ||
517 | .body | ||
518 | ;; | ||
519 | add r2=TI_FLAGS+IA64_TASK_SIZE,r16 | ||
520 | tnat.nz p6,p0 = r32 // guard against NaT argument | ||
521 | add r3=TI_CPU+IA64_TASK_SIZE,r16 | ||
522 | ;; | ||
523 | ld4 r3=[r3] // M r3 = thread_info->cpu | ||
524 | ld4 r2=[r2] // M r2 = thread_info->flags | ||
525 | (p6) br.cond.spnt.few .fail_einval // B | ||
526 | ;; | ||
527 | tnat.nz p7,p0 = r33 // I guard against NaT argument | ||
528 | (p7) br.cond.spnt.few .fail_einval // B | ||
529 | #ifdef CONFIG_NUMA | ||
530 | movl r17=cpu_to_node_map | ||
531 | ;; | ||
532 | EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles | ||
533 | EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles | ||
534 | shladd r18=r3,1,r17 | ||
535 | ;; | ||
536 | ld2 r20=[r18] // r20 = cpu_to_node_map[cpu] | ||
537 | and r2 = TIF_ALLWORK_MASK,r2 | ||
538 | ;; | ||
539 | cmp.ne p8,p0=0,r2 | ||
540 | (p8) br.spnt.many fsys_fallback_syscall | ||
541 | ;; | ||
542 | ;; | ||
543 | EX(.fail_efault, st4 [r32] = r3) | ||
544 | EX(.fail_efault, st2 [r33] = r20) | ||
545 | mov r8=0 | ||
546 | ;; | ||
547 | #else | ||
548 | EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles | ||
549 | EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles | ||
550 | and r2 = TIF_ALLWORK_MASK,r2 | ||
551 | ;; | ||
552 | cmp.ne p8,p0=0,r2 | ||
553 | (p8) br.spnt.many fsys_fallback_syscall | ||
554 | ;; | ||
555 | EX(.fail_efault, st4 [r32] = r3) | ||
556 | EX(.fail_efault, st2 [r33] = r0) | ||
557 | mov r8=0 | ||
558 | ;; | ||
559 | #endif | ||
560 | FSYS_RETURN | ||
561 | END(fsys_getcpu) | ||
562 | |||
508 | ENTRY(fsys_fallback_syscall) | 563 | ENTRY(fsys_fallback_syscall) |
509 | .prologue | 564 | .prologue |
510 | .altrp b6 | 565 | .altrp b6 |
@@ -878,6 +933,56 @@ fsyscall_table: | |||
878 | data8 0 // timer_delete | 933 | data8 0 // timer_delete |
879 | data8 0 // clock_settime | 934 | data8 0 // clock_settime |
880 | data8 fsys_clock_gettime // clock_gettime | 935 | data8 fsys_clock_gettime // clock_gettime |
936 | data8 0 // clock_getres // 1255 | ||
937 | data8 0 // clock_nanosleep | ||
938 | data8 0 // fstatfs64 | ||
939 | data8 0 // statfs64 | ||
940 | data8 0 // mbind | ||
941 | data8 0 // get_mempolicy // 1260 | ||
942 | data8 0 // set_mempolicy | ||
943 | data8 0 // mq_open | ||
944 | data8 0 // mq_unlink | ||
945 | data8 0 // mq_timedsend | ||
946 | data8 0 // mq_timedreceive // 1265 | ||
947 | data8 0 // mq_notify | ||
948 | data8 0 // mq_getsetattr | ||
949 | data8 0 // kexec_load | ||
950 | data8 0 // vserver | ||
951 | data8 0 // waitid // 1270 | ||
952 | data8 0 // add_key | ||
953 | data8 0 // request_key | ||
954 | data8 0 // keyctl | ||
955 | data8 0 // ioprio_set | ||
956 | data8 0 // ioprio_get // 1275 | ||
957 | data8 0 // move_pages | ||
958 | data8 0 // inotify_init | ||
959 | data8 0 // inotify_add_watch | ||
960 | data8 0 // inotify_rm_watch | ||
961 | data8 0 // migrate_pages // 1280 | ||
962 | data8 0 // openat | ||
963 | data8 0 // mkdirat | ||
964 | data8 0 // mknodat | ||
965 | data8 0 // fchownat | ||
966 | data8 0 // futimesat // 1285 | ||
967 | data8 0 // newfstatat | ||
968 | data8 0 // unlinkat | ||
969 | data8 0 // renameat | ||
970 | data8 0 // linkat | ||
971 | data8 0 // symlinkat // 1290 | ||
972 | data8 0 // readlinkat | ||
973 | data8 0 // fchmodat | ||
974 | data8 0 // faccessat | ||
975 | data8 0 | ||
976 | data8 0 // 1295 | ||
977 | data8 0 // unshare | ||
978 | data8 0 // splice | ||
979 | data8 0 // set_robust_list | ||
980 | data8 0 // get_robust_list | ||
981 | data8 0 // sync_file_range // 1300 | ||
982 | data8 0 // tee | ||
983 | data8 0 // vmsplice | ||
984 | data8 0 | ||
985 | data8 fsys_getcpu // getcpu // 1304 | ||
881 | 986 | ||
882 | // fill in zeros for the remaining entries | 987 | // fill in zeros for the remaining entries |
883 | .zero: | 988 | .zero: |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index d6aab40c6416..dcfbf3e7a9ef 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -446,7 +446,7 @@ iosapic_end_level_irq (unsigned int irq) | |||
446 | #define iosapic_disable_level_irq mask_irq | 446 | #define iosapic_disable_level_irq mask_irq |
447 | #define iosapic_ack_level_irq nop | 447 | #define iosapic_ack_level_irq nop |
448 | 448 | ||
449 | struct hw_interrupt_type irq_type_iosapic_level = { | 449 | struct irq_chip irq_type_iosapic_level = { |
450 | .name = "IO-SAPIC-level", | 450 | .name = "IO-SAPIC-level", |
451 | .startup = iosapic_startup_level_irq, | 451 | .startup = iosapic_startup_level_irq, |
452 | .shutdown = iosapic_shutdown_level_irq, | 452 | .shutdown = iosapic_shutdown_level_irq, |
@@ -454,6 +454,8 @@ struct hw_interrupt_type irq_type_iosapic_level = { | |||
454 | .disable = iosapic_disable_level_irq, | 454 | .disable = iosapic_disable_level_irq, |
455 | .ack = iosapic_ack_level_irq, | 455 | .ack = iosapic_ack_level_irq, |
456 | .end = iosapic_end_level_irq, | 456 | .end = iosapic_end_level_irq, |
457 | .mask = mask_irq, | ||
458 | .unmask = unmask_irq, | ||
457 | .set_affinity = iosapic_set_affinity | 459 | .set_affinity = iosapic_set_affinity |
458 | }; | 460 | }; |
459 | 461 | ||
@@ -493,7 +495,7 @@ iosapic_ack_edge_irq (unsigned int irq) | |||
493 | #define iosapic_disable_edge_irq nop | 495 | #define iosapic_disable_edge_irq nop |
494 | #define iosapic_end_edge_irq nop | 496 | #define iosapic_end_edge_irq nop |
495 | 497 | ||
496 | struct hw_interrupt_type irq_type_iosapic_edge = { | 498 | struct irq_chip irq_type_iosapic_edge = { |
497 | .name = "IO-SAPIC-edge", | 499 | .name = "IO-SAPIC-edge", |
498 | .startup = iosapic_startup_edge_irq, | 500 | .startup = iosapic_startup_edge_irq, |
499 | .shutdown = iosapic_disable_edge_irq, | 501 | .shutdown = iosapic_disable_edge_irq, |
@@ -501,6 +503,8 @@ struct hw_interrupt_type irq_type_iosapic_edge = { | |||
501 | .disable = iosapic_disable_edge_irq, | 503 | .disable = iosapic_disable_edge_irq, |
502 | .ack = iosapic_ack_edge_irq, | 504 | .ack = iosapic_ack_edge_irq, |
503 | .end = iosapic_end_edge_irq, | 505 | .end = iosapic_end_edge_irq, |
506 | .mask = mask_irq, | ||
507 | .unmask = unmask_irq, | ||
504 | .set_affinity = iosapic_set_affinity | 508 | .set_affinity = iosapic_set_affinity |
505 | }; | 509 | }; |
506 | 510 | ||
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index a76add3e76a2..491687f84fb5 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
@@ -1192,8 +1192,6 @@ void | |||
1192 | ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw, | 1192 | ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw, |
1193 | struct ia64_sal_os_state *sos) | 1193 | struct ia64_sal_os_state *sos) |
1194 | { | 1194 | { |
1195 | pal_processor_state_info_t *psp = (pal_processor_state_info_t *) | ||
1196 | &sos->proc_state_param; | ||
1197 | int recover, cpu = smp_processor_id(); | 1195 | int recover, cpu = smp_processor_id(); |
1198 | struct task_struct *previous_current; | 1196 | struct task_struct *previous_current; |
1199 | struct ia64_mca_notify_die nd = | 1197 | struct ia64_mca_notify_die nd = |
@@ -1223,10 +1221,8 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw, | |||
1223 | /* Get the MCA error record and log it */ | 1221 | /* Get the MCA error record and log it */ |
1224 | ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA); | 1222 | ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA); |
1225 | 1223 | ||
1226 | /* TLB error is only exist in this SAL error record */ | 1224 | /* MCA error recovery */ |
1227 | recover = (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc)) | 1225 | recover = (ia64_mca_ucmc_extension |
1228 | /* other error recovery */ | ||
1229 | || (ia64_mca_ucmc_extension | ||
1230 | && ia64_mca_ucmc_extension( | 1226 | && ia64_mca_ucmc_extension( |
1231 | IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA), | 1227 | IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA), |
1232 | sos)); | 1228 | sos)); |
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index afc1403799c9..832cf1e647e8 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
@@ -602,11 +602,40 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, | |||
602 | default: | 602 | default: |
603 | break; | 603 | break; |
604 | } | 604 | } |
605 | } else if (psp->cc && !psp->bc) { /* Cache error */ | ||
606 | status = recover_from_read_error(slidx, peidx, pbci, sos); | ||
605 | } | 607 | } |
606 | 608 | ||
607 | return status; | 609 | return status; |
608 | } | 610 | } |
609 | 611 | ||
612 | /* | ||
613 | * recover_from_tlb_check | ||
614 | * @peidx: pointer of index of processor error section | ||
615 | * | ||
616 | * Return value: | ||
617 | * 1 on Success / 0 on Failure | ||
618 | */ | ||
619 | static int | ||
620 | recover_from_tlb_check(peidx_table_t *peidx) | ||
621 | { | ||
622 | sal_log_mod_error_info_t *smei; | ||
623 | pal_tlb_check_info_t *ptci; | ||
624 | |||
625 | smei = (sal_log_mod_error_info_t *)peidx_tlb_check(peidx, 0); | ||
626 | ptci = (pal_tlb_check_info_t *)&(smei->check_info); | ||
627 | |||
628 | /* | ||
629 | * Look for signature of a duplicate TLB DTC entry, which is | ||
630 | * a SW bug and always fatal. | ||
631 | */ | ||
632 | if (ptci->op == PAL_TLB_CHECK_OP_PURGE | ||
633 | && !(ptci->itr || ptci->dtc || ptci->itc)) | ||
634 | return fatal_mca("Duplicate TLB entry"); | ||
635 | |||
636 | return mca_recovered("TLB check recovered"); | ||
637 | } | ||
638 | |||
610 | /** | 639 | /** |
611 | * recover_from_processor_error | 640 | * recover_from_processor_error |
612 | * @platform: whether there are some platform error section or not | 641 | * @platform: whether there are some platform error section or not |
@@ -618,13 +647,6 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, | |||
618 | * Return value: | 647 | * Return value: |
619 | * 1 on Success / 0 on Failure | 648 | * 1 on Success / 0 on Failure |
620 | */ | 649 | */ |
621 | /* | ||
622 | * Later we try to recover when below all conditions are satisfied. | ||
623 | * 1. Only one processor error section is exist. | ||
624 | * 2. BUS_CHECK is exist and the others are not exist.(Except TLB_CHECK) | ||
625 | * 3. The entry of BUS_CHECK_INFO is 1. | ||
626 | * 4. "External bus error" flag is set and the others are not set. | ||
627 | */ | ||
628 | 650 | ||
629 | static int | 651 | static int |
630 | recover_from_processor_error(int platform, slidx_table_t *slidx, | 652 | recover_from_processor_error(int platform, slidx_table_t *slidx, |
@@ -652,38 +674,39 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, | |||
652 | return fatal_mca("error not contained"); | 674 | return fatal_mca("error not contained"); |
653 | 675 | ||
654 | /* | 676 | /* |
677 | * Look for recoverable TLB check | ||
678 | */ | ||
679 | if (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc)) | ||
680 | return recover_from_tlb_check(peidx); | ||
681 | |||
682 | /* | ||
655 | * The cache check and bus check bits have four possible states | 683 | * The cache check and bus check bits have four possible states |
656 | * cc bc | 684 | * cc bc |
657 | * 0 0 Weird record, not recovered | ||
658 | * 1 0 Cache error, not recovered | ||
659 | * 0 1 I/O error, attempt recovery | ||
660 | * 1 1 Memory error, attempt recovery | 685 | * 1 1 Memory error, attempt recovery |
686 | * 1 0 Cache error, attempt recovery | ||
687 | * 0 1 I/O error, attempt recovery | ||
688 | * 0 0 Other error type, not recovered | ||
661 | */ | 689 | */ |
662 | if (psp->bc == 0 || pbci == NULL) | 690 | if (psp->cc == 0 && (psp->bc == 0 || pbci == NULL)) |
663 | return fatal_mca("No bus check"); | 691 | return fatal_mca("No cache or bus check"); |
664 | 692 | ||
665 | /* | 693 | /* |
666 | * Sorry, we cannot handle so many. | 694 | * Cannot handle more than one bus check. |
667 | */ | 695 | */ |
668 | if (peidx_bus_check_num(peidx) > 1) | 696 | if (peidx_bus_check_num(peidx) > 1) |
669 | return fatal_mca("Too many bus checks"); | 697 | return fatal_mca("Too many bus checks"); |
670 | /* | 698 | |
671 | * Well, here is only one bus error. | ||
672 | */ | ||
673 | if (pbci->ib) | 699 | if (pbci->ib) |
674 | return fatal_mca("Internal Bus error"); | 700 | return fatal_mca("Internal Bus error"); |
675 | if (pbci->cc) | ||
676 | return fatal_mca("Cache-cache error"); | ||
677 | if (pbci->eb && pbci->bsi > 0) | 701 | if (pbci->eb && pbci->bsi > 0) |
678 | return fatal_mca("External bus check fatal status"); | 702 | return fatal_mca("External bus check fatal status"); |
679 | 703 | ||
680 | /* | 704 | /* |
681 | * This is a local MCA and estimated as recoverble external bus error. | 705 | * This is a local MCA and estimated as a recoverble error. |
682 | * (e.g. a load from poisoned memory) | ||
683 | * This means "there are some platform errors". | ||
684 | */ | 706 | */ |
685 | if (platform) | 707 | if (platform) |
686 | return recover_from_platform_error(slidx, peidx, pbci, sos); | 708 | return recover_from_platform_error(slidx, peidx, pbci, sos); |
709 | |||
687 | /* | 710 | /* |
688 | * On account of strange SAL error record, we cannot recover. | 711 | * On account of strange SAL error record, we cannot recover. |
689 | */ | 712 | */ |
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c index e7220900ea14..c81080df70df 100644 --- a/arch/ia64/kernel/msi_ia64.c +++ b/arch/ia64/kernel/msi_ia64.c | |||
@@ -68,7 +68,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) | |||
68 | { | 68 | { |
69 | struct msi_msg msg; | 69 | struct msi_msg msg; |
70 | unsigned long dest_phys_id; | 70 | unsigned long dest_phys_id; |
71 | unsigned int irq, vector; | 71 | int irq, vector; |
72 | 72 | ||
73 | irq = create_irq(); | 73 | irq = create_irq(); |
74 | if (irq < 0) | 74 | if (irq < 0) |
@@ -76,7 +76,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) | |||
76 | 76 | ||
77 | set_irq_msi(irq, desc); | 77 | set_irq_msi(irq, desc); |
78 | dest_phys_id = cpu_physical_id(first_cpu(cpu_online_map)); | 78 | dest_phys_id = cpu_physical_id(first_cpu(cpu_online_map)); |
79 | vector = irq; | 79 | vector = irq_to_vector(irq); |
80 | 80 | ||
81 | msg.address_hi = 0; | 81 | msg.address_hi = 0; |
82 | msg.address_lo = | 82 | msg.address_lo = |
@@ -110,7 +110,7 @@ static void ia64_ack_msi_irq(unsigned int irq) | |||
110 | 110 | ||
111 | static int ia64_msi_retrigger_irq(unsigned int irq) | 111 | static int ia64_msi_retrigger_irq(unsigned int irq) |
112 | { | 112 | { |
113 | unsigned int vector = irq; | 113 | unsigned int vector = irq_to_vector(irq); |
114 | ia64_resend_irq(vector); | 114 | ia64_resend_irq(vector); |
115 | 115 | ||
116 | return 1; | 116 | return 1; |
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 3f8918782e0c..00f803246948 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
@@ -1573,6 +1573,7 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data) | |||
1573 | 1573 | ||
1574 | case PTRACE_DETACH: | 1574 | case PTRACE_DETACH: |
1575 | /* detach a process that was attached. */ | 1575 | /* detach a process that was attached. */ |
1576 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | ||
1576 | ret = ptrace_detach(child, data); | 1577 | ret = ptrace_detach(child, data); |
1577 | goto out_tsk; | 1578 | goto out_tsk; |
1578 | 1579 | ||
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 7d6fe65c93f4..dc7dd7648ec5 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -91,8 +91,6 @@ static struct resource code_resource = { | |||
91 | .name = "Kernel code", | 91 | .name = "Kernel code", |
92 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | 92 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM |
93 | }; | 93 | }; |
94 | extern void efi_initialize_iomem_resources(struct resource *, | ||
95 | struct resource *); | ||
96 | extern char _text[], _end[], _etext[]; | 94 | extern char _text[], _end[], _etext[]; |
97 | 95 | ||
98 | unsigned long ia64_max_cacheline_size; | 96 | unsigned long ia64_max_cacheline_size; |
@@ -642,7 +640,7 @@ show_cpuinfo (struct seq_file *m, void *v) | |||
642 | "features : %s\n" | 640 | "features : %s\n" |
643 | "cpu number : %lu\n" | 641 | "cpu number : %lu\n" |
644 | "cpu regs : %u\n" | 642 | "cpu regs : %u\n" |
645 | "cpu MHz : %lu.%06lu\n" | 643 | "cpu MHz : %lu.%03lu\n" |
646 | "itc MHz : %lu.%06lu\n" | 644 | "itc MHz : %lu.%06lu\n" |
647 | "BogoMIPS : %lu.%02lu\n", | 645 | "BogoMIPS : %lu.%02lu\n", |
648 | cpunum, c->vendor, c->family, c->model, | 646 | cpunum, c->vendor, c->family, c->model, |
@@ -694,12 +692,15 @@ struct seq_operations cpuinfo_op = { | |||
694 | .show = show_cpuinfo | 692 | .show = show_cpuinfo |
695 | }; | 693 | }; |
696 | 694 | ||
697 | static char brandname[128]; | 695 | #define MAX_BRANDS 8 |
696 | static char brandname[MAX_BRANDS][128]; | ||
698 | 697 | ||
699 | static char * __cpuinit | 698 | static char * __cpuinit |
700 | get_model_name(__u8 family, __u8 model) | 699 | get_model_name(__u8 family, __u8 model) |
701 | { | 700 | { |
701 | static int overflow; | ||
702 | char brand[128]; | 702 | char brand[128]; |
703 | int i; | ||
703 | 704 | ||
704 | memcpy(brand, "Unknown", 8); | 705 | memcpy(brand, "Unknown", 8); |
705 | if (ia64_pal_get_brand_info(brand)) { | 706 | if (ia64_pal_get_brand_info(brand)) { |
@@ -711,12 +712,17 @@ get_model_name(__u8 family, __u8 model) | |||
711 | case 2: memcpy(brand, "Madison up to 9M cache", 23); break; | 712 | case 2: memcpy(brand, "Madison up to 9M cache", 23); break; |
712 | } | 713 | } |
713 | } | 714 | } |
714 | if (brandname[0] == '\0') | 715 | for (i = 0; i < MAX_BRANDS; i++) |
715 | return strcpy(brandname, brand); | 716 | if (strcmp(brandname[i], brand) == 0) |
716 | else if (strcmp(brandname, brand) == 0) | 717 | return brandname[i]; |
717 | return brandname; | 718 | for (i = 0; i < MAX_BRANDS; i++) |
718 | else | 719 | if (brandname[i][0] == '\0') |
719 | return kstrdup(brand, GFP_KERNEL); | 720 | return strcpy(brandname[i], brand); |
721 | if (overflow++ == 0) | ||
722 | printk(KERN_ERR | ||
723 | "%s: Table overflow. Some processor model information will be missing\n", | ||
724 | __FUNCTION__); | ||
725 | return "Unknown"; | ||
720 | } | 726 | } |
721 | 727 | ||
722 | static void __cpuinit | 728 | static void __cpuinit |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index b21ddecea943..ff7df439da6d 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -375,6 +375,7 @@ static void __devinit | |||
375 | smp_callin (void) | 375 | smp_callin (void) |
376 | { | 376 | { |
377 | int cpuid, phys_id, itc_master; | 377 | int cpuid, phys_id, itc_master; |
378 | struct cpuinfo_ia64 *last_cpuinfo, *this_cpuinfo; | ||
378 | extern void ia64_init_itm(void); | 379 | extern void ia64_init_itm(void); |
379 | extern volatile int time_keeper_id; | 380 | extern volatile int time_keeper_id; |
380 | 381 | ||
@@ -424,7 +425,21 @@ smp_callin (void) | |||
424 | * Get our bogomips. | 425 | * Get our bogomips. |
425 | */ | 426 | */ |
426 | ia64_init_itm(); | 427 | ia64_init_itm(); |
427 | calibrate_delay(); | 428 | |
429 | /* | ||
430 | * Delay calibration can be skipped if new processor is identical to the | ||
431 | * previous processor. | ||
432 | */ | ||
433 | last_cpuinfo = cpu_data(cpuid - 1); | ||
434 | this_cpuinfo = local_cpu_data; | ||
435 | if (last_cpuinfo->itc_freq != this_cpuinfo->itc_freq || | ||
436 | last_cpuinfo->proc_freq != this_cpuinfo->proc_freq || | ||
437 | last_cpuinfo->features != this_cpuinfo->features || | ||
438 | last_cpuinfo->revision != this_cpuinfo->revision || | ||
439 | last_cpuinfo->family != this_cpuinfo->family || | ||
440 | last_cpuinfo->archrev != this_cpuinfo->archrev || | ||
441 | last_cpuinfo->model != this_cpuinfo->model) | ||
442 | calibrate_delay(); | ||
428 | local_cpu_data->loops_per_jiffy = loops_per_jiffy; | 443 | local_cpu_data->loops_per_jiffy = loops_per_jiffy; |
429 | 444 | ||
430 | #ifdef CONFIG_IA32_SUPPORT | 445 | #ifdef CONFIG_IA32_SUPPORT |
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index fb0f4698f5d0..44ce5ed9444c 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c | |||
@@ -97,26 +97,6 @@ void show_mem(void) | |||
97 | unsigned long bootmap_start; | 97 | unsigned long bootmap_start; |
98 | 98 | ||
99 | /** | 99 | /** |
100 | * find_max_pfn - adjust the maximum page number callback | ||
101 | * @start: start of range | ||
102 | * @end: end of range | ||
103 | * @arg: address of pointer to global max_pfn variable | ||
104 | * | ||
105 | * Passed as a callback function to efi_memmap_walk() to determine the highest | ||
106 | * available page frame number in the system. | ||
107 | */ | ||
108 | int | ||
109 | find_max_pfn (unsigned long start, unsigned long end, void *arg) | ||
110 | { | ||
111 | unsigned long *max_pfnp = arg, pfn; | ||
112 | |||
113 | pfn = (PAGE_ALIGN(end - 1) - PAGE_OFFSET) >> PAGE_SHIFT; | ||
114 | if (pfn > *max_pfnp) | ||
115 | *max_pfnp = pfn; | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | /** | ||
120 | * find_bootmap_location - callback to find a memory area for the bootmap | 100 | * find_bootmap_location - callback to find a memory area for the bootmap |
121 | * @start: start of region | 101 | * @start: start of region |
122 | * @end: end of region | 102 | * @end: end of region |
@@ -177,9 +157,10 @@ find_memory (void) | |||
177 | reserve_memory(); | 157 | reserve_memory(); |
178 | 158 | ||
179 | /* first find highest page frame number */ | 159 | /* first find highest page frame number */ |
180 | max_pfn = 0; | 160 | min_low_pfn = ~0UL; |
181 | efi_memmap_walk(find_max_pfn, &max_pfn); | 161 | max_low_pfn = 0; |
182 | 162 | efi_memmap_walk(find_max_min_low_pfn, NULL); | |
163 | max_pfn = max_low_pfn; | ||
183 | /* how many bytes to cover all the pages */ | 164 | /* how many bytes to cover all the pages */ |
184 | bootmap_size = bootmem_bootmap_pages(max_pfn) << PAGE_SHIFT; | 165 | bootmap_size = bootmem_bootmap_pages(max_pfn) << PAGE_SHIFT; |
185 | 166 | ||
@@ -189,7 +170,8 @@ find_memory (void) | |||
189 | if (bootmap_start == ~0UL) | 170 | if (bootmap_start == ~0UL) |
190 | panic("Cannot find %ld bytes for bootmap\n", bootmap_size); | 171 | panic("Cannot find %ld bytes for bootmap\n", bootmap_size); |
191 | 172 | ||
192 | bootmap_size = init_bootmem(bootmap_start >> PAGE_SHIFT, max_pfn); | 173 | bootmap_size = init_bootmem_node(NODE_DATA(0), |
174 | (bootmap_start >> PAGE_SHIFT), 0, max_pfn); | ||
193 | 175 | ||
194 | /* Free all available memory, then mark bootmem-map as being in use. */ | 176 | /* Free all available memory, then mark bootmem-map as being in use. */ |
195 | efi_memmap_walk(filter_rsvd_memory, free_bootmem); | 177 | efi_memmap_walk(filter_rsvd_memory, free_bootmem); |
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 11a2d8825d89..872da7a2accd 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -88,9 +88,6 @@ static int __init build_node_maps(unsigned long start, unsigned long len, | |||
88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); | 88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); |
89 | } | 89 | } |
90 | 90 | ||
91 | min_low_pfn = min(min_low_pfn, bdp->node_boot_start>>PAGE_SHIFT); | ||
92 | max_low_pfn = max(max_low_pfn, bdp->node_low_pfn); | ||
93 | |||
94 | return 0; | 91 | return 0; |
95 | } | 92 | } |
96 | 93 | ||
@@ -438,6 +435,7 @@ void __init find_memory(void) | |||
438 | /* These actually end up getting called by call_pernode_memory() */ | 435 | /* These actually end up getting called by call_pernode_memory() */ |
439 | efi_memmap_walk(filter_rsvd_memory, build_node_maps); | 436 | efi_memmap_walk(filter_rsvd_memory, build_node_maps); |
440 | efi_memmap_walk(filter_rsvd_memory, find_pernode_space); | 437 | efi_memmap_walk(filter_rsvd_memory, find_pernode_space); |
438 | efi_memmap_walk(find_max_min_low_pfn, NULL); | ||
441 | 439 | ||
442 | for_each_online_node(node) | 440 | for_each_online_node(node) |
443 | if (mem_data[node].bootmem_data.node_low_pfn) { | 441 | if (mem_data[node].bootmem_data.node_low_pfn) { |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index f225dd72968b..4f36987eea72 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -155,7 +155,7 @@ ia64_set_rbs_bot (void) | |||
155 | 155 | ||
156 | if (stack_size > MAX_USER_STACK_SIZE) | 156 | if (stack_size > MAX_USER_STACK_SIZE) |
157 | stack_size = MAX_USER_STACK_SIZE; | 157 | stack_size = MAX_USER_STACK_SIZE; |
158 | current->thread.rbs_bot = STACK_TOP - stack_size; | 158 | current->thread.rbs_bot = PAGE_ALIGN(current->mm->start_stack - stack_size); |
159 | } | 159 | } |
160 | 160 | ||
161 | /* | 161 | /* |
@@ -648,6 +648,22 @@ count_reserved_pages (u64 start, u64 end, void *arg) | |||
648 | return 0; | 648 | return 0; |
649 | } | 649 | } |
650 | 650 | ||
651 | int | ||
652 | find_max_min_low_pfn (unsigned long start, unsigned long end, void *arg) | ||
653 | { | ||
654 | unsigned long pfn_start, pfn_end; | ||
655 | #ifdef CONFIG_FLATMEM | ||
656 | pfn_start = (PAGE_ALIGN(__pa(start))) >> PAGE_SHIFT; | ||
657 | pfn_end = (PAGE_ALIGN(__pa(end - 1))) >> PAGE_SHIFT; | ||
658 | #else | ||
659 | pfn_start = GRANULEROUNDDOWN(__pa(start)) >> PAGE_SHIFT; | ||
660 | pfn_end = GRANULEROUNDUP(__pa(end - 1)) >> PAGE_SHIFT; | ||
661 | #endif | ||
662 | min_low_pfn = min(min_low_pfn, pfn_start); | ||
663 | max_low_pfn = max(max_low_pfn, pfn_end); | ||
664 | return 0; | ||
665 | } | ||
666 | |||
651 | /* | 667 | /* |
652 | * Boot command-line option "nolwsys" can be used to disable the use of any light-weight | 668 | * Boot command-line option "nolwsys" can be used to disable the use of any light-weight |
653 | * system call handler. When this option is in effect, all fsyscalls will end up bubbling | 669 | * system call handler. When this option is in effect, all fsyscalls will end up bubbling |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 474d179966dc..0e83f3b419b5 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -557,14 +557,17 @@ pcibios_enable_device (struct pci_dev *dev, int mask) | |||
557 | if (ret < 0) | 557 | if (ret < 0) |
558 | return ret; | 558 | return ret; |
559 | 559 | ||
560 | return acpi_pci_irq_enable(dev); | 560 | if (!dev->msi_enabled) |
561 | return acpi_pci_irq_enable(dev); | ||
562 | return 0; | ||
561 | } | 563 | } |
562 | 564 | ||
563 | void | 565 | void |
564 | pcibios_disable_device (struct pci_dev *dev) | 566 | pcibios_disable_device (struct pci_dev *dev) |
565 | { | 567 | { |
566 | BUG_ON(atomic_read(&dev->enable_cnt)); | 568 | BUG_ON(atomic_read(&dev->enable_cnt)); |
567 | acpi_pci_irq_disable(dev); | 569 | if (!dev->msi_enabled) |
570 | acpi_pci_irq_disable(dev); | ||
568 | } | 571 | } |
569 | 572 | ||
570 | void | 573 | void |
diff --git a/arch/ia64/sn/kernel/bte_error.c b/arch/ia64/sn/kernel/bte_error.c index f1ec1370b3e3..b6fcf8164f2b 100644 --- a/arch/ia64/sn/kernel/bte_error.c +++ b/arch/ia64/sn/kernel/bte_error.c | |||
@@ -78,7 +78,7 @@ int shub1_bte_error_handler(unsigned long _nodepda) | |||
78 | * There are errors which still need to be cleaned up by | 78 | * There are errors which still need to be cleaned up by |
79 | * hubiio_crb_error_handler | 79 | * hubiio_crb_error_handler |
80 | */ | 80 | */ |
81 | mod_timer(recovery_timer, HZ * 5); | 81 | mod_timer(recovery_timer, jiffies + (HZ * 5)); |
82 | BTE_PRINTK(("eh:%p:%d Marked Giving up\n", err_nodepda, | 82 | BTE_PRINTK(("eh:%p:%d Marked Giving up\n", err_nodepda, |
83 | smp_processor_id())); | 83 | smp_processor_id())); |
84 | return 1; | 84 | return 1; |
@@ -95,7 +95,7 @@ int shub1_bte_error_handler(unsigned long _nodepda) | |||
95 | icrbd.ii_icrb0_d_regval = | 95 | icrbd.ii_icrb0_d_regval = |
96 | REMOTE_HUB_L(nasid, IIO_ICRB_D(i)); | 96 | REMOTE_HUB_L(nasid, IIO_ICRB_D(i)); |
97 | if (icrbd.d_bteop) { | 97 | if (icrbd.d_bteop) { |
98 | mod_timer(recovery_timer, HZ * 5); | 98 | mod_timer(recovery_timer, jiffies + (HZ * 5)); |
99 | BTE_PRINTK(("eh:%p:%d Valid %d, Giving up\n", | 99 | BTE_PRINTK(("eh:%p:%d Valid %d, Giving up\n", |
100 | err_nodepda, smp_processor_id(), | 100 | err_nodepda, smp_processor_id(), |
101 | i)); | 101 | i)); |
@@ -150,7 +150,7 @@ int shub2_bte_error_handler(unsigned long _nodepda) | |||
150 | status = BTE_LNSTAT_LOAD(bte); | 150 | status = BTE_LNSTAT_LOAD(bte); |
151 | if ((status & IBLS_ERROR) || !(status & IBLS_BUSY)) | 151 | if ((status & IBLS_ERROR) || !(status & IBLS_BUSY)) |
152 | continue; | 152 | continue; |
153 | mod_timer(recovery_timer, HZ * 5); | 153 | mod_timer(recovery_timer, jiffies + (HZ * 5)); |
154 | BTE_PRINTK(("eh:%p:%d Marked Giving up\n", err_nodepda, | 154 | BTE_PRINTK(("eh:%p:%d Marked Giving up\n", err_nodepda, |
155 | smp_processor_id())); | 155 | smp_processor_id())); |
156 | return 1; | 156 | return 1; |
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c index 8c331ca6e5c9..c6216f454ffb 100644 --- a/arch/ia64/sn/kernel/io_acpi_init.c +++ b/arch/ia64/sn/kernel/io_acpi_init.c | |||
@@ -53,12 +53,15 @@ sal_ioif_init(u64 *result) | |||
53 | } | 53 | } |
54 | 54 | ||
55 | /* | 55 | /* |
56 | * sn_hubdev_add - The 'add' function of the acpi_sn_hubdev_driver. | 56 | * sn_acpi_hubdev_init() - This function is called by acpi_ns_get_device_callback() |
57 | * Called for every "SGIHUB" or "SGITIO" device defined | 57 | * for all SGIHUB and SGITIO acpi devices defined in the |
58 | * in the ACPI namespace. | 58 | * DSDT. It obtains the hubdev_info pointer from the |
59 | * ACPI vendor resource, which the PROM setup, and sets up the | ||
60 | * hubdev_info in the pda. | ||
59 | */ | 61 | */ |
60 | static int __init | 62 | |
61 | sn_hubdev_add(struct acpi_device *device) | 63 | static acpi_status __init |
64 | sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret) | ||
62 | { | 65 | { |
63 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 66 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
64 | u64 addr; | 67 | u64 addr; |
@@ -67,18 +70,19 @@ sn_hubdev_add(struct acpi_device *device) | |||
67 | int i; | 70 | int i; |
68 | u64 nasid; | 71 | u64 nasid; |
69 | struct acpi_resource *resource; | 72 | struct acpi_resource *resource; |
70 | int ret = 0; | ||
71 | acpi_status status; | 73 | acpi_status status; |
72 | struct acpi_resource_vendor_typed *vendor; | 74 | struct acpi_resource_vendor_typed *vendor; |
73 | extern void sn_common_hubdev_init(struct hubdev_info *); | 75 | extern void sn_common_hubdev_init(struct hubdev_info *); |
74 | 76 | ||
75 | status = acpi_get_vendor_resource(device->handle, METHOD_NAME__CRS, | 77 | status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS, |
76 | &sn_uuid, &buffer); | 78 | &sn_uuid, &buffer); |
77 | if (ACPI_FAILURE(status)) { | 79 | if (ACPI_FAILURE(status)) { |
78 | printk(KERN_ERR | 80 | printk(KERN_ERR |
79 | "sn_hubdev_add: acpi_get_vendor_resource() failed: %d\n", | 81 | "sn_acpi_hubdev_init: acpi_get_vendor_resource() " |
80 | status); | 82 | "(0x%x) failed for: ", status); |
81 | return 1; | 83 | acpi_ns_print_node_pathname(handle, NULL); |
84 | printk("\n"); | ||
85 | return AE_OK; /* Continue walking namespace */ | ||
82 | } | 86 | } |
83 | 87 | ||
84 | resource = buffer.pointer; | 88 | resource = buffer.pointer; |
@@ -86,9 +90,10 @@ sn_hubdev_add(struct acpi_device *device) | |||
86 | if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != | 90 | if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != |
87 | sizeof(struct hubdev_info *)) { | 91 | sizeof(struct hubdev_info *)) { |
88 | printk(KERN_ERR | 92 | printk(KERN_ERR |
89 | "sn_hubdev_add: Invalid vendor data length: %d\n", | 93 | "sn_acpi_hubdev_init: Invalid vendor data length: %d for: ", |
90 | vendor->byte_length); | 94 | vendor->byte_length); |
91 | ret = 1; | 95 | acpi_ns_print_node_pathname(handle, NULL); |
96 | printk("\n"); | ||
92 | goto exit; | 97 | goto exit; |
93 | } | 98 | } |
94 | 99 | ||
@@ -103,7 +108,7 @@ sn_hubdev_add(struct acpi_device *device) | |||
103 | 108 | ||
104 | exit: | 109 | exit: |
105 | kfree(buffer.pointer); | 110 | kfree(buffer.pointer); |
106 | return ret; | 111 | return AE_OK; /* Continue walking namespace */ |
107 | } | 112 | } |
108 | 113 | ||
109 | /* | 114 | /* |
@@ -441,14 +446,6 @@ sn_acpi_slot_fixup(struct pci_dev *dev) | |||
441 | 446 | ||
442 | EXPORT_SYMBOL(sn_acpi_slot_fixup); | 447 | EXPORT_SYMBOL(sn_acpi_slot_fixup); |
443 | 448 | ||
444 | static struct acpi_driver acpi_sn_hubdev_driver = { | ||
445 | .name = "SGI HUBDEV Driver", | ||
446 | .ids = "SGIHUB,SGITIO", | ||
447 | .ops = { | ||
448 | .add = sn_hubdev_add, | ||
449 | }, | ||
450 | }; | ||
451 | |||
452 | 449 | ||
453 | /* | 450 | /* |
454 | * sn_acpi_bus_fixup - Perform SN specific setup of software structs | 451 | * sn_acpi_bus_fixup - Perform SN specific setup of software structs |
@@ -492,7 +489,10 @@ sn_io_acpi_init(void) | |||
492 | /* SN Altix does not follow the IOSAPIC IRQ routing model */ | 489 | /* SN Altix does not follow the IOSAPIC IRQ routing model */ |
493 | acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; | 490 | acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; |
494 | 491 | ||
495 | acpi_bus_register_driver(&acpi_sn_hubdev_driver); | 492 | /* Setup hubdev_info for all SGIHUB/SGITIO devices */ |
493 | acpi_get_devices("SGIHUB", sn_acpi_hubdev_init, NULL, NULL); | ||
494 | acpi_get_devices("SGITIO", sn_acpi_hubdev_init, NULL, NULL); | ||
495 | |||
496 | status = sal_ioif_init(&result); | 496 | status = sal_ioif_init(&result); |
497 | if (status || result) | 497 | if (status || result) |
498 | panic("sal_ioif_init failed: [%lx] %s\n", | 498 | panic("sal_ioif_init failed: [%lx] %s\n", |
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/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 8c5bee01eaa2..8d2a1bfbfe7c 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
@@ -205,7 +205,17 @@ static void sn_set_affinity_irq(unsigned int irq, cpumask_t mask) | |||
205 | (void)sn_retarget_vector(sn_irq_info, nasid, slice); | 205 | (void)sn_retarget_vector(sn_irq_info, nasid, slice); |
206 | } | 206 | } |
207 | 207 | ||
208 | struct hw_interrupt_type irq_type_sn = { | 208 | static void |
209 | sn_mask_irq(unsigned int irq) | ||
210 | { | ||
211 | } | ||
212 | |||
213 | static void | ||
214 | sn_unmask_irq(unsigned int irq) | ||
215 | { | ||
216 | } | ||
217 | |||
218 | struct irq_chip irq_type_sn = { | ||
209 | .name = "SN hub", | 219 | .name = "SN hub", |
210 | .startup = sn_startup_irq, | 220 | .startup = sn_startup_irq, |
211 | .shutdown = sn_shutdown_irq, | 221 | .shutdown = sn_shutdown_irq, |
@@ -213,6 +223,8 @@ struct hw_interrupt_type irq_type_sn = { | |||
213 | .disable = sn_disable_irq, | 223 | .disable = sn_disable_irq, |
214 | .ack = sn_ack_irq, | 224 | .ack = sn_ack_irq, |
215 | .end = sn_end_irq, | 225 | .end = sn_end_irq, |
226 | .mask = sn_mask_irq, | ||
227 | .unmask = sn_unmask_irq, | ||
216 | .set_affinity = sn_set_affinity_irq | 228 | .set_affinity = sn_set_affinity_irq |
217 | }; | 229 | }; |
218 | 230 | ||
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 8571e52c2efd..a9bed5ca2ed8 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
@@ -348,8 +348,7 @@ sn_scan_pcdp(void) | |||
348 | continue; /* not PCI interconnect */ | 348 | continue; /* not PCI interconnect */ |
349 | 349 | ||
350 | if (if_pci.translation & PCDP_PCI_TRANS_IOPORT) | 350 | if (if_pci.translation & PCDP_PCI_TRANS_IOPORT) |
351 | vga_console_iobase = | 351 | vga_console_iobase = if_pci.ioport_tra; |
352 | if_pci.ioport_tra | __IA64_UNCACHED_OFFSET; | ||
353 | 352 | ||
354 | if (if_pci.translation & PCDP_PCI_TRANS_MMIO) | 353 | if (if_pci.translation & PCDP_PCI_TRANS_MMIO) |
355 | vga_console_membase = | 354 | vga_console_membase = |
@@ -397,6 +396,8 @@ void __init sn_setup(char **cmdline_p) | |||
397 | ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); | 396 | ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); |
398 | ia64_sn_set_os_feature(OSF_ACPI_ENABLE); | 397 | ia64_sn_set_os_feature(OSF_ACPI_ENABLE); |
399 | 398 | ||
399 | /* Load the new DSDT and SSDT tables into the global table list. */ | ||
400 | acpi_table_init(); | ||
400 | 401 | ||
401 | #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) | 402 | #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) |
402 | /* | 403 | /* |
@@ -427,7 +428,8 @@ void __init sn_setup(char **cmdline_p) | |||
427 | * bus containing the VGA console. | 428 | * bus containing the VGA console. |
428 | */ | 429 | */ |
429 | if (vga_console_iobase) { | 430 | if (vga_console_iobase) { |
430 | io_space[0].mmio_base = vga_console_iobase; | 431 | io_space[0].mmio_base = |
432 | (unsigned long) ioremap(vga_console_iobase, 0); | ||
431 | io_space[0].sparse = 0; | 433 | io_space[0].sparse = 0; |
432 | } | 434 | } |
433 | 435 | ||
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_dma.c b/arch/ia64/sn/pci/pcibr/pcibr_dma.c index 1ee977fb6ebb..95af40cb22f2 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_dma.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_dma.c | |||
@@ -96,10 +96,14 @@ pcibr_dmamap_ate32(struct pcidev_info *info, | |||
96 | } | 96 | } |
97 | 97 | ||
98 | /* | 98 | /* |
99 | * If we're mapping for MSI, set the MSI bit in the ATE | 99 | * If we're mapping for MSI, set the MSI bit in the ATE. If it's a |
100 | * TIOCP based pci bus, we also need to set the PIO bit in the ATE. | ||
100 | */ | 101 | */ |
101 | if (dma_flags & SN_DMA_MSI) | 102 | if (dma_flags & SN_DMA_MSI) { |
102 | ate |= PCI32_ATE_MSI; | 103 | ate |= PCI32_ATE_MSI; |
104 | if (IS_TIOCP_SOFT(pcibus_info)) | ||
105 | ate |= PCI32_ATE_PIO; | ||
106 | } | ||
103 | 107 | ||
104 | ate_write(pcibus_info, ate_index, ate_count, ate); | 108 | ate_write(pcibus_info, ate_index, ate_count, ate); |
105 | 109 | ||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index a1cd84f9b3bc..c78b14380b3e 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 |
@@ -547,6 +542,8 @@ config QEMU | |||
547 | select SYS_SUPPORTS_LITTLE_ENDIAN | 542 | select SYS_SUPPORTS_LITTLE_ENDIAN |
548 | select ARCH_SPARSEMEM_ENABLE | 543 | select ARCH_SPARSEMEM_ENABLE |
549 | select GENERIC_HARDIRQS_NO__DO_IRQ | 544 | select GENERIC_HARDIRQS_NO__DO_IRQ |
545 | select NR_CPUS_DEFAULT_1 | ||
546 | select SYS_SUPPORTS_SMP | ||
550 | help | 547 | help |
551 | Qemu is a software emulator which among other architectures also | 548 | Qemu is a software emulator which among other architectures also |
552 | can simulate a MIPS32 4Kc system. This patch adds support for the | 549 | can simulate a MIPS32 4Kc system. This patch adds support for the |
@@ -1564,6 +1561,7 @@ config MIPS_MT_SMP | |||
1564 | select CPU_MIPSR2_IRQ_VI | 1561 | select CPU_MIPSR2_IRQ_VI |
1565 | select CPU_MIPSR2_SRS | 1562 | select CPU_MIPSR2_SRS |
1566 | select MIPS_MT | 1563 | select MIPS_MT |
1564 | select NR_CPUS_DEFAULT_2 | ||
1567 | select SMP | 1565 | select SMP |
1568 | select SYS_SUPPORTS_SMP | 1566 | select SYS_SUPPORTS_SMP |
1569 | help | 1567 | help |
@@ -1578,7 +1576,6 @@ config MIPS_MT_SMTC | |||
1578 | select CPU_MIPSR2_IRQ_VI | 1576 | select CPU_MIPSR2_IRQ_VI |
1579 | select CPU_MIPSR2_SRS | 1577 | select CPU_MIPSR2_SRS |
1580 | select MIPS_MT | 1578 | select MIPS_MT |
1581 | select NR_CPUS_DEFAULT_2 | ||
1582 | select NR_CPUS_DEFAULT_8 | 1579 | select NR_CPUS_DEFAULT_8 |
1583 | select SMP | 1580 | select SMP |
1584 | select SYS_SUPPORTS_SMP | 1581 | select SYS_SUPPORTS_SMP |
@@ -1609,7 +1606,7 @@ config MIPS_MT_FPAFF | |||
1609 | 1606 | ||
1610 | config MIPS_MT_SMTC_INSTANT_REPLAY | 1607 | config MIPS_MT_SMTC_INSTANT_REPLAY |
1611 | bool "Low-latency Dispatch of Deferred SMTC IPIs" | 1608 | bool "Low-latency Dispatch of Deferred SMTC IPIs" |
1612 | depends on MIPS_MT_SMTC | 1609 | depends on MIPS_MT_SMTC && !PREEMPT |
1613 | default y | 1610 | default y |
1614 | help | 1611 | help |
1615 | SMTC pseudo-interrupts between TCs are deferred and queued | 1612 | SMTC pseudo-interrupts between TCs are deferred and queued |
@@ -1810,6 +1807,9 @@ config SMP | |||
1810 | config SYS_SUPPORTS_SMP | 1807 | config SYS_SUPPORTS_SMP |
1811 | bool | 1808 | bool |
1812 | 1809 | ||
1810 | config NR_CPUS_DEFAULT_1 | ||
1811 | bool | ||
1812 | |||
1813 | config NR_CPUS_DEFAULT_2 | 1813 | config NR_CPUS_DEFAULT_2 |
1814 | bool | 1814 | bool |
1815 | 1815 | ||
@@ -1830,8 +1830,9 @@ config NR_CPUS_DEFAULT_64 | |||
1830 | 1830 | ||
1831 | config NR_CPUS | 1831 | config NR_CPUS |
1832 | int "Maximum number of CPUs (2-64)" | 1832 | int "Maximum number of CPUs (2-64)" |
1833 | range 2 64 | 1833 | range 1 64 if NR_CPUS_DEFAULT_1 |
1834 | depends on SMP | 1834 | depends on SMP |
1835 | default "1" if NR_CPUS_DEFAULT_1 | ||
1835 | default "2" if NR_CPUS_DEFAULT_2 | 1836 | default "2" if NR_CPUS_DEFAULT_2 |
1836 | default "4" if NR_CPUS_DEFAULT_4 | 1837 | default "4" if NR_CPUS_DEFAULT_4 |
1837 | default "8" if NR_CPUS_DEFAULT_8 | 1838 | default "8" if NR_CPUS_DEFAULT_8 |
@@ -1842,10 +1843,13 @@ config NR_CPUS | |||
1842 | This allows you to specify the maximum number of CPUs which this | 1843 | This allows you to specify the maximum number of CPUs which this |
1843 | kernel will support. The maximum supported value is 32 for 32-bit | 1844 | kernel will support. The maximum supported value is 32 for 32-bit |
1844 | kernel and 64 for 64-bit kernels; the minimum value which makes | 1845 | kernel and 64 for 64-bit kernels; the minimum value which makes |
1845 | sense is 2. | 1846 | sense is 1 for Qemu (useful only for kernel debugging purposes) |
1847 | and 2 for all others. | ||
1846 | 1848 | ||
1847 | This is purely to save memory - each supported CPU adds | 1849 | This is purely to save memory - each supported CPU adds |
1848 | approximately eight kilobytes to the kernel image. | 1850 | approximately eight kilobytes to the kernel image. For best |
1851 | performance should round up your number of processors to the next | ||
1852 | power of two. | ||
1849 | 1853 | ||
1850 | # | 1854 | # |
1851 | # Timer Interrupt Frequency Configuration | 1855 | # Timer Interrupt Frequency Configuration |
diff --git a/arch/mips/arc/init.c b/arch/mips/arc/init.c index 0ac8f42d3752..e2f75b13312f 100644 --- a/arch/mips/arc/init.c +++ b/arch/mips/arc/init.c | |||
@@ -23,16 +23,16 @@ LONG *_prom_argv, *_prom_envp; | |||
23 | void __init prom_init(void) | 23 | void __init prom_init(void) |
24 | { | 24 | { |
25 | PSYSTEM_PARAMETER_BLOCK pb = PROMBLOCK; | 25 | PSYSTEM_PARAMETER_BLOCK pb = PROMBLOCK; |
26 | |||
26 | romvec = ROMVECTOR; | 27 | romvec = ROMVECTOR; |
27 | ULONG cnt; | ||
28 | CHAR c; | ||
29 | 28 | ||
30 | prom_argc = fw_arg0; | 29 | prom_argc = fw_arg0; |
31 | _prom_argv = (LONG *) fw_arg1; | 30 | _prom_argv = (LONG *) fw_arg1; |
32 | _prom_envp = (LONG *) fw_arg2; | 31 | _prom_envp = (LONG *) fw_arg2; |
33 | 32 | ||
34 | if (pb->magic != 0x53435241) { | 33 | if (pb->magic != 0x53435241) { |
35 | printk(KERN_CRIT "Aieee, bad prom vector magic %08lx\n", pb->magic); | 34 | printk(KERN_CRIT "Aieee, bad prom vector magic %08lx\n", |
35 | (unsigned long) pb->magic); | ||
36 | while(1) | 36 | while(1) |
37 | ; | 37 | ; |
38 | } | 38 | } |
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/ddb5xxx/ddb5477/irq.c b/arch/mips/ddb5xxx/ddb5477/irq.c index 2b23234a5b95..faa4a506bf82 100644 --- a/arch/mips/ddb5xxx/ddb5477/irq.c +++ b/arch/mips/ddb5xxx/ddb5477/irq.c | |||
@@ -194,7 +194,7 @@ static void vrc5477_irq_dispatch(void) | |||
194 | 194 | ||
195 | asmlinkage void plat_irq_dispatch(void) | 195 | asmlinkage void plat_irq_dispatch(void) |
196 | { | 196 | { |
197 | unsigned int pending = read_c0_cause() & read_c0_status(); | 197 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
198 | 198 | ||
199 | if (pending & STATUSF_IP7) | 199 | if (pending & STATUSF_IP7) |
200 | do_IRQ(CPU_IRQ_BASE + 7); | 200 | do_IRQ(CPU_IRQ_BASE + 7); |
diff --git a/arch/mips/dec/prom/init.c b/arch/mips/dec/prom/init.c index bf2858071f1f..a217aafe59f6 100644 --- a/arch/mips/dec/prom/init.c +++ b/arch/mips/dec/prom/init.c | |||
@@ -103,9 +103,6 @@ void __init prom_init(void) | |||
103 | if (prom_is_rex(magic)) | 103 | if (prom_is_rex(magic)) |
104 | rex_clear_cache(); | 104 | rex_clear_cache(); |
105 | 105 | ||
106 | /* Register the early console. */ | ||
107 | register_prom_console(); | ||
108 | |||
109 | /* Were we compiled with the right CPU option? */ | 106 | /* Were we compiled with the right CPU option? */ |
110 | #if defined(CONFIG_CPU_R3000) | 107 | #if defined(CONFIG_CPU_R3000) |
111 | if ((current_cpu_data.cputype == CPU_R4000SC) || | 108 | if ((current_cpu_data.cputype == CPU_R4000SC) || |
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/emma2rh/markeins/irq.c b/arch/mips/emma2rh/markeins/irq.c index e26630026375..6bcf6a06367a 100644 --- a/arch/mips/emma2rh/markeins/irq.c +++ b/arch/mips/emma2rh/markeins/irq.c | |||
@@ -115,7 +115,7 @@ void __init arch_init_irq(void) | |||
115 | 115 | ||
116 | asmlinkage void plat_irq_dispatch(void) | 116 | asmlinkage void plat_irq_dispatch(void) |
117 | { | 117 | { |
118 | unsigned int pending = read_c0_status() & read_c0_cause(); | 118 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
119 | 119 | ||
120 | if (pending & STATUSF_IP7) | 120 | if (pending & STATUSF_IP7) |
121 | do_IRQ(CPU_IRQ_BASE + 7); | 121 | do_IRQ(CPU_IRQ_BASE + 7); |
diff --git a/arch/mips/gt64120/ev64120/irq.c b/arch/mips/gt64120/ev64120/irq.c index 04572b9c9642..64e4c80b6139 100644 --- a/arch/mips/gt64120/ev64120/irq.c +++ b/arch/mips/gt64120/ev64120/irq.c | |||
@@ -48,7 +48,7 @@ | |||
48 | 48 | ||
49 | asmlinkage void plat_irq_dispatch(void) | 49 | asmlinkage void plat_irq_dispatch(void) |
50 | { | 50 | { |
51 | unsigned int pending = read_c0_status() & read_c0_cause(); | 51 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
52 | 52 | ||
53 | if (pending & STATUSF_IP4) /* int2 hardware line (timer) */ | 53 | if (pending & STATUSF_IP4) /* int2 hardware line (timer) */ |
54 | do_IRQ(4); | 54 | do_IRQ(4); |
diff --git a/arch/mips/gt64120/momenco_ocelot/prom.c b/arch/mips/gt64120/momenco_ocelot/prom.c index 78f393b2afd9..c71c85276c74 100644 --- a/arch/mips/gt64120/momenco_ocelot/prom.c +++ b/arch/mips/gt64120/momenco_ocelot/prom.c | |||
@@ -32,7 +32,6 @@ void __init prom_init(void) | |||
32 | char **arg = (char **) fw_arg1; | 32 | char **arg = (char **) fw_arg1; |
33 | char **env = (char **) fw_arg2; | 33 | char **env = (char **) fw_arg2; |
34 | struct callvectors *cv = (struct callvectors *) fw_arg3; | 34 | struct callvectors *cv = (struct callvectors *) fw_arg3; |
35 | uint32_t tmp; | ||
36 | int i; | 35 | int i; |
37 | 36 | ||
38 | /* save the PROM vectors for debugging use */ | 37 | /* save the PROM vectors for debugging use */ |
diff --git a/arch/mips/gt64120/momenco_ocelot/setup.c b/arch/mips/gt64120/momenco_ocelot/setup.c index 94f94ebbda6c..98b6fb38096d 100644 --- a/arch/mips/gt64120/momenco_ocelot/setup.c +++ b/arch/mips/gt64120/momenco_ocelot/setup.c | |||
@@ -79,7 +79,7 @@ static char reset_reason; | |||
79 | static void __init setup_l3cache(unsigned long size); | 79 | static void __init setup_l3cache(unsigned long size); |
80 | 80 | ||
81 | /* setup code for a handoff from a version 1 PMON 2000 PROM */ | 81 | /* setup code for a handoff from a version 1 PMON 2000 PROM */ |
82 | void PMON_v1_setup() | 82 | static void PMON_v1_setup(void) |
83 | { | 83 | { |
84 | /* A wired TLB entry for the GT64120A and the serial port. The | 84 | /* A wired TLB entry for the GT64120A and the serial port. The |
85 | GT64120A is going to be hit on every IRQ anyway - there's | 85 | GT64120A is going to be hit on every IRQ anyway - there's |
diff --git a/arch/mips/gt64120/wrppmc/irq.c b/arch/mips/gt64120/wrppmc/irq.c index d3d96591780e..06177bf5b1d6 100644 --- a/arch/mips/gt64120/wrppmc/irq.c +++ b/arch/mips/gt64120/wrppmc/irq.c | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | asmlinkage void plat_irq_dispatch(void) | 33 | asmlinkage void plat_irq_dispatch(void) |
34 | { | 34 | { |
35 | unsigned int pending = read_c0_status() & read_c0_cause(); | 35 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
36 | 36 | ||
37 | if (pending & STATUSF_IP7) | 37 | if (pending & STATUSF_IP7) |
38 | do_IRQ(WRPPMC_MIPS_TIMER_IRQ); /* CPU Compare/Count internal timer */ | 38 | do_IRQ(WRPPMC_MIPS_TIMER_IRQ); /* CPU Compare/Count internal timer */ |
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c index 295892e4ce53..015cf4bb51dd 100644 --- a/arch/mips/jazz/irq.c +++ b/arch/mips/jazz/irq.c | |||
@@ -122,7 +122,7 @@ static void ll_local_dev(void) | |||
122 | 122 | ||
123 | asmlinkage void plat_irq_dispatch(void) | 123 | asmlinkage void plat_irq_dispatch(void) |
124 | { | 124 | { |
125 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 125 | unsigned int pending = read_c0_cause() & read_c0_status(); |
126 | 126 | ||
127 | if (pending & IE_IRQ5) | 127 | if (pending & IE_IRQ5) |
128 | write_c0_compare(0); | 128 | write_c0_compare(0); |
diff --git a/arch/mips/jazz/jazzdma.c b/arch/mips/jazz/jazzdma.c index 46e421e14348..e8e0ffb9354d 100644 --- a/arch/mips/jazz/jazzdma.c +++ b/arch/mips/jazz/jazzdma.c | |||
@@ -67,7 +67,8 @@ void __init vdma_init(void) | |||
67 | * aligned and should be uncached to avoid cache flushing after every | 67 | * aligned and should be uncached to avoid cache flushing after every |
68 | * update. | 68 | * update. |
69 | */ | 69 | */ |
70 | vdma_pagetable_start = alloc_bootmem_low_pages(VDMA_PGTBL_SIZE); | 70 | vdma_pagetable_start = |
71 | (unsigned long) alloc_bootmem_low_pages(VDMA_PGTBL_SIZE); | ||
71 | if (!vdma_pagetable_start) | 72 | if (!vdma_pagetable_start) |
72 | BUG(); | 73 | BUG(); |
73 | dma_cache_wback_inv(vdma_pagetable_start, VDMA_PGTBL_SIZE); | 74 | dma_cache_wback_inv(vdma_pagetable_start, VDMA_PGTBL_SIZE); |
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index 0b78fcbf044a..686249c5c328 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S | |||
@@ -121,7 +121,11 @@ FEXPORT(restore_partial) # restore partial frame | |||
121 | SAVE_AT | 121 | SAVE_AT |
122 | SAVE_TEMP | 122 | SAVE_TEMP |
123 | LONG_L v0, PT_STATUS(sp) | 123 | LONG_L v0, PT_STATUS(sp) |
124 | and v0, 1 | 124 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) |
125 | and v0, ST0_IEP | ||
126 | #else | ||
127 | and v0, ST0_IE | ||
128 | #endif | ||
125 | beqz v0, 1f | 129 | beqz v0, 1f |
126 | jal trace_hardirqs_on | 130 | jal trace_hardirqs_on |
127 | b 2f | 131 | b 2f |
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index aacd4a005c5f..297bd56c2347 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
@@ -128,6 +128,37 @@ handle_vcei: | |||
128 | 128 | ||
129 | .align 5 | 129 | .align 5 |
130 | NESTED(handle_int, PT_SIZE, sp) | 130 | NESTED(handle_int, PT_SIZE, sp) |
131 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
132 | /* | ||
133 | * Check to see if the interrupted code has just disabled | ||
134 | * interrupts and ignore this interrupt for now if so. | ||
135 | * | ||
136 | * local_irq_disable() disables interrupts and then calls | ||
137 | * trace_hardirqs_off() to track the state. If an interrupt is taken | ||
138 | * after interrupts are disabled but before the state is updated | ||
139 | * it will appear to restore_all that it is incorrectly returning with | ||
140 | * interrupts disabled | ||
141 | */ | ||
142 | .set push | ||
143 | .set noat | ||
144 | mfc0 k0, CP0_STATUS | ||
145 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) | ||
146 | and k0, ST0_IEP | ||
147 | bnez k0, 1f | ||
148 | |||
149 | mfc0 k0, EP0_EPC | ||
150 | .set noreorder | ||
151 | j k0 | ||
152 | rfe | ||
153 | #else | ||
154 | and k0, ST0_IE | ||
155 | bnez k0, 1f | ||
156 | |||
157 | eret | ||
158 | #endif | ||
159 | 1: | ||
160 | .set pop | ||
161 | #endif | ||
131 | SAVE_ALL | 162 | SAVE_ALL |
132 | CLI | 163 | CLI |
133 | TRACE_IRQS_OFF | 164 | TRACE_IRQS_OFF |
@@ -181,13 +212,13 @@ NESTED(except_vec_vi, 0, sp) | |||
181 | * during service by SMTC kernel, we also want to | 212 | * during service by SMTC kernel, we also want to |
182 | * pass the IM value to be cleared. | 213 | * pass the IM value to be cleared. |
183 | */ | 214 | */ |
184 | EXPORT(except_vec_vi_mori) | 215 | FEXPORT(except_vec_vi_mori) |
185 | ori a0, $0, 0 | 216 | ori a0, $0, 0 |
186 | #endif /* CONFIG_MIPS_MT_SMTC */ | 217 | #endif /* CONFIG_MIPS_MT_SMTC */ |
187 | EXPORT(except_vec_vi_lui) | 218 | FEXPORT(except_vec_vi_lui) |
188 | lui v0, 0 /* Patched */ | 219 | lui v0, 0 /* Patched */ |
189 | j except_vec_vi_handler | 220 | j except_vec_vi_handler |
190 | EXPORT(except_vec_vi_ori) | 221 | FEXPORT(except_vec_vi_ori) |
191 | ori v0, 0 /* Patched */ | 222 | ori v0, 0 /* Patched */ |
192 | .set pop | 223 | .set pop |
193 | END(except_vec_vi) | 224 | END(except_vec_vi) |
@@ -220,7 +251,17 @@ NESTED(except_vec_vi_handler, 0, sp) | |||
220 | _ehb | 251 | _ehb |
221 | #endif /* CONFIG_MIPS_MT_SMTC */ | 252 | #endif /* CONFIG_MIPS_MT_SMTC */ |
222 | CLI | 253 | CLI |
254 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
255 | move s0, v0 | ||
256 | #ifdef CONFIG_MIPS_MT_SMTC | ||
257 | move s1, a0 | ||
258 | #endif | ||
223 | TRACE_IRQS_OFF | 259 | TRACE_IRQS_OFF |
260 | #ifdef CONFIG_MIPS_MT_SMTC | ||
261 | move a0, s1 | ||
262 | #endif | ||
263 | move v0, s0 | ||
264 | #endif | ||
224 | 265 | ||
225 | LONG_L s0, TI_REGS($28) | 266 | LONG_L s0, TI_REGS($28) |
226 | LONG_S sp, TI_REGS($28) | 267 | LONG_S sp, TI_REGS($28) |
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 30d433f14f93..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 | { |
@@ -564,49 +576,3 @@ _sys32_clone(nabi_no_regargs struct pt_regs regs) | |||
564 | return do_fork(clone_flags, newsp, ®s, 0, | 576 | return do_fork(clone_flags, newsp, ®s, 0, |
565 | parent_tidptr, child_tidptr); | 577 | parent_tidptr, child_tidptr); |
566 | } | 578 | } |
567 | |||
568 | /* | ||
569 | * Implement the event wait interface for the eventpoll file. It is the kernel | ||
570 | * part of the user space epoll_pwait(2). | ||
571 | */ | ||
572 | asmlinkage long compat_sys_epoll_pwait(int epfd, | ||
573 | struct epoll_event __user *events, int maxevents, int timeout, | ||
574 | const compat_sigset_t __user *sigmask, size_t sigsetsize) | ||
575 | { | ||
576 | int error; | ||
577 | sigset_t ksigmask, sigsaved; | ||
578 | |||
579 | /* | ||
580 | * If the caller wants a certain signal mask to be set during the wait, | ||
581 | * we apply it here. | ||
582 | */ | ||
583 | if (sigmask) { | ||
584 | if (sigsetsize != sizeof(sigset_t)) | ||
585 | return -EINVAL; | ||
586 | if (!access_ok(VERIFY_READ, sigmask, sizeof(ksigmask))) | ||
587 | return -EFAULT; | ||
588 | if (__copy_conv_sigset_from_user(&ksigmask, sigmask)) | ||
589 | return -EFAULT; | ||
590 | sigdelsetmask(&ksigmask, sigmask(SIGKILL) | sigmask(SIGSTOP)); | ||
591 | sigprocmask(SIG_SETMASK, &ksigmask, &sigsaved); | ||
592 | } | ||
593 | |||
594 | error = sys_epoll_wait(epfd, events, maxevents, timeout); | ||
595 | |||
596 | /* | ||
597 | * If we changed the signal mask, we need to restore the original one. | ||
598 | * In case we've got a signal while waiting, we do not restore the | ||
599 | * signal mask yet, and we allow do_signal() to deliver the signal on | ||
600 | * the way back to userspace, before the signal mask is restored. | ||
601 | */ | ||
602 | if (sigmask) { | ||
603 | if (error == -EINTR) { | ||
604 | memcpy(¤t->saved_sigmask, &sigsaved, | ||
605 | sizeof(sigsaved)); | ||
606 | set_thread_flag(TIF_RESTORE_SIGMASK); | ||
607 | } else | ||
608 | sigprocmask(SIG_SETMASK, &sigsaved, NULL); | ||
609 | } | ||
610 | |||
611 | return error; | ||
612 | } | ||
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/smtc.c b/arch/mips/kernel/smtc.c index f253eda27fa3..5dcfab6b288e 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
5 | #include <linux/cpumask.h> | 5 | #include <linux/cpumask.h> |
6 | #include <linux/interrupt.h> | 6 | #include <linux/interrupt.h> |
7 | #include <linux/kernel_stat.h> | ||
7 | #include <linux/module.h> | 8 | #include <linux/module.h> |
8 | 9 | ||
9 | #include <asm/cpu.h> | 10 | #include <asm/cpu.h> |
@@ -14,6 +15,7 @@ | |||
14 | #include <asm/hazards.h> | 15 | #include <asm/hazards.h> |
15 | #include <asm/mmu_context.h> | 16 | #include <asm/mmu_context.h> |
16 | #include <asm/smp.h> | 17 | #include <asm/smp.h> |
18 | #include <asm/mips-boards/maltaint.h> | ||
17 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
18 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
19 | #include <asm/time.h> | 21 | #include <asm/time.h> |
@@ -75,7 +77,7 @@ static struct smtc_ipi_q freeIPIq; | |||
75 | 77 | ||
76 | void ipi_decode(struct smtc_ipi *); | 78 | void ipi_decode(struct smtc_ipi *); |
77 | static void post_direct_ipi(int cpu, struct smtc_ipi *pipi); | 79 | static void post_direct_ipi(int cpu, struct smtc_ipi *pipi); |
78 | static void setup_cross_vpe_interrupts(void); | 80 | static void setup_cross_vpe_interrupts(unsigned int nvpe); |
79 | void init_smtc_stats(void); | 81 | void init_smtc_stats(void); |
80 | 82 | ||
81 | /* Global SMTC Status */ | 83 | /* Global SMTC Status */ |
@@ -168,7 +170,10 @@ __setup("tintq=", tintq); | |||
168 | 170 | ||
169 | int imstuckcount[2][8]; | 171 | int imstuckcount[2][8]; |
170 | /* vpemask represents IM/IE bits of per-VPE Status registers, low-to-high */ | 172 | /* vpemask represents IM/IE bits of per-VPE Status registers, low-to-high */ |
171 | int vpemask[2][8] = {{0,1,1,0,0,0,0,1},{0,1,0,0,0,0,0,1}}; | 173 | int vpemask[2][8] = { |
174 | {0, 0, 1, 0, 0, 0, 0, 1}, | ||
175 | {0, 0, 0, 0, 0, 0, 0, 1} | ||
176 | }; | ||
172 | int tcnoprog[NR_CPUS]; | 177 | int tcnoprog[NR_CPUS]; |
173 | static atomic_t idle_hook_initialized = {0}; | 178 | static atomic_t idle_hook_initialized = {0}; |
174 | static int clock_hang_reported[NR_CPUS]; | 179 | static int clock_hang_reported[NR_CPUS]; |
@@ -501,8 +506,7 @@ void mipsmt_prepare_cpus(void) | |||
501 | 506 | ||
502 | /* If we have multiple VPEs running, set up the cross-VPE interrupt */ | 507 | /* If we have multiple VPEs running, set up the cross-VPE interrupt */ |
503 | 508 | ||
504 | if (nvpe > 1) | 509 | setup_cross_vpe_interrupts(nvpe); |
505 | setup_cross_vpe_interrupts(); | ||
506 | 510 | ||
507 | /* Set up queue of free IPI "messages". */ | 511 | /* Set up queue of free IPI "messages". */ |
508 | nipi = NR_CPUS * IPIBUF_PER_CPU; | 512 | nipi = NR_CPUS * IPIBUF_PER_CPU; |
@@ -607,7 +611,12 @@ void smtc_cpus_done(void) | |||
607 | int setup_irq_smtc(unsigned int irq, struct irqaction * new, | 611 | int setup_irq_smtc(unsigned int irq, struct irqaction * new, |
608 | unsigned long hwmask) | 612 | unsigned long hwmask) |
609 | { | 613 | { |
614 | unsigned int vpe = current_cpu_data.vpe_id; | ||
615 | |||
610 | irq_hwmask[irq] = hwmask; | 616 | irq_hwmask[irq] = hwmask; |
617 | #ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG | ||
618 | vpemask[vpe][irq - MIPSCPU_INT_BASE] = 1; | ||
619 | #endif | ||
611 | 620 | ||
612 | return setup_irq(irq, new); | 621 | return setup_irq(irq, new); |
613 | } | 622 | } |
@@ -812,12 +821,15 @@ void ipi_decode(struct smtc_ipi *pipi) | |||
812 | smtc_ipi_nq(&freeIPIq, pipi); | 821 | smtc_ipi_nq(&freeIPIq, pipi); |
813 | switch (type_copy) { | 822 | switch (type_copy) { |
814 | case SMTC_CLOCK_TICK: | 823 | case SMTC_CLOCK_TICK: |
824 | irq_enter(); | ||
825 | kstat_this_cpu.irqs[MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR]++; | ||
815 | /* Invoke Clock "Interrupt" */ | 826 | /* Invoke Clock "Interrupt" */ |
816 | ipi_timer_latch[dest_copy] = 0; | 827 | ipi_timer_latch[dest_copy] = 0; |
817 | #ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG | 828 | #ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG |
818 | clock_hang_reported[dest_copy] = 0; | 829 | clock_hang_reported[dest_copy] = 0; |
819 | #endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */ | 830 | #endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */ |
820 | local_timer_interrupt(0, NULL); | 831 | local_timer_interrupt(0, NULL); |
832 | irq_exit(); | ||
821 | break; | 833 | break; |
822 | case LINUX_SMP_IPI: | 834 | case LINUX_SMP_IPI: |
823 | switch ((int)arg_copy) { | 835 | switch ((int)arg_copy) { |
@@ -965,8 +977,11 @@ static void ipi_irq_dispatch(void) | |||
965 | 977 | ||
966 | static struct irqaction irq_ipi; | 978 | static struct irqaction irq_ipi; |
967 | 979 | ||
968 | static void setup_cross_vpe_interrupts(void) | 980 | static void setup_cross_vpe_interrupts(unsigned int nvpe) |
969 | { | 981 | { |
982 | if (nvpe < 1) | ||
983 | return; | ||
984 | |||
970 | if (!cpu_has_vint) | 985 | if (!cpu_has_vint) |
971 | panic("SMTC Kernel requires Vectored Interupt support"); | 986 | panic("SMTC Kernel requires Vectored Interupt support"); |
972 | 987 | ||
@@ -984,10 +999,17 @@ static void setup_cross_vpe_interrupts(void) | |||
984 | 999 | ||
985 | /* | 1000 | /* |
986 | * SMTC-specific hacks invoked from elsewhere in the kernel. | 1001 | * SMTC-specific hacks invoked from elsewhere in the kernel. |
1002 | * | ||
1003 | * smtc_ipi_replay is called from raw_local_irq_restore which is only ever | ||
1004 | * called with interrupts disabled. We do rely on interrupts being disabled | ||
1005 | * here because using spin_lock_irqsave()/spin_unlock_irqrestore() would | ||
1006 | * result in a recursive call to raw_local_irq_restore(). | ||
987 | */ | 1007 | */ |
988 | 1008 | ||
989 | void smtc_ipi_replay(void) | 1009 | static void __smtc_ipi_replay(void) |
990 | { | 1010 | { |
1011 | unsigned int cpu = smp_processor_id(); | ||
1012 | |||
991 | /* | 1013 | /* |
992 | * To the extent that we've ever turned interrupts off, | 1014 | * To the extent that we've ever turned interrupts off, |
993 | * we may have accumulated deferred IPIs. This is subtle. | 1015 | * we may have accumulated deferred IPIs. This is subtle. |
@@ -1002,17 +1024,30 @@ void smtc_ipi_replay(void) | |||
1002 | * is clear, and we'll handle it as a real pseudo-interrupt | 1024 | * is clear, and we'll handle it as a real pseudo-interrupt |
1003 | * and not a pseudo-pseudo interrupt. | 1025 | * and not a pseudo-pseudo interrupt. |
1004 | */ | 1026 | */ |
1005 | if (IPIQ[smp_processor_id()].depth > 0) { | 1027 | if (IPIQ[cpu].depth > 0) { |
1006 | struct smtc_ipi *pipi; | 1028 | while (1) { |
1007 | extern void self_ipi(struct smtc_ipi *); | 1029 | struct smtc_ipi_q *q = &IPIQ[cpu]; |
1030 | struct smtc_ipi *pipi; | ||
1031 | extern void self_ipi(struct smtc_ipi *); | ||
1032 | |||
1033 | spin_lock(&q->lock); | ||
1034 | pipi = __smtc_ipi_dq(q); | ||
1035 | spin_unlock(&q->lock); | ||
1036 | if (!pipi) | ||
1037 | break; | ||
1008 | 1038 | ||
1009 | while ((pipi = smtc_ipi_dq(&IPIQ[smp_processor_id()]))) { | ||
1010 | self_ipi(pipi); | 1039 | self_ipi(pipi); |
1011 | smtc_cpu_stats[smp_processor_id()].selfipis++; | 1040 | smtc_cpu_stats[cpu].selfipis++; |
1012 | } | 1041 | } |
1013 | } | 1042 | } |
1014 | } | 1043 | } |
1015 | 1044 | ||
1045 | void smtc_ipi_replay(void) | ||
1046 | { | ||
1047 | raw_local_irq_disable(); | ||
1048 | __smtc_ipi_replay(); | ||
1049 | } | ||
1050 | |||
1016 | EXPORT_SYMBOL(smtc_ipi_replay); | 1051 | EXPORT_SYMBOL(smtc_ipi_replay); |
1017 | 1052 | ||
1018 | void smtc_idle_loop_hook(void) | 1053 | void smtc_idle_loop_hook(void) |
@@ -1117,7 +1152,13 @@ void smtc_idle_loop_hook(void) | |||
1117 | * is in use, there should never be any. | 1152 | * is in use, there should never be any. |
1118 | */ | 1153 | */ |
1119 | #ifndef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY | 1154 | #ifndef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY |
1120 | smtc_ipi_replay(); | 1155 | { |
1156 | unsigned long flags; | ||
1157 | |||
1158 | local_irq_save(flags); | ||
1159 | __smtc_ipi_replay(); | ||
1160 | local_irq_restore(flags); | ||
1161 | } | ||
1121 | #endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */ | 1162 | #endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */ |
1122 | } | 1163 | } |
1123 | 1164 | ||
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/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c index 1acdf091c258..88e9c2a7a2f9 100644 --- a/arch/mips/mips-boards/generic/init.c +++ b/arch/mips/mips-boards/generic/init.c | |||
@@ -145,7 +145,7 @@ static void __init console_config(void) | |||
145 | char parity = '\0', bits = '\0', flow = '\0'; | 145 | char parity = '\0', bits = '\0', flow = '\0'; |
146 | char *s; | 146 | char *s; |
147 | 147 | ||
148 | if ((strstr(prom_getcmdline(), "console=ttyS")) == NULL) { | 148 | if ((strstr(prom_getcmdline(), "console=")) == NULL) { |
149 | s = prom_getenv("modetty0"); | 149 | s = prom_getenv("modetty0"); |
150 | if (s) { | 150 | if (s) { |
151 | while (*s >= '0' && *s <= '9') | 151 | while (*s >= '0' && *s <= '9') |
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c index d1af42c2a52e..59868a1edf66 100644 --- a/arch/mips/mm/c-r3k.c +++ b/arch/mips/mm/c-r3k.c | |||
@@ -260,7 +260,7 @@ static void r3k_flush_cache_page(struct vm_area_struct *vma, unsigned long page, | |||
260 | { | 260 | { |
261 | } | 261 | } |
262 | 262 | ||
263 | static void local_r3k_flush_data_cache_page(unsigned long addr) | 263 | static void local_r3k_flush_data_cache_page(void *addr) |
264 | { | 264 | { |
265 | } | 265 | } |
266 | 266 | ||
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c index 31819c58bffa..4e8f1b683376 100644 --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c | |||
@@ -3,7 +3,8 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 1994 - 2003 by Ralf Baechle | 6 | * Copyright (C) 1994 - 2003, 07 by Ralf Baechle (ralf@linux-mips.org) |
7 | * Copyright (C) 2007 MIPS Technologies, Inc. | ||
7 | */ | 8 | */ |
8 | #include <linux/init.h> | 9 | #include <linux/init.h> |
9 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
@@ -88,6 +89,19 @@ void __flush_dcache_page(struct page *page) | |||
88 | 89 | ||
89 | EXPORT_SYMBOL(__flush_dcache_page); | 90 | EXPORT_SYMBOL(__flush_dcache_page); |
90 | 91 | ||
92 | void __flush_anon_page(struct page *page, unsigned long vmaddr) | ||
93 | { | ||
94 | if (pages_do_alias((unsigned long)page_address(page), vmaddr)) { | ||
95 | void *kaddr; | ||
96 | |||
97 | kaddr = kmap_coherent(page, vmaddr); | ||
98 | flush_data_cache_page((unsigned long)kaddr); | ||
99 | kunmap_coherent(kaddr); | ||
100 | } | ||
101 | } | ||
102 | |||
103 | EXPORT_SYMBOL(__flush_anon_page); | ||
104 | |||
91 | void __update_cache(struct vm_area_struct *vma, unsigned long address, | 105 | void __update_cache(struct vm_area_struct *vma, unsigned long address, |
92 | pte_t pte) | 106 | pte_t pte) |
93 | { | 107 | { |
diff --git a/arch/mips/mm/cerr-sb1.c b/arch/mips/mm/cerr-sb1.c index 11a916629d3b..4c72e650f9b6 100644 --- a/arch/mips/mm/cerr-sb1.c +++ b/arch/mips/mm/cerr-sb1.c | |||
@@ -177,8 +177,8 @@ extern void check_bus_watcher(void); | |||
177 | 177 | ||
178 | asmlinkage void sb1_cache_error(void) | 178 | asmlinkage void sb1_cache_error(void) |
179 | { | 179 | { |
180 | uint64_t cerr_dpa; | ||
181 | uint32_t errctl, cerr_i, cerr_d, dpalo, dpahi, eepc, res; | 180 | uint32_t errctl, cerr_i, cerr_d, dpalo, dpahi, eepc, res; |
181 | unsigned long long cerr_dpa; | ||
182 | 182 | ||
183 | #ifdef CONFIG_SIBYTE_BW_TRACE | 183 | #ifdef CONFIG_SIBYTE_BW_TRACE |
184 | /* Freeze the trace buffer now */ | 184 | /* Freeze the trace buffer now */ |
@@ -329,8 +329,9 @@ static uint32_t extract_ic(unsigned short addr, int data) | |||
329 | { | 329 | { |
330 | unsigned short way; | 330 | unsigned short way; |
331 | int valid; | 331 | int valid; |
332 | uint64_t taglo, va, tlo_tmp; | ||
333 | uint32_t taghi, taglolo, taglohi; | 332 | uint32_t taghi, taglolo, taglohi; |
333 | unsigned long long taglo, va; | ||
334 | uint64_t tlo_tmp; | ||
334 | uint8_t lru; | 335 | uint8_t lru; |
335 | int res = 0; | 336 | int res = 0; |
336 | 337 | ||
@@ -484,8 +485,8 @@ static uint32_t extract_dc(unsigned short addr, int data) | |||
484 | { | 485 | { |
485 | int valid, way; | 486 | int valid, way; |
486 | unsigned char state; | 487 | unsigned char state; |
487 | uint64_t taglo, pa; | ||
488 | uint32_t taghi, taglolo, taglohi; | 488 | uint32_t taghi, taglolo, taglohi; |
489 | unsigned long long taglo, pa; | ||
489 | uint8_t ecc, lru; | 490 | uint8_t ecc, lru; |
490 | int res = 0; | 491 | int res = 0; |
491 | 492 | ||
@@ -535,8 +536,8 @@ static uint32_t extract_dc(unsigned short addr, int data) | |||
535 | } | 536 | } |
536 | 537 | ||
537 | if (data) { | 538 | if (data) { |
538 | uint64_t datalo; | ||
539 | uint32_t datalohi, datalolo, datahi; | 539 | uint32_t datalohi, datalolo, datahi; |
540 | unsigned long long datalo; | ||
540 | int offset; | 541 | int offset; |
541 | char bad_ecc = 0; | 542 | char bad_ecc = 0; |
542 | 543 | ||
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index f503d02e403b..f0eb29917d9a 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -19,6 +19,13 @@ | |||
19 | 19 | ||
20 | #include <dma-coherence.h> | 20 | #include <dma-coherence.h> |
21 | 21 | ||
22 | static inline unsigned long dma_addr_to_virt(dma_addr_t dma_addr) | ||
23 | { | ||
24 | unsigned long addr = plat_dma_addr_to_phys(dma_addr); | ||
25 | |||
26 | return (unsigned long)phys_to_virt(addr); | ||
27 | } | ||
28 | |||
22 | /* | 29 | /* |
23 | * Warning on the terminology - Linux calls an uncached area coherent; | 30 | * Warning on the terminology - Linux calls an uncached area coherent; |
24 | * MIPS terminology calls memory areas with hardware maintained coherency | 31 | * MIPS terminology calls memory areas with hardware maintained coherency |
@@ -140,7 +147,7 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
140 | enum dma_data_direction direction) | 147 | enum dma_data_direction direction) |
141 | { | 148 | { |
142 | if (cpu_is_noncoherent_r10000(dev)) | 149 | if (cpu_is_noncoherent_r10000(dev)) |
143 | __dma_sync(plat_dma_addr_to_phys(dma_addr) + PAGE_OFFSET, size, | 150 | __dma_sync(dma_addr_to_virt(dma_addr), size, |
144 | direction); | 151 | direction); |
145 | 152 | ||
146 | plat_unmap_dma_mem(dma_addr); | 153 | plat_unmap_dma_mem(dma_addr); |
@@ -234,7 +241,7 @@ void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, | |||
234 | if (cpu_is_noncoherent_r10000(dev)) { | 241 | if (cpu_is_noncoherent_r10000(dev)) { |
235 | unsigned long addr; | 242 | unsigned long addr; |
236 | 243 | ||
237 | addr = PAGE_OFFSET + plat_dma_addr_to_phys(dma_handle); | 244 | addr = dma_addr_to_virt(dma_handle); |
238 | __dma_sync(addr, size, direction); | 245 | __dma_sync(addr, size, direction); |
239 | } | 246 | } |
240 | } | 247 | } |
@@ -249,7 +256,7 @@ void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, | |||
249 | if (!plat_device_is_coherent(dev)) { | 256 | if (!plat_device_is_coherent(dev)) { |
250 | unsigned long addr; | 257 | unsigned long addr; |
251 | 258 | ||
252 | addr = PAGE_OFFSET + plat_dma_addr_to_phys(dma_handle); | 259 | addr = dma_addr_to_virt(dma_handle); |
253 | __dma_sync(addr, size, direction); | 260 | __dma_sync(addr, size, direction); |
254 | } | 261 | } |
255 | } | 262 | } |
@@ -264,7 +271,7 @@ void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle, | |||
264 | if (cpu_is_noncoherent_r10000(dev)) { | 271 | if (cpu_is_noncoherent_r10000(dev)) { |
265 | unsigned long addr; | 272 | unsigned long addr; |
266 | 273 | ||
267 | addr = PAGE_OFFSET + plat_dma_addr_to_phys(dma_handle); | 274 | addr = dma_addr_to_virt(dma_handle); |
268 | __dma_sync(addr + offset, size, direction); | 275 | __dma_sync(addr + offset, size, direction); |
269 | } | 276 | } |
270 | } | 277 | } |
@@ -279,7 +286,7 @@ void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, | |||
279 | if (!plat_device_is_coherent(dev)) { | 286 | if (!plat_device_is_coherent(dev)) { |
280 | unsigned long addr; | 287 | unsigned long addr; |
281 | 288 | ||
282 | addr = PAGE_OFFSET + plat_dma_addr_to_phys(dma_handle); | 289 | addr = dma_addr_to_virt(dma_handle); |
283 | __dma_sync(addr + offset, size, direction); | 290 | __dma_sync(addr + offset, size, direction); |
284 | } | 291 | } |
285 | } | 292 | } |
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 6f90e7ef66ac..f9c595dceba9 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
@@ -42,7 +42,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write, | |||
42 | siginfo_t info; | 42 | siginfo_t info; |
43 | 43 | ||
44 | #if 0 | 44 | #if 0 |
45 | printk("Cpu%d[%s:%d:%0*lx:%ld:%0*lx]\n", smp_processor_id(), | 45 | printk("Cpu%d[%s:%d:%0*lx:%ld:%0*lx]\n", raw_smp_processor_id(), |
46 | current->comm, current->pid, field, address, write, | 46 | current->comm, current->pid, field, address, write, |
47 | field, regs->cp0_epc); | 47 | field, regs->cp0_epc); |
48 | #endif | 48 | #endif |
@@ -165,7 +165,7 @@ no_context: | |||
165 | 165 | ||
166 | printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at " | 166 | printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at " |
167 | "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n", | 167 | "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n", |
168 | smp_processor_id(), field, address, field, regs->cp0_epc, | 168 | raw_smp_processor_id(), field, address, field, regs->cp0_epc, |
169 | field, regs->regs[31]); | 169 | field, regs->regs[31]); |
170 | die("Oops", regs); | 170 | die("Oops", regs); |
171 | 171 | ||
@@ -228,7 +228,7 @@ vmalloc_fault: | |||
228 | pmd_t *pmd, *pmd_k; | 228 | pmd_t *pmd, *pmd_k; |
229 | pte_t *pte_k; | 229 | pte_t *pte_k; |
230 | 230 | ||
231 | pgd = (pgd_t *) pgd_current[smp_processor_id()] + offset; | 231 | pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset; |
232 | pgd_k = init_mm.pgd + offset; | 232 | pgd_k = init_mm.pgd + offset; |
233 | 233 | ||
234 | if (!pgd_present(*pgd_k)) | 234 | if (!pgd_present(*pgd_k)) |
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index f08ae71c46ff..e9951c0e689f 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -123,7 +123,7 @@ static void __init kmap_coherent_init(void) | |||
123 | static inline void kmap_coherent_init(void) {} | 123 | static inline void kmap_coherent_init(void) {} |
124 | #endif | 124 | #endif |
125 | 125 | ||
126 | static inline void *kmap_coherent(struct page *page, unsigned long addr) | 126 | void *kmap_coherent(struct page *page, unsigned long addr) |
127 | { | 127 | { |
128 | enum fixed_addresses idx; | 128 | enum fixed_addresses idx; |
129 | unsigned long vaddr, flags, entrylo; | 129 | unsigned long vaddr, flags, entrylo; |
@@ -177,7 +177,7 @@ static inline void *kmap_coherent(struct page *page, unsigned long addr) | |||
177 | 177 | ||
178 | #define UNIQUE_ENTRYHI(idx) (CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) | 178 | #define UNIQUE_ENTRYHI(idx) (CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) |
179 | 179 | ||
180 | static inline void kunmap_coherent(struct page *page) | 180 | void kunmap_coherent(struct page *page) |
181 | { | 181 | { |
182 | #ifndef CONFIG_MIPS_MT_SMTC | 182 | #ifndef CONFIG_MIPS_MT_SMTC |
183 | unsigned int wired; | 183 | unsigned int wired; |
@@ -377,7 +377,7 @@ void __init paging_init(void) | |||
377 | #ifdef CONFIG_FLATMEM | 377 | #ifdef CONFIG_FLATMEM |
378 | free_area_init(zones_size); | 378 | free_area_init(zones_size); |
379 | #else | 379 | #else |
380 | pfn = 0; | 380 | pfn = min_low_pfn; |
381 | for (i = 0; i < MAX_NR_ZONES; i++) | 381 | for (i = 0; i < MAX_NR_ZONES; i++) |
382 | for (j = 0; j < zones_size[i]; j++, pfn++) | 382 | for (j = 0; j < zones_size[i]; j++, pfn++) |
383 | if (!page_is_ram(pfn)) | 383 | if (!page_is_ram(pfn)) |
diff --git a/arch/mips/mm/pg-sb1.c b/arch/mips/mm/pg-sb1.c index fc3c7878fb45..adb37d0a30ea 100644 --- a/arch/mips/mm/pg-sb1.c +++ b/arch/mips/mm/pg-sb1.c | |||
@@ -218,8 +218,7 @@ void sb1_dma_init(void) | |||
218 | for (i = 0; i < DM_NUM_CHANNELS; i++) { | 218 | for (i = 0; i < DM_NUM_CHANNELS; i++) { |
219 | const u64 base_val = CPHYSADDR(&page_descr[i]) | | 219 | const u64 base_val = CPHYSADDR(&page_descr[i]) | |
220 | V_DM_DSCR_BASE_RINGSZ(1); | 220 | V_DM_DSCR_BASE_RINGSZ(1); |
221 | volatile void *base_reg = | 221 | void *base_reg = IOADDR(A_DM_REGISTER(i, R_DM_DSCR_BASE)); |
222 | IOADDR(A_DM_REGISTER(i, R_DM_DSCR_BASE)); | ||
223 | 222 | ||
224 | __raw_writeq(base_val, base_reg); | 223 | __raw_writeq(base_val, base_reg); |
225 | __raw_writeq(base_val | M_DM_DSCR_BASE_RESET, base_reg); | 224 | __raw_writeq(base_val | M_DM_DSCR_BASE_RESET, base_reg); |
diff --git a/arch/mips/momentum/ocelot_c/irq.c b/arch/mips/momentum/ocelot_c/irq.c index 40472f7944d7..844d566c9de3 100644 --- a/arch/mips/momentum/ocelot_c/irq.c +++ b/arch/mips/momentum/ocelot_c/irq.c | |||
@@ -64,7 +64,7 @@ extern void ll_cpci_irq(void); | |||
64 | 64 | ||
65 | asmlinkage void plat_irq_dispatch(void) | 65 | asmlinkage void plat_irq_dispatch(void) |
66 | { | 66 | { |
67 | unsigned int pending = read_c0_cause() & read_c0_status(); | 67 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
68 | 68 | ||
69 | if (pending & STATUSF_IP0) | 69 | if (pending & STATUSF_IP0) |
70 | do_IRQ(0); | 70 | do_IRQ(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/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c index f6774f54cd3c..d7b9e1349f6d 100644 --- a/arch/mips/pci/pci-bcm1480.c +++ b/arch/mips/pci/pci-bcm1480.c | |||
@@ -216,7 +216,7 @@ static int __init bcm1480_pcibios_init(void) | |||
216 | /* | 216 | /* |
217 | * See if the PCI bus has been configured by the firmware. | 217 | * See if the PCI bus has been configured by the firmware. |
218 | */ | 218 | */ |
219 | reg = *((volatile uint64_t *) IOADDR(A_SCD_SYSTEM_CFG)); | 219 | reg = __raw_readq(IOADDR(A_SCD_SYSTEM_CFG)); |
220 | if (!(reg & M_BCM1480_SYS_PCI_HOST)) { | 220 | if (!(reg & M_BCM1480_SYS_PCI_HOST)) { |
221 | bcm1480_bus_status |= PCI_DEVICE_MODE; | 221 | bcm1480_bus_status |= PCI_DEVICE_MODE; |
222 | } else { | 222 | } else { |
diff --git a/arch/mips/pci/pci-ev64120.c b/arch/mips/pci/pci-ev64120.c index 9cd859ef1842..a84f594b5a18 100644 --- a/arch/mips/pci/pci-ev64120.c +++ b/arch/mips/pci/pci-ev64120.c | |||
@@ -1,4 +1,5 @@ | |||
1 | #include <linux/pci.h> | 1 | #include <linux/pci.h> |
2 | #include <asm/irq.h> | ||
2 | 3 | ||
3 | int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | 4 | int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) |
4 | { | 5 | { |
diff --git a/arch/mips/pci/pci-sb1250.c b/arch/mips/pci/pci-sb1250.c index 80f5e8c4bcd4..75c1246ced5f 100644 --- a/arch/mips/pci/pci-sb1250.c +++ b/arch/mips/pci/pci-sb1250.c | |||
@@ -228,7 +228,7 @@ static int __init sb1250_pcibios_init(void) | |||
228 | /* | 228 | /* |
229 | * See if the PCI bus has been configured by the firmware. | 229 | * See if the PCI bus has been configured by the firmware. |
230 | */ | 230 | */ |
231 | reg = *((volatile uint64_t *) IOADDR(A_SCD_SYSTEM_CFG)); | 231 | reg = __raw_readq(IOADDR(A_SCD_SYSTEM_CFG)); |
232 | if (!(reg & M_SYS_PCI_HOST)) { | 232 | if (!(reg & M_SYS_PCI_HOST)) { |
233 | sb1250_bus_status |= PCI_DEVICE_MODE; | 233 | sb1250_bus_status |= PCI_DEVICE_MODE; |
234 | } else { | 234 | } else { |
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c index d48665ebd33c..aad03429a5e3 100644 --- a/arch/mips/philips/pnx8550/common/int.c +++ b/arch/mips/philips/pnx8550/common/int.c | |||
@@ -83,16 +83,15 @@ static void timer_irqdispatch(int irq) | |||
83 | 83 | ||
84 | asmlinkage void plat_irq_dispatch(void) | 84 | asmlinkage void plat_irq_dispatch(void) |
85 | { | 85 | { |
86 | unsigned int pending = read_c0_status() & read_c0_cause(); | 86 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
87 | 87 | ||
88 | if (pending & STATUSF_IP2) | 88 | if (pending & STATUSF_IP2) |
89 | hw0_irqdispatch(2); | 89 | hw0_irqdispatch(2); |
90 | else if (pending & STATUSF_IP7) { | 90 | else if (pending & STATUSF_IP7) { |
91 | if (read_c0_config7() & 0x01c0) | 91 | if (read_c0_config7() & 0x01c0) |
92 | timer_irqdispatch(7); | 92 | timer_irqdispatch(7); |
93 | } | 93 | } else |
94 | 94 | spurious_interrupt(); | |
95 | spurious_interrupt(); | ||
96 | } | 95 | } |
97 | 96 | ||
98 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) | 97 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) |
@@ -204,19 +203,7 @@ void __init arch_init_irq(void) | |||
204 | * Note, PCI INTA is active low on the bus, but inverted | 203 | * Note, PCI INTA is active low on the bus, but inverted |
205 | * in the GIC, so to us it's active high. | 204 | * in the GIC, so to us it's active high. |
206 | */ | 205 | */ |
207 | #ifdef CONFIG_PNX8550_V2PCI | 206 | 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 | 207 | ||
221 | /* mask/priority is still 0 so we will not get any | 208 | /* mask/priority is still 0 so we will not get any |
222 | * interrupts until it is unmasked */ | 209 | * interrupts until it is unmasked */ |
diff --git a/arch/mips/qemu/q-smp.c b/arch/mips/qemu/q-smp.c index 5a12354cd576..786bbfa214d1 100644 --- a/arch/mips/qemu/q-smp.c +++ b/arch/mips/qemu/q-smp.c | |||
@@ -46,3 +46,10 @@ void __init prom_prepare_cpus(unsigned int max_cpus) | |||
46 | void prom_boot_secondary(int cpu, struct task_struct *idle) | 46 | void prom_boot_secondary(int cpu, struct task_struct *idle) |
47 | { | 47 | { |
48 | } | 48 | } |
49 | |||
50 | void __init plat_smp_setup(void) | ||
51 | { | ||
52 | } | ||
53 | void __init plat_prepare_cpus(unsigned int max_cpus) | ||
54 | { | ||
55 | } | ||
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c index b454924aeb56..18348321795d 100644 --- a/arch/mips/sgi-ip22/ip22-int.c +++ b/arch/mips/sgi-ip22/ip22-int.c | |||
@@ -237,7 +237,7 @@ extern void indy_8254timer_irq(void); | |||
237 | 237 | ||
238 | asmlinkage void plat_irq_dispatch(void) | 238 | asmlinkage void plat_irq_dispatch(void) |
239 | { | 239 | { |
240 | unsigned int pending = read_c0_cause(); | 240 | unsigned int pending = read_c0_status() & read_c0_cause(); |
241 | 241 | ||
242 | /* | 242 | /* |
243 | * First we check for r4k counter/timer IRQ. | 243 | * First we check for r4k counter/timer IRQ. |
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c index 8c450d9e8696..fb9da9acf53f 100644 --- a/arch/mips/sgi-ip32/ip32-irq.c +++ b/arch/mips/sgi-ip32/ip32-irq.c | |||
@@ -454,7 +454,7 @@ static void ip32_irq5(void) | |||
454 | 454 | ||
455 | asmlinkage void plat_irq_dispatch(void) | 455 | asmlinkage void plat_irq_dispatch(void) |
456 | { | 456 | { |
457 | unsigned int pending = read_c0_cause(); | 457 | unsigned int pending = read_c0_status() & read_c0_cause(); |
458 | 458 | ||
459 | if (likely(pending & IE_IRQ0)) | 459 | if (likely(pending & IE_IRQ0)) |
460 | ip32_irq0(); | 460 | ip32_irq0(); |
diff --git a/arch/mips/sibyte/Kconfig b/arch/mips/sibyte/Kconfig index 67dac6204b6d..bdf24a7b5494 100644 --- a/arch/mips/sibyte/Kconfig +++ b/arch/mips/sibyte/Kconfig | |||
@@ -1,31 +1,35 @@ | |||
1 | config SIBYTE_SB1250 | 1 | config SIBYTE_SB1250 |
2 | bool | 2 | bool |
3 | select HW_HAS_PCI | 3 | select HW_HAS_PCI |
4 | select SIBYTE_HAS_LDT | 4 | select SIBYTE_ENABLE_LDT_IF_PCI |
5 | select SIBYTE_SB1xxx_SOC | 5 | select SIBYTE_SB1xxx_SOC |
6 | select SYS_SUPPORTS_SMP | 6 | select SYS_SUPPORTS_SMP |
7 | 7 | ||
8 | config SIBYTE_BCM1120 | 8 | config SIBYTE_BCM1120 |
9 | bool | 9 | bool |
10 | select SIBYTE_BCM112X | 10 | select SIBYTE_BCM112X |
11 | select SIBYTE_HAS_ZBUS_PROFILING | ||
11 | select SIBYTE_SB1xxx_SOC | 12 | select SIBYTE_SB1xxx_SOC |
12 | 13 | ||
13 | config SIBYTE_BCM1125 | 14 | config SIBYTE_BCM1125 |
14 | bool | 15 | bool |
15 | select HW_HAS_PCI | 16 | select HW_HAS_PCI |
16 | select SIBYTE_BCM112X | 17 | select SIBYTE_BCM112X |
18 | select SIBYTE_HAS_ZBUS_PROFILING | ||
17 | select SIBYTE_SB1xxx_SOC | 19 | select SIBYTE_SB1xxx_SOC |
18 | 20 | ||
19 | config SIBYTE_BCM1125H | 21 | config SIBYTE_BCM1125H |
20 | bool | 22 | bool |
21 | select HW_HAS_PCI | 23 | select HW_HAS_PCI |
22 | select SIBYTE_BCM112X | 24 | select SIBYTE_BCM112X |
23 | select SIBYTE_HAS_LDT | 25 | select SIBYTE_ENABLE_LDT_IF_PCI |
26 | select SIBYTE_HAS_ZBUS_PROFILING | ||
24 | select SIBYTE_SB1xxx_SOC | 27 | select SIBYTE_SB1xxx_SOC |
25 | 28 | ||
26 | config SIBYTE_BCM112X | 29 | config SIBYTE_BCM112X |
27 | bool | 30 | bool |
28 | select SIBYTE_SB1xxx_SOC | 31 | select SIBYTE_SB1xxx_SOC |
32 | select SIBYTE_HAS_ZBUS_PROFILING | ||
29 | 33 | ||
30 | config SIBYTE_BCM1x80 | 34 | config SIBYTE_BCM1x80 |
31 | bool | 35 | bool |
@@ -37,6 +41,7 @@ config SIBYTE_BCM1x55 | |||
37 | bool | 41 | bool |
38 | select HW_HAS_PCI | 42 | select HW_HAS_PCI |
39 | select SIBYTE_SB1xxx_SOC | 43 | select SIBYTE_SB1xxx_SOC |
44 | select SIBYTE_HAS_ZBUS_PROFILING | ||
40 | select SYS_SUPPORTS_SMP | 45 | select SYS_SUPPORTS_SMP |
41 | 46 | ||
42 | config SIBYTE_SB1xxx_SOC | 47 | config SIBYTE_SB1xxx_SOC |
@@ -95,8 +100,10 @@ config CPU_SB1_PASS_2 | |||
95 | 100 | ||
96 | config SIBYTE_HAS_LDT | 101 | config SIBYTE_HAS_LDT |
97 | bool | 102 | bool |
98 | depends on PCI && (SIBYTE_SB1250 || SIBYTE_BCM1125H) | 103 | |
99 | default y | 104 | config SIBYTE_ENABLE_LDT_IF_PCI |
105 | bool | ||
106 | select SIBYTE_HAS_LDT if PCI | ||
100 | 107 | ||
101 | config SIMULATION | 108 | config SIMULATION |
102 | bool "Running under simulation" | 109 | bool "Running under simulation" |
@@ -162,5 +169,8 @@ config SIBYTE_SB1250_PROF | |||
162 | depends on SIBYTE_SB1xxx_SOC | 169 | depends on SIBYTE_SB1xxx_SOC |
163 | 170 | ||
164 | config SIBYTE_TBPROF | 171 | config SIBYTE_TBPROF |
165 | bool "Support for ZBbus profiling" | 172 | tristate "Support for ZBbus profiling" |
166 | depends on SIBYTE_SB1xxx_SOC | 173 | depends on SIBYTE_HAS_ZBUS_PROFILING |
174 | |||
175 | config SIBYTE_HAS_ZBUS_PROFILING | ||
176 | bool | ||
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index 20af0f1bb7bf..ba0c4b776c85 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -141,11 +141,11 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask) | |||
141 | unsigned long flags; | 141 | unsigned long flags; |
142 | unsigned int irq_dirty; | 142 | unsigned int irq_dirty; |
143 | 143 | ||
144 | i = first_cpu(mask); | 144 | if (cpus_weight(mask) != 1) { |
145 | if (next_cpu(i, mask) <= NR_CPUS) { | ||
146 | printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq); | 145 | printk("attempted to set irq affinity for irq %d to multiple CPUs\n", irq); |
147 | return; | 146 | return; |
148 | } | 147 | } |
148 | i = first_cpu(mask); | ||
149 | 149 | ||
150 | /* Convert logical CPU to physical CPU */ | 150 | /* Convert logical CPU to physical CPU */ |
151 | cpu = cpu_logical_map(i); | 151 | cpu = cpu_logical_map(i); |
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c index bf328277c775..6eac36d1b8c8 100644 --- a/arch/mips/sibyte/bcm1480/smp.c +++ b/arch/mips/sibyte/bcm1480/smp.c | |||
@@ -34,21 +34,21 @@ extern void smp_call_function_interrupt(void); | |||
34 | * independent of board/firmware | 34 | * independent of board/firmware |
35 | */ | 35 | */ |
36 | 36 | ||
37 | static volatile void *mailbox_0_set_regs[] = { | 37 | static void *mailbox_0_set_regs[] = { |
38 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), | 38 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), |
39 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), | 39 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), |
40 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), | 40 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), |
41 | IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), | 41 | IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_SET_CPU), |
42 | }; | 42 | }; |
43 | 43 | ||
44 | static volatile void *mailbox_0_clear_regs[] = { | 44 | static void *mailbox_0_clear_regs[] = { |
45 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), | 45 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), |
46 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), | 46 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), |
47 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), | 47 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), |
48 | IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), | 48 | IOADDR(A_BCM1480_IMR_CPU3_BASE + R_BCM1480_IMR_MAILBOX_0_CLR_CPU), |
49 | }; | 49 | }; |
50 | 50 | ||
51 | static volatile void *mailbox_0_regs[] = { | 51 | static void *mailbox_0_regs[] = { |
52 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), | 52 | IOADDR(A_BCM1480_IMR_CPU0_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), |
53 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), | 53 | IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), |
54 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), | 54 | IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), |
diff --git a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c index 212547c57310..ea0ca131a3cf 100644 --- a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c +++ b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001, 2002, 2003 Broadcom Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | 2 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU General Public License | 3 | * modify it under the terms of the GNU General Public License |
6 | * as published by the Free Software Foundation; either version 2 | 4 | * as published by the Free Software Foundation; either version 2 |
@@ -14,10 +12,16 @@ | |||
14 | * You should have received a copy of the GNU General Public License | 12 | * You should have received a copy of the GNU General Public License |
15 | * along with this program; if not, write to the Free Software | 13 | * along with this program; if not, write to the Free Software |
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 14 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
15 | * | ||
16 | * Copyright (C) 2001, 2002, 2003 Broadcom Corporation | ||
17 | * Copyright (C) 2007 Ralf Baechle <ralf@linux-mips.org> | ||
18 | * Copyright (C) 2007 MIPS Technologies, Inc. | ||
19 | * written by Ralf Baechle <ralf@linux-mips.org> | ||
17 | */ | 20 | */ |
18 | 21 | ||
19 | #define SBPROF_TB_DEBUG 0 | 22 | #undef DEBUG |
20 | 23 | ||
24 | #include <linux/device.h> | ||
21 | #include <linux/module.h> | 25 | #include <linux/module.h> |
22 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
23 | #include <linux/types.h> | 27 | #include <linux/types.h> |
@@ -27,24 +31,98 @@ | |||
27 | #include <linux/vmalloc.h> | 31 | #include <linux/vmalloc.h> |
28 | #include <linux/fs.h> | 32 | #include <linux/fs.h> |
29 | #include <linux/errno.h> | 33 | #include <linux/errno.h> |
30 | #include <linux/reboot.h> | 34 | #include <linux/types.h> |
31 | #include <linux/smp_lock.h> | ||
32 | #include <linux/wait.h> | 35 | #include <linux/wait.h> |
33 | #include <asm/uaccess.h> | 36 | |
34 | #include <asm/io.h> | 37 | #include <asm/io.h> |
35 | #include <asm/sibyte/sb1250.h> | 38 | #include <asm/sibyte/sb1250.h> |
36 | #include <asm/sibyte/sb1250_regs.h> | 39 | #include <asm/sibyte/sb1250_regs.h> |
37 | #include <asm/sibyte/sb1250_scd.h> | 40 | #include <asm/sibyte/sb1250_scd.h> |
38 | #include <asm/sibyte/sb1250_int.h> | 41 | #include <asm/sibyte/sb1250_int.h> |
39 | #include <asm/sibyte/trace_prof.h> | 42 | #include <asm/system.h> |
43 | #include <asm/uaccess.h> | ||
40 | 44 | ||
41 | #define DEVNAME "bcm1250_tbprof" | 45 | #define SBPROF_TB_MAJOR 240 |
46 | |||
47 | typedef u64 tb_sample_t[6*256]; | ||
48 | |||
49 | enum open_status { | ||
50 | SB_CLOSED, | ||
51 | SB_OPENING, | ||
52 | SB_OPEN | ||
53 | }; | ||
54 | |||
55 | struct sbprof_tb { | ||
56 | wait_queue_head_t tb_sync; | ||
57 | wait_queue_head_t tb_read; | ||
58 | struct mutex lock; | ||
59 | enum open_status open; | ||
60 | tb_sample_t *sbprof_tbbuf; | ||
61 | int next_tb_sample; | ||
62 | |||
63 | volatile int tb_enable; | ||
64 | volatile int tb_armed; | ||
65 | |||
66 | }; | ||
42 | 67 | ||
43 | static struct sbprof_tb sbp; | 68 | static struct sbprof_tb sbp; |
44 | 69 | ||
70 | #define MAX_SAMPLE_BYTES (24*1024*1024) | ||
71 | #define MAX_TBSAMPLE_BYTES (12*1024*1024) | ||
72 | |||
73 | #define MAX_SAMPLES (MAX_SAMPLE_BYTES/sizeof(u_int32_t)) | ||
74 | #define TB_SAMPLE_SIZE (sizeof(tb_sample_t)) | ||
75 | #define MAX_TB_SAMPLES (MAX_TBSAMPLE_BYTES/TB_SAMPLE_SIZE) | ||
76 | |||
77 | /* ioctls */ | ||
78 | #define SBPROF_ZBSTART _IOW('s', 0, int) | ||
79 | #define SBPROF_ZBSTOP _IOW('s', 1, int) | ||
80 | #define SBPROF_ZBWAITFULL _IOW('s', 2, int) | ||
81 | |||
82 | /* | ||
83 | * Routines for using 40-bit SCD cycle counter | ||
84 | * | ||
85 | * Client responsible for either handling interrupts or making sure | ||
86 | * the cycles counter never saturates, e.g., by doing | ||
87 | * zclk_timer_init(0) at least every 2^40 - 1 ZCLKs. | ||
88 | */ | ||
89 | |||
90 | /* | ||
91 | * Configures SCD counter 0 to count ZCLKs starting from val; | ||
92 | * Configures SCD counters1,2,3 to count nothing. | ||
93 | * Must not be called while gathering ZBbus profiles. | ||
94 | */ | ||
95 | |||
96 | #define zclk_timer_init(val) \ | ||
97 | __asm__ __volatile__ (".set push;" \ | ||
98 | ".set mips64;" \ | ||
99 | "la $8, 0xb00204c0;" /* SCD perf_cnt_cfg */ \ | ||
100 | "sd %0, 0x10($8);" /* write val to counter0 */ \ | ||
101 | "sd %1, 0($8);" /* config counter0 for zclks*/ \ | ||
102 | ".set pop" \ | ||
103 | : /* no outputs */ \ | ||
104 | /* enable, counter0 */ \ | ||
105 | : /* inputs */ "r"(val), "r" ((1ULL << 33) | 1ULL) \ | ||
106 | : /* modifies */ "$8" ) | ||
107 | |||
108 | |||
109 | /* Reads SCD counter 0 and puts result in value | ||
110 | unsigned long long val; */ | ||
111 | #define zclk_get(val) \ | ||
112 | __asm__ __volatile__ (".set push;" \ | ||
113 | ".set mips64;" \ | ||
114 | "la $8, 0xb00204c0;" /* SCD perf_cnt_cfg */ \ | ||
115 | "ld %0, 0x10($8);" /* write val to counter0 */ \ | ||
116 | ".set pop" \ | ||
117 | : /* outputs */ "=r"(val) \ | ||
118 | : /* inputs */ \ | ||
119 | : /* modifies */ "$8" ) | ||
120 | |||
121 | #define DEVNAME "bcm1250_tbprof" | ||
122 | |||
45 | #define TB_FULL (sbp.next_tb_sample == MAX_TB_SAMPLES) | 123 | #define TB_FULL (sbp.next_tb_sample == MAX_TB_SAMPLES) |
46 | 124 | ||
47 | /************************************************************************ | 125 | /* |
48 | * Support for ZBbus sampling using the trace buffer | 126 | * Support for ZBbus sampling using the trace buffer |
49 | * | 127 | * |
50 | * We use the SCD performance counter interrupt, caused by a Zclk counter | 128 | * We use the SCD performance counter interrupt, caused by a Zclk counter |
@@ -54,30 +132,36 @@ static struct sbprof_tb sbp; | |||
54 | * overflow. | 132 | * overflow. |
55 | * | 133 | * |
56 | * We map the interrupt for trace_buffer_freeze to handle it on CPU 0. | 134 | * We map the interrupt for trace_buffer_freeze to handle it on CPU 0. |
57 | * | 135 | */ |
58 | ************************************************************************/ | ||
59 | 136 | ||
60 | static u_int64_t tb_period; | 137 | static u64 tb_period; |
61 | 138 | ||
62 | static void arm_tb(void) | 139 | static void arm_tb(void) |
63 | { | 140 | { |
64 | u_int64_t scdperfcnt; | 141 | u64 scdperfcnt; |
65 | u_int64_t next = (1ULL << 40) - tb_period; | 142 | u64 next = (1ULL << 40) - tb_period; |
66 | u_int64_t tb_options = M_SCD_TRACE_CFG_FREEZE_FULL; | 143 | u64 tb_options = M_SCD_TRACE_CFG_FREEZE_FULL; |
67 | /* Generate an SCD_PERFCNT interrupt in TB_PERIOD Zclks to | 144 | |
68 | trigger start of trace. XXX vary sampling period */ | 145 | /* |
146 | * Generate an SCD_PERFCNT interrupt in TB_PERIOD Zclks to trigger | ||
147 | *start of trace. XXX vary sampling period | ||
148 | */ | ||
69 | __raw_writeq(0, IOADDR(A_SCD_PERF_CNT_1)); | 149 | __raw_writeq(0, IOADDR(A_SCD_PERF_CNT_1)); |
70 | scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG)); | 150 | scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG)); |
71 | /* Unfortunately, in Pass 2 we must clear all counters to knock down | 151 | |
72 | a previous interrupt request. This means that bus profiling | 152 | /* |
73 | requires ALL of the SCD perf counters. */ | 153 | * Unfortunately, in Pass 2 we must clear all counters to knock down a |
154 | * previous interrupt request. This means that bus profiling requires | ||
155 | * ALL of the SCD perf counters. | ||
156 | */ | ||
74 | __raw_writeq((scdperfcnt & ~M_SPC_CFG_SRC1) | | 157 | __raw_writeq((scdperfcnt & ~M_SPC_CFG_SRC1) | |
75 | // keep counters 0,2,3 as is | 158 | /* keep counters 0,2,3 as is */ |
76 | M_SPC_CFG_ENABLE | // enable counting | 159 | M_SPC_CFG_ENABLE | /* enable counting */ |
77 | M_SPC_CFG_CLEAR | // clear all counters | 160 | M_SPC_CFG_CLEAR | /* clear all counters */ |
78 | V_SPC_CFG_SRC1(1), // counter 1 counts cycles | 161 | V_SPC_CFG_SRC1(1), /* counter 1 counts cycles */ |
79 | IOADDR(A_SCD_PERF_CNT_CFG)); | 162 | IOADDR(A_SCD_PERF_CNT_CFG)); |
80 | __raw_writeq(next, IOADDR(A_SCD_PERF_CNT_1)); | 163 | __raw_writeq(next, IOADDR(A_SCD_PERF_CNT_1)); |
164 | |||
81 | /* Reset the trace buffer */ | 165 | /* Reset the trace buffer */ |
82 | __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); | 166 | __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); |
83 | #if 0 && defined(M_SCD_TRACE_CFG_FORCECNT) | 167 | #if 0 && defined(M_SCD_TRACE_CFG_FORCECNT) |
@@ -91,43 +175,45 @@ static void arm_tb(void) | |||
91 | static irqreturn_t sbprof_tb_intr(int irq, void *dev_id) | 175 | static irqreturn_t sbprof_tb_intr(int irq, void *dev_id) |
92 | { | 176 | { |
93 | int i; | 177 | int i; |
94 | DBG(printk(DEVNAME ": tb_intr\n")); | 178 | |
179 | pr_debug(DEVNAME ": tb_intr\n"); | ||
180 | |||
95 | if (sbp.next_tb_sample < MAX_TB_SAMPLES) { | 181 | if (sbp.next_tb_sample < MAX_TB_SAMPLES) { |
96 | /* XXX should use XKPHYS to make writes bypass L2 */ | 182 | /* XXX should use XKPHYS to make writes bypass L2 */ |
97 | u_int64_t *p = sbp.sbprof_tbbuf[sbp.next_tb_sample++]; | 183 | u64 *p = sbp.sbprof_tbbuf[sbp.next_tb_sample++]; |
98 | /* Read out trace */ | 184 | /* Read out trace */ |
99 | __raw_writeq(M_SCD_TRACE_CFG_START_READ, | 185 | __raw_writeq(M_SCD_TRACE_CFG_START_READ, |
100 | IOADDR(A_SCD_TRACE_CFG)); | 186 | IOADDR(A_SCD_TRACE_CFG)); |
101 | __asm__ __volatile__ ("sync" : : : "memory"); | 187 | __asm__ __volatile__ ("sync" : : : "memory"); |
102 | /* Loop runs backwards because bundles are read out in reverse order */ | 188 | /* Loop runs backwards because bundles are read out in reverse order */ |
103 | for (i = 256 * 6; i > 0; i -= 6) { | 189 | for (i = 256 * 6; i > 0; i -= 6) { |
104 | // Subscripts decrease to put bundle in the order | 190 | /* Subscripts decrease to put bundle in the order */ |
105 | // t0 lo, t0 hi, t1 lo, t1 hi, t2 lo, t2 hi | 191 | /* t0 lo, t0 hi, t1 lo, t1 hi, t2 lo, t2 hi */ |
106 | p[i - 1] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 192 | p[i - 1] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
107 | // read t2 hi | 193 | /* read t2 hi */ |
108 | p[i - 2] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 194 | p[i - 2] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
109 | // read t2 lo | 195 | /* read t2 lo */ |
110 | p[i - 3] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 196 | p[i - 3] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
111 | // read t1 hi | 197 | /* read t1 hi */ |
112 | p[i - 4] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 198 | p[i - 4] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
113 | // read t1 lo | 199 | /* read t1 lo */ |
114 | p[i - 5] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 200 | p[i - 5] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
115 | // read t0 hi | 201 | /* read t0 hi */ |
116 | p[i - 6] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); | 202 | p[i - 6] = __raw_readq(IOADDR(A_SCD_TRACE_READ)); |
117 | // read t0 lo | 203 | /* read t0 lo */ |
118 | } | 204 | } |
119 | if (!sbp.tb_enable) { | 205 | if (!sbp.tb_enable) { |
120 | DBG(printk(DEVNAME ": tb_intr shutdown\n")); | 206 | pr_debug(DEVNAME ": tb_intr shutdown\n"); |
121 | __raw_writeq(M_SCD_TRACE_CFG_RESET, | 207 | __raw_writeq(M_SCD_TRACE_CFG_RESET, |
122 | IOADDR(A_SCD_TRACE_CFG)); | 208 | IOADDR(A_SCD_TRACE_CFG)); |
123 | sbp.tb_armed = 0; | 209 | sbp.tb_armed = 0; |
124 | wake_up(&sbp.tb_sync); | 210 | wake_up(&sbp.tb_sync); |
125 | } else { | 211 | } else { |
126 | arm_tb(); // knock down current interrupt and get another one later | 212 | arm_tb(); /* knock down current interrupt and get another one later */ |
127 | } | 213 | } |
128 | } else { | 214 | } else { |
129 | /* No more trace buffer samples */ | 215 | /* No more trace buffer samples */ |
130 | DBG(printk(DEVNAME ": tb_intr full\n")); | 216 | pr_debug(DEVNAME ": tb_intr full\n"); |
131 | __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); | 217 | __raw_writeq(M_SCD_TRACE_CFG_RESET, IOADDR(A_SCD_TRACE_CFG)); |
132 | sbp.tb_armed = 0; | 218 | sbp.tb_armed = 0; |
133 | if (!sbp.tb_enable) { | 219 | if (!sbp.tb_enable) { |
@@ -135,6 +221,7 @@ static irqreturn_t sbprof_tb_intr(int irq, void *dev_id) | |||
135 | } | 221 | } |
136 | wake_up(&sbp.tb_read); | 222 | wake_up(&sbp.tb_read); |
137 | } | 223 | } |
224 | |||
138 | return IRQ_HANDLED; | 225 | return IRQ_HANDLED; |
139 | } | 226 | } |
140 | 227 | ||
@@ -144,23 +231,30 @@ static irqreturn_t sbprof_pc_intr(int irq, void *dev_id) | |||
144 | return IRQ_NONE; | 231 | return IRQ_NONE; |
145 | } | 232 | } |
146 | 233 | ||
147 | int sbprof_zbprof_start(struct file *filp) | 234 | /* |
235 | * Requires: Already called zclk_timer_init with a value that won't | ||
236 | * saturate 40 bits. No subsequent use of SCD performance counters | ||
237 | * or trace buffer. | ||
238 | */ | ||
239 | |||
240 | static int sbprof_zbprof_start(struct file *filp) | ||
148 | { | 241 | { |
149 | u_int64_t scdperfcnt; | 242 | u64 scdperfcnt; |
243 | int err; | ||
150 | 244 | ||
151 | if (sbp.tb_enable) | 245 | if (xchg(&sbp.tb_enable, 1)) |
152 | return -EBUSY; | 246 | return -EBUSY; |
153 | 247 | ||
154 | DBG(printk(DEVNAME ": starting\n")); | 248 | pr_debug(DEVNAME ": starting\n"); |
155 | 249 | ||
156 | sbp.tb_enable = 1; | ||
157 | sbp.next_tb_sample = 0; | 250 | sbp.next_tb_sample = 0; |
158 | filp->f_pos = 0; | 251 | filp->f_pos = 0; |
159 | 252 | ||
160 | if (request_irq | 253 | err = request_irq(K_INT_TRACE_FREEZE, sbprof_tb_intr, 0, |
161 | (K_INT_TRACE_FREEZE, sbprof_tb_intr, 0, DEVNAME " trace freeze", &sbp)) { | 254 | DEVNAME " trace freeze", &sbp); |
255 | if (err) | ||
162 | return -EBUSY; | 256 | return -EBUSY; |
163 | } | 257 | |
164 | /* Make sure there isn't a perf-cnt interrupt waiting */ | 258 | /* Make sure there isn't a perf-cnt interrupt waiting */ |
165 | scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG)); | 259 | scdperfcnt = __raw_readq(IOADDR(A_SCD_PERF_CNT_CFG)); |
166 | /* Disable and clear counters, override SRC_1 */ | 260 | /* Disable and clear counters, override SRC_1 */ |
@@ -168,18 +262,21 @@ int sbprof_zbprof_start(struct file *filp) | |||
168 | M_SPC_CFG_ENABLE | M_SPC_CFG_CLEAR | V_SPC_CFG_SRC1(1), | 262 | M_SPC_CFG_ENABLE | M_SPC_CFG_CLEAR | V_SPC_CFG_SRC1(1), |
169 | IOADDR(A_SCD_PERF_CNT_CFG)); | 263 | IOADDR(A_SCD_PERF_CNT_CFG)); |
170 | 264 | ||
171 | /* We grab this interrupt to prevent others from trying to use | 265 | /* |
172 | it, even though we don't want to service the interrupts | 266 | * We grab this interrupt to prevent others from trying to use it, even |
173 | (they only feed into the trace-on-interrupt mechanism) */ | 267 | * though we don't want to service the interrupts (they only feed into |
174 | if (request_irq | 268 | * the trace-on-interrupt mechanism) |
175 | (K_INT_PERF_CNT, sbprof_pc_intr, 0, DEVNAME " scd perfcnt", &sbp)) { | 269 | */ |
176 | free_irq(K_INT_TRACE_FREEZE, &sbp); | 270 | err = request_irq(K_INT_PERF_CNT, sbprof_pc_intr, 0, |
177 | return -EBUSY; | 271 | DEVNAME " scd perfcnt", &sbp); |
178 | } | 272 | if (err) |
179 | 273 | goto out_free_irq; | |
180 | /* I need the core to mask these, but the interrupt mapper to | 274 | |
181 | pass them through. I am exploiting my knowledge that | 275 | /* |
182 | cp0_status masks out IP[5]. krw */ | 276 | * I need the core to mask these, but the interrupt mapper to pass them |
277 | * through. I am exploiting my knowledge that cp0_status masks out | ||
278 | * IP[5]. krw | ||
279 | */ | ||
183 | __raw_writeq(K_INT_MAP_I3, | 280 | __raw_writeq(K_INT_MAP_I3, |
184 | IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + | 281 | IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MAP_BASE) + |
185 | (K_INT_PERF_CNT << 3))); | 282 | (K_INT_PERF_CNT << 3))); |
@@ -201,7 +298,7 @@ int sbprof_zbprof_start(struct file *filp) | |||
201 | __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_3)); | 298 | __raw_writeq(0, IOADDR(A_ADDR_TRAP_CFG_3)); |
202 | 299 | ||
203 | /* Initialize Trace Event 0-7 */ | 300 | /* Initialize Trace Event 0-7 */ |
204 | // when interrupt | 301 | /* when interrupt */ |
205 | __raw_writeq(M_SCD_TREVT_INTERRUPT, IOADDR(A_SCD_TRACE_EVENT_0)); | 302 | __raw_writeq(M_SCD_TREVT_INTERRUPT, IOADDR(A_SCD_TRACE_EVENT_0)); |
206 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_1)); | 303 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_1)); |
207 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_2)); | 304 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_2)); |
@@ -212,10 +309,10 @@ int sbprof_zbprof_start(struct file *filp) | |||
212 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_7)); | 309 | __raw_writeq(0, IOADDR(A_SCD_TRACE_EVENT_7)); |
213 | 310 | ||
214 | /* Initialize Trace Sequence 0-7 */ | 311 | /* Initialize Trace Sequence 0-7 */ |
215 | // Start on event 0 (interrupt) | 312 | /* Start on event 0 (interrupt) */ |
216 | __raw_writeq(V_SCD_TRSEQ_FUNC_START | 0x0fff, | 313 | __raw_writeq(V_SCD_TRSEQ_FUNC_START | 0x0fff, |
217 | IOADDR(A_SCD_TRACE_SEQUENCE_0)); | 314 | IOADDR(A_SCD_TRACE_SEQUENCE_0)); |
218 | // dsamp when d used | asamp when a used | 315 | /* dsamp when d used | asamp when a used */ |
219 | __raw_writeq(M_SCD_TRSEQ_ASAMPLE | M_SCD_TRSEQ_DSAMPLE | | 316 | __raw_writeq(M_SCD_TRSEQ_ASAMPLE | M_SCD_TRSEQ_DSAMPLE | |
220 | K_SCD_TRSEQ_TRIGGER_ALL, | 317 | K_SCD_TRSEQ_TRIGGER_ALL, |
221 | IOADDR(A_SCD_TRACE_SEQUENCE_1)); | 318 | IOADDR(A_SCD_TRACE_SEQUENCE_1)); |
@@ -232,33 +329,41 @@ int sbprof_zbprof_start(struct file *filp) | |||
232 | 329 | ||
233 | arm_tb(); | 330 | arm_tb(); |
234 | 331 | ||
235 | DBG(printk(DEVNAME ": done starting\n")); | 332 | pr_debug(DEVNAME ": done starting\n"); |
236 | 333 | ||
237 | return 0; | 334 | return 0; |
335 | |||
336 | out_free_irq: | ||
337 | free_irq(K_INT_TRACE_FREEZE, &sbp); | ||
338 | |||
339 | return err; | ||
238 | } | 340 | } |
239 | 341 | ||
240 | int sbprof_zbprof_stop(void) | 342 | static int sbprof_zbprof_stop(void) |
241 | { | 343 | { |
242 | DEFINE_WAIT(wait); | 344 | int err; |
243 | DBG(printk(DEVNAME ": stopping\n")); | 345 | |
346 | pr_debug(DEVNAME ": stopping\n"); | ||
244 | 347 | ||
245 | if (sbp.tb_enable) { | 348 | if (sbp.tb_enable) { |
349 | /* | ||
350 | * XXXKW there is a window here where the intr handler may run, | ||
351 | * see the disable, and do the wake_up before this sleep | ||
352 | * happens. | ||
353 | */ | ||
354 | pr_debug(DEVNAME ": wait for disarm\n"); | ||
355 | err = wait_event_interruptible(sbp.tb_sync, !sbp.tb_armed); | ||
356 | pr_debug(DEVNAME ": disarm complete, stat %d\n", err); | ||
357 | |||
358 | if (err) | ||
359 | return err; | ||
360 | |||
246 | sbp.tb_enable = 0; | 361 | sbp.tb_enable = 0; |
247 | /* XXXKW there is a window here where the intr handler | ||
248 | may run, see the disable, and do the wake_up before | ||
249 | this sleep happens. */ | ||
250 | if (sbp.tb_armed) { | ||
251 | DBG(printk(DEVNAME ": wait for disarm\n")); | ||
252 | prepare_to_wait(&sbp.tb_sync, &wait, TASK_INTERRUPTIBLE); | ||
253 | schedule(); | ||
254 | finish_wait(&sbp.tb_sync, &wait); | ||
255 | DBG(printk(DEVNAME ": disarm complete\n")); | ||
256 | } | ||
257 | free_irq(K_INT_TRACE_FREEZE, &sbp); | 362 | free_irq(K_INT_TRACE_FREEZE, &sbp); |
258 | free_irq(K_INT_PERF_CNT, &sbp); | 363 | free_irq(K_INT_PERF_CNT, &sbp); |
259 | } | 364 | } |
260 | 365 | ||
261 | DBG(printk(DEVNAME ": done stopping\n")); | 366 | pr_debug(DEVNAME ": done stopping\n"); |
262 | 367 | ||
263 | return 0; | 368 | return 0; |
264 | } | 369 | } |
@@ -268,42 +373,45 @@ static int sbprof_tb_open(struct inode *inode, struct file *filp) | |||
268 | int minor; | 373 | int minor; |
269 | 374 | ||
270 | minor = iminor(inode); | 375 | minor = iminor(inode); |
271 | if (minor != 0) { | 376 | if (minor != 0) |
272 | return -ENODEV; | 377 | return -ENODEV; |
273 | } | 378 | |
274 | if (sbp.open) { | 379 | if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) |
275 | return -EBUSY; | 380 | return -EBUSY; |
276 | } | ||
277 | 381 | ||
278 | memset(&sbp, 0, sizeof(struct sbprof_tb)); | 382 | memset(&sbp, 0, sizeof(struct sbprof_tb)); |
383 | |||
279 | sbp.sbprof_tbbuf = vmalloc(MAX_TBSAMPLE_BYTES); | 384 | sbp.sbprof_tbbuf = vmalloc(MAX_TBSAMPLE_BYTES); |
280 | if (!sbp.sbprof_tbbuf) { | 385 | if (!sbp.sbprof_tbbuf) |
281 | return -ENOMEM; | 386 | return -ENOMEM; |
282 | } | 387 | |
283 | memset(sbp.sbprof_tbbuf, 0, MAX_TBSAMPLE_BYTES); | 388 | memset(sbp.sbprof_tbbuf, 0, MAX_TBSAMPLE_BYTES); |
284 | init_waitqueue_head(&sbp.tb_sync); | 389 | init_waitqueue_head(&sbp.tb_sync); |
285 | init_waitqueue_head(&sbp.tb_read); | 390 | init_waitqueue_head(&sbp.tb_read); |
286 | sbp.open = 1; | 391 | mutex_init(&sbp.lock); |
392 | |||
393 | sbp.open = SB_OPEN; | ||
287 | 394 | ||
288 | return 0; | 395 | return 0; |
289 | } | 396 | } |
290 | 397 | ||
291 | static int sbprof_tb_release(struct inode *inode, struct file *filp) | 398 | static int sbprof_tb_release(struct inode *inode, struct file *filp) |
292 | { | 399 | { |
293 | int minor; | 400 | int minor = iminor(inode); |
294 | 401 | ||
295 | minor = iminor(inode); | 402 | if (minor != 0 || !sbp.open) |
296 | if (minor != 0 || !sbp.open) { | ||
297 | return -ENODEV; | 403 | return -ENODEV; |
298 | } | ||
299 | 404 | ||
300 | if (sbp.tb_armed || sbp.tb_enable) { | 405 | mutex_lock(&sbp.lock); |
406 | |||
407 | if (sbp.tb_armed || sbp.tb_enable) | ||
301 | sbprof_zbprof_stop(); | 408 | sbprof_zbprof_stop(); |
302 | } | ||
303 | 409 | ||
304 | vfree(sbp.sbprof_tbbuf); | 410 | vfree(sbp.sbprof_tbbuf); |
305 | sbp.open = 0; | 411 | sbp.open = 0; |
306 | 412 | ||
413 | mutex_unlock(&sbp.lock); | ||
414 | |||
307 | return 0; | 415 | return 0; |
308 | } | 416 | } |
309 | 417 | ||
@@ -311,21 +419,35 @@ static ssize_t sbprof_tb_read(struct file *filp, char *buf, | |||
311 | size_t size, loff_t *offp) | 419 | size_t size, loff_t *offp) |
312 | { | 420 | { |
313 | int cur_sample, sample_off, cur_count, sample_left; | 421 | int cur_sample, sample_off, cur_count, sample_left; |
314 | char *src; | ||
315 | int count = 0; | ||
316 | char *dest = buf; | ||
317 | long cur_off = *offp; | 422 | long cur_off = *offp; |
423 | char *dest = buf; | ||
424 | int count = 0; | ||
425 | char *src; | ||
426 | |||
427 | if (!access_ok(VERIFY_WRITE, buf, size)) | ||
428 | return -EFAULT; | ||
429 | |||
430 | mutex_lock(&sbp.lock); | ||
318 | 431 | ||
319 | count = 0; | 432 | count = 0; |
320 | cur_sample = cur_off / TB_SAMPLE_SIZE; | 433 | cur_sample = cur_off / TB_SAMPLE_SIZE; |
321 | sample_off = cur_off % TB_SAMPLE_SIZE; | 434 | sample_off = cur_off % TB_SAMPLE_SIZE; |
322 | sample_left = TB_SAMPLE_SIZE - sample_off; | 435 | sample_left = TB_SAMPLE_SIZE - sample_off; |
436 | |||
323 | while (size && (cur_sample < sbp.next_tb_sample)) { | 437 | while (size && (cur_sample < sbp.next_tb_sample)) { |
438 | int err; | ||
439 | |||
324 | cur_count = size < sample_left ? size : sample_left; | 440 | cur_count = size < sample_left ? size : sample_left; |
325 | src = (char *)(((long)sbp.sbprof_tbbuf[cur_sample])+sample_off); | 441 | src = (char *)(((long)sbp.sbprof_tbbuf[cur_sample])+sample_off); |
326 | copy_to_user(dest, src, cur_count); | 442 | err = __copy_to_user(dest, src, cur_count); |
327 | DBG(printk(DEVNAME ": read from sample %d, %d bytes\n", | 443 | if (err) { |
328 | cur_sample, cur_count)); | 444 | *offp = cur_off + cur_count - err; |
445 | mutex_unlock(&sbp.lock); | ||
446 | return err; | ||
447 | } | ||
448 | |||
449 | pr_debug(DEVNAME ": read from sample %d, %d bytes\n", | ||
450 | cur_sample, cur_count); | ||
329 | size -= cur_count; | 451 | size -= cur_count; |
330 | sample_left -= cur_count; | 452 | sample_left -= cur_count; |
331 | if (!sample_left) { | 453 | if (!sample_left) { |
@@ -339,37 +461,43 @@ static ssize_t sbprof_tb_read(struct file *filp, char *buf, | |||
339 | dest += cur_count; | 461 | dest += cur_count; |
340 | count += cur_count; | 462 | count += cur_count; |
341 | } | 463 | } |
464 | |||
342 | *offp = cur_off; | 465 | *offp = cur_off; |
466 | mutex_unlock(&sbp.lock); | ||
343 | 467 | ||
344 | return count; | 468 | return count; |
345 | } | 469 | } |
346 | 470 | ||
347 | static long sbprof_tb_ioctl(struct file *filp, | 471 | static long sbprof_tb_ioctl(struct file *filp, unsigned int command, |
348 | unsigned int command, | 472 | unsigned long arg) |
349 | unsigned long arg) | ||
350 | { | 473 | { |
351 | int error = 0; | 474 | int error = 0; |
352 | 475 | ||
353 | lock_kernel(); | ||
354 | switch (command) { | 476 | switch (command) { |
355 | case SBPROF_ZBSTART: | 477 | case SBPROF_ZBSTART: |
478 | mutex_lock(&sbp.lock); | ||
356 | error = sbprof_zbprof_start(filp); | 479 | error = sbprof_zbprof_start(filp); |
480 | mutex_unlock(&sbp.lock); | ||
357 | break; | 481 | break; |
482 | |||
358 | case SBPROF_ZBSTOP: | 483 | case SBPROF_ZBSTOP: |
484 | mutex_lock(&sbp.lock); | ||
359 | error = sbprof_zbprof_stop(); | 485 | error = sbprof_zbprof_stop(); |
486 | mutex_unlock(&sbp.lock); | ||
360 | break; | 487 | break; |
488 | |||
361 | case SBPROF_ZBWAITFULL: | 489 | case SBPROF_ZBWAITFULL: |
362 | DEFINE_WAIT(wait); | 490 | error = wait_event_interruptible(sbp.tb_read, TB_FULL); |
363 | prepare_to_wait(&sbp.tb_read, &wait, TASK_INTERRUPTIBLE); | 491 | if (error) |
364 | schedule(); | 492 | break; |
365 | finish_wait(&sbp.tb_read, &wait); | 493 | |
366 | /* XXXKW check if interrupted? */ | 494 | error = put_user(TB_FULL, (int *) arg); |
367 | return put_user(TB_FULL, (int *) arg); | 495 | break; |
496 | |||
368 | default: | 497 | default: |
369 | error = -EINVAL; | 498 | error = -EINVAL; |
370 | break; | 499 | break; |
371 | } | 500 | } |
372 | unlock_kernel(); | ||
373 | 501 | ||
374 | return error; | 502 | return error; |
375 | } | 503 | } |
@@ -384,23 +512,60 @@ static const struct file_operations sbprof_tb_fops = { | |||
384 | .mmap = NULL, | 512 | .mmap = NULL, |
385 | }; | 513 | }; |
386 | 514 | ||
515 | static struct class *tb_class; | ||
516 | static struct device *tb_dev; | ||
517 | |||
387 | static int __init sbprof_tb_init(void) | 518 | static int __init sbprof_tb_init(void) |
388 | { | 519 | { |
520 | struct device *dev; | ||
521 | struct class *tbc; | ||
522 | int err; | ||
523 | |||
389 | if (register_chrdev(SBPROF_TB_MAJOR, DEVNAME, &sbprof_tb_fops)) { | 524 | if (register_chrdev(SBPROF_TB_MAJOR, DEVNAME, &sbprof_tb_fops)) { |
390 | printk(KERN_WARNING DEVNAME ": initialization failed (dev %d)\n", | 525 | printk(KERN_WARNING DEVNAME ": initialization failed (dev %d)\n", |
391 | SBPROF_TB_MAJOR); | 526 | SBPROF_TB_MAJOR); |
392 | return -EIO; | 527 | return -EIO; |
393 | } | 528 | } |
529 | |||
530 | tbc = class_create(THIS_MODULE, "sb_tracebuffer"); | ||
531 | if (IS_ERR(tbc)) { | ||
532 | err = PTR_ERR(tbc); | ||
533 | goto out_chrdev; | ||
534 | } | ||
535 | |||
536 | tb_class = tbc; | ||
537 | |||
538 | dev = device_create(tbc, NULL, MKDEV(SBPROF_TB_MAJOR, 0), "tb"); | ||
539 | if (IS_ERR(dev)) { | ||
540 | err = PTR_ERR(dev); | ||
541 | goto out_class; | ||
542 | } | ||
543 | tb_dev = dev; | ||
544 | |||
394 | sbp.open = 0; | 545 | sbp.open = 0; |
395 | tb_period = zbbus_mhz * 10000LL; | 546 | tb_period = zbbus_mhz * 10000LL; |
396 | printk(KERN_INFO DEVNAME ": initialized - tb_period = %lld\n", tb_period); | 547 | pr_info(DEVNAME ": initialized - tb_period = %lld\n", tb_period); |
548 | |||
397 | return 0; | 549 | return 0; |
550 | |||
551 | out_class: | ||
552 | class_destroy(tb_class); | ||
553 | out_chrdev: | ||
554 | unregister_chrdev(SBPROF_TB_MAJOR, DEVNAME); | ||
555 | |||
556 | return err; | ||
398 | } | 557 | } |
399 | 558 | ||
400 | static void __exit sbprof_tb_cleanup(void) | 559 | static void __exit sbprof_tb_cleanup(void) |
401 | { | 560 | { |
561 | device_destroy(tb_class, MKDEV(SBPROF_TB_MAJOR, 0)); | ||
402 | unregister_chrdev(SBPROF_TB_MAJOR, DEVNAME); | 562 | unregister_chrdev(SBPROF_TB_MAJOR, DEVNAME); |
563 | class_destroy(tb_class); | ||
403 | } | 564 | } |
404 | 565 | ||
405 | module_init(sbprof_tb_init); | 566 | module_init(sbprof_tb_init); |
406 | module_exit(sbprof_tb_cleanup); | 567 | module_exit(sbprof_tb_cleanup); |
568 | |||
569 | MODULE_ALIAS_CHARDEV_MAJOR(SBPROF_TB_MAJOR); | ||
570 | MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>"); | ||
571 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index 148239446e6e..0e6a13c0bd0e 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -421,7 +421,7 @@ asmlinkage void plat_irq_dispatch(void) | |||
421 | * blasting the high 32 bits. | 421 | * blasting the high 32 bits. |
422 | */ | 422 | */ |
423 | 423 | ||
424 | pending = read_c0_cause() & read_c0_status(); | 424 | pending = read_c0_cause() & read_c0_status() & ST0_IM; |
425 | 425 | ||
426 | #ifdef CONFIG_SIBYTE_SB1250_PROF | 426 | #ifdef CONFIG_SIBYTE_SB1250_PROF |
427 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 427 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
diff --git a/arch/mips/sibyte/sb1250/setup.c b/arch/mips/sibyte/sb1250/setup.c index 1cb042eab720..87188f0f6fbe 100644 --- a/arch/mips/sibyte/sb1250/setup.c +++ b/arch/mips/sibyte/sb1250/setup.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/module.h> | ||
19 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
20 | #include <linux/reboot.h> | 21 | #include <linux/reboot.h> |
21 | #include <linux/string.h> | 22 | #include <linux/string.h> |
@@ -32,6 +33,7 @@ unsigned int soc_pass; | |||
32 | unsigned int soc_type; | 33 | unsigned int soc_type; |
33 | unsigned int periph_rev; | 34 | unsigned int periph_rev; |
34 | unsigned int zbbus_mhz; | 35 | unsigned int zbbus_mhz; |
36 | EXPORT_SYMBOL(zbbus_mhz); | ||
35 | 37 | ||
36 | static char *soc_str; | 38 | static char *soc_str; |
37 | static char *pass_str; | 39 | static char *pass_str; |
diff --git a/arch/mips/sibyte/swarm/setup.c b/arch/mips/sibyte/swarm/setup.c index defa1f1452ad..83572d8f3e14 100644 --- a/arch/mips/sibyte/swarm/setup.c +++ b/arch/mips/sibyte/swarm/setup.c | |||
@@ -169,17 +169,19 @@ void __init plat_mem_setup(void) | |||
169 | #define LEDS_PHYS MLEDS_PHYS | 169 | #define LEDS_PHYS MLEDS_PHYS |
170 | #endif | 170 | #endif |
171 | 171 | ||
172 | #define setled(index, c) \ | ||
173 | ((unsigned char *)(IOADDR(LEDS_PHYS)+0x20))[(3-(index))<<3] = (c) | ||
174 | void setleds(char *str) | 172 | void setleds(char *str) |
175 | { | 173 | { |
174 | void *reg; | ||
176 | int i; | 175 | int i; |
176 | |||
177 | for (i = 0; i < 4; i++) { | 177 | for (i = 0; i < 4; i++) { |
178 | if (!str[i]) { | 178 | reg = IOADDR(LEDS_PHYS) + 0x20 + ((3 - i) << 3); |
179 | setled(i, ' '); | 179 | |
180 | } else { | 180 | if (!str[i]) |
181 | setled(i, str[i]); | 181 | writeb(' ', reg); |
182 | } | 182 | else |
183 | writeb(str[i], reg); | ||
183 | } | 184 | } |
184 | } | 185 | } |
185 | #endif | 186 | |
187 | #endif /* LEDS_PHYS */ | ||
diff --git a/arch/mips/sni/pcimt.c b/arch/mips/sni/pcimt.c index 39e5b4abc555..8e8593b64f6a 100644 --- a/arch/mips/sni/pcimt.c +++ b/arch/mips/sni/pcimt.c | |||
@@ -333,7 +333,7 @@ static void pcimt_hwint3(void) | |||
333 | 333 | ||
334 | static void sni_pcimt_hwint(void) | 334 | static void sni_pcimt_hwint(void) |
335 | { | 335 | { |
336 | u32 pending = (read_c0_cause() & read_c0_status()); | 336 | u32 pending = read_c0_cause() & read_c0_status(); |
337 | 337 | ||
338 | if (pending & C_IRQ5) | 338 | if (pending & C_IRQ5) |
339 | do_IRQ (MIPS_CPU_IRQ_BASE + 7); | 339 | do_IRQ (MIPS_CPU_IRQ_BASE + 7); |
diff --git a/arch/mips/sni/pcit.c b/arch/mips/sni/pcit.c index 8d6b3d5b13a1..1dfc3f00bbd3 100644 --- a/arch/mips/sni/pcit.c +++ b/arch/mips/sni/pcit.c | |||
@@ -271,7 +271,7 @@ static void pcit_hwint0(void) | |||
271 | 271 | ||
272 | static void sni_pcit_hwint(void) | 272 | static void sni_pcit_hwint(void) |
273 | { | 273 | { |
274 | u32 pending = (read_c0_cause() & read_c0_status()); | 274 | u32 pending = read_c0_cause() & read_c0_status(); |
275 | 275 | ||
276 | if (pending & C_IRQ1) | 276 | if (pending & C_IRQ1) |
277 | pcit_hwint1(); | 277 | pcit_hwint1(); |
@@ -285,7 +285,7 @@ static void sni_pcit_hwint(void) | |||
285 | 285 | ||
286 | static void sni_pcit_hwint_cplus(void) | 286 | static void sni_pcit_hwint_cplus(void) |
287 | { | 287 | { |
288 | u32 pending = (read_c0_cause() & read_c0_status()); | 288 | u32 pending = read_c0_cause() & read_c0_status(); |
289 | 289 | ||
290 | if (pending & C_IRQ0) | 290 | if (pending & C_IRQ0) |
291 | pcit_hwint0(); | 291 | pcit_hwint0(); |
diff --git a/arch/mips/tx4927/common/tx4927_irq.c b/arch/mips/tx4927/common/tx4927_irq.c index e7f3e5b84dcf..3d25d010f3d5 100644 --- a/arch/mips/tx4927/common/tx4927_irq.c +++ b/arch/mips/tx4927/common/tx4927_irq.c | |||
@@ -416,7 +416,7 @@ static int tx4927_irq_nested(void) | |||
416 | 416 | ||
417 | asmlinkage void plat_irq_dispatch(void) | 417 | asmlinkage void plat_irq_dispatch(void) |
418 | { | 418 | { |
419 | unsigned int pending = read_c0_status() & read_c0_cause(); | 419 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
420 | 420 | ||
421 | if (pending & STATUSF_IP7) /* cpu timer */ | 421 | if (pending & STATUSF_IP7) /* cpu timer */ |
422 | do_IRQ(TX4927_IRQ_CPU_TIMER); | 422 | do_IRQ(TX4927_IRQ_CPU_TIMER); |
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/process.c b/arch/powerpc/kernel/process.c index d7d7602e348f..949092dccf44 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -465,8 +465,13 @@ void flush_thread(void) | |||
465 | #ifdef CONFIG_PPC64 | 465 | #ifdef CONFIG_PPC64 |
466 | struct thread_info *t = current_thread_info(); | 466 | struct thread_info *t = current_thread_info(); |
467 | 467 | ||
468 | if (t->flags & _TIF_ABI_PENDING) | 468 | if (test_ti_thread_flag(t, TIF_ABI_PENDING)) { |
469 | t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT); | 469 | clear_ti_thread_flag(t, TIF_ABI_PENDING); |
470 | if (test_ti_thread_flag(t, TIF_32BIT)) | ||
471 | clear_ti_thread_flag(t, TIF_32BIT); | ||
472 | else | ||
473 | set_ti_thread_flag(t, TIF_32BIT); | ||
474 | } | ||
470 | #endif | 475 | #endif |
471 | 476 | ||
472 | discard_lazy_cpu_state(); | 477 | discard_lazy_cpu_state(); |
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/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c index c75192567e55..fbfff95b4437 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c | |||
@@ -128,7 +128,7 @@ static void mpc52xx_main_mask(unsigned int virq) | |||
128 | 128 | ||
129 | pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq); | 129 | pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq); |
130 | 130 | ||
131 | io_be_setbit(&intr->main_mask, 15 - l2irq); | 131 | io_be_setbit(&intr->main_mask, 16 - l2irq); |
132 | } | 132 | } |
133 | 133 | ||
134 | static void mpc52xx_main_unmask(unsigned int virq) | 134 | static void mpc52xx_main_unmask(unsigned int virq) |
@@ -141,7 +141,7 @@ static void mpc52xx_main_unmask(unsigned int virq) | |||
141 | 141 | ||
142 | pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq); | 142 | pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq); |
143 | 143 | ||
144 | io_be_clrbit(&intr->main_mask, 15 - l2irq); | 144 | io_be_clrbit(&intr->main_mask, 16 - l2irq); |
145 | } | 145 | } |
146 | 146 | ||
147 | static struct irq_chip mpc52xx_main_irqchip = { | 147 | static struct irq_chip mpc52xx_main_irqchip = { |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index e5d819166874..8aa9a93e2aa2 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -55,9 +55,9 @@ static int mpc834x_usb_cfg(void) | |||
55 | struct device_node *np = NULL; | 55 | struct device_node *np = NULL; |
56 | int port0_is_dr = 0; | 56 | int port0_is_dr = 0; |
57 | 57 | ||
58 | if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL) | 58 | if ((np = of_find_compatible_node(NULL, "usb", "fsl-usb2-dr")) != NULL) |
59 | port0_is_dr = 1; | 59 | port0_is_dr = 1; |
60 | if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL){ | 60 | if ((np = of_find_compatible_node(NULL, "usb", "fsl-usb2-mph")) != NULL){ |
61 | if (port0_is_dr) { | 61 | if (port0_is_dr) { |
62 | printk(KERN_WARNING | 62 | printk(KERN_WARNING |
63 | "There is only one USB port on PB board! \n"); | 63 | "There is only one USB port on PB board! \n"); |
@@ -103,8 +103,8 @@ static int mpc834x_usb_cfg(void) | |||
103 | return -1; | 103 | return -1; |
104 | 104 | ||
105 | /* | 105 | /* |
106 | * if MDS board is plug into PIB board, | 106 | * if Processor Board is plugged into PIB board, |
107 | * force to use the PHY on MDS board | 107 | * force to use the PHY on Processor Board |
108 | */ | 108 | */ |
109 | bcsr5 = in_8(bcsr_regs + 5); | 109 | bcsr5 = in_8(bcsr_regs + 5); |
110 | if (!(bcsr5 & BCSR5_INT_USB)) | 110 | if (!(bcsr5 & BCSR5_INT_USB)) |
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index 124e2c595972..329fcd48669a 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig | |||
@@ -53,6 +53,7 @@ config MPC85xx | |||
53 | bool | 53 | bool |
54 | select PPC_UDBG_16550 | 54 | select PPC_UDBG_16550 |
55 | select PPC_INDIRECT_PCI | 55 | select PPC_INDIRECT_PCI |
56 | select SERIAL_8250_SHARE_IRQ if SERIAL_8250 | ||
56 | default y if MPC8540_ADS || MPC85xx_CDS || MPC8560_ADS \ | 57 | default y if MPC8540_ADS || MPC85xx_CDS || MPC8560_ADS \ |
57 | || MPC85xx_MDS || MPC8544_DS | 58 | || MPC85xx_MDS || MPC8544_DS |
58 | 59 | ||
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 4587c1dfeda5..07819cd3ac44 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/pseries/hvCall.S b/arch/powerpc/platforms/pseries/hvCall.S index 5c7e38789897..c1427b3634ec 100644 --- a/arch/powerpc/platforms/pseries/hvCall.S +++ b/arch/powerpc/platforms/pseries/hvCall.S | |||
@@ -30,9 +30,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_PURR); | |||
30 | 30 | ||
31 | /* | 31 | /* |
32 | * postcall is performed immediately before function return which | 32 | * postcall is performed immediately before function return which |
33 | * allows liberal use of volatile registers. | 33 | * allows liberal use of volatile registers. We branch around this |
34 | * in early init (eg when populating the MMU hashtable) by using an | ||
35 | * unconditional cpu feature. | ||
34 | */ | 36 | */ |
35 | #define HCALL_INST_POSTCALL \ | 37 | #define HCALL_INST_POSTCALL \ |
38 | BEGIN_FTR_SECTION; \ | ||
39 | b 1f; \ | ||
40 | END_FTR_SECTION(0, 1); \ | ||
36 | ld r4,STK_PARM(r3)(r1); /* validate opcode */ \ | 41 | ld r4,STK_PARM(r3)(r1); /* validate opcode */ \ |
37 | cmpldi cr7,r4,MAX_HCALL_OPCODE; \ | 42 | cmpldi cr7,r4,MAX_HCALL_OPCODE; \ |
38 | bgt- cr7,1f; \ | 43 | bgt- cr7,1f; \ |
@@ -123,6 +128,40 @@ _GLOBAL(plpar_hcall) | |||
123 | 128 | ||
124 | blr /* return r3 = status */ | 129 | blr /* return r3 = status */ |
125 | 130 | ||
131 | /* | ||
132 | * plpar_hcall_raw can be called in real mode. kexec/kdump need some | ||
133 | * hypervisor calls to be executed in real mode. So plpar_hcall_raw | ||
134 | * does not access the per cpu hypervisor call statistics variables, | ||
135 | * since these variables may not be present in the RMO region. | ||
136 | */ | ||
137 | _GLOBAL(plpar_hcall_raw) | ||
138 | HMT_MEDIUM | ||
139 | |||
140 | mfcr r0 | ||
141 | stw r0,8(r1) | ||
142 | |||
143 | std r4,STK_PARM(r4)(r1) /* Save ret buffer */ | ||
144 | |||
145 | mr r4,r5 | ||
146 | mr r5,r6 | ||
147 | mr r6,r7 | ||
148 | mr r7,r8 | ||
149 | mr r8,r9 | ||
150 | mr r9,r10 | ||
151 | |||
152 | HVSC /* invoke the hypervisor */ | ||
153 | |||
154 | ld r12,STK_PARM(r4)(r1) | ||
155 | std r4, 0(r12) | ||
156 | std r5, 8(r12) | ||
157 | std r6, 16(r12) | ||
158 | std r7, 24(r12) | ||
159 | |||
160 | lwz r0,8(r1) | ||
161 | mtcrf 0xff,r0 | ||
162 | |||
163 | blr /* return r3 = status */ | ||
164 | |||
126 | _GLOBAL(plpar_hcall9) | 165 | _GLOBAL(plpar_hcall9) |
127 | HMT_MEDIUM | 166 | HMT_MEDIUM |
128 | 167 | ||
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index 7496005566ef..843ee9643211 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c | |||
@@ -378,7 +378,7 @@ static void pSeries_lpar_hptab_clear(void) | |||
378 | 378 | ||
379 | /* TODO: Use bulk call */ | 379 | /* TODO: Use bulk call */ |
380 | for (i = 0; i < hpte_count; i++) | 380 | for (i = 0; i < hpte_count; i++) |
381 | plpar_pte_remove(0, i, 0, &dummy1, &dummy2); | 381 | plpar_pte_remove_raw(0, i, 0, &dummy1, &dummy2); |
382 | } | 382 | } |
383 | 383 | ||
384 | /* | 384 | /* |
diff --git a/arch/powerpc/platforms/pseries/plpar_wrappers.h b/arch/powerpc/platforms/pseries/plpar_wrappers.h index 3eb7b294d92f..2e4d10c9eea8 100644 --- a/arch/powerpc/platforms/pseries/plpar_wrappers.h +++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h | |||
@@ -78,6 +78,22 @@ static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex, | |||
78 | return rc; | 78 | return rc; |
79 | } | 79 | } |
80 | 80 | ||
81 | /* plpar_pte_remove_raw can be called in real mode. It calls plpar_hcall_raw */ | ||
82 | static inline long plpar_pte_remove_raw(unsigned long flags, unsigned long ptex, | ||
83 | unsigned long avpn, unsigned long *old_pteh_ret, | ||
84 | unsigned long *old_ptel_ret) | ||
85 | { | ||
86 | long rc; | ||
87 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; | ||
88 | |||
89 | rc = plpar_hcall_raw(H_REMOVE, retbuf, flags, ptex, avpn); | ||
90 | |||
91 | *old_pteh_ret = retbuf[0]; | ||
92 | *old_ptel_ret = retbuf[1]; | ||
93 | |||
94 | return rc; | ||
95 | } | ||
96 | |||
81 | static inline long plpar_pte_read(unsigned long flags, unsigned long ptex, | 97 | static inline long plpar_pte_read(unsigned long flags, unsigned long ptex, |
82 | unsigned long *old_pteh_ret, unsigned long *old_ptel_ret) | 98 | unsigned long *old_pteh_ret, unsigned long *old_ptel_ret) |
83 | { | 99 | { |
diff --git a/arch/powerpc/sysdev/dcr.c b/arch/powerpc/sysdev/dcr.c index dffeeaeca1d9..1fc5819e7d18 100644 --- a/arch/powerpc/sysdev/dcr.c +++ b/arch/powerpc/sysdev/dcr.c | |||
@@ -129,7 +129,7 @@ void dcr_unmap(dcr_host_t host, unsigned int dcr_n, unsigned int dcr_c) | |||
129 | 129 | ||
130 | if (h.token == NULL) | 130 | if (h.token == NULL) |
131 | return; | 131 | return; |
132 | h.token -= dcr_n * h.stride; | 132 | h.token += dcr_n * h.stride; |
133 | iounmap(h.token); | 133 | iounmap(h.token); |
134 | h.token = NULL; | 134 | h.token = NULL; |
135 | } | 135 | } |
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c index e3d71e083f35..43f6cc9d7ea0 100644 --- a/arch/powerpc/sysdev/qe_lib/qe.c +++ b/arch/powerpc/sysdev/qe_lib/qe.c | |||
@@ -251,13 +251,13 @@ static int qe_sdma_init(void) | |||
251 | 251 | ||
252 | /* allocate 2 internal temporary buffers (512 bytes size each) for | 252 | /* allocate 2 internal temporary buffers (512 bytes size each) for |
253 | * the SDMA */ | 253 | * the SDMA */ |
254 | sdma_buf_offset = qe_muram_alloc(512 * 2, 64); | 254 | sdma_buf_offset = qe_muram_alloc(512 * 2, 4096); |
255 | if (IS_MURAM_ERR(sdma_buf_offset)) | 255 | if (IS_MURAM_ERR(sdma_buf_offset)) |
256 | return -ENOMEM; | 256 | return -ENOMEM; |
257 | 257 | ||
258 | out_be32(&sdma->sdebcr, sdma_buf_offset & QE_SDEBCR_BA_MASK); | 258 | out_be32(&sdma->sdebcr, sdma_buf_offset & QE_SDEBCR_BA_MASK); |
259 | out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK | (0x1 >> | 259 | out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK | |
260 | QE_SDMR_CEN_SHIFT))); | 260 | (0x1 << QE_SDMR_CEN_SHIFT))); |
261 | 261 | ||
262 | return 0; | 262 | return 0; |
263 | } | 263 | } |
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/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 97901296894e..32a69a18a796 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1665,3 +1665,20 @@ sys_getcpu_wrapper: | |||
1665 | llgtr %r3,%r3 # unsigned * | 1665 | llgtr %r3,%r3 # unsigned * |
1666 | llgtr %r4,%r4 # struct getcpu_cache * | 1666 | llgtr %r4,%r4 # struct getcpu_cache * |
1667 | jg sys_getcpu | 1667 | jg sys_getcpu |
1668 | |||
1669 | .globl compat_sys_epoll_pwait_wrapper | ||
1670 | compat_sys_epoll_pwait_wrapper: | ||
1671 | lgfr %r2,%r2 # int | ||
1672 | llgtr %r3,%r3 # struct compat_epoll_event * | ||
1673 | lgfr %r4,%r4 # int | ||
1674 | lgfr %r5,%r5 # int | ||
1675 | llgtr %r6,%r6 # compat_sigset_t * | ||
1676 | llgf %r0,164(%r15) # compat_size_t | ||
1677 | stg %r0,160(%r15) | ||
1678 | jg compat_sys_epoll_pwait | ||
1679 | |||
1680 | .globl compat_sys_utimes_wrapper | ||
1681 | compat_sys_utimes_wrapper: | ||
1682 | llgtr %r2,%r2 # char * | ||
1683 | llgtr %r3,%r3 # struct compat_timeval * | ||
1684 | jg compat_sys_utimes | ||
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c index eca3fe595ff4..dca6eaf82c80 100644 --- a/arch/s390/kernel/debug.c +++ b/arch/s390/kernel/debug.c | |||
@@ -268,7 +268,7 @@ debug_info_alloc(char *name, int pages_per_area, int nr_areas, int buf_size, | |||
268 | rc->level = level; | 268 | rc->level = level; |
269 | rc->buf_size = buf_size; | 269 | rc->buf_size = buf_size; |
270 | rc->entry_size = sizeof(debug_entry_t) + buf_size; | 270 | rc->entry_size = sizeof(debug_entry_t) + buf_size; |
271 | strlcpy(rc->name, name, sizeof(rc->name)-1); | 271 | strlcpy(rc->name, name, sizeof(rc->name)); |
272 | memset(rc->views, 0, DEBUG_MAX_VIEWS * sizeof(struct debug_view *)); | 272 | memset(rc->views, 0, DEBUG_MAX_VIEWS * sizeof(struct debug_view *)); |
273 | memset(rc->debugfs_entries, 0 ,DEBUG_MAX_VIEWS * | 273 | memset(rc->debugfs_entries, 0 ,DEBUG_MAX_VIEWS * |
274 | sizeof(struct dentry*)); | 274 | sizeof(struct dentry*)); |
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index afca1c6f4d21..5e47936573f2 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c | |||
@@ -141,9 +141,9 @@ static noinline __init void detect_machine_type(void) | |||
141 | machine_flags |= 4; | 141 | machine_flags |= 4; |
142 | } | 142 | } |
143 | 143 | ||
144 | #ifdef CONFIG_64BIT | ||
144 | static noinline __init int memory_fast_detect(void) | 145 | static noinline __init int memory_fast_detect(void) |
145 | { | 146 | { |
146 | |||
147 | unsigned long val0 = 0; | 147 | unsigned long val0 = 0; |
148 | unsigned long val1 = 0xc; | 148 | unsigned long val1 = 0xc; |
149 | int ret = -ENOSYS; | 149 | int ret = -ENOSYS; |
@@ -161,9 +161,15 @@ static noinline __init int memory_fast_detect(void) | |||
161 | if (ret || val0 != val1) | 161 | if (ret || val0 != val1) |
162 | return -ENOSYS; | 162 | return -ENOSYS; |
163 | 163 | ||
164 | memory_chunk[0].size = val0; | 164 | memory_chunk[0].size = val0 + 1; |
165 | return 0; | 165 | return 0; |
166 | } | 166 | } |
167 | #else | ||
168 | static inline int memory_fast_detect(void) | ||
169 | { | ||
170 | return -ENOSYS; | ||
171 | } | ||
172 | #endif | ||
167 | 173 | ||
168 | #define ADDR2G (1UL << 31) | 174 | #define ADDR2G (1UL << 31) |
169 | 175 | ||
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index d125a4ead08d..f731185bf2bd 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -839,7 +839,7 @@ static int __init reipl_ccw_init(void) | |||
839 | } | 839 | } |
840 | reipl_block_ccw->hdr.len = IPL_PARM_BLK_CCW_LEN; | 840 | reipl_block_ccw->hdr.len = IPL_PARM_BLK_CCW_LEN; |
841 | reipl_block_ccw->hdr.version = IPL_PARM_BLOCK_VERSION; | 841 | reipl_block_ccw->hdr.version = IPL_PARM_BLOCK_VERSION; |
842 | reipl_block_ccw->hdr.blk0_len = sizeof(reipl_block_ccw->ipl_info.ccw); | 842 | reipl_block_ccw->hdr.blk0_len = IPL_PARM_BLK0_CCW_LEN; |
843 | reipl_block_ccw->hdr.pbt = DIAG308_IPL_TYPE_CCW; | 843 | reipl_block_ccw->hdr.pbt = DIAG308_IPL_TYPE_CCW; |
844 | /* check if read scp info worked and set loadparm */ | 844 | /* check if read scp info worked and set loadparm */ |
845 | if (SCCB_VALID) | 845 | if (SCCB_VALID) |
@@ -880,8 +880,7 @@ static int __init reipl_fcp_init(void) | |||
880 | } else { | 880 | } else { |
881 | reipl_block_fcp->hdr.len = IPL_PARM_BLK_FCP_LEN; | 881 | reipl_block_fcp->hdr.len = IPL_PARM_BLK_FCP_LEN; |
882 | reipl_block_fcp->hdr.version = IPL_PARM_BLOCK_VERSION; | 882 | reipl_block_fcp->hdr.version = IPL_PARM_BLOCK_VERSION; |
883 | reipl_block_fcp->hdr.blk0_len = | 883 | reipl_block_fcp->hdr.blk0_len = IPL_PARM_BLK0_FCP_LEN; |
884 | sizeof(reipl_block_fcp->ipl_info.fcp); | ||
885 | reipl_block_fcp->hdr.pbt = DIAG308_IPL_TYPE_FCP; | 884 | reipl_block_fcp->hdr.pbt = DIAG308_IPL_TYPE_FCP; |
886 | reipl_block_fcp->ipl_info.fcp.opt = DIAG308_IPL_OPT_IPL; | 885 | reipl_block_fcp->ipl_info.fcp.opt = DIAG308_IPL_OPT_IPL; |
887 | } | 886 | } |
@@ -930,7 +929,7 @@ static int __init dump_ccw_init(void) | |||
930 | } | 929 | } |
931 | dump_block_ccw->hdr.len = IPL_PARM_BLK_CCW_LEN; | 930 | dump_block_ccw->hdr.len = IPL_PARM_BLK_CCW_LEN; |
932 | dump_block_ccw->hdr.version = IPL_PARM_BLOCK_VERSION; | 931 | dump_block_ccw->hdr.version = IPL_PARM_BLOCK_VERSION; |
933 | dump_block_ccw->hdr.blk0_len = sizeof(reipl_block_ccw->ipl_info.ccw); | 932 | dump_block_ccw->hdr.blk0_len = IPL_PARM_BLK0_CCW_LEN; |
934 | dump_block_ccw->hdr.pbt = DIAG308_IPL_TYPE_CCW; | 933 | dump_block_ccw->hdr.pbt = DIAG308_IPL_TYPE_CCW; |
935 | dump_capabilities |= IPL_TYPE_CCW; | 934 | dump_capabilities |= IPL_TYPE_CCW; |
936 | return 0; | 935 | return 0; |
@@ -954,7 +953,7 @@ static int __init dump_fcp_init(void) | |||
954 | } | 953 | } |
955 | dump_block_fcp->hdr.len = IPL_PARM_BLK_FCP_LEN; | 954 | dump_block_fcp->hdr.len = IPL_PARM_BLK_FCP_LEN; |
956 | dump_block_fcp->hdr.version = IPL_PARM_BLOCK_VERSION; | 955 | dump_block_fcp->hdr.version = IPL_PARM_BLOCK_VERSION; |
957 | dump_block_fcp->hdr.blk0_len = sizeof(dump_block_fcp->ipl_info.fcp); | 956 | dump_block_fcp->hdr.blk0_len = IPL_PARM_BLK0_FCP_LEN; |
958 | dump_block_fcp->hdr.pbt = DIAG308_IPL_TYPE_FCP; | 957 | dump_block_fcp->hdr.pbt = DIAG308_IPL_TYPE_FCP; |
959 | dump_block_fcp->ipl_info.fcp.opt = DIAG308_IPL_OPT_DUMP; | 958 | dump_block_fcp->ipl_info.fcp.opt = DIAG308_IPL_OPT_DUMP; |
960 | dump_capabilities |= IPL_TYPE_FCP; | 959 | dump_capabilities |= IPL_TYPE_FCP; |
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index 8af549e95730..993f35381496 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -167,7 +167,7 @@ static int __kprobes swap_instruction(void *aref) | |||
167 | * shall not cross any page boundaries (vmalloc area!) when writing | 167 | * shall not cross any page boundaries (vmalloc area!) when writing |
168 | * the new instruction. | 168 | * the new instruction. |
169 | */ | 169 | */ |
170 | addr = (u32 *)ALIGN((unsigned long)args->ptr, 4); | 170 | addr = (u32 *)((unsigned long)args->ptr & -4UL); |
171 | if ((unsigned long)args->ptr & 2) | 171 | if ((unsigned long)args->ptr & 2) |
172 | instr = ((*addr) & 0xffff0000) | args->new; | 172 | instr = ((*addr) & 0xffff0000) | args->new; |
173 | else | 173 | else |
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index a52c44455bf0..c774f1069e10 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -320,4 +320,5 @@ SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) | |||
320 | SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice_wrapper) | 320 | SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice_wrapper) |
321 | NI_SYSCALL /* 310 sys_move_pages */ | 321 | NI_SYSCALL /* 310 sys_move_pages */ |
322 | SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) | 322 | SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) |
323 | SYSCALL(sys_epoll_pwait,sys_epoll_pwait,sys_ni_syscall) | 323 | SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper) |
324 | SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper) | ||
diff --git a/arch/sh/boards/renesas/r7780rp/Makefile b/arch/sh/boards/renesas/r7780rp/Makefile index 3c93012e91a3..ed5f5a9a3b3e 100644 --- a/arch/sh/boards/renesas/r7780rp/Makefile +++ b/arch/sh/boards/renesas/r7780rp/Makefile | |||
@@ -2,6 +2,6 @@ | |||
2 | # Makefile for the R7780RP-1 specific parts of the kernel | 2 | # Makefile for the R7780RP-1 specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := setup.o io.o irq.o | 5 | obj-y := setup.o irq.o |
6 | 6 | ||
7 | obj-$(CONFIG_PUSH_SWITCH) += psw.o | 7 | obj-$(CONFIG_PUSH_SWITCH) += psw.o |
diff --git a/arch/sh/boards/renesas/r7780rp/io.c b/arch/sh/boards/renesas/r7780rp/io.c deleted file mode 100644 index f74d2ffb3851..000000000000 --- a/arch/sh/boards/renesas/r7780rp/io.c +++ /dev/null | |||
@@ -1,233 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Ian da Silva, Jeremy Siegel | ||
3 | * Based largely on io_se.c. | ||
4 | * | ||
5 | * I/O routine for Renesas Solutions Highlander R7780RP-1 | ||
6 | * | ||
7 | * Initial version only to support LAN access; some | ||
8 | * placeholder code from io_r7780rp.c left in with the | ||
9 | * expectation of later SuperIO and PCMCIA access. | ||
10 | */ | ||
11 | #include <linux/pci.h> | ||
12 | #include <linux/kernel.h> | ||
13 | #include <linux/types.h> | ||
14 | #include <linux/io.h> | ||
15 | #include <asm/r7780rp.h> | ||
16 | #include <asm/addrspace.h> | ||
17 | |||
18 | static inline unsigned long port88796l(unsigned int port, int flag) | ||
19 | { | ||
20 | unsigned long addr; | ||
21 | |||
22 | if (flag) | ||
23 | addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1); | ||
24 | else | ||
25 | addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1) + 0x1000; | ||
26 | |||
27 | return addr; | ||
28 | } | ||
29 | |||
30 | #if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE) | ||
31 | #define CHECK_AX88796L_PORT(port) \ | ||
32 | ((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20))) | ||
33 | #else | ||
34 | #define CHECK_AX88796L_PORT(port) (0) | ||
35 | #endif | ||
36 | |||
37 | /* | ||
38 | * General outline: remap really low stuff [eventually] to SuperIO, | ||
39 | * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) | ||
40 | * is mapped through the PCI IO window. Stuff with high bits (PXSEG) | ||
41 | * should be way beyond the window, and is used w/o translation for | ||
42 | * compatibility. | ||
43 | */ | ||
44 | u8 r7780rp_inb(unsigned long port) | ||
45 | { | ||
46 | if (CHECK_AX88796L_PORT(port)) | ||
47 | return ctrl_inw(port88796l(port, 0)) & 0xff; | ||
48 | else if (is_pci_ioaddr(port)) | ||
49 | return ctrl_inb(pci_ioaddr(port)); | ||
50 | |||
51 | return ctrl_inw(port) & 0xff; | ||
52 | } | ||
53 | |||
54 | u8 r7780rp_inb_p(unsigned long port) | ||
55 | { | ||
56 | u8 v; | ||
57 | |||
58 | if (CHECK_AX88796L_PORT(port)) | ||
59 | v = ctrl_inw(port88796l(port, 0)) & 0xff; | ||
60 | else if (is_pci_ioaddr(port)) | ||
61 | v = ctrl_inb(pci_ioaddr(port)); | ||
62 | else | ||
63 | v = ctrl_inw(port) & 0xff; | ||
64 | |||
65 | ctrl_delay(); | ||
66 | |||
67 | return v; | ||
68 | } | ||
69 | |||
70 | u16 r7780rp_inw(unsigned long port) | ||
71 | { | ||
72 | if (is_pci_ioaddr(port)) | ||
73 | return ctrl_inw(pci_ioaddr(port)); | ||
74 | |||
75 | return ctrl_inw(port); | ||
76 | } | ||
77 | |||
78 | u32 r7780rp_inl(unsigned long port) | ||
79 | { | ||
80 | if (is_pci_ioaddr(port)) | ||
81 | return ctrl_inl(pci_ioaddr(port)); | ||
82 | |||
83 | return ctrl_inl(port); | ||
84 | } | ||
85 | |||
86 | void r7780rp_outb(u8 value, unsigned long port) | ||
87 | { | ||
88 | if (CHECK_AX88796L_PORT(port)) | ||
89 | ctrl_outw(value, port88796l(port, 0)); | ||
90 | else if (is_pci_ioaddr(port)) | ||
91 | ctrl_outb(value, pci_ioaddr(port)); | ||
92 | else | ||
93 | ctrl_outb(value, port); | ||
94 | } | ||
95 | |||
96 | void r7780rp_outb_p(u8 value, unsigned long port) | ||
97 | { | ||
98 | if (CHECK_AX88796L_PORT(port)) | ||
99 | ctrl_outw(value, port88796l(port, 0)); | ||
100 | else if (is_pci_ioaddr(port)) | ||
101 | ctrl_outb(value, pci_ioaddr(port)); | ||
102 | else | ||
103 | ctrl_outb(value, port); | ||
104 | |||
105 | ctrl_delay(); | ||
106 | } | ||
107 | |||
108 | void r7780rp_outw(u16 value, unsigned long port) | ||
109 | { | ||
110 | if (is_pci_ioaddr(port)) | ||
111 | ctrl_outw(value, pci_ioaddr(port)); | ||
112 | else | ||
113 | ctrl_outw(value, port); | ||
114 | } | ||
115 | |||
116 | void r7780rp_outl(u32 value, unsigned long port) | ||
117 | { | ||
118 | if (is_pci_ioaddr(port)) | ||
119 | ctrl_outl(value, pci_ioaddr(port)); | ||
120 | else | ||
121 | ctrl_outl(value, port); | ||
122 | } | ||
123 | |||
124 | void r7780rp_insb(unsigned long port, void *dst, unsigned long count) | ||
125 | { | ||
126 | volatile u16 *p; | ||
127 | u8 *buf = dst; | ||
128 | |||
129 | if (CHECK_AX88796L_PORT(port)) { | ||
130 | p = (volatile u16 *)port88796l(port, 0); | ||
131 | while (count--) | ||
132 | *buf++ = *p & 0xff; | ||
133 | } else if (is_pci_ioaddr(port)) { | ||
134 | volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); | ||
135 | |||
136 | while (count--) | ||
137 | *buf++ = *bp; | ||
138 | } else { | ||
139 | p = (volatile u16 *)port; | ||
140 | while (count--) | ||
141 | *buf++ = *p & 0xff; | ||
142 | } | ||
143 | } | ||
144 | |||
145 | void r7780rp_insw(unsigned long port, void *dst, unsigned long count) | ||
146 | { | ||
147 | volatile u16 *p; | ||
148 | u16 *buf = dst; | ||
149 | |||
150 | if (CHECK_AX88796L_PORT(port)) | ||
151 | p = (volatile u16 *)port88796l(port, 1); | ||
152 | else if (is_pci_ioaddr(port)) | ||
153 | p = (volatile u16 *)pci_ioaddr(port); | ||
154 | else | ||
155 | p = (volatile u16 *)port; | ||
156 | |||
157 | while (count--) | ||
158 | *buf++ = *p; | ||
159 | |||
160 | flush_dcache_all(); | ||
161 | } | ||
162 | |||
163 | void r7780rp_insl(unsigned long port, void *dst, unsigned long count) | ||
164 | { | ||
165 | if (is_pci_ioaddr(port)) { | ||
166 | volatile u32 *p = (volatile u32 *)pci_ioaddr(port); | ||
167 | u32 *buf = dst; | ||
168 | |||
169 | while (count--) | ||
170 | *buf++ = *p; | ||
171 | } | ||
172 | } | ||
173 | |||
174 | void r7780rp_outsb(unsigned long port, const void *src, unsigned long count) | ||
175 | { | ||
176 | volatile u16 *p; | ||
177 | const u8 *buf = src; | ||
178 | |||
179 | if (CHECK_AX88796L_PORT(port)) { | ||
180 | p = (volatile u16 *)port88796l(port, 0); | ||
181 | while (count--) | ||
182 | *p = *buf++; | ||
183 | } else if (is_pci_ioaddr(port)) { | ||
184 | volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); | ||
185 | |||
186 | while (count--) | ||
187 | *bp = *buf++; | ||
188 | } else | ||
189 | while (count--) | ||
190 | ctrl_outb(*buf++, port); | ||
191 | } | ||
192 | |||
193 | void r7780rp_outsw(unsigned long port, const void *src, unsigned long count) | ||
194 | { | ||
195 | volatile u16 *p; | ||
196 | const u16 *buf = src; | ||
197 | |||
198 | if (CHECK_AX88796L_PORT(port)) | ||
199 | p = (volatile u16 *)port88796l(port, 1); | ||
200 | else if (is_pci_ioaddr(port)) | ||
201 | p = (volatile u16 *)pci_ioaddr(port); | ||
202 | else | ||
203 | p = (volatile u16 *)port; | ||
204 | |||
205 | while (count--) | ||
206 | *p = *buf++; | ||
207 | |||
208 | flush_dcache_all(); | ||
209 | } | ||
210 | |||
211 | void r7780rp_outsl(unsigned long port, const void *src, unsigned long count) | ||
212 | { | ||
213 | const u32 *buf = src; | ||
214 | u32 *p; | ||
215 | |||
216 | if (is_pci_ioaddr(port)) | ||
217 | p = (u32 *)pci_ioaddr(port); | ||
218 | else | ||
219 | p = (u32 *)port; | ||
220 | |||
221 | while (count--) | ||
222 | ctrl_outl(*buf++, (unsigned long)p); | ||
223 | } | ||
224 | |||
225 | void __iomem *r7780rp_ioport_map(unsigned long port, unsigned int size) | ||
226 | { | ||
227 | if (CHECK_AX88796L_PORT(port)) | ||
228 | return (void __iomem *)port88796l(port, size > 1); | ||
229 | else if (is_pci_ioaddr(port)) | ||
230 | return (void __iomem *)pci_ioaddr(port); | ||
231 | |||
232 | return (void __iomem *)port; | ||
233 | } | ||
diff --git a/arch/sh/boards/renesas/r7780rp/setup.c b/arch/sh/boards/renesas/r7780rp/setup.c index 0d74db9f1792..2faba6679e64 100644 --- a/arch/sh/boards/renesas/r7780rp/setup.c +++ b/arch/sh/boards/renesas/r7780rp/setup.c | |||
@@ -187,31 +187,7 @@ static void __init r7780rp_setup(char **cmdline_p) | |||
187 | struct sh_machine_vector mv_r7780rp __initmv = { | 187 | struct sh_machine_vector mv_r7780rp __initmv = { |
188 | .mv_name = "Highlander R7780RP-1", | 188 | .mv_name = "Highlander R7780RP-1", |
189 | .mv_setup = r7780rp_setup, | 189 | .mv_setup = r7780rp_setup, |
190 | |||
191 | .mv_nr_irqs = 109, | 190 | .mv_nr_irqs = 109, |
192 | |||
193 | .mv_inb = r7780rp_inb, | ||
194 | .mv_inw = r7780rp_inw, | ||
195 | .mv_inl = r7780rp_inl, | ||
196 | .mv_outb = r7780rp_outb, | ||
197 | .mv_outw = r7780rp_outw, | ||
198 | .mv_outl = r7780rp_outl, | ||
199 | |||
200 | .mv_inb_p = r7780rp_inb_p, | ||
201 | .mv_inw_p = r7780rp_inw, | ||
202 | .mv_inl_p = r7780rp_inl, | ||
203 | .mv_outb_p = r7780rp_outb_p, | ||
204 | .mv_outw_p = r7780rp_outw, | ||
205 | .mv_outl_p = r7780rp_outl, | ||
206 | |||
207 | .mv_insb = r7780rp_insb, | ||
208 | .mv_insw = r7780rp_insw, | ||
209 | .mv_insl = r7780rp_insl, | ||
210 | .mv_outsb = r7780rp_outsb, | ||
211 | .mv_outsw = r7780rp_outsw, | ||
212 | .mv_outsl = r7780rp_outsl, | ||
213 | |||
214 | .mv_ioport_map = r7780rp_ioport_map, | ||
215 | .mv_init_irq = init_r7780rp_IRQ, | 191 | .mv_init_irq = init_r7780rp_IRQ, |
216 | }; | 192 | }; |
217 | ALIAS_MV(r7780rp) | 193 | ALIAS_MV(r7780rp) |
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c index 44b42082a0af..593f26a85e9c 100644 --- a/arch/sh/boards/renesas/rts7751r2d/setup.c +++ b/arch/sh/boards/renesas/rts7751r2d/setup.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/pata_platform.h> | 13 | #include <linux/pata_platform.h> |
14 | #include <linux/serial_8250.h> | 14 | #include <linux/serial_8250.h> |
15 | #include <linux/sm501.h> | ||
15 | #include <linux/pm.h> | 16 | #include <linux/pm.h> |
16 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
17 | #include <asm/rts7751r2d.h> | 18 | #include <asm/rts7751r2d.h> |
@@ -111,10 +112,35 @@ static struct platform_device heartbeat_device = { | |||
111 | .resource = heartbeat_resources, | 112 | .resource = heartbeat_resources, |
112 | }; | 113 | }; |
113 | 114 | ||
115 | static struct resource sm501_resources[] = { | ||
116 | [0] = { | ||
117 | .start = 0x10000000, | ||
118 | .end = 0x13e00000 - 1, | ||
119 | .flags = IORESOURCE_MEM, | ||
120 | }, | ||
121 | [1] = { | ||
122 | .start = 0x13e00000, | ||
123 | .end = 0x13ffffff, | ||
124 | .flags = IORESOURCE_MEM, | ||
125 | }, | ||
126 | [2] = { | ||
127 | .start = 32, | ||
128 | .flags = IORESOURCE_IRQ, | ||
129 | }, | ||
130 | }; | ||
131 | |||
132 | static struct platform_device sm501_device = { | ||
133 | .name = "sm501", | ||
134 | .id = -1, | ||
135 | .num_resources = ARRAY_SIZE(sm501_resources), | ||
136 | .resource = sm501_resources, | ||
137 | }; | ||
138 | |||
114 | static struct platform_device *rts7751r2d_devices[] __initdata = { | 139 | static struct platform_device *rts7751r2d_devices[] __initdata = { |
115 | &uart_device, | 140 | &uart_device, |
116 | &heartbeat_device, | 141 | &heartbeat_device, |
117 | &cf_ide_device, | 142 | &cf_ide_device, |
143 | &sm501_device, | ||
118 | }; | 144 | }; |
119 | 145 | ||
120 | static int __init rts7751r2d_devices_setup(void) | 146 | static int __init rts7751r2d_devices_setup(void) |
diff --git a/arch/sh/configs/rts7751r2d_defconfig b/arch/sh/configs/rts7751r2d_defconfig index db6a02df5af6..a59bb78bd071 100644 --- a/arch/sh/configs/rts7751r2d_defconfig +++ b/arch/sh/configs/rts7751r2d_defconfig | |||
@@ -1,14 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20 | 3 | # Linux kernel version: 2.6.21-rc1 |
4 | # Thu Feb 15 17:17:29 2007 | 4 | # Thu Mar 1 16:42:40 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
8 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 8 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
9 | CONFIG_GENERIC_HWEIGHT=y | 9 | CONFIG_GENERIC_HWEIGHT=y |
10 | CONFIG_GENERIC_HARDIRQS=y | 10 | CONFIG_GENERIC_HARDIRQS=y |
11 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | 11 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | # CONFIG_GENERIC_TIME is not set | 13 | # CONFIG_GENERIC_TIME is not set |
@@ -33,6 +32,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
33 | CONFIG_SWAP=y | 32 | CONFIG_SWAP=y |
34 | CONFIG_SYSVIPC=y | 33 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | 34 | # CONFIG_IPC_NS is not set |
35 | CONFIG_SYSVIPC_SYSCTL=y | ||
36 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
37 | # CONFIG_BSD_PROCESS_ACCT is not set | 37 | # CONFIG_BSD_PROCESS_ACCT is not set |
38 | # CONFIG_TASKSTATS is not set | 38 | # CONFIG_TASKSTATS is not set |
@@ -119,7 +119,6 @@ CONFIG_SH_RTS7751R2D=y | |||
119 | # CONFIG_SH_SHMIN is not set | 119 | # CONFIG_SH_SHMIN is not set |
120 | # CONFIG_SH_7206_SOLUTION_ENGINE is not set | 120 | # CONFIG_SH_7206_SOLUTION_ENGINE is not set |
121 | # CONFIG_SH_7619_SOLUTION_ENGINE is not set | 121 | # CONFIG_SH_7619_SOLUTION_ENGINE is not set |
122 | # CONFIG_SH_ASDAP310 is not set | ||
123 | # CONFIG_SH_UNKNOWN is not set | 122 | # CONFIG_SH_UNKNOWN is not set |
124 | 123 | ||
125 | # | 124 | # |
@@ -281,7 +280,7 @@ CONFIG_ZERO_PAGE_OFFSET=0x00010000 | |||
281 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 280 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
282 | # CONFIG_UBC_WAKEUP is not set | 281 | # CONFIG_UBC_WAKEUP is not set |
283 | CONFIG_CMDLINE_BOOL=y | 282 | CONFIG_CMDLINE_BOOL=y |
284 | CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" | 283 | CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1" |
285 | 284 | ||
286 | # | 285 | # |
287 | # Bus options | 286 | # Bus options |
@@ -433,6 +432,7 @@ CONFIG_FW_LOADER=m | |||
433 | # | 432 | # |
434 | # Plug and Play support | 433 | # Plug and Play support |
435 | # | 434 | # |
435 | # CONFIG_PNPACPI is not set | ||
436 | 436 | ||
437 | # | 437 | # |
438 | # Block devices | 438 | # Block devices |
@@ -770,7 +770,26 @@ CONFIG_NET_WIRELESS=y | |||
770 | # | 770 | # |
771 | # Input device support | 771 | # Input device support |
772 | # | 772 | # |
773 | # CONFIG_INPUT is not set | 773 | CONFIG_INPUT=y |
774 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
775 | |||
776 | # | ||
777 | # Userland interfaces | ||
778 | # | ||
779 | # CONFIG_INPUT_MOUSEDEV is not set | ||
780 | # CONFIG_INPUT_JOYDEV is not set | ||
781 | # CONFIG_INPUT_TSDEV is not set | ||
782 | # CONFIG_INPUT_EVDEV is not set | ||
783 | # CONFIG_INPUT_EVBUG is not set | ||
784 | |||
785 | # | ||
786 | # Input Device Drivers | ||
787 | # | ||
788 | # CONFIG_INPUT_KEYBOARD is not set | ||
789 | # CONFIG_INPUT_MOUSE is not set | ||
790 | # CONFIG_INPUT_JOYSTICK is not set | ||
791 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
792 | # CONFIG_INPUT_MISC is not set | ||
774 | 793 | ||
775 | # | 794 | # |
776 | # Hardware I/O ports | 795 | # Hardware I/O ports |
@@ -781,7 +800,10 @@ CONFIG_NET_WIRELESS=y | |||
781 | # | 800 | # |
782 | # Character devices | 801 | # Character devices |
783 | # | 802 | # |
784 | # CONFIG_VT is not set | 803 | CONFIG_VT=y |
804 | CONFIG_VT_CONSOLE=y | ||
805 | CONFIG_HW_CONSOLE=y | ||
806 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
785 | # CONFIG_SERIAL_NONSTANDARD is not set | 807 | # CONFIG_SERIAL_NONSTANDARD is not set |
786 | 808 | ||
787 | # | 809 | # |
@@ -857,6 +879,11 @@ CONFIG_HWMON=y | |||
857 | # CONFIG_HWMON_DEBUG_CHIP is not set | 879 | # CONFIG_HWMON_DEBUG_CHIP is not set |
858 | 880 | ||
859 | # | 881 | # |
882 | # Multifunction device drivers | ||
883 | # | ||
884 | CONFIG_MFD_SM501=y | ||
885 | |||
886 | # | ||
860 | # Multimedia devices | 887 | # Multimedia devices |
861 | # | 888 | # |
862 | # CONFIG_VIDEO_DEV is not set | 889 | # CONFIG_VIDEO_DEV is not set |
@@ -869,9 +896,66 @@ CONFIG_HWMON=y | |||
869 | # | 896 | # |
870 | # Graphics support | 897 | # Graphics support |
871 | # | 898 | # |
872 | CONFIG_FIRMWARE_EDID=y | ||
873 | # CONFIG_FB is not set | ||
874 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 899 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
900 | CONFIG_FB=y | ||
901 | # CONFIG_FIRMWARE_EDID is not set | ||
902 | # CONFIG_FB_DDC is not set | ||
903 | CONFIG_FB_CFB_FILLRECT=y | ||
904 | CONFIG_FB_CFB_COPYAREA=y | ||
905 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
906 | # CONFIG_FB_SVGALIB is not set | ||
907 | # CONFIG_FB_MACMODES is not set | ||
908 | # CONFIG_FB_BACKLIGHT is not set | ||
909 | # CONFIG_FB_MODE_HELPERS is not set | ||
910 | # CONFIG_FB_TILEBLITTING is not set | ||
911 | |||
912 | # | ||
913 | # Frambuffer hardware drivers | ||
914 | # | ||
915 | # CONFIG_FB_CIRRUS is not set | ||
916 | # CONFIG_FB_PM2 is not set | ||
917 | # CONFIG_FB_CYBER2000 is not set | ||
918 | # CONFIG_FB_ASILIANT is not set | ||
919 | # CONFIG_FB_IMSTT is not set | ||
920 | # CONFIG_FB_EPSON1355 is not set | ||
921 | # CONFIG_FB_S1D13XXX is not set | ||
922 | # CONFIG_FB_NVIDIA is not set | ||
923 | # CONFIG_FB_RIVA is not set | ||
924 | # CONFIG_FB_MATROX is not set | ||
925 | # CONFIG_FB_RADEON is not set | ||
926 | # CONFIG_FB_ATY128 is not set | ||
927 | # CONFIG_FB_ATY is not set | ||
928 | # CONFIG_FB_S3 is not set | ||
929 | # CONFIG_FB_SAVAGE is not set | ||
930 | # CONFIG_FB_SIS is not set | ||
931 | # CONFIG_FB_NEOMAGIC is not set | ||
932 | # CONFIG_FB_KYRO is not set | ||
933 | # CONFIG_FB_3DFX is not set | ||
934 | # CONFIG_FB_VOODOO1 is not set | ||
935 | # CONFIG_FB_TRIDENT is not set | ||
936 | CONFIG_FB_SM501=y | ||
937 | # CONFIG_FB_VIRTUAL is not set | ||
938 | |||
939 | # | ||
940 | # Console display driver support | ||
941 | # | ||
942 | CONFIG_DUMMY_CONSOLE=y | ||
943 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
944 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
945 | # CONFIG_FONTS is not set | ||
946 | CONFIG_FONT_8x8=y | ||
947 | CONFIG_FONT_8x16=y | ||
948 | |||
949 | # | ||
950 | # Logo configuration | ||
951 | # | ||
952 | CONFIG_LOGO=y | ||
953 | # CONFIG_LOGO_LINUX_MONO is not set | ||
954 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
955 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
956 | # CONFIG_LOGO_SUPERH_MONO is not set | ||
957 | # CONFIG_LOGO_SUPERH_VGA16 is not set | ||
958 | CONFIG_LOGO_SUPERH_CLUT224=y | ||
875 | 959 | ||
876 | # | 960 | # |
877 | # Sound | 961 | # Sound |
@@ -985,6 +1069,12 @@ CONFIG_SOUND_PRIME=m | |||
985 | CONFIG_AC97_BUS=m | 1069 | CONFIG_AC97_BUS=m |
986 | 1070 | ||
987 | # | 1071 | # |
1072 | # HID Devices | ||
1073 | # | ||
1074 | CONFIG_HID=y | ||
1075 | # CONFIG_HID_DEBUG is not set | ||
1076 | |||
1077 | # | ||
988 | # USB support | 1078 | # USB support |
989 | # | 1079 | # |
990 | CONFIG_USB_ARCH_HAS_HCD=y | 1080 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -1237,7 +1327,7 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
1237 | CONFIG_EARLY_SCIF_CONSOLE=y | 1327 | CONFIG_EARLY_SCIF_CONSOLE=y |
1238 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 | 1328 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 |
1239 | CONFIG_EARLY_PRINTK=y | 1329 | CONFIG_EARLY_PRINTK=y |
1240 | # CONFIG_KGDB is not set | 1330 | # CONFIG_SH_KGDB is not set |
1241 | 1331 | ||
1242 | # | 1332 | # |
1243 | # Security options | 1333 | # Security options |
diff --git a/arch/sh/drivers/pci/pci-auto.c b/arch/sh/drivers/pci/pci-auto.c index ecf16344f94a..224e007736fb 100644 --- a/arch/sh/drivers/pci/pci-auto.c +++ b/arch/sh/drivers/pci/pci-auto.c | |||
@@ -214,6 +214,12 @@ retry: | |||
214 | continue; | 214 | continue; |
215 | } | 215 | } |
216 | 216 | ||
217 | if (bar_value < *lower_limit || (bar_value + bar_size) >= *upper_limit) { | ||
218 | DBG(" unavailable -- skipping, value %x size %x\n", | ||
219 | bar_value, bar_size); | ||
220 | continue; | ||
221 | } | ||
222 | |||
217 | #ifdef CONFIG_PCI_AUTO_UPDATE_RESOURCES | 223 | #ifdef CONFIG_PCI_AUTO_UPDATE_RESOURCES |
218 | /* Write it out and update our limit */ | 224 | /* Write it out and update our limit */ |
219 | early_write_config_dword(hose, top_bus, current_bus, pci_devfn, | 225 | early_write_config_dword(hose, top_bus, current_bus, pci_devfn, |
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index 4b339a640b13..726acfcb9b77 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * CPU init code | 4 | * CPU init code |
5 | * | 5 | * |
6 | * Copyright (C) 2002 - 2006 Paul Mundt | 6 | * Copyright (C) 2002 - 2007 Paul Mundt |
7 | * Copyright (C) 2003 Richard Curnow | 7 | * Copyright (C) 2003 Richard Curnow |
8 | * | 8 | * |
9 | * This file is subject to the terms and conditions of the GNU General Public | 9 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -48,8 +48,19 @@ static void __init cache_init(void) | |||
48 | { | 48 | { |
49 | unsigned long ccr, flags; | 49 | unsigned long ccr, flags; |
50 | 50 | ||
51 | if (current_cpu_data.type == CPU_SH_NONE) | 51 | /* First setup the rest of the I-cache info */ |
52 | panic("Unknown CPU"); | 52 | current_cpu_data.icache.entry_mask = current_cpu_data.icache.way_incr - |
53 | current_cpu_data.icache.linesz; | ||
54 | |||
55 | current_cpu_data.icache.way_size = current_cpu_data.icache.sets * | ||
56 | current_cpu_data.icache.linesz; | ||
57 | |||
58 | /* And the D-cache too */ | ||
59 | current_cpu_data.dcache.entry_mask = current_cpu_data.dcache.way_incr - | ||
60 | current_cpu_data.dcache.linesz; | ||
61 | |||
62 | current_cpu_data.dcache.way_size = current_cpu_data.dcache.sets * | ||
63 | current_cpu_data.dcache.linesz; | ||
53 | 64 | ||
54 | jump_to_P2(); | 65 | jump_to_P2(); |
55 | ccr = ctrl_inl(CCR); | 66 | ccr = ctrl_inl(CCR); |
@@ -200,6 +211,9 @@ asmlinkage void __init sh_cpu_init(void) | |||
200 | /* First, probe the CPU */ | 211 | /* First, probe the CPU */ |
201 | detect_cpu_and_cache_system(); | 212 | detect_cpu_and_cache_system(); |
202 | 213 | ||
214 | if (current_cpu_data.type == CPU_SH_NONE) | ||
215 | panic("Unknown CPU"); | ||
216 | |||
203 | /* Init the cache */ | 217 | /* Init the cache */ |
204 | cache_init(); | 218 | cache_init(); |
205 | 219 | ||
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S index 7f7d292f36ec..c16dc8fec489 100644 --- a/arch/sh/kernel/cpu/sh2/entry.S +++ b/arch/sh/kernel/cpu/sh2/entry.S | |||
@@ -165,6 +165,7 @@ ENTRY(exception_handler) | |||
165 | 165 | ||
166 | interrupt_entry: | 166 | interrupt_entry: |
167 | mov r9,r4 | 167 | mov r9,r4 |
168 | mov r15,r5 | ||
168 | mov.l 6f,r9 | 169 | mov.l 6f,r9 |
169 | mov.l 7f,r8 | 170 | mov.l 7f,r8 |
170 | jmp @r8 | 171 | jmp @r8 |
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index c19205b0f2c0..f3e827f29a46 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -514,13 +514,16 @@ skip_save: | |||
514 | 514 | ||
515 | interrupt_exception: | 515 | interrupt_exception: |
516 | mov.l 1f, r9 | 516 | mov.l 1f, r9 |
517 | mov.l 2f, r4 | ||
518 | mov.l @r4, r4 | ||
517 | jmp @r9 | 519 | jmp @r9 |
518 | nop | 520 | mov r15, r5 |
519 | rts | 521 | rts |
520 | nop | 522 | nop |
521 | 523 | ||
522 | .align 2 | 524 | .align 2 |
523 | 1: .long do_IRQ | 525 | 1: .long do_IRQ |
526 | 2: .long INTEVT | ||
524 | 527 | ||
525 | .align 2 | 528 | .align 2 |
526 | ENTRY(exception_none) | 529 | ENTRY(exception_none) |
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c index 9d28c88d2f9d..58950de2696d 100644 --- a/arch/sh/kernel/cpu/sh4/probe.c +++ b/arch/sh/kernel/cpu/sh4/probe.c | |||
@@ -195,13 +195,6 @@ int __init detect_cpu_and_cache_system(void) | |||
195 | 195 | ||
196 | } | 196 | } |
197 | 197 | ||
198 | /* Setup the rest of the I-cache info */ | ||
199 | current_cpu_data.icache.entry_mask = current_cpu_data.icache.way_incr - | ||
200 | current_cpu_data.icache.linesz; | ||
201 | |||
202 | current_cpu_data.icache.way_size = current_cpu_data.icache.sets * | ||
203 | current_cpu_data.icache.linesz; | ||
204 | |||
205 | /* And the rest of the D-cache */ | 198 | /* And the rest of the D-cache */ |
206 | if (current_cpu_data.dcache.ways > 1) { | 199 | if (current_cpu_data.dcache.ways > 1) { |
207 | size = sizes[(cvr >> 16) & 0xf]; | 200 | size = sizes[(cvr >> 16) & 0xf]; |
@@ -209,12 +202,6 @@ int __init detect_cpu_and_cache_system(void) | |||
209 | current_cpu_data.dcache.sets = (size >> 6); | 202 | current_cpu_data.dcache.sets = (size >> 6); |
210 | } | 203 | } |
211 | 204 | ||
212 | current_cpu_data.dcache.entry_mask = current_cpu_data.dcache.way_incr - | ||
213 | current_cpu_data.dcache.linesz; | ||
214 | |||
215 | current_cpu_data.dcache.way_size = current_cpu_data.dcache.sets * | ||
216 | current_cpu_data.dcache.linesz; | ||
217 | |||
218 | /* | 205 | /* |
219 | * Setup the L2 cache desc | 206 | * Setup the L2 cache desc |
220 | * | 207 | * |
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index ab4ebb856c2a..b46728027195 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -224,7 +224,7 @@ work_resched: | |||
224 | syscall_exit_work: | 224 | syscall_exit_work: |
225 | ! r0: current_thread_info->flags | 225 | ! r0: current_thread_info->flags |
226 | ! r8: current_thread_info | 226 | ! r8: current_thread_info |
227 | tst #_TIF_SYSCALL_TRACE, r0 | 227 | tst #_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP, r0 |
228 | bt/s work_pending | 228 | bt/s work_pending |
229 | tst #_TIF_NEED_RESCHED, r0 | 229 | tst #_TIF_NEED_RESCHED, r0 |
230 | #ifdef CONFIG_TRACE_IRQFLAGS | 230 | #ifdef CONFIG_TRACE_IRQFLAGS |
diff --git a/arch/sh/kernel/io_generic.c b/arch/sh/kernel/io_generic.c index 66626c03e1ee..771ea4230441 100644 --- a/arch/sh/kernel/io_generic.c +++ b/arch/sh/kernel/io_generic.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <asm/machvec.h> | 16 | #include <asm/machvec.h> |
17 | #include <asm/cacheflush.h> | ||
18 | 17 | ||
19 | #ifdef CONFIG_CPU_SH3 | 18 | #ifdef CONFIG_CPU_SH3 |
20 | /* SH3 has a PCMCIA bug that needs a dummy read from area 6 for a | 19 | /* SH3 has a PCMCIA bug that needs a dummy read from area 6 for a |
@@ -96,7 +95,6 @@ void generic_insw(unsigned long port, void *dst, unsigned long count) | |||
96 | while (count--) | 95 | while (count--) |
97 | *buf++ = *port_addr; | 96 | *buf++ = *port_addr; |
98 | 97 | ||
99 | flush_dcache_all(); | ||
100 | dummy_read(); | 98 | dummy_read(); |
101 | } | 99 | } |
102 | 100 | ||
@@ -171,7 +169,6 @@ void generic_outsw(unsigned long port, const void *src, unsigned long count) | |||
171 | while (count--) | 169 | while (count--) |
172 | *port_addr = *buf++; | 170 | *port_addr = *buf++; |
173 | 171 | ||
174 | flush_dcache_all(); | ||
175 | dummy_read(); | 172 | dummy_read(); |
176 | } | 173 | } |
177 | 174 | ||
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 67be2b6e8cd1..9bdd8a00cd4a 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/kernel_stat.h> | 12 | #include <linux/kernel_stat.h> |
13 | #include <linux/seq_file.h> | 13 | #include <linux/seq_file.h> |
14 | #include <linux/io.h> | ||
15 | #include <linux/irq.h> | 14 | #include <linux/irq.h> |
16 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
17 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
@@ -82,13 +81,9 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly; | |||
82 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; | 81 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; |
83 | #endif | 82 | #endif |
84 | 83 | ||
85 | asmlinkage int do_IRQ(unsigned long r4, unsigned long r5, | 84 | asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) |
86 | unsigned long r6, unsigned long r7, | ||
87 | struct pt_regs __regs) | ||
88 | { | 85 | { |
89 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); | ||
90 | struct pt_regs *old_regs = set_irq_regs(regs); | 86 | struct pt_regs *old_regs = set_irq_regs(regs); |
91 | int irq; | ||
92 | #ifdef CONFIG_4KSTACKS | 87 | #ifdef CONFIG_4KSTACKS |
93 | union irq_ctx *curctx, *irqctx; | 88 | union irq_ctx *curctx, *irqctx; |
94 | #endif | 89 | #endif |
@@ -111,13 +106,7 @@ asmlinkage int do_IRQ(unsigned long r4, unsigned long r5, | |||
111 | } | 106 | } |
112 | #endif | 107 | #endif |
113 | 108 | ||
114 | #ifdef CONFIG_CPU_HAS_INTEVT | 109 | irq = irq_demux(evt2irq(irq)); |
115 | irq = evt2irq(ctrl_inl(INTEVT)); | ||
116 | #else | ||
117 | irq = r4; | ||
118 | #endif | ||
119 | |||
120 | irq = irq_demux(irq); | ||
121 | 110 | ||
122 | #ifdef CONFIG_4KSTACKS | 111 | #ifdef CONFIG_4KSTACKS |
123 | curctx = (union irq_ctx *)current_thread_info(); | 112 | curctx = (union irq_ctx *)current_thread_info(); |
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 9d6a438b3eaf..e7607366ac4e 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c | |||
@@ -250,12 +250,11 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | |||
250 | childregs->regs[15] = usp; | 250 | childregs->regs[15] = usp; |
251 | ti->addr_limit = USER_DS; | 251 | ti->addr_limit = USER_DS; |
252 | } else { | 252 | } else { |
253 | childregs->regs[15] = (unsigned long)task_stack_page(p) + | 253 | childregs->regs[15] = (unsigned long)childregs; |
254 | THREAD_SIZE; | ||
255 | ti->addr_limit = KERNEL_DS; | 254 | ti->addr_limit = KERNEL_DS; |
256 | } | 255 | } |
257 | 256 | ||
258 | if (clone_flags & CLONE_SETTLS) | 257 | if (clone_flags & CLONE_SETTLS) |
259 | childregs->gbr = childregs->regs[0]; | 258 | childregs->gbr = childregs->regs[0]; |
260 | 259 | ||
261 | childregs->regs[0] = 0; /* Set return value for child */ | 260 | childregs->regs[0] = 0; /* Set return value for child */ |
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c index 04ca13a041c1..855f7246cfff 100644 --- a/arch/sh/kernel/ptrace.c +++ b/arch/sh/kernel/ptrace.c | |||
@@ -8,7 +8,6 @@ | |||
8 | * SuperH version: Copyright (C) 1999, 2000 Kaz Kojima & Niibe Yutaka | 8 | * SuperH version: Copyright (C) 1999, 2000 Kaz Kojima & Niibe Yutaka |
9 | * | 9 | * |
10 | */ | 10 | */ |
11 | |||
12 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
14 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
@@ -20,8 +19,7 @@ | |||
20 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
21 | #include <linux/security.h> | 20 | #include <linux/security.h> |
22 | #include <linux/signal.h> | 21 | #include <linux/signal.h> |
23 | 22 | #include <linux/io.h> | |
24 | #include <asm/io.h> | ||
25 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
26 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
27 | #include <asm/system.h> | 25 | #include <asm/system.h> |
@@ -59,6 +57,23 @@ static inline int put_stack_long(struct task_struct *task, int offset, | |||
59 | return 0; | 57 | return 0; |
60 | } | 58 | } |
61 | 59 | ||
60 | static void ptrace_disable_singlestep(struct task_struct *child) | ||
61 | { | ||
62 | clear_tsk_thread_flag(child, TIF_SINGLESTEP); | ||
63 | |||
64 | /* | ||
65 | * Ensure the UBC is not programmed at the next context switch. | ||
66 | * | ||
67 | * Normally this is not needed but there are sequences such as | ||
68 | * singlestep, signal delivery, and continue that leave the | ||
69 | * ubc_pc non-zero leading to spurious SIGTRAPs. | ||
70 | */ | ||
71 | if (child->thread.ubc_pc != 0) { | ||
72 | ubc_usercnt -= 1; | ||
73 | child->thread.ubc_pc = 0; | ||
74 | } | ||
75 | } | ||
76 | |||
62 | /* | 77 | /* |
63 | * Called by kernel/ptrace.c when detaching.. | 78 | * Called by kernel/ptrace.c when detaching.. |
64 | * | 79 | * |
@@ -66,7 +81,7 @@ static inline int put_stack_long(struct task_struct *task, int offset, | |||
66 | */ | 81 | */ |
67 | void ptrace_disable(struct task_struct *child) | 82 | void ptrace_disable(struct task_struct *child) |
68 | { | 83 | { |
69 | /* nothing to do.. */ | 84 | ptrace_disable_singlestep(child); |
70 | } | 85 | } |
71 | 86 | ||
72 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 87 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
@@ -76,7 +91,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
76 | 91 | ||
77 | switch (request) { | 92 | switch (request) { |
78 | /* when I and D space are separate, these will need to be fixed. */ | 93 | /* when I and D space are separate, these will need to be fixed. */ |
79 | case PTRACE_PEEKTEXT: /* read word at location addr. */ | 94 | case PTRACE_PEEKTEXT: /* read word at location addr. */ |
80 | case PTRACE_PEEKDATA: { | 95 | case PTRACE_PEEKDATA: { |
81 | unsigned long tmp; | 96 | unsigned long tmp; |
82 | int copied; | 97 | int copied; |
@@ -94,7 +109,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
94 | unsigned long tmp; | 109 | unsigned long tmp; |
95 | 110 | ||
96 | ret = -EIO; | 111 | ret = -EIO; |
97 | if ((addr & 3) || addr < 0 || | 112 | if ((addr & 3) || addr < 0 || |
98 | addr > sizeof(struct user) - 3) | 113 | addr > sizeof(struct user) - 3) |
99 | break; | 114 | break; |
100 | 115 | ||
@@ -129,7 +144,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
129 | 144 | ||
130 | case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ | 145 | case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ |
131 | ret = -EIO; | 146 | ret = -EIO; |
132 | if ((addr & 3) || addr < 0 || | 147 | if ((addr & 3) || addr < 0 || |
133 | addr > sizeof(struct user) - 3) | 148 | addr > sizeof(struct user) - 3) |
134 | break; | 149 | break; |
135 | 150 | ||
@@ -156,6 +171,9 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
156 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 171 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
157 | else | 172 | else |
158 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 173 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
174 | |||
175 | ptrace_disable_singlestep(child); | ||
176 | |||
159 | child->exit_code = data; | 177 | child->exit_code = data; |
160 | wake_up_process(child); | 178 | wake_up_process(child); |
161 | ret = 0; | 179 | ret = 0; |
@@ -163,14 +181,15 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
163 | } | 181 | } |
164 | 182 | ||
165 | /* | 183 | /* |
166 | * make the child exit. Best I can do is send it a sigkill. | 184 | * make the child exit. Best I can do is send it a sigkill. |
167 | * perhaps it should be put in the status that it wants to | 185 | * perhaps it should be put in the status that it wants to |
168 | * exit. | 186 | * exit. |
169 | */ | 187 | */ |
170 | case PTRACE_KILL: { | 188 | case PTRACE_KILL: { |
171 | ret = 0; | 189 | ret = 0; |
172 | if (child->exit_state == EXIT_ZOMBIE) /* already dead */ | 190 | if (child->exit_state == EXIT_ZOMBIE) /* already dead */ |
173 | break; | 191 | break; |
192 | ptrace_disable_singlestep(child); | ||
174 | child->exit_code = SIGKILL; | 193 | child->exit_code = SIGKILL; |
175 | wake_up_process(child); | 194 | wake_up_process(child); |
176 | break; | 195 | break; |
@@ -196,6 +215,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
196 | ubc_usercnt += 1; | 215 | ubc_usercnt += 1; |
197 | child->thread.ubc_pc = pc; | 216 | child->thread.ubc_pc = pc; |
198 | 217 | ||
218 | set_tsk_thread_flag(child, TIF_SINGLESTEP); | ||
199 | child->exit_code = data; | 219 | child->exit_code = data; |
200 | /* give it a chance to run. */ | 220 | /* give it a chance to run. */ |
201 | wake_up_process(child); | 221 | wake_up_process(child); |
@@ -248,14 +268,15 @@ asmlinkage void do_syscall_trace(void) | |||
248 | { | 268 | { |
249 | struct task_struct *tsk = current; | 269 | struct task_struct *tsk = current; |
250 | 270 | ||
251 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) | 271 | if (!test_thread_flag(TIF_SYSCALL_TRACE) && |
272 | !test_thread_flag(TIF_SINGLESTEP)) | ||
252 | return; | 273 | return; |
253 | if (!(tsk->ptrace & PT_PTRACED)) | 274 | if (!(tsk->ptrace & PT_PTRACED)) |
254 | return; | 275 | return; |
255 | /* the 0x80 provides a way for the tracing parent to distinguish | 276 | /* the 0x80 provides a way for the tracing parent to distinguish |
256 | between a syscall stop and SIGTRAP delivery */ | 277 | between a syscall stop and SIGTRAP delivery */ |
257 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) | 278 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) && |
258 | ? 0x80 : 0)); | 279 | !test_thread_flag(TIF_SINGLESTEP) ? 0x80 : 0)); |
259 | 280 | ||
260 | /* | 281 | /* |
261 | * this isn't the same as continuing with a signal, but it will do | 282 | * this isn't the same as continuing with a signal, but it will do |
diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c index fe1b276c97c6..6e0d10fac4a8 100644 --- a/arch/sh/kernel/sh_ksyms.c +++ b/arch/sh/kernel/sh_ksyms.c | |||
@@ -82,9 +82,6 @@ DECLARE_EXPORT(__movstr); | |||
82 | DECLARE_EXPORT(__movmem_i4_even); | 82 | DECLARE_EXPORT(__movmem_i4_even); |
83 | DECLARE_EXPORT(__movmem_i4_odd); | 83 | DECLARE_EXPORT(__movmem_i4_odd); |
84 | DECLARE_EXPORT(__movmemSI12_i4); | 84 | DECLARE_EXPORT(__movmemSI12_i4); |
85 | DECLARE_EXPORT(__sdivsi3_i4i); | ||
86 | DECLARE_EXPORT(__udiv_qrnnd_16); | ||
87 | DECLARE_EXPORT(__udivsi3_i4i); | ||
88 | #else /* GCC 3.x */ | 85 | #else /* GCC 3.x */ |
89 | DECLARE_EXPORT(__movstr_i4_even); | 86 | DECLARE_EXPORT(__movstr_i4_even); |
90 | DECLARE_EXPORT(__movstr_i4_odd); | 87 | DECLARE_EXPORT(__movstr_i4_odd); |
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c index 32f10a03fbb5..9f39ef1f73da 100644 --- a/arch/sh/kernel/signal.c +++ b/arch/sh/kernel/signal.c | |||
@@ -589,6 +589,8 @@ static void do_signal(struct pt_regs *regs, unsigned int save_r0) | |||
589 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | 589 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) |
590 | clear_thread_flag(TIF_RESTORE_SIGMASK); | 590 | clear_thread_flag(TIF_RESTORE_SIGMASK); |
591 | } | 591 | } |
592 | |||
593 | return; | ||
592 | } | 594 | } |
593 | 595 | ||
594 | no_signal: | 596 | no_signal: |
@@ -598,7 +600,7 @@ static void do_signal(struct pt_regs *regs, unsigned int save_r0) | |||
598 | if (regs->regs[0] == -ERESTARTNOHAND || | 600 | if (regs->regs[0] == -ERESTARTNOHAND || |
599 | regs->regs[0] == -ERESTARTSYS || | 601 | regs->regs[0] == -ERESTARTSYS || |
600 | regs->regs[0] == -ERESTARTNOINTR) { | 602 | regs->regs[0] == -ERESTARTNOINTR) { |
601 | regs->regs[0] = save_r0; | 603 | regs->regs[0] = save_r0; |
602 | regs->pc -= 2; | 604 | regs->pc -= 2; |
603 | } else if (regs->regs[0] == -ERESTART_RESTARTBLOCK) { | 605 | } else if (regs->regs[0] == -ERESTART_RESTARTBLOCK) { |
604 | regs->pc -= 2; | 606 | regs->pc -= 2; |
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index 75de165867a0..78a6c09875b2 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -3,6 +3,7 @@ | |||
3 | * Written by Niibe Yutaka | 3 | * Written by Niibe Yutaka |
4 | */ | 4 | */ |
5 | #include <asm/thread_info.h> | 5 | #include <asm/thread_info.h> |
6 | #include <asm/cache.h> | ||
6 | #include <asm-generic/vmlinux.lds.h> | 7 | #include <asm-generic/vmlinux.lds.h> |
7 | 8 | ||
8 | #ifdef CONFIG_CPU_LITTLE_ENDIAN | 9 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
@@ -53,7 +54,7 @@ SECTIONS | |||
53 | . = ALIGN(PAGE_SIZE); | 54 | . = ALIGN(PAGE_SIZE); |
54 | .data.page_aligned : { *(.data.page_aligned) } | 55 | .data.page_aligned : { *(.data.page_aligned) } |
55 | 56 | ||
56 | . = ALIGN(32); | 57 | . = ALIGN(L1_CACHE_BYTES); |
57 | __per_cpu_start = .; | 58 | __per_cpu_start = .; |
58 | .data.percpu : { *(.data.percpu) } | 59 | .data.percpu : { *(.data.percpu) } |
59 | __per_cpu_end = .; | 60 | __per_cpu_end = .; |
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index e0cd4b7f4aeb..981b04089055 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c | |||
@@ -237,20 +237,10 @@ static inline void flush_cache_4096(unsigned long start, | |||
237 | /* | 237 | /* |
238 | * Write back & invalidate the D-cache of the page. | 238 | * Write back & invalidate the D-cache of the page. |
239 | * (To avoid "alias" issues) | 239 | * (To avoid "alias" issues) |
240 | * | ||
241 | * This uses a lazy write-back on UP, which is explicitly | ||
242 | * disabled on SMP. | ||
243 | */ | 240 | */ |
244 | void flush_dcache_page(struct page *page) | 241 | void flush_dcache_page(struct page *page) |
245 | { | 242 | { |
246 | #ifndef CONFIG_SMP | 243 | if (test_bit(PG_mapped, &page->flags)) { |
247 | struct address_space *mapping = page_mapping(page); | ||
248 | |||
249 | if (mapping && !mapping_mapped(mapping)) | ||
250 | set_bit(PG_dcache_dirty, &page->flags); | ||
251 | else | ||
252 | #endif | ||
253 | { | ||
254 | unsigned long phys = PHYSADDR(page_address(page)); | 244 | unsigned long phys = PHYSADDR(page_address(page)); |
255 | unsigned long addr = CACHE_OC_ADDRESS_ARRAY; | 245 | unsigned long addr = CACHE_OC_ADDRESS_ARRAY; |
256 | int i, n; | 246 | int i, n; |
diff --git a/arch/sh/mm/cache-sh7705.c b/arch/sh/mm/cache-sh7705.c index 31f8deb7a158..4896d7376926 100644 --- a/arch/sh/mm/cache-sh7705.c +++ b/arch/sh/mm/cache-sh7705.c | |||
@@ -3,11 +3,11 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 1999, 2000 Niibe Yutaka | 4 | * Copyright (C) 1999, 2000 Niibe Yutaka |
5 | * Copyright (C) 2004 Alex Song | 5 | * Copyright (C) 2004 Alex Song |
6 | * Copyright (C) 2006 Paul Mundt | ||
7 | * | 6 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
9 | * License. See the file "COPYING" in the main directory of this archive | 8 | * License. See the file "COPYING" in the main directory of this archive |
10 | * for more details. | 9 | * for more details. |
10 | * | ||
11 | */ | 11 | */ |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/mman.h> | 13 | #include <linux/mman.h> |
@@ -51,6 +51,7 @@ static inline void cache_wback_all(void) | |||
51 | 51 | ||
52 | if ((data & v) == v) | 52 | if ((data & v) == v) |
53 | ctrl_outl(data & ~v, addr); | 53 | ctrl_outl(data & ~v, addr); |
54 | |||
54 | } | 55 | } |
55 | 56 | ||
56 | addrstart += current_cpu_data.dcache.way_incr; | 57 | addrstart += current_cpu_data.dcache.way_incr; |
@@ -127,11 +128,7 @@ static void __flush_dcache_page(unsigned long phys) | |||
127 | */ | 128 | */ |
128 | void flush_dcache_page(struct page *page) | 129 | void flush_dcache_page(struct page *page) |
129 | { | 130 | { |
130 | struct address_space *mapping = page_mapping(page); | 131 | if (test_bit(PG_mapped, &page->flags)) |
131 | |||
132 | if (mapping && !mapping_mapped(mapping)) | ||
133 | set_bit(PG_dcache_dirty, &page->flags); | ||
134 | else | ||
135 | __flush_dcache_page(PHYSADDR(page_address(page))); | 132 | __flush_dcache_page(PHYSADDR(page_address(page))); |
136 | } | 133 | } |
137 | 134 | ||
diff --git a/arch/sh/mm/pg-sh4.c b/arch/sh/mm/pg-sh4.c index 969efeceb928..df69da9ca69c 100644 --- a/arch/sh/mm/pg-sh4.c +++ b/arch/sh/mm/pg-sh4.c | |||
@@ -23,6 +23,7 @@ extern struct mutex p3map_mutex[]; | |||
23 | */ | 23 | */ |
24 | void clear_user_page(void *to, unsigned long address, struct page *page) | 24 | void clear_user_page(void *to, unsigned long address, struct page *page) |
25 | { | 25 | { |
26 | __set_bit(PG_mapped, &page->flags); | ||
26 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) | 27 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) |
27 | clear_page(to); | 28 | clear_page(to); |
28 | else { | 29 | else { |
@@ -58,6 +59,7 @@ void clear_user_page(void *to, unsigned long address, struct page *page) | |||
58 | void copy_user_page(void *to, void *from, unsigned long address, | 59 | void copy_user_page(void *to, void *from, unsigned long address, |
59 | struct page *page) | 60 | struct page *page) |
60 | { | 61 | { |
62 | __set_bit(PG_mapped, &page->flags); | ||
61 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) | 63 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) |
62 | copy_page(to, from); | 64 | copy_page(to, from); |
63 | else { | 65 | else { |
@@ -82,3 +84,23 @@ void copy_user_page(void *to, void *from, unsigned long address, | |||
82 | mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]); | 84 | mutex_unlock(&p3map_mutex[(address & CACHE_ALIAS)>>12]); |
83 | } | 85 | } |
84 | } | 86 | } |
87 | |||
88 | /* | ||
89 | * For SH-4, we have our own implementation for ptep_get_and_clear | ||
90 | */ | ||
91 | inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | ||
92 | { | ||
93 | pte_t pte = *ptep; | ||
94 | |||
95 | pte_clear(mm, addr, ptep); | ||
96 | if (!pte_not_present(pte)) { | ||
97 | unsigned long pfn = pte_pfn(pte); | ||
98 | if (pfn_valid(pfn)) { | ||
99 | struct page *page = pfn_to_page(pfn); | ||
100 | struct address_space *mapping = page_mapping(page); | ||
101 | if (!mapping || !mapping_writably_mapped(mapping)) | ||
102 | __clear_bit(PG_mapped, &page->flags); | ||
103 | } | ||
104 | } | ||
105 | return pte; | ||
106 | } | ||
diff --git a/arch/sh/mm/pg-sh7705.c b/arch/sh/mm/pg-sh7705.c index 887ab9d18ccd..a4b015f95a3a 100644 --- a/arch/sh/mm/pg-sh7705.c +++ b/arch/sh/mm/pg-sh7705.c | |||
@@ -7,7 +7,9 @@ | |||
7 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
8 | * License. See the file "COPYING" in the main directory of this archive | 8 | * License. See the file "COPYING" in the main directory of this archive |
9 | * for more details. | 9 | * for more details. |
10 | * | ||
10 | */ | 11 | */ |
12 | |||
11 | #include <linux/init.h> | 13 | #include <linux/init.h> |
12 | #include <linux/mman.h> | 14 | #include <linux/mman.h> |
13 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
@@ -74,6 +76,7 @@ void clear_user_page(void *to, unsigned long address, struct page *pg) | |||
74 | { | 76 | { |
75 | struct page *page = virt_to_page(to); | 77 | struct page *page = virt_to_page(to); |
76 | 78 | ||
79 | __set_bit(PG_mapped, &page->flags); | ||
77 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) { | 80 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) { |
78 | clear_page(to); | 81 | clear_page(to); |
79 | __flush_wback_region(to, PAGE_SIZE); | 82 | __flush_wback_region(to, PAGE_SIZE); |
@@ -92,11 +95,12 @@ void clear_user_page(void *to, unsigned long address, struct page *pg) | |||
92 | * @from: P1 address | 95 | * @from: P1 address |
93 | * @address: U0 address to be mapped | 96 | * @address: U0 address to be mapped |
94 | */ | 97 | */ |
95 | void copy_user_page(void *to, void *from, unsigned long address, | 98 | void copy_user_page(void *to, void *from, unsigned long address, struct page *pg) |
96 | struct page *pg) | ||
97 | { | 99 | { |
98 | struct page *page = virt_to_page(to); | 100 | struct page *page = virt_to_page(to); |
99 | 101 | ||
102 | |||
103 | __set_bit(PG_mapped, &page->flags); | ||
100 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) { | 104 | if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) { |
101 | copy_page(to, from); | 105 | copy_page(to, from); |
102 | __flush_wback_region(to, PAGE_SIZE); | 106 | __flush_wback_region(to, PAGE_SIZE); |
@@ -108,3 +112,26 @@ void copy_user_page(void *to, void *from, unsigned long address, | |||
108 | __flush_wback_region(to, PAGE_SIZE); | 112 | __flush_wback_region(to, PAGE_SIZE); |
109 | } | 113 | } |
110 | } | 114 | } |
115 | |||
116 | /* | ||
117 | * For SH7705, we have our own implementation for ptep_get_and_clear | ||
118 | * Copied from pg-sh4.c | ||
119 | */ | ||
120 | inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | ||
121 | { | ||
122 | pte_t pte = *ptep; | ||
123 | |||
124 | pte_clear(mm, addr, ptep); | ||
125 | if (!pte_not_present(pte)) { | ||
126 | unsigned long pfn = pte_pfn(pte); | ||
127 | if (pfn_valid(pfn)) { | ||
128 | struct page *page = pfn_to_page(pfn); | ||
129 | struct address_space *mapping = page_mapping(page); | ||
130 | if (!mapping || !mapping_writably_mapped(mapping)) | ||
131 | __clear_bit(PG_mapped, &page->flags); | ||
132 | } | ||
133 | } | ||
134 | |||
135 | return pte; | ||
136 | } | ||
137 | |||
diff --git a/arch/sh/mm/tlb-flush.c b/arch/sh/mm/tlb-flush.c index d2f7b4a2eb05..6f45c1f8a7fe 100644 --- a/arch/sh/mm/tlb-flush.c +++ b/arch/sh/mm/tlb-flush.c | |||
@@ -2,17 +2,15 @@ | |||
2 | * TLB flushing operations for SH with an MMU. | 2 | * TLB flushing operations for SH with an MMU. |
3 | * | 3 | * |
4 | * Copyright (C) 1999 Niibe Yutaka | 4 | * Copyright (C) 1999 Niibe Yutaka |
5 | * Copyright (C) 2003 - 2006 Paul Mundt | 5 | * Copyright (C) 2003 Paul Mundt |
6 | * | 6 | * |
7 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
8 | * License. See the file "COPYING" in the main directory of this archive | 8 | * License. See the file "COPYING" in the main directory of this archive |
9 | * for more details. | 9 | * for more details. |
10 | */ | 10 | */ |
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <linux/io.h> | ||
13 | #include <asm/mmu_context.h> | 12 | #include <asm/mmu_context.h> |
14 | #include <asm/tlbflush.h> | 13 | #include <asm/tlbflush.h> |
15 | #include <asm/cacheflush.h> | ||
16 | 14 | ||
17 | void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page) | 15 | void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page) |
18 | { | 16 | { |
@@ -140,54 +138,3 @@ void local_flush_tlb_all(void) | |||
140 | ctrl_barrier(); | 138 | ctrl_barrier(); |
141 | local_irq_restore(flags); | 139 | local_irq_restore(flags); |
142 | } | 140 | } |
143 | |||
144 | void update_mmu_cache(struct vm_area_struct *vma, | ||
145 | unsigned long address, pte_t pte) | ||
146 | { | ||
147 | unsigned long flags; | ||
148 | unsigned long pteval; | ||
149 | unsigned long vpn; | ||
150 | struct page *page; | ||
151 | unsigned long pfn = pte_pfn(pte); | ||
152 | struct address_space *mapping; | ||
153 | |||
154 | if (!pfn_valid(pfn)) | ||
155 | return; | ||
156 | |||
157 | page = pfn_to_page(pfn); | ||
158 | mapping = page_mapping(page); | ||
159 | if (mapping) { | ||
160 | unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; | ||
161 | int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags); | ||
162 | |||
163 | if (dirty) | ||
164 | __flush_wback_region((void *)P1SEGADDR(phys), | ||
165 | PAGE_SIZE); | ||
166 | } | ||
167 | |||
168 | local_irq_save(flags); | ||
169 | |||
170 | /* Set PTEH register */ | ||
171 | vpn = (address & MMU_VPN_MASK) | get_asid(); | ||
172 | ctrl_outl(vpn, MMU_PTEH); | ||
173 | |||
174 | pteval = pte_val(pte); | ||
175 | |||
176 | #ifdef CONFIG_CPU_HAS_PTEA | ||
177 | /* Set PTEA register */ | ||
178 | /* TODO: make this look less hacky */ | ||
179 | ctrl_outl(((pteval >> 28) & 0xe) | (pteval & 0x1), MMU_PTEA); | ||
180 | #endif | ||
181 | |||
182 | /* Set PTEL register */ | ||
183 | pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ | ||
184 | #if defined(CONFIG_SH_WRITETHROUGH) && defined(CONFIG_CPU_SH4) | ||
185 | pteval |= _PAGE_WT; | ||
186 | #endif | ||
187 | /* conveniently, we want all the software flags to be 0 anyway */ | ||
188 | ctrl_outl(pteval, MMU_PTEL); | ||
189 | |||
190 | /* Load the TLB */ | ||
191 | asm volatile("ldtlb": /* no output */ : /* no input */ : "memory"); | ||
192 | local_irq_restore(flags); | ||
193 | } | ||
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c index e5e76eb7ee09..7fbfd5a11ffa 100644 --- a/arch/sh/mm/tlb-sh3.c +++ b/arch/sh/mm/tlb-sh3.c | |||
@@ -8,9 +8,69 @@ | |||
8 | * | 8 | * |
9 | * Released under the terms of the GNU GPL v2.0. | 9 | * Released under the terms of the GNU GPL v2.0. |
10 | */ | 10 | */ |
11 | #include <linux/io.h> | 11 | #include <linux/signal.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/errno.h> | ||
15 | #include <linux/string.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/ptrace.h> | ||
18 | #include <linux/mman.h> | ||
19 | #include <linux/mm.h> | ||
20 | #include <linux/smp.h> | ||
21 | #include <linux/smp_lock.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | |||
12 | #include <asm/system.h> | 24 | #include <asm/system.h> |
25 | #include <asm/io.h> | ||
26 | #include <asm/uaccess.h> | ||
27 | #include <asm/pgalloc.h> | ||
13 | #include <asm/mmu_context.h> | 28 | #include <asm/mmu_context.h> |
29 | #include <asm/cacheflush.h> | ||
30 | |||
31 | void update_mmu_cache(struct vm_area_struct * vma, | ||
32 | unsigned long address, pte_t pte) | ||
33 | { | ||
34 | unsigned long flags; | ||
35 | unsigned long pteval; | ||
36 | unsigned long vpn; | ||
37 | |||
38 | /* Ptrace may call this routine. */ | ||
39 | if (vma && current->active_mm != vma->vm_mm) | ||
40 | return; | ||
41 | |||
42 | #if defined(CONFIG_SH7705_CACHE_32KB) | ||
43 | { | ||
44 | struct page *page = pte_page(pte); | ||
45 | unsigned long pfn = pte_pfn(pte); | ||
46 | |||
47 | if (pfn_valid(pfn) && !test_bit(PG_mapped, &page->flags)) { | ||
48 | unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; | ||
49 | |||
50 | __flush_wback_region((void *)P1SEGADDR(phys), | ||
51 | PAGE_SIZE); | ||
52 | __set_bit(PG_mapped, &page->flags); | ||
53 | } | ||
54 | } | ||
55 | #endif | ||
56 | |||
57 | local_irq_save(flags); | ||
58 | |||
59 | /* Set PTEH register */ | ||
60 | vpn = (address & MMU_VPN_MASK) | get_asid(); | ||
61 | ctrl_outl(vpn, MMU_PTEH); | ||
62 | |||
63 | pteval = pte_val(pte); | ||
64 | |||
65 | /* Set PTEL register */ | ||
66 | pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ | ||
67 | /* conveniently, we want all the software flags to be 0 anyway */ | ||
68 | ctrl_outl(pteval, MMU_PTEL); | ||
69 | |||
70 | /* Load the TLB */ | ||
71 | asm volatile("ldtlb": /* no output */ : /* no input */ : "memory"); | ||
72 | local_irq_restore(flags); | ||
73 | } | ||
14 | 74 | ||
15 | void local_flush_tlb_one(unsigned long asid, unsigned long page) | 75 | void local_flush_tlb_one(unsigned long asid, unsigned long page) |
16 | { | 76 | { |
@@ -34,3 +94,4 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
34 | for (i = 0; i < ways; i++) | 94 | for (i = 0; i < ways; i++) |
35 | ctrl_outl(data, addr + (i << 8)); | 95 | ctrl_outl(data, addr + (i << 8)); |
36 | } | 96 | } |
97 | |||
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index 221e7095473d..f74cf667c8fa 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c | |||
@@ -8,9 +8,74 @@ | |||
8 | * | 8 | * |
9 | * Released under the terms of the GNU GPL v2.0. | 9 | * Released under the terms of the GNU GPL v2.0. |
10 | */ | 10 | */ |
11 | #include <linux/io.h> | 11 | #include <linux/signal.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/errno.h> | ||
15 | #include <linux/string.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/ptrace.h> | ||
18 | #include <linux/mman.h> | ||
19 | #include <linux/mm.h> | ||
20 | #include <linux/smp.h> | ||
21 | #include <linux/smp_lock.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | |||
12 | #include <asm/system.h> | 24 | #include <asm/system.h> |
25 | #include <asm/io.h> | ||
26 | #include <asm/uaccess.h> | ||
27 | #include <asm/pgalloc.h> | ||
13 | #include <asm/mmu_context.h> | 28 | #include <asm/mmu_context.h> |
29 | #include <asm/cacheflush.h> | ||
30 | |||
31 | void update_mmu_cache(struct vm_area_struct * vma, | ||
32 | unsigned long address, pte_t pte) | ||
33 | { | ||
34 | unsigned long flags; | ||
35 | unsigned long pteval; | ||
36 | unsigned long vpn; | ||
37 | struct page *page; | ||
38 | unsigned long pfn; | ||
39 | |||
40 | /* Ptrace may call this routine. */ | ||
41 | if (vma && current->active_mm != vma->vm_mm) | ||
42 | return; | ||
43 | |||
44 | pfn = pte_pfn(pte); | ||
45 | if (pfn_valid(pfn)) { | ||
46 | page = pfn_to_page(pfn); | ||
47 | if (!test_bit(PG_mapped, &page->flags)) { | ||
48 | unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; | ||
49 | __flush_wback_region((void *)P1SEGADDR(phys), PAGE_SIZE); | ||
50 | __set_bit(PG_mapped, &page->flags); | ||
51 | } | ||
52 | } | ||
53 | |||
54 | local_irq_save(flags); | ||
55 | |||
56 | /* Set PTEH register */ | ||
57 | vpn = (address & MMU_VPN_MASK) | get_asid(); | ||
58 | ctrl_outl(vpn, MMU_PTEH); | ||
59 | |||
60 | pteval = pte_val(pte); | ||
61 | |||
62 | /* Set PTEA register */ | ||
63 | if (cpu_data->flags & CPU_HAS_PTEA) | ||
64 | /* TODO: make this look less hacky */ | ||
65 | ctrl_outl(((pteval >> 28) & 0xe) | (pteval & 0x1), MMU_PTEA); | ||
66 | |||
67 | /* Set PTEL register */ | ||
68 | pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ | ||
69 | #ifdef CONFIG_SH_WRITETHROUGH | ||
70 | pteval |= _PAGE_WT; | ||
71 | #endif | ||
72 | /* conveniently, we want all the software flags to be 0 anyway */ | ||
73 | ctrl_outl(pteval, MMU_PTEL); | ||
74 | |||
75 | /* Load the TLB */ | ||
76 | asm volatile("ldtlb": /* no output */ : /* no input */ : "memory"); | ||
77 | local_irq_restore(flags); | ||
78 | } | ||
14 | 79 | ||
15 | void local_flush_tlb_one(unsigned long asid, unsigned long page) | 80 | void local_flush_tlb_one(unsigned long asid, unsigned long page) |
16 | { | 81 | { |
@@ -28,3 +93,4 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
28 | ctrl_outl(data, addr); | 93 | ctrl_outl(data, addr); |
29 | back_to_P1(); | 94 | back_to_P1(); |
30 | } | 95 | } |
96 | |||
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/lib/atomic32.c b/arch/sparc/lib/atomic32.c index 53ddcd9d1e60..559335f4917d 100644 --- a/arch/sparc/lib/atomic32.c +++ b/arch/sparc/lib/atomic32.c | |||
@@ -52,6 +52,7 @@ int atomic_cmpxchg(atomic_t *v, int old, int new) | |||
52 | spin_unlock_irqrestore(ATOMIC_HASH(v), flags); | 52 | spin_unlock_irqrestore(ATOMIC_HASH(v), flags); |
53 | return ret; | 53 | return ret; |
54 | } | 54 | } |
55 | EXPORT_SYMBOL(atomic_cmpxchg); | ||
55 | 56 | ||
56 | int atomic_add_unless(atomic_t *v, int a, int u) | 57 | int atomic_add_unless(atomic_t *v, int a, int u) |
57 | { | 58 | { |
@@ -65,6 +66,7 @@ int atomic_add_unless(atomic_t *v, int a, int u) | |||
65 | spin_unlock_irqrestore(ATOMIC_HASH(v), flags); | 66 | spin_unlock_irqrestore(ATOMIC_HASH(v), flags); |
66 | return ret != u; | 67 | return ret != u; |
67 | } | 68 | } |
69 | EXPORT_SYMBOL(atomic_add_unless); | ||
68 | 70 | ||
69 | /* Atomic operations are already serializing */ | 71 | /* Atomic operations are already serializing */ |
70 | void atomic_set(atomic_t *v, int i) | 72 | void atomic_set(atomic_t *v, int i) |
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/kernel/tsb.S b/arch/sparc64/kernel/tsb.S index eedf94fa5664..10adb2fb8ffe 100644 --- a/arch/sparc64/kernel/tsb.S +++ b/arch/sparc64/kernel/tsb.S | |||
@@ -546,6 +546,7 @@ NGtsb_init: | |||
546 | subcc %o1, 0x100, %o1 | 546 | subcc %o1, 0x100, %o1 |
547 | bne,pt %xcc, 1b | 547 | bne,pt %xcc, 1b |
548 | add %o0, 0x100, %o0 | 548 | add %o0, 0x100, %o0 |
549 | membar #Sync | ||
549 | retl | 550 | retl |
550 | wr %g2, 0x0, %asi | 551 | wr %g2, 0x0, %asi |
551 | .size NGtsb_init, .-NGtsb_init | 552 | .size NGtsb_init, .-NGtsb_init |
diff --git a/arch/sparc64/lib/NGbzero.S b/arch/sparc64/lib/NGbzero.S index e86baece5cc8..f10e4529ee37 100644 --- a/arch/sparc64/lib/NGbzero.S +++ b/arch/sparc64/lib/NGbzero.S | |||
@@ -88,6 +88,7 @@ NGbzero_loop: | |||
88 | bne,pt %xcc, NGbzero_loop | 88 | bne,pt %xcc, NGbzero_loop |
89 | add %o0, 64, %o0 | 89 | add %o0, 64, %o0 |
90 | 90 | ||
91 | membar #Sync | ||
91 | wr %o4, 0x0, %asi | 92 | wr %o4, 0x0, %asi |
92 | brz,pn %o1, NGbzero_done | 93 | brz,pn %o1, NGbzero_done |
93 | NGbzero_medium: | 94 | NGbzero_medium: |
diff --git a/arch/sparc64/lib/NGmemcpy.S b/arch/sparc64/lib/NGmemcpy.S index 8e522b3dc095..66063a9a66b8 100644 --- a/arch/sparc64/lib/NGmemcpy.S +++ b/arch/sparc64/lib/NGmemcpy.S | |||
@@ -247,6 +247,8 @@ FUNC_NAME: /* %o0=dst, %o1=src, %o2=len */ | |||
247 | /* fall through */ | 247 | /* fall through */ |
248 | 248 | ||
249 | 60: | 249 | 60: |
250 | membar #Sync | ||
251 | |||
250 | /* %o2 contains any final bytes still needed to be copied | 252 | /* %o2 contains any final bytes still needed to be copied |
251 | * over. If anything is left, we copy it one byte at a time. | 253 | * over. If anything is left, we copy it one byte at a time. |
252 | */ | 254 | */ |
diff --git a/arch/sparc64/lib/NGpage.S b/arch/sparc64/lib/NGpage.S index 7d7c3bb8dcbf..8ce3a0c9c537 100644 --- a/arch/sparc64/lib/NGpage.S +++ b/arch/sparc64/lib/NGpage.S | |||
@@ -41,6 +41,7 @@ NGcopy_user_page: /* %o0=dest, %o1=src, %o2=vaddr */ | |||
41 | subcc %g7, 64, %g7 | 41 | subcc %g7, 64, %g7 |
42 | bne,pt %xcc, 1b | 42 | bne,pt %xcc, 1b |
43 | add %o0, 32, %o0 | 43 | add %o0, 32, %o0 |
44 | membar #Sync | ||
44 | retl | 45 | retl |
45 | nop | 46 | nop |
46 | 47 | ||
@@ -63,6 +64,7 @@ NGclear_user_page: /* %o0=dest, %o1=vaddr */ | |||
63 | subcc %g7, 64, %g7 | 64 | subcc %g7, 64, %g7 |
64 | bne,pt %xcc, 1b | 65 | bne,pt %xcc, 1b |
65 | add %o0, 32, %o0 | 66 | add %o0, 32, %o0 |
67 | membar #Sync | ||
66 | retl | 68 | retl |
67 | nop | 69 | nop |
68 | 70 | ||
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/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c index 7b8baf146acc..9fdfad649536 100644 --- a/arch/um/drivers/chan_kern.c +++ b/arch/um/drivers/chan_kern.c | |||
@@ -236,11 +236,11 @@ void free_irqs(void) | |||
236 | struct chan *chan; | 236 | struct chan *chan; |
237 | LIST_HEAD(list); | 237 | LIST_HEAD(list); |
238 | struct list_head *ele; | 238 | struct list_head *ele; |
239 | unsigned long flags; | ||
239 | 240 | ||
240 | spin_lock_irq(&irqs_to_free_lock); | 241 | spin_lock_irqsave(&irqs_to_free_lock, flags); |
241 | list_splice_init(&irqs_to_free, &list); | 242 | list_splice_init(&irqs_to_free, &list); |
242 | INIT_LIST_HEAD(&irqs_to_free); | 243 | spin_unlock_irqrestore(&irqs_to_free_lock, flags); |
243 | spin_unlock_irq(&irqs_to_free_lock); | ||
244 | 244 | ||
245 | list_for_each(ele, &list){ | 245 | list_for_each(ele, &list){ |
246 | chan = list_entry(ele, struct chan, free_list); | 246 | chan = list_entry(ele, struct chan, free_list); |
@@ -255,13 +255,15 @@ void free_irqs(void) | |||
255 | 255 | ||
256 | static void close_one_chan(struct chan *chan, int delay_free_irq) | 256 | static void close_one_chan(struct chan *chan, int delay_free_irq) |
257 | { | 257 | { |
258 | unsigned long flags; | ||
259 | |||
258 | if(!chan->opened) | 260 | if(!chan->opened) |
259 | return; | 261 | return; |
260 | 262 | ||
261 | if(delay_free_irq){ | 263 | if(delay_free_irq){ |
262 | spin_lock_irq(&irqs_to_free_lock); | 264 | spin_lock_irqsave(&irqs_to_free_lock, flags); |
263 | list_add(&chan->free_list, &irqs_to_free); | 265 | list_add(&chan->free_list, &irqs_to_free); |
264 | spin_unlock_irq(&irqs_to_free_lock); | 266 | spin_unlock_irqrestore(&irqs_to_free_lock, flags); |
265 | } | 267 | } |
266 | else { | 268 | else { |
267 | if(chan->input) | 269 | if(chan->input) |
diff --git a/arch/um/drivers/daemon_user.c b/arch/um/drivers/daemon_user.c index 310af0f1e49e..021b82c7a759 100644 --- a/arch/um/drivers/daemon_user.c +++ b/arch/um/drivers/daemon_user.c | |||
@@ -56,30 +56,31 @@ static int connect_to_switch(struct daemon_data *pri) | |||
56 | 56 | ||
57 | pri->control = socket(AF_UNIX, SOCK_STREAM, 0); | 57 | pri->control = socket(AF_UNIX, SOCK_STREAM, 0); |
58 | if(pri->control < 0){ | 58 | if(pri->control < 0){ |
59 | err = -errno; | ||
59 | printk("daemon_open : control socket failed, errno = %d\n", | 60 | printk("daemon_open : control socket failed, errno = %d\n", |
60 | errno); | 61 | -err); |
61 | return(-errno); | 62 | return err; |
62 | } | 63 | } |
63 | 64 | ||
64 | if(connect(pri->control, (struct sockaddr *) ctl_addr, | 65 | if(connect(pri->control, (struct sockaddr *) ctl_addr, |
65 | sizeof(*ctl_addr)) < 0){ | 66 | sizeof(*ctl_addr)) < 0){ |
66 | printk("daemon_open : control connect failed, errno = %d\n", | ||
67 | errno); | ||
68 | err = -errno; | 67 | err = -errno; |
68 | printk("daemon_open : control connect failed, errno = %d\n", | ||
69 | -err); | ||
69 | goto out; | 70 | goto out; |
70 | } | 71 | } |
71 | 72 | ||
72 | fd = socket(AF_UNIX, SOCK_DGRAM, 0); | 73 | fd = socket(AF_UNIX, SOCK_DGRAM, 0); |
73 | if(fd < 0){ | 74 | if(fd < 0){ |
74 | printk("daemon_open : data socket failed, errno = %d\n", | ||
75 | errno); | ||
76 | err = -errno; | 75 | err = -errno; |
76 | printk("daemon_open : data socket failed, errno = %d\n", | ||
77 | -err); | ||
77 | goto out; | 78 | goto out; |
78 | } | 79 | } |
79 | if(bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0){ | 80 | if(bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0){ |
80 | printk("daemon_open : data bind failed, errno = %d\n", | ||
81 | errno); | ||
82 | err = -errno; | 81 | err = -errno; |
82 | printk("daemon_open : data bind failed, errno = %d\n", | ||
83 | -err); | ||
83 | goto out_close; | 84 | goto out_close; |
84 | } | 85 | } |
85 | 86 | ||
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index 01d4ab6b0ef1..f75d7b05c481 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c | |||
@@ -370,10 +370,10 @@ static irqreturn_t line_write_interrupt(int irq, void *data) | |||
370 | struct tty_struct *tty = line->tty; | 370 | struct tty_struct *tty = line->tty; |
371 | int err; | 371 | int err; |
372 | 372 | ||
373 | /* Interrupts are enabled here because we registered the interrupt with | 373 | /* Interrupts are disabled here because we registered the interrupt with |
374 | * IRQF_DISABLED (see line_setup_irq).*/ | 374 | * IRQF_DISABLED (see line_setup_irq).*/ |
375 | 375 | ||
376 | spin_lock_irq(&line->lock); | 376 | spin_lock(&line->lock); |
377 | err = flush_buffer(line); | 377 | err = flush_buffer(line); |
378 | if (err == 0) { | 378 | if (err == 0) { |
379 | return IRQ_NONE; | 379 | return IRQ_NONE; |
@@ -381,7 +381,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data) | |||
381 | line->head = line->buffer; | 381 | line->head = line->buffer; |
382 | line->tail = line->buffer; | 382 | line->tail = line->buffer; |
383 | } | 383 | } |
384 | spin_unlock_irq(&line->lock); | 384 | spin_unlock(&line->lock); |
385 | 385 | ||
386 | if(tty == NULL) | 386 | if(tty == NULL) |
387 | return IRQ_NONE; | 387 | return IRQ_NONE; |
diff --git a/arch/um/drivers/mcast_user.c b/arch/um/drivers/mcast_user.c index 8138f5ea1bf7..b827e82884c9 100644 --- a/arch/um/drivers/mcast_user.c +++ b/arch/um/drivers/mcast_user.c | |||
@@ -50,6 +50,14 @@ static void mcast_user_init(void *data, void *dev) | |||
50 | pri->dev = dev; | 50 | pri->dev = dev; |
51 | } | 51 | } |
52 | 52 | ||
53 | static void mcast_remove(void *data) | ||
54 | { | ||
55 | struct mcast_data *pri = data; | ||
56 | |||
57 | kfree(pri->mcast_addr); | ||
58 | pri->mcast_addr = NULL; | ||
59 | } | ||
60 | |||
53 | static int mcast_open(void *data) | 61 | static int mcast_open(void *data) |
54 | { | 62 | { |
55 | struct mcast_data *pri = data; | 63 | struct mcast_data *pri = data; |
@@ -157,7 +165,7 @@ const struct net_user_info mcast_user_info = { | |||
157 | .init = mcast_user_init, | 165 | .init = mcast_user_init, |
158 | .open = mcast_open, | 166 | .open = mcast_open, |
159 | .close = mcast_close, | 167 | .close = mcast_close, |
160 | .remove = NULL, | 168 | .remove = mcast_remove, |
161 | .set_mtu = mcast_set_mtu, | 169 | .set_mtu = mcast_set_mtu, |
162 | .add_address = NULL, | 170 | .add_address = NULL, |
163 | .delete_address = NULL, | 171 | .delete_address = NULL, |
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 178b2eff4a8c..65ad2932672c 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
@@ -615,6 +615,9 @@ void mconsole_remove(struct mc_request *req) | |||
615 | err_msg = NULL; | 615 | err_msg = NULL; |
616 | err = (*dev->remove)(n, &err_msg); | 616 | err = (*dev->remove)(n, &err_msg); |
617 | switch(err){ | 617 | switch(err){ |
618 | case 0: | ||
619 | err_msg = ""; | ||
620 | break; | ||
618 | case -ENODEV: | 621 | case -ENODEV: |
619 | if(err_msg == NULL) | 622 | if(err_msg == NULL) |
620 | err_msg = "Device doesn't exist"; | 623 | err_msg = "Device doesn't exist"; |
diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c index fc22b9bd9153..4b382a6e710f 100644 --- a/arch/um/drivers/ssl.c +++ b/arch/um/drivers/ssl.c | |||
@@ -179,7 +179,7 @@ static struct console ssl_cons = { | |||
179 | .write = ssl_console_write, | 179 | .write = ssl_console_write, |
180 | .device = ssl_console_device, | 180 | .device = ssl_console_device, |
181 | .setup = ssl_console_setup, | 181 | .setup = ssl_console_setup, |
182 | .flags = CON_PRINTBUFFER, | 182 | .flags = CON_PRINTBUFFER|CON_ANYTIME, |
183 | .index = -1, | 183 | .index = -1, |
184 | }; | 184 | }; |
185 | 185 | ||
diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c index 7ff0b0fc37e7..76d1f1c980ef 100644 --- a/arch/um/drivers/stdio_console.c +++ b/arch/um/drivers/stdio_console.c | |||
@@ -153,7 +153,7 @@ static struct console stdiocons = { | |||
153 | .write = uml_console_write, | 153 | .write = uml_console_write, |
154 | .device = uml_console_device, | 154 | .device = uml_console_device, |
155 | .setup = uml_console_setup, | 155 | .setup = uml_console_setup, |
156 | .flags = CON_PRINTBUFFER, | 156 | .flags = CON_PRINTBUFFER|CON_ANYTIME, |
157 | .index = -1, | 157 | .index = -1, |
158 | }; | 158 | }; |
159 | 159 | ||
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index f98d26e51381..8bd9204ac1ab 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -109,10 +109,6 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data) | |||
109 | 109 | ||
110 | static DEFINE_MUTEX(ubd_lock); | 110 | static DEFINE_MUTEX(ubd_lock); |
111 | 111 | ||
112 | /* XXX - this made sense in 2.4 days, now it's only used as a boolean, and | ||
113 | * probably it doesn't make sense even for that. */ | ||
114 | static int do_ubd; | ||
115 | |||
116 | static int ubd_open(struct inode * inode, struct file * filp); | 112 | static int ubd_open(struct inode * inode, struct file * filp); |
117 | static int ubd_release(struct inode * inode, struct file * file); | 113 | static int ubd_release(struct inode * inode, struct file * file); |
118 | static int ubd_ioctl(struct inode * inode, struct file * file, | 114 | static int ubd_ioctl(struct inode * inode, struct file * file, |
@@ -169,6 +165,7 @@ struct ubd { | |||
169 | struct platform_device pdev; | 165 | struct platform_device pdev; |
170 | struct request_queue *queue; | 166 | struct request_queue *queue; |
171 | spinlock_t lock; | 167 | spinlock_t lock; |
168 | int active; | ||
172 | }; | 169 | }; |
173 | 170 | ||
174 | #define DEFAULT_COW { \ | 171 | #define DEFAULT_COW { \ |
@@ -190,6 +187,7 @@ struct ubd { | |||
190 | .shared = 0, \ | 187 | .shared = 0, \ |
191 | .cow = DEFAULT_COW, \ | 188 | .cow = DEFAULT_COW, \ |
192 | .lock = SPIN_LOCK_UNLOCKED, \ | 189 | .lock = SPIN_LOCK_UNLOCKED, \ |
190 | .active = 0, \ | ||
193 | } | 191 | } |
194 | 192 | ||
195 | /* Protected by ubd_lock */ | 193 | /* Protected by ubd_lock */ |
@@ -507,7 +505,6 @@ static void ubd_handler(void) | |||
507 | struct ubd *dev; | 505 | struct ubd *dev; |
508 | int n; | 506 | int n; |
509 | 507 | ||
510 | do_ubd = 0; | ||
511 | n = os_read_file(thread_fd, &req, sizeof(req)); | 508 | n = os_read_file(thread_fd, &req, sizeof(req)); |
512 | if(n != sizeof(req)){ | 509 | if(n != sizeof(req)){ |
513 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " | 510 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " |
@@ -517,6 +514,7 @@ static void ubd_handler(void) | |||
517 | 514 | ||
518 | rq = req.req; | 515 | rq = req.req; |
519 | dev = rq->rq_disk->private_data; | 516 | dev = rq->rq_disk->private_data; |
517 | dev->active = 0; | ||
520 | 518 | ||
521 | ubd_finish(rq, req.error); | 519 | ubd_finish(rq, req.error); |
522 | reactivate_fd(thread_fd, UBD_IRQ); | 520 | reactivate_fd(thread_fd, UBD_IRQ); |
@@ -1081,11 +1079,12 @@ static void do_ubd_request(request_queue_t *q) | |||
1081 | } | 1079 | } |
1082 | } | 1080 | } |
1083 | else { | 1081 | else { |
1084 | if(do_ubd || (req = elv_next_request(q)) == NULL) | 1082 | struct ubd *dev = q->queuedata; |
1083 | if(dev->active || (req = elv_next_request(q)) == NULL) | ||
1085 | return; | 1084 | return; |
1086 | err = prepare_request(req, &io_req); | 1085 | err = prepare_request(req, &io_req); |
1087 | if(!err){ | 1086 | if(!err){ |
1088 | do_ubd = 1; | 1087 | dev->active = 1; |
1089 | n = os_write_file(thread_fd, (char *) &io_req, | 1088 | n = os_write_file(thread_fd, (char *) &io_req, |
1090 | sizeof(io_req)); | 1089 | sizeof(io_req)); |
1091 | if(n != sizeof(io_req)) | 1090 | if(n != sizeof(io_req)) |
diff --git a/arch/um/include/mconsole.h b/arch/um/include/mconsole.h index 2666815b6af5..b282839c1625 100644 --- a/arch/um/include/mconsole.h +++ b/arch/um/include/mconsole.h | |||
@@ -12,6 +12,8 @@ | |||
12 | #define u32 uint32_t | 12 | #define u32 uint32_t |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | #include "sysdep/ptrace.h" | ||
16 | |||
15 | #define MCONSOLE_MAGIC (0xcafebabe) | 17 | #define MCONSOLE_MAGIC (0xcafebabe) |
16 | #define MCONSOLE_MAX_DATA (512) | 18 | #define MCONSOLE_MAX_DATA (512) |
17 | #define MCONSOLE_VERSION 2 | 19 | #define MCONSOLE_VERSION 2 |
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 8629bd191492..5c74da410451 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -192,7 +192,9 @@ extern int os_process_parent(int pid); | |||
192 | extern void os_stop_process(int pid); | 192 | extern void os_stop_process(int pid); |
193 | extern void os_kill_process(int pid, int reap_child); | 193 | extern void os_kill_process(int pid, int reap_child); |
194 | extern void os_kill_ptraced_process(int pid, int reap_child); | 194 | extern void os_kill_ptraced_process(int pid, int reap_child); |
195 | #ifdef UML_CONFIG_MODE_TT | ||
195 | extern void os_usr1_process(int pid); | 196 | extern void os_usr1_process(int pid); |
197 | #endif | ||
196 | extern long os_ptrace_ldt(long pid, long addr, long data); | 198 | extern long os_ptrace_ldt(long pid, long addr, long data); |
197 | 199 | ||
198 | extern int os_getpid(void); | 200 | extern int os_getpid(void); |
@@ -261,7 +263,6 @@ extern void block_signals(void); | |||
261 | extern void unblock_signals(void); | 263 | extern void unblock_signals(void); |
262 | extern int get_signals(void); | 264 | extern int get_signals(void); |
263 | extern int set_signals(int enable); | 265 | extern int set_signals(int enable); |
264 | extern void os_usr1_signal(int on); | ||
265 | 266 | ||
266 | /* trap.c */ | 267 | /* trap.c */ |
267 | extern void os_fill_handlinfo(struct kern_handlers h); | 268 | extern void os_fill_handlinfo(struct kern_handlers h); |
diff --git a/arch/um/include/sysdep-x86_64/ptrace.h b/arch/um/include/sysdep-x86_64/ptrace.h index 66cb400c2c92..62403bd99661 100644 --- a/arch/um/include/sysdep-x86_64/ptrace.h +++ b/arch/um/include/sysdep-x86_64/ptrace.h | |||
@@ -104,10 +104,6 @@ union uml_pt_regs { | |||
104 | #endif | 104 | #endif |
105 | #ifdef UML_CONFIG_MODE_SKAS | 105 | #ifdef UML_CONFIG_MODE_SKAS |
106 | struct skas_regs { | 106 | struct skas_regs { |
107 | /* x86_64 ptrace uses sizeof(user_regs_struct) as its register | ||
108 | * file size, while i386 uses FRAME_SIZE. Therefore, we need | ||
109 | * to use UM_FRAME_SIZE here instead of HOST_FRAME_SIZE. | ||
110 | */ | ||
111 | unsigned long regs[MAX_REG_NR]; | 107 | unsigned long regs[MAX_REG_NR]; |
112 | unsigned long fp[HOST_FP_SIZE]; | 108 | unsigned long fp[HOST_FP_SIZE]; |
113 | struct faultinfo faultinfo; | 109 | struct faultinfo faultinfo; |
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 50a288bb875a..dbf2f5bc842f 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c | |||
@@ -142,6 +142,7 @@ int activate_fd(int irq, int fd, int type, void *dev_id) | |||
142 | .events = events, | 142 | .events = events, |
143 | .current_events = 0 } ); | 143 | .current_events = 0 } ); |
144 | 144 | ||
145 | err = -EBUSY; | ||
145 | spin_lock_irqsave(&irq_lock, flags); | 146 | spin_lock_irqsave(&irq_lock, flags); |
146 | for (irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next) { | 147 | for (irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next) { |
147 | if ((irq_fd->fd == fd) && (irq_fd->type == type)) { | 148 | if ((irq_fd->fd == fd) && (irq_fd->type == type)) { |
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index e85d65deea0d..df7d662b98ce 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c | |||
@@ -64,8 +64,6 @@ static void setup_highmem(unsigned long highmem_start, | |||
64 | 64 | ||
65 | void mem_init(void) | 65 | void mem_init(void) |
66 | { | 66 | { |
67 | max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT; | ||
68 | |||
69 | /* clear the zero-page */ | 67 | /* clear the zero-page */ |
70 | memset((void *) empty_zero_page, 0, PAGE_SIZE); | 68 | memset((void *) empty_zero_page, 0, PAGE_SIZE); |
71 | 69 | ||
@@ -80,6 +78,7 @@ void mem_init(void) | |||
80 | 78 | ||
81 | /* this will put all low memory onto the freelists */ | 79 | /* this will put all low memory onto the freelists */ |
82 | totalram_pages = free_all_bootmem(); | 80 | totalram_pages = free_all_bootmem(); |
81 | max_low_pfn = totalram_pages; | ||
83 | #ifdef CONFIG_HIGHMEM | 82 | #ifdef CONFIG_HIGHMEM |
84 | totalhigh_pages = highmem >> PAGE_SHIFT; | 83 | totalhigh_pages = highmem >> PAGE_SHIFT; |
85 | totalram_pages += totalhigh_pages; | 84 | totalram_pages += totalhigh_pages; |
diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index c692a192957a..76bdd6712417 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include "longjmp.h" | 21 | #include "longjmp.h" |
22 | #include "skas_ptrace.h" | 22 | #include "skas_ptrace.h" |
23 | #include "kern_constants.h" | 23 | #include "kern_constants.h" |
24 | #include "uml-config.h" | ||
24 | 25 | ||
25 | #define ARBITRARY_ADDR -1 | 26 | #define ARBITRARY_ADDR -1 |
26 | #define FAILURE_PID -1 | 27 | #define FAILURE_PID -1 |
@@ -131,10 +132,12 @@ void os_kill_ptraced_process(int pid, int reap_child) | |||
131 | CATCH_EINTR(waitpid(pid, NULL, 0)); | 132 | CATCH_EINTR(waitpid(pid, NULL, 0)); |
132 | } | 133 | } |
133 | 134 | ||
135 | #ifdef UML_CONFIG_MODE_TT | ||
134 | void os_usr1_process(int pid) | 136 | void os_usr1_process(int pid) |
135 | { | 137 | { |
136 | kill(pid, SIGUSR1); | 138 | kill(pid, SIGUSR1); |
137 | } | 139 | } |
140 | #endif | ||
138 | 141 | ||
139 | /* Don't use the glibc version, which caches the result in TLS. It misses some | 142 | /* Don't use the glibc version, which caches the result in TLS. It misses some |
140 | * syscalls, and also breaks with clone(), which does not unshare the TLS. | 143 | * syscalls, and also breaks with clone(), which does not unshare the TLS. |
diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c index b897e8592d77..266768629fee 100644 --- a/arch/um/os-Linux/signal.c +++ b/arch/um/os-Linux/signal.c | |||
@@ -243,8 +243,3 @@ int set_signals(int enable) | |||
243 | 243 | ||
244 | return ret; | 244 | return ret; |
245 | } | 245 | } |
246 | |||
247 | void os_usr1_signal(int on) | ||
248 | { | ||
249 | change_sig(SIGUSR1, on); | ||
250 | } | ||
diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c index b3c11cfa995a..9383e8751ae7 100644 --- a/arch/um/os-Linux/skas/mem.c +++ b/arch/um/os-Linux/skas/mem.c | |||
@@ -48,7 +48,7 @@ int multi_op_count = 0; | |||
48 | static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) | 48 | static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) |
49 | { | 49 | { |
50 | unsigned long regs[MAX_REG_NR]; | 50 | unsigned long regs[MAX_REG_NR]; |
51 | int n; | 51 | int n, i; |
52 | long ret, offset; | 52 | long ret, offset; |
53 | unsigned long * data; | 53 | unsigned long * data; |
54 | unsigned long * syscall; | 54 | unsigned long * syscall; |
@@ -66,9 +66,13 @@ static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) | |||
66 | (unsigned long) &__syscall_stub_start); | 66 | (unsigned long) &__syscall_stub_start); |
67 | 67 | ||
68 | n = ptrace_setregs(pid, regs); | 68 | n = ptrace_setregs(pid, regs); |
69 | if(n < 0) | 69 | if(n < 0){ |
70 | printk("Registers - \n"); | ||
71 | for(i = 0; i < MAX_REG_NR; i++) | ||
72 | printk("\t%d\t0x%lx\n", i, regs[i]); | ||
70 | panic("do_syscall_stub : PTRACE_SETREGS failed, errno = %d\n", | 73 | panic("do_syscall_stub : PTRACE_SETREGS failed, errno = %d\n", |
71 | n); | 74 | -n); |
75 | } | ||
72 | 76 | ||
73 | wait_stub_done(pid, 0, "do_syscall_stub"); | 77 | wait_stub_done(pid, 0, "do_syscall_stub"); |
74 | 78 | ||
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index dda06789bcb0..0564422c155f 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c | |||
@@ -67,7 +67,7 @@ void wait_stub_done(int pid, int sig, char * fname) | |||
67 | 67 | ||
68 | if((n < 0) || !WIFSTOPPED(status) || | 68 | if((n < 0) || !WIFSTOPPED(status) || |
69 | (WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){ | 69 | (WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){ |
70 | unsigned long regs[HOST_FRAME_SIZE]; | 70 | unsigned long regs[MAX_REG_NR]; |
71 | 71 | ||
72 | if(ptrace(PTRACE_GETREGS, pid, 0, regs) < 0) | 72 | if(ptrace(PTRACE_GETREGS, pid, 0, regs) < 0) |
73 | printk("Failed to get registers from stub, " | 73 | printk("Failed to get registers from stub, " |
@@ -76,7 +76,7 @@ void wait_stub_done(int pid, int sig, char * fname) | |||
76 | int i; | 76 | int i; |
77 | 77 | ||
78 | printk("Stub registers -\n"); | 78 | printk("Stub registers -\n"); |
79 | for(i = 0; i < HOST_FRAME_SIZE; i++) | 79 | for(i = 0; i < ARRAY_SIZE(regs); i++) |
80 | printk("\t%d - %lx\n", i, regs[i]); | 80 | printk("\t%d - %lx\n", i, regs[i]); |
81 | } | 81 | } |
82 | panic("%s : failed to wait for SIGUSR1/SIGTRAP, " | 82 | panic("%s : failed to wait for SIGUSR1/SIGTRAP, " |
@@ -328,7 +328,7 @@ void userspace(union uml_pt_regs *regs) | |||
328 | int copy_context_skas0(unsigned long new_stack, int pid) | 328 | int copy_context_skas0(unsigned long new_stack, int pid) |
329 | { | 329 | { |
330 | int err; | 330 | int err; |
331 | unsigned long regs[HOST_FRAME_SIZE]; | 331 | unsigned long regs[MAX_REG_NR]; |
332 | unsigned long fp_regs[HOST_FP_SIZE]; | 332 | unsigned long fp_regs[HOST_FP_SIZE]; |
333 | unsigned long current_stack = current_stub_stack(); | 333 | unsigned long current_stack = current_stub_stack(); |
334 | struct stub_data *data = (struct stub_data *) current_stack; | 334 | struct stub_data *data = (struct stub_data *) current_stack; |
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c index 79cd93c8c5ed..84b44f9cd42a 100644 --- a/arch/um/os-Linux/sys-i386/registers.c +++ b/arch/um/os-Linux/sys-i386/registers.c | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | /* These are set once at boot time and not changed thereafter */ | 16 | /* These are set once at boot time and not changed thereafter */ |
17 | 17 | ||
18 | static unsigned long exec_regs[HOST_FRAME_SIZE]; | 18 | static unsigned long exec_regs[MAX_REG_NR]; |
19 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; | 19 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; |
20 | static unsigned long exec_fpx_regs[HOST_XFP_SIZE]; | 20 | static unsigned long exec_fpx_regs[HOST_XFP_SIZE]; |
21 | static int have_fpx_regs = 1; | 21 | static int have_fpx_regs = 1; |
@@ -101,6 +101,7 @@ void init_registers(int pid) | |||
101 | { | 101 | { |
102 | int err; | 102 | int err; |
103 | 103 | ||
104 | memset(exec_regs, 0, sizeof(exec_regs)); | ||
104 | err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); | 105 | err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); |
105 | if(err) | 106 | if(err) |
106 | panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", | 107 | panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", |
@@ -124,7 +125,7 @@ void init_registers(int pid) | |||
124 | 125 | ||
125 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) | 126 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) |
126 | { | 127 | { |
127 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 128 | memcpy(regs, exec_regs, sizeof(exec_regs)); |
128 | if(fp_regs != NULL) | 129 | if(fp_regs != NULL) |
129 | memcpy(fp_regs, exec_fp_regs, | 130 | memcpy(fp_regs, exec_fp_regs, |
130 | HOST_FP_SIZE * sizeof(unsigned long)); | 131 | HOST_FP_SIZE * sizeof(unsigned long)); |
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c index a2d7e0c603f7..e6fc2179d1bc 100644 --- a/arch/um/os-Linux/sys-x86_64/registers.c +++ b/arch/um/os-Linux/sys-x86_64/registers.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | /* These are set once at boot time and not changed thereafter */ | 15 | /* These are set once at boot time and not changed thereafter */ |
16 | 16 | ||
17 | static unsigned long exec_regs[HOST_FRAME_SIZE]; | 17 | static unsigned long exec_regs[MAX_REG_NR]; |
18 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; | 18 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; |
19 | 19 | ||
20 | void init_thread_registers(union uml_pt_regs *to) | 20 | void init_thread_registers(union uml_pt_regs *to) |
@@ -72,7 +72,7 @@ void init_registers(int pid) | |||
72 | 72 | ||
73 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) | 73 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) |
74 | { | 74 | { |
75 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 75 | memcpy(regs, exec_regs, sizeof(exec_regs)); |
76 | if(fp_regs != NULL) | 76 | if(fp_regs != NULL) |
77 | memcpy(fp_regs, exec_fp_regs, | 77 | memcpy(fp_regs, exec_fp_regs, |
78 | HOST_FP_SIZE * sizeof(unsigned long)); | 78 | HOST_FP_SIZE * sizeof(unsigned long)); |
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/um/sys-i386/delay.c b/arch/um/sys-i386/delay.c index 2c11b9770e8b..d623e074f41d 100644 --- a/arch/um/sys-i386/delay.c +++ b/arch/um/sys-i386/delay.c | |||
@@ -27,14 +27,3 @@ void __udelay(unsigned long usecs) | |||
27 | } | 27 | } |
28 | 28 | ||
29 | EXPORT_SYMBOL(__udelay); | 29 | EXPORT_SYMBOL(__udelay); |
30 | |||
31 | void __const_udelay(unsigned long usecs) | ||
32 | { | ||
33 | int i, n; | ||
34 | |||
35 | n = (loops_per_jiffy * HZ * usecs) / MILLION; | ||
36 | for(i=0;i<n;i++) | ||
37 | cpu_relax(); | ||
38 | } | ||
39 | |||
40 | EXPORT_SYMBOL(__const_udelay); | ||
diff --git a/arch/um/sys-i386/ldt.c b/arch/um/sys-i386/ldt.c index 4a8b4202ef9e..a939a7ef0227 100644 --- a/arch/um/sys-i386/ldt.c +++ b/arch/um/sys-i386/ldt.c | |||
@@ -394,7 +394,8 @@ static short * host_ldt_entries = NULL; | |||
394 | static void ldt_get_host_info(void) | 394 | static void ldt_get_host_info(void) |
395 | { | 395 | { |
396 | long ret; | 396 | long ret; |
397 | struct ldt_entry * ldt, *tmp; | 397 | struct ldt_entry * ldt; |
398 | short *tmp; | ||
398 | int i, size, k, order; | 399 | int i, size, k, order; |
399 | 400 | ||
400 | spin_lock(&host_ldt_lock); | 401 | spin_lock(&host_ldt_lock); |
diff --git a/arch/um/sys-x86_64/delay.c b/arch/um/sys-x86_64/delay.c index 137f4446b439..dee5be66da82 100644 --- a/arch/um/sys-x86_64/delay.c +++ b/arch/um/sys-x86_64/delay.c | |||
@@ -28,14 +28,3 @@ void __udelay(unsigned long usecs) | |||
28 | } | 28 | } |
29 | 29 | ||
30 | EXPORT_SYMBOL(__udelay); | 30 | EXPORT_SYMBOL(__udelay); |
31 | |||
32 | void __const_udelay(unsigned long usecs) | ||
33 | { | ||
34 | unsigned long i, n; | ||
35 | |||
36 | n = (loops_per_jiffy * HZ * usecs) / MILLION; | ||
37 | for(i=0;i<n;i++) | ||
38 | cpu_relax(); | ||
39 | } | ||
40 | |||
41 | EXPORT_SYMBOL(__const_udelay); | ||
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c index 01b91f9fa789..b3f6350cac44 100644 --- a/arch/um/sys-x86_64/syscalls.c +++ b/arch/um/sys-x86_64/syscalls.c | |||
@@ -103,6 +103,9 @@ long arch_prctl_skas(struct task_struct *task, int code, | |||
103 | 103 | ||
104 | switch(code){ | 104 | switch(code){ |
105 | case ARCH_SET_FS: | 105 | case ARCH_SET_FS: |
106 | current->thread.arch.fs = (unsigned long) ptr; | ||
107 | save_registers(pid, ¤t->thread.regs.regs); | ||
108 | break; | ||
106 | case ARCH_SET_GS: | 109 | case ARCH_SET_GS: |
107 | save_registers(pid, ¤t->thread.regs.regs); | 110 | save_registers(pid, ¤t->thread.regs.regs); |
108 | break; | 111 | break; |
@@ -140,9 +143,8 @@ long sys_clone(unsigned long clone_flags, unsigned long newsp, | |||
140 | 143 | ||
141 | void arch_switch_to_skas(struct task_struct *from, struct task_struct *to) | 144 | void arch_switch_to_skas(struct task_struct *from, struct task_struct *to) |
142 | { | 145 | { |
143 | if(to->thread.arch.fs == 0) | 146 | if((to->thread.arch.fs == 0) || (to->mm == NULL)) |
144 | return; | 147 | return; |
145 | 148 | ||
146 | arch_prctl_skas(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs); | 149 | arch_prctl_skas(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs); |
147 | } | 150 | } |
148 | |||
diff --git a/arch/x86_64/boot/video.S b/arch/x86_64/boot/video.S index d6ff88f35135..6090516c9c7f 100644 --- a/arch/x86_64/boot/video.S +++ b/arch/x86_64/boot/video.S | |||
@@ -571,6 +571,16 @@ setr1: lodsw | |||
571 | jmp _m_s | 571 | jmp _m_s |
572 | 572 | ||
573 | check_vesa: | 573 | check_vesa: |
574 | #ifdef CONFIG_FIRMWARE_EDID | ||
575 | leaw modelist+1024, %di | ||
576 | movw $0x4f00, %ax | ||
577 | int $0x10 | ||
578 | cmpw $0x004f, %ax | ||
579 | jnz setbad | ||
580 | |||
581 | movw 4(%di), %ax | ||
582 | movw %ax, vbe_version | ||
583 | #endif | ||
574 | leaw modelist+1024, %di | 584 | leaw modelist+1024, %di |
575 | subb $VIDEO_FIRST_VESA>>8, %bh | 585 | subb $VIDEO_FIRST_VESA>>8, %bh |
576 | movw %bx, %cx # Get mode information structure | 586 | movw %bx, %cx # Get mode information structure |
@@ -1945,6 +1955,9 @@ store_edid: | |||
1945 | rep | 1955 | rep |
1946 | stosl | 1956 | stosl |
1947 | 1957 | ||
1958 | cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0 | ||
1959 | jl no_edid | ||
1960 | |||
1948 | pushw %es # save ES | 1961 | pushw %es # save ES |
1949 | xorw %di, %di # Report Capability | 1962 | xorw %di, %di # Report Capability |
1950 | pushw %di | 1963 | pushw %di |
@@ -1987,6 +2000,7 @@ do_restore: .byte 0 # Screen contents altered during mode change | |||
1987 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes | 2000 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes |
1988 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer | 2001 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer |
1989 | dac_size: .byte 6 # DAC bit depth | 2002 | dac_size: .byte 6 # DAC bit depth |
2003 | vbe_version: .word 0 # VBE bios version | ||
1990 | 2004 | ||
1991 | # Status messages | 2005 | # Status messages |
1992 | keymsg: .ascii "Press <RETURN> to see video modes available, " | 2006 | keymsg: .ascii "Press <RETURN> to see video modes available, " |
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/ia32/ptrace32.c b/arch/x86_64/ia32/ptrace32.c index 04566fe5de49..4de3a54318f4 100644 --- a/arch/x86_64/ia32/ptrace32.c +++ b/arch/x86_64/ia32/ptrace32.c | |||
@@ -243,6 +243,7 @@ asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data) | |||
243 | case PTRACE_SINGLESTEP: | 243 | case PTRACE_SINGLESTEP: |
244 | case PTRACE_DETACH: | 244 | case PTRACE_DETACH: |
245 | case PTRACE_SYSCALL: | 245 | case PTRACE_SYSCALL: |
246 | case PTRACE_OLDSETOPTIONS: | ||
246 | case PTRACE_SETOPTIONS: | 247 | case PTRACE_SETOPTIONS: |
247 | case PTRACE_SET_THREAD_AREA: | 248 | case PTRACE_SET_THREAD_AREA: |
248 | case PTRACE_GET_THREAD_AREA: | 249 | case PTRACE_GET_THREAD_AREA: |
diff --git a/arch/x86_64/kernel/acpi/sleep.c b/arch/x86_64/kernel/acpi/sleep.c index 23178ce6c783..e1548fbe95ae 100644 --- a/arch/x86_64/kernel/acpi/sleep.c +++ b/arch/x86_64/kernel/acpi/sleep.c | |||
@@ -66,8 +66,10 @@ static void init_low_mapping(void) | |||
66 | { | 66 | { |
67 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); | 67 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); |
68 | low_ptr = *slot0; | 68 | low_ptr = *slot0; |
69 | /* FIXME: We're playing with the current task's page tables here, which | ||
70 | * is potentially dangerous on SMP systems. | ||
71 | */ | ||
69 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); | 72 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); |
70 | WARN_ON(num_online_cpus() != 1); | ||
71 | local_flush_tlb(); | 73 | local_flush_tlb(); |
72 | } | 74 | } |
73 | 75 | ||
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index 723417d924c0..bd3e45d47c37 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -47,6 +47,10 @@ int apic_calibrate_pmtmr __initdata; | |||
47 | 47 | ||
48 | int disable_apic_timer __initdata; | 48 | int disable_apic_timer __initdata; |
49 | 49 | ||
50 | /* Local APIC timer works in C2? */ | ||
51 | int local_apic_timer_c2_ok; | ||
52 | EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); | ||
53 | |||
50 | static struct resource *ioapic_resources; | 54 | static struct resource *ioapic_resources; |
51 | static struct resource lapic_resource = { | 55 | static struct resource lapic_resource = { |
52 | .name = "Local APIC", | 56 | .name = "Local APIC", |
@@ -930,9 +934,17 @@ EXPORT_SYMBOL(switch_APIC_timer_to_ipi); | |||
930 | 934 | ||
931 | void smp_send_timer_broadcast_ipi(void) | 935 | void smp_send_timer_broadcast_ipi(void) |
932 | { | 936 | { |
937 | int cpu = smp_processor_id(); | ||
933 | cpumask_t mask; | 938 | cpumask_t mask; |
934 | 939 | ||
935 | cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); | 940 | cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); |
941 | |||
942 | if (cpu_isset(cpu, mask)) { | ||
943 | cpu_clear(cpu, mask); | ||
944 | add_pda(apic_timer_irqs, 1); | ||
945 | smp_local_timer_interrupt(); | ||
946 | } | ||
947 | |||
936 | if (!cpus_empty(mask)) { | 948 | if (!cpus_empty(mask)) { |
937 | send_IPI_mask(mask, LOCAL_TIMER_VECTOR); | 949 | send_IPI_mask(mask, LOCAL_TIMER_VECTOR); |
938 | } | 950 | } |
@@ -1192,6 +1204,13 @@ static __init int setup_nolapic(char *str) | |||
1192 | } | 1204 | } |
1193 | early_param("nolapic", setup_nolapic); | 1205 | early_param("nolapic", setup_nolapic); |
1194 | 1206 | ||
1207 | static int __init parse_lapic_timer_c2_ok(char *arg) | ||
1208 | { | ||
1209 | local_apic_timer_c2_ok = 1; | ||
1210 | return 0; | ||
1211 | } | ||
1212 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); | ||
1213 | |||
1195 | static __init int setup_noapictimer(char *str) | 1214 | static __init int setup_noapictimer(char *str) |
1196 | { | 1215 | { |
1197 | if (str[0] != ' ' && str[0] != 0) | 1216 | if (str[0] != ' ' && str[0] != 0) |
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 8047ea8c2ab2..fede55a53995 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) && |
@@ -30,16 +30,13 @@ static void via_bugs(void) | |||
30 | 30 | ||
31 | #ifdef CONFIG_ACPI | 31 | #ifdef CONFIG_ACPI |
32 | 32 | ||
33 | static int nvidia_hpet_detected __initdata; | ||
34 | |||
35 | static int __init nvidia_hpet_check(struct acpi_table_header *header) | 33 | static int __init nvidia_hpet_check(struct acpi_table_header *header) |
36 | { | 34 | { |
37 | nvidia_hpet_detected = 1; | ||
38 | return 0; | 35 | return 0; |
39 | } | 36 | } |
40 | #endif | 37 | #endif |
41 | 38 | ||
42 | static void nvidia_bugs(void) | 39 | static void __init nvidia_bugs(void) |
43 | { | 40 | { |
44 | #ifdef CONFIG_ACPI | 41 | #ifdef CONFIG_ACPI |
45 | /* | 42 | /* |
@@ -52,11 +49,7 @@ static void nvidia_bugs(void) | |||
52 | if (acpi_use_timer_override) | 49 | if (acpi_use_timer_override) |
53 | return; | 50 | return; |
54 | 51 | ||
55 | nvidia_hpet_detected = 0; | 52 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) { |
56 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) | ||
57 | return; | ||
58 | |||
59 | if (nvidia_hpet_detected == 0) { | ||
60 | acpi_skip_timer_override = 1; | 53 | acpi_skip_timer_override = 1; |
61 | printk(KERN_INFO "Nvidia board " | 54 | printk(KERN_INFO "Nvidia board " |
62 | "detected. Ignoring ACPI " | 55 | "detected. Ignoring ACPI " |
@@ -69,7 +62,7 @@ static void nvidia_bugs(void) | |||
69 | 62 | ||
70 | } | 63 | } |
71 | 64 | ||
72 | static void ati_bugs(void) | 65 | static void __init ati_bugs(void) |
73 | { | 66 | { |
74 | if (timer_over_8254 == 1) { | 67 | if (timer_over_8254 == 1) { |
75 | timer_over_8254 = 0; | 68 | timer_over_8254 = 0; |
@@ -95,7 +88,7 @@ struct chipset { | |||
95 | void (*f)(void); | 88 | void (*f)(void); |
96 | }; | 89 | }; |
97 | 90 | ||
98 | static struct chipset early_qrk[] = { | 91 | static struct chipset early_qrk[] __initdata = { |
99 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, | 92 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, |
100 | { PCI_VENDOR_ID_VIA, via_bugs }, | 93 | { PCI_VENDOR_ID_VIA, via_bugs }, |
101 | { PCI_VENDOR_ID_ATI, ati_bugs }, | 94 | { PCI_VENDOR_ID_ATI, ati_bugs }, |
diff --git a/arch/x86_64/kernel/i8259.c b/arch/x86_64/kernel/i8259.c index 21d95b747437..489426682772 100644 --- a/arch/x86_64/kernel/i8259.c +++ b/arch/x86_64/kernel/i8259.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | /* | 46 | /* |
47 | * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts: | 47 | * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts: |
48 | * (these are usually mapped to vectors 0x20-0x2f) | 48 | * (these are usually mapped to vectors 0x30-0x3f) |
49 | */ | 49 | */ |
50 | 50 | ||
51 | /* | 51 | /* |
@@ -299,7 +299,7 @@ void init_8259A(int auto_eoi) | |||
299 | * outb_p - this has to work on a wide range of PC hardware. | 299 | * outb_p - this has to work on a wide range of PC hardware. |
300 | */ | 300 | */ |
301 | outb_p(0x11, 0x20); /* ICW1: select 8259A-1 init */ | 301 | outb_p(0x11, 0x20); /* ICW1: select 8259A-1 init */ |
302 | outb_p(IRQ0_VECTOR, 0x21); /* ICW2: 8259A-1 IR0-7 mapped to 0x20-0x27 */ | 302 | outb_p(IRQ0_VECTOR, 0x21); /* ICW2: 8259A-1 IR0-7 mapped to 0x30-0x37 */ |
303 | outb_p(0x04, 0x21); /* 8259A-1 (the master) has a slave on IR2 */ | 303 | outb_p(0x04, 0x21); /* 8259A-1 (the master) has a slave on IR2 */ |
304 | if (auto_eoi) | 304 | if (auto_eoi) |
305 | outb_p(0x03, 0x21); /* master does Auto EOI */ | 305 | outb_p(0x03, 0x21); /* master does Auto EOI */ |
@@ -307,7 +307,7 @@ void init_8259A(int auto_eoi) | |||
307 | outb_p(0x01, 0x21); /* master expects normal EOI */ | 307 | outb_p(0x01, 0x21); /* master expects normal EOI */ |
308 | 308 | ||
309 | outb_p(0x11, 0xA0); /* ICW1: select 8259A-2 init */ | 309 | outb_p(0x11, 0xA0); /* ICW1: select 8259A-2 init */ |
310 | outb_p(IRQ8_VECTOR, 0xA1); /* ICW2: 8259A-2 IR0-7 mapped to 0x28-0x2f */ | 310 | outb_p(IRQ8_VECTOR, 0xA1); /* ICW2: 8259A-2 IR0-7 mapped to 0x38-0x3f */ |
311 | outb_p(0x02, 0xA1); /* 8259A-2 is a slave on master's IR2 */ | 311 | outb_p(0x02, 0xA1); /* 8259A-2 is a slave on master's IR2 */ |
312 | outb_p(0x01, 0xA1); /* (slave's support for AEOI in flat mode | 312 | outb_p(0x01, 0xA1); /* (slave's support for AEOI in flat mode |
313 | is to be investigated) */ | 313 | is to be investigated) */ |
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..a90996c27dc8 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
@@ -108,64 +108,128 @@ static inline unsigned int nmi_evntsel_msr_to_bit(unsigned int msr) | |||
108 | /* checks for a bit availability (hack for oprofile) */ | 108 | /* checks for a bit availability (hack for oprofile) */ |
109 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) | 109 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) |
110 | { | 110 | { |
111 | int cpu; | ||
111 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 112 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
112 | 113 | for_each_possible_cpu (cpu) { | |
113 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 114 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
115 | return 0; | ||
116 | } | ||
117 | return 1; | ||
114 | } | 118 | } |
115 | 119 | ||
116 | /* checks the an msr for availability */ | 120 | /* checks the an msr for availability */ |
117 | int avail_to_resrv_perfctr_nmi(unsigned int msr) | 121 | int avail_to_resrv_perfctr_nmi(unsigned int msr) |
118 | { | 122 | { |
119 | unsigned int counter; | 123 | unsigned int counter; |
124 | int cpu; | ||
120 | 125 | ||
121 | counter = nmi_perfctr_msr_to_bit(msr); | 126 | counter = nmi_perfctr_msr_to_bit(msr); |
122 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 127 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
123 | 128 | ||
124 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 129 | for_each_possible_cpu (cpu) { |
130 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) | ||
131 | return 0; | ||
132 | } | ||
133 | return 1; | ||
125 | } | 134 | } |
126 | 135 | ||
127 | int reserve_perfctr_nmi(unsigned int msr) | 136 | static int __reserve_perfctr_nmi(int cpu, unsigned int msr) |
128 | { | 137 | { |
129 | unsigned int counter; | 138 | unsigned int counter; |
139 | if (cpu < 0) | ||
140 | cpu = smp_processor_id(); | ||
130 | 141 | ||
131 | counter = nmi_perfctr_msr_to_bit(msr); | 142 | counter = nmi_perfctr_msr_to_bit(msr); |
132 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 143 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
133 | 144 | ||
134 | if (!test_and_set_bit(counter, &__get_cpu_var(perfctr_nmi_owner))) | 145 | if (!test_and_set_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
135 | return 1; | 146 | return 1; |
136 | return 0; | 147 | return 0; |
137 | } | 148 | } |
138 | 149 | ||
139 | void release_perfctr_nmi(unsigned int msr) | 150 | static void __release_perfctr_nmi(int cpu, unsigned int msr) |
140 | { | 151 | { |
141 | unsigned int counter; | 152 | unsigned int counter; |
153 | if (cpu < 0) | ||
154 | cpu = smp_processor_id(); | ||
142 | 155 | ||
143 | counter = nmi_perfctr_msr_to_bit(msr); | 156 | counter = nmi_perfctr_msr_to_bit(msr); |
144 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 157 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
145 | 158 | ||
146 | clear_bit(counter, &__get_cpu_var(perfctr_nmi_owner)); | 159 | clear_bit(counter, &per_cpu(perfctr_nmi_owner, cpu)); |
147 | } | 160 | } |
148 | 161 | ||
149 | int reserve_evntsel_nmi(unsigned int msr) | 162 | int reserve_perfctr_nmi(unsigned int msr) |
163 | { | ||
164 | int cpu, i; | ||
165 | for_each_possible_cpu (cpu) { | ||
166 | if (!__reserve_perfctr_nmi(cpu, msr)) { | ||
167 | for_each_possible_cpu (i) { | ||
168 | if (i >= cpu) | ||
169 | break; | ||
170 | __release_perfctr_nmi(i, msr); | ||
171 | } | ||
172 | return 0; | ||
173 | } | ||
174 | } | ||
175 | return 1; | ||
176 | } | ||
177 | |||
178 | void release_perfctr_nmi(unsigned int msr) | ||
179 | { | ||
180 | int cpu; | ||
181 | for_each_possible_cpu (cpu) | ||
182 | __release_perfctr_nmi(cpu, msr); | ||
183 | } | ||
184 | |||
185 | int __reserve_evntsel_nmi(int cpu, unsigned int msr) | ||
150 | { | 186 | { |
151 | unsigned int counter; | 187 | unsigned int counter; |
188 | if (cpu < 0) | ||
189 | cpu = smp_processor_id(); | ||
152 | 190 | ||
153 | counter = nmi_evntsel_msr_to_bit(msr); | 191 | counter = nmi_evntsel_msr_to_bit(msr); |
154 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 192 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
155 | 193 | ||
156 | if (!test_and_set_bit(counter, &__get_cpu_var(evntsel_nmi_owner))) | 194 | if (!test_and_set_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0])) |
157 | return 1; | 195 | return 1; |
158 | return 0; | 196 | return 0; |
159 | } | 197 | } |
160 | 198 | ||
161 | void release_evntsel_nmi(unsigned int msr) | 199 | static void __release_evntsel_nmi(int cpu, unsigned int msr) |
162 | { | 200 | { |
163 | unsigned int counter; | 201 | unsigned int counter; |
202 | if (cpu < 0) | ||
203 | cpu = smp_processor_id(); | ||
164 | 204 | ||
165 | counter = nmi_evntsel_msr_to_bit(msr); | 205 | counter = nmi_evntsel_msr_to_bit(msr); |
166 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 206 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
167 | 207 | ||
168 | clear_bit(counter, &__get_cpu_var(evntsel_nmi_owner)); | 208 | clear_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0]); |
209 | } | ||
210 | |||
211 | int reserve_evntsel_nmi(unsigned int msr) | ||
212 | { | ||
213 | int cpu, i; | ||
214 | for_each_possible_cpu (cpu) { | ||
215 | if (!__reserve_evntsel_nmi(cpu, msr)) { | ||
216 | for_each_possible_cpu (i) { | ||
217 | if (i >= cpu) | ||
218 | break; | ||
219 | __release_evntsel_nmi(i, msr); | ||
220 | } | ||
221 | return 0; | ||
222 | } | ||
223 | } | ||
224 | return 1; | ||
225 | } | ||
226 | |||
227 | void release_evntsel_nmi(unsigned int msr) | ||
228 | { | ||
229 | int cpu; | ||
230 | for_each_possible_cpu (cpu) { | ||
231 | __release_evntsel_nmi(cpu, msr); | ||
232 | } | ||
169 | } | 233 | } |
170 | 234 | ||
171 | static __cpuinit inline int nmi_known_cpu(void) | 235 | static __cpuinit inline int nmi_known_cpu(void) |
@@ -187,10 +251,7 @@ void nmi_watchdog_default(void) | |||
187 | { | 251 | { |
188 | if (nmi_watchdog != NMI_DEFAULT) | 252 | if (nmi_watchdog != NMI_DEFAULT) |
189 | return; | 253 | return; |
190 | if (nmi_known_cpu()) | 254 | nmi_watchdog = NMI_NONE; |
191 | nmi_watchdog = NMI_LOCAL_APIC; | ||
192 | else | ||
193 | nmi_watchdog = NMI_IO_APIC; | ||
194 | } | 255 | } |
195 | 256 | ||
196 | static int endflag __initdata = 0; | 257 | static int endflag __initdata = 0; |
@@ -256,7 +317,7 @@ int __init check_nmi_watchdog (void) | |||
256 | for (cpu = 0; cpu < NR_CPUS; cpu++) | 317 | for (cpu = 0; cpu < NR_CPUS; cpu++) |
257 | counts[cpu] = cpu_pda(cpu)->__nmi_count; | 318 | counts[cpu] = cpu_pda(cpu)->__nmi_count; |
258 | local_irq_enable(); | 319 | local_irq_enable(); |
259 | mdelay((10*1000)/nmi_hz); // wait 10 ticks | 320 | mdelay((20*1000)/nmi_hz); // wait 20 ticks |
260 | 321 | ||
261 | for_each_online_cpu(cpu) { | 322 | for_each_online_cpu(cpu) { |
262 | if (!per_cpu(nmi_watchdog_ctlblk, cpu).enabled) | 323 | if (!per_cpu(nmi_watchdog_ctlblk, cpu).enabled) |
@@ -475,10 +536,10 @@ static int setup_k7_watchdog(void) | |||
475 | 536 | ||
476 | perfctr_msr = MSR_K7_PERFCTR0; | 537 | perfctr_msr = MSR_K7_PERFCTR0; |
477 | evntsel_msr = MSR_K7_EVNTSEL0; | 538 | evntsel_msr = MSR_K7_EVNTSEL0; |
478 | if (!reserve_perfctr_nmi(perfctr_msr)) | 539 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
479 | goto fail; | 540 | goto fail; |
480 | 541 | ||
481 | if (!reserve_evntsel_nmi(evntsel_msr)) | 542 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
482 | goto fail1; | 543 | goto fail1; |
483 | 544 | ||
484 | /* Simulator may not support it */ | 545 | /* Simulator may not support it */ |
@@ -504,9 +565,9 @@ static int setup_k7_watchdog(void) | |||
504 | wd->check_bit = 1ULL<<63; | 565 | wd->check_bit = 1ULL<<63; |
505 | return 1; | 566 | return 1; |
506 | fail2: | 567 | fail2: |
507 | release_evntsel_nmi(evntsel_msr); | 568 | __release_evntsel_nmi(-1, evntsel_msr); |
508 | fail1: | 569 | fail1: |
509 | release_perfctr_nmi(perfctr_msr); | 570 | __release_perfctr_nmi(-1, perfctr_msr); |
510 | fail: | 571 | fail: |
511 | return 0; | 572 | return 0; |
512 | } | 573 | } |
@@ -517,8 +578,8 @@ static void stop_k7_watchdog(void) | |||
517 | 578 | ||
518 | wrmsr(wd->evntsel_msr, 0, 0); | 579 | wrmsr(wd->evntsel_msr, 0, 0); |
519 | 580 | ||
520 | release_evntsel_nmi(wd->evntsel_msr); | 581 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
521 | release_perfctr_nmi(wd->perfctr_msr); | 582 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
522 | } | 583 | } |
523 | 584 | ||
524 | /* Note that these events don't tick when the CPU idles. This means | 585 | /* Note that these events don't tick when the CPU idles. This means |
@@ -584,10 +645,10 @@ static int setup_p4_watchdog(void) | |||
584 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); | 645 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); |
585 | } | 646 | } |
586 | 647 | ||
587 | if (!reserve_perfctr_nmi(perfctr_msr)) | 648 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
588 | goto fail; | 649 | goto fail; |
589 | 650 | ||
590 | if (!reserve_evntsel_nmi(evntsel_msr)) | 651 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
591 | goto fail1; | 652 | goto fail1; |
592 | 653 | ||
593 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) | 654 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) |
@@ -612,7 +673,7 @@ static int setup_p4_watchdog(void) | |||
612 | wd->check_bit = 1ULL<<39; | 673 | wd->check_bit = 1ULL<<39; |
613 | return 1; | 674 | return 1; |
614 | fail1: | 675 | fail1: |
615 | release_perfctr_nmi(perfctr_msr); | 676 | __release_perfctr_nmi(-1, perfctr_msr); |
616 | fail: | 677 | fail: |
617 | return 0; | 678 | return 0; |
618 | } | 679 | } |
@@ -624,8 +685,8 @@ static void stop_p4_watchdog(void) | |||
624 | wrmsr(wd->cccr_msr, 0, 0); | 685 | wrmsr(wd->cccr_msr, 0, 0); |
625 | wrmsr(wd->evntsel_msr, 0, 0); | 686 | wrmsr(wd->evntsel_msr, 0, 0); |
626 | 687 | ||
627 | release_evntsel_nmi(wd->evntsel_msr); | 688 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
628 | release_perfctr_nmi(wd->perfctr_msr); | 689 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
629 | } | 690 | } |
630 | 691 | ||
631 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL | 692 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL |
@@ -653,10 +714,10 @@ static int setup_intel_arch_watchdog(void) | |||
653 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; | 714 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; |
654 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; | 715 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; |
655 | 716 | ||
656 | if (!reserve_perfctr_nmi(perfctr_msr)) | 717 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
657 | goto fail; | 718 | goto fail; |
658 | 719 | ||
659 | if (!reserve_evntsel_nmi(evntsel_msr)) | 720 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
660 | goto fail1; | 721 | goto fail1; |
661 | 722 | ||
662 | wrmsrl(perfctr_msr, 0UL); | 723 | wrmsrl(perfctr_msr, 0UL); |
@@ -683,7 +744,7 @@ static int setup_intel_arch_watchdog(void) | |||
683 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); | 744 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); |
684 | return 1; | 745 | return 1; |
685 | fail1: | 746 | fail1: |
686 | release_perfctr_nmi(perfctr_msr); | 747 | __release_perfctr_nmi(-1, perfctr_msr); |
687 | fail: | 748 | fail: |
688 | return 0; | 749 | return 0; |
689 | } | 750 | } |
@@ -707,8 +768,8 @@ static void stop_intel_arch_watchdog(void) | |||
707 | 768 | ||
708 | wrmsr(wd->evntsel_msr, 0, 0); | 769 | wrmsr(wd->evntsel_msr, 0, 0); |
709 | 770 | ||
710 | release_evntsel_nmi(wd->evntsel_msr); | 771 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
711 | release_perfctr_nmi(wd->perfctr_msr); | 772 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
712 | } | 773 | } |
713 | 774 | ||
714 | void setup_apic_nmi_watchdog(void *unused) | 775 | void setup_apic_nmi_watchdog(void *unused) |
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/smpboot.c b/arch/x86_64/kernel/smpboot.c index 35443729aad8..cd4643a37022 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
@@ -923,8 +923,9 @@ void __init smp_prepare_boot_cpu(void) | |||
923 | */ | 923 | */ |
924 | int __cpuinit __cpu_up(unsigned int cpu) | 924 | int __cpuinit __cpu_up(unsigned int cpu) |
925 | { | 925 | { |
926 | int err; | ||
927 | int apicid = cpu_present_to_apicid(cpu); | 926 | int apicid = cpu_present_to_apicid(cpu); |
927 | unsigned long flags; | ||
928 | int err; | ||
928 | 929 | ||
929 | WARN_ON(irqs_disabled()); | 930 | WARN_ON(irqs_disabled()); |
930 | 931 | ||
@@ -958,7 +959,9 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
958 | /* | 959 | /* |
959 | * Make sure and check TSC sync: | 960 | * Make sure and check TSC sync: |
960 | */ | 961 | */ |
962 | local_irq_save(flags); | ||
961 | check_tsc_sync_source(cpu); | 963 | check_tsc_sync_source(cpu); |
964 | local_irq_restore(flags); | ||
962 | 965 | ||
963 | while (!cpu_isset(cpu, cpu_online_map)) | 966 | while (!cpu_isset(cpu, cpu_online_map)) |
964 | cpu_relax(); | 967 | cpu_relax(); |
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); | ||