diff options
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/cevt-bcm1480.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/cevt-ds1287.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/cevt-gt641xx.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/cevt-r4k.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/cevt-sb1250.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/cevt-txx9.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/i8253.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/rtlx.c | 1 | ||||
-rw-r--r-- | arch/mips/kernel/setup.c | 43 | ||||
-rw-r--r-- | arch/mips/kernel/smtc.c | 6 | ||||
-rw-r--r-- | arch/mips/kernel/traps.c | 4 |
11 files changed, 51 insertions, 17 deletions
diff --git a/arch/mips/kernel/cevt-bcm1480.c b/arch/mips/kernel/cevt-bcm1480.c index 36c3898b76db..69bbfae183bc 100644 --- a/arch/mips/kernel/cevt-bcm1480.c +++ b/arch/mips/kernel/cevt-bcm1480.c | |||
@@ -145,7 +145,7 @@ void __cpuinit sb1480_clockevent_init(void) | |||
145 | bcm1480_unmask_irq(cpu, irq); | 145 | bcm1480_unmask_irq(cpu, irq); |
146 | 146 | ||
147 | action->handler = sibyte_counter_handler; | 147 | action->handler = sibyte_counter_handler; |
148 | action->flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER; | 148 | action->flags = IRQF_PERCPU | IRQF_TIMER; |
149 | action->name = name; | 149 | action->name = name; |
150 | action->dev_id = cd; | 150 | action->dev_id = cd; |
151 | 151 | ||
diff --git a/arch/mips/kernel/cevt-ds1287.c b/arch/mips/kernel/cevt-ds1287.c index 939157e397b9..ed648cb5a69f 100644 --- a/arch/mips/kernel/cevt-ds1287.c +++ b/arch/mips/kernel/cevt-ds1287.c | |||
@@ -108,7 +108,7 @@ static irqreturn_t ds1287_interrupt(int irq, void *dev_id) | |||
108 | 108 | ||
109 | static struct irqaction ds1287_irqaction = { | 109 | static struct irqaction ds1287_irqaction = { |
110 | .handler = ds1287_interrupt, | 110 | .handler = ds1287_interrupt, |
111 | .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER, | 111 | .flags = IRQF_PERCPU | IRQF_TIMER, |
112 | .name = "ds1287", | 112 | .name = "ds1287", |
113 | }; | 113 | }; |
114 | 114 | ||
diff --git a/arch/mips/kernel/cevt-gt641xx.c b/arch/mips/kernel/cevt-gt641xx.c index 339f3639b90e..831b47585b7c 100644 --- a/arch/mips/kernel/cevt-gt641xx.c +++ b/arch/mips/kernel/cevt-gt641xx.c | |||
@@ -114,7 +114,7 @@ static irqreturn_t gt641xx_timer0_interrupt(int irq, void *dev_id) | |||
114 | 114 | ||
115 | static struct irqaction gt641xx_timer0_irqaction = { | 115 | static struct irqaction gt641xx_timer0_irqaction = { |
116 | .handler = gt641xx_timer0_interrupt, | 116 | .handler = gt641xx_timer0_interrupt, |
117 | .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER, | 117 | .flags = IRQF_PERCPU | IRQF_TIMER, |
118 | .name = "gt641xx_timer0", | 118 | .name = "gt641xx_timer0", |
119 | }; | 119 | }; |
120 | 120 | ||
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c index e2d8e199be32..51095dd9599d 100644 --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c | |||
@@ -84,7 +84,7 @@ out: | |||
84 | 84 | ||
85 | struct irqaction c0_compare_irqaction = { | 85 | struct irqaction c0_compare_irqaction = { |
86 | .handler = c0_compare_interrupt, | 86 | .handler = c0_compare_interrupt, |
87 | .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER, | 87 | .flags = IRQF_PERCPU | IRQF_TIMER, |
88 | .name = "timer", | 88 | .name = "timer", |
89 | }; | 89 | }; |
90 | 90 | ||
diff --git a/arch/mips/kernel/cevt-sb1250.c b/arch/mips/kernel/cevt-sb1250.c index 590c54f28a81..e73439fd6850 100644 --- a/arch/mips/kernel/cevt-sb1250.c +++ b/arch/mips/kernel/cevt-sb1250.c | |||
@@ -144,7 +144,7 @@ void __cpuinit sb1250_clockevent_init(void) | |||
144 | sb1250_unmask_irq(cpu, irq); | 144 | sb1250_unmask_irq(cpu, irq); |
145 | 145 | ||
146 | action->handler = sibyte_counter_handler; | 146 | action->handler = sibyte_counter_handler; |
147 | action->flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER; | 147 | action->flags = IRQF_PERCPU | IRQF_TIMER; |
148 | action->name = name; | 148 | action->name = name; |
149 | action->dev_id = cd; | 149 | action->dev_id = cd; |
150 | 150 | ||
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c index f0ab92a1b057..e5c30b1d0860 100644 --- a/arch/mips/kernel/cevt-txx9.c +++ b/arch/mips/kernel/cevt-txx9.c | |||
@@ -146,7 +146,7 @@ static irqreturn_t txx9tmr_interrupt(int irq, void *dev_id) | |||
146 | 146 | ||
147 | static struct irqaction txx9tmr_irq = { | 147 | static struct irqaction txx9tmr_irq = { |
148 | .handler = txx9tmr_interrupt, | 148 | .handler = txx9tmr_interrupt, |
149 | .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER, | 149 | .flags = IRQF_PERCPU | IRQF_TIMER, |
150 | .name = "txx9tmr", | 150 | .name = "txx9tmr", |
151 | .dev_id = &txx9_clock_event_device, | 151 | .dev_id = &txx9_clock_event_device, |
152 | }; | 152 | }; |
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c index 7047bff35ea5..c5bc344fc745 100644 --- a/arch/mips/kernel/i8253.c +++ b/arch/mips/kernel/i8253.c | |||
@@ -19,7 +19,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) | |||
19 | 19 | ||
20 | static struct irqaction irq0 = { | 20 | static struct irqaction irq0 = { |
21 | .handler = timer_interrupt, | 21 | .handler = timer_interrupt, |
22 | .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER, | 22 | .flags = IRQF_NOBALANCING | IRQF_TIMER, |
23 | .name = "timer" | 23 | .name = "timer" |
24 | }; | 24 | }; |
25 | 25 | ||
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index 933166f44a6d..a9d801dec6b0 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -473,7 +473,6 @@ static const struct file_operations rtlx_fops = { | |||
473 | 473 | ||
474 | static struct irqaction rtlx_irq = { | 474 | static struct irqaction rtlx_irq = { |
475 | .handler = rtlx_interrupt, | 475 | .handler = rtlx_interrupt, |
476 | .flags = IRQF_DISABLED, | ||
477 | .name = "RTLX", | 476 | .name = "RTLX", |
478 | }; | 477 | }; |
479 | 478 | ||
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 84af26ab2212..e86c2cf554aa 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -121,6 +121,9 @@ static void __init print_memory_map(void) | |||
121 | case BOOT_MEM_RAM: | 121 | case BOOT_MEM_RAM: |
122 | printk(KERN_CONT "(usable)\n"); | 122 | printk(KERN_CONT "(usable)\n"); |
123 | break; | 123 | break; |
124 | case BOOT_MEM_INIT_RAM: | ||
125 | printk(KERN_CONT "(usable after init)\n"); | ||
126 | break; | ||
124 | case BOOT_MEM_ROM_DATA: | 127 | case BOOT_MEM_ROM_DATA: |
125 | printk(KERN_CONT "(ROM data)\n"); | 128 | printk(KERN_CONT "(ROM data)\n"); |
126 | break; | 129 | break; |
@@ -361,15 +364,24 @@ static void __init bootmem_init(void) | |||
361 | for (i = 0; i < boot_mem_map.nr_map; i++) { | 364 | for (i = 0; i < boot_mem_map.nr_map; i++) { |
362 | unsigned long start, end, size; | 365 | unsigned long start, end, size; |
363 | 366 | ||
367 | start = PFN_UP(boot_mem_map.map[i].addr); | ||
368 | end = PFN_DOWN(boot_mem_map.map[i].addr | ||
369 | + boot_mem_map.map[i].size); | ||
370 | |||
364 | /* | 371 | /* |
365 | * Reserve usable memory. | 372 | * Reserve usable memory. |
366 | */ | 373 | */ |
367 | if (boot_mem_map.map[i].type != BOOT_MEM_RAM) | 374 | switch (boot_mem_map.map[i].type) { |
375 | case BOOT_MEM_RAM: | ||
376 | break; | ||
377 | case BOOT_MEM_INIT_RAM: | ||
378 | memory_present(0, start, end); | ||
368 | continue; | 379 | continue; |
380 | default: | ||
381 | /* Not usable memory */ | ||
382 | continue; | ||
383 | } | ||
369 | 384 | ||
370 | start = PFN_UP(boot_mem_map.map[i].addr); | ||
371 | end = PFN_DOWN(boot_mem_map.map[i].addr | ||
372 | + boot_mem_map.map[i].size); | ||
373 | /* | 385 | /* |
374 | * We are rounding up the start address of usable memory | 386 | * We are rounding up the start address of usable memory |
375 | * and at the end of the usable range downwards. | 387 | * and at the end of the usable range downwards. |
@@ -455,11 +467,33 @@ early_param("mem", early_parse_mem); | |||
455 | 467 | ||
456 | static void __init arch_mem_init(char **cmdline_p) | 468 | static void __init arch_mem_init(char **cmdline_p) |
457 | { | 469 | { |
470 | phys_t init_mem, init_end, init_size; | ||
471 | |||
458 | extern void plat_mem_setup(void); | 472 | extern void plat_mem_setup(void); |
459 | 473 | ||
460 | /* call board setup routine */ | 474 | /* call board setup routine */ |
461 | plat_mem_setup(); | 475 | plat_mem_setup(); |
462 | 476 | ||
477 | init_mem = PFN_UP(__pa_symbol(&__init_begin)) << PAGE_SHIFT; | ||
478 | init_end = PFN_DOWN(__pa_symbol(&__init_end)) << PAGE_SHIFT; | ||
479 | init_size = init_end - init_mem; | ||
480 | if (init_size) { | ||
481 | /* Make sure it is in the boot_mem_map */ | ||
482 | int i, found; | ||
483 | found = 0; | ||
484 | for (i = 0; i < boot_mem_map.nr_map; i++) { | ||
485 | if (init_mem >= boot_mem_map.map[i].addr && | ||
486 | init_mem < (boot_mem_map.map[i].addr + | ||
487 | boot_mem_map.map[i].size)) { | ||
488 | found = 1; | ||
489 | break; | ||
490 | } | ||
491 | } | ||
492 | if (!found) | ||
493 | add_memory_region(init_mem, init_size, | ||
494 | BOOT_MEM_INIT_RAM); | ||
495 | } | ||
496 | |||
463 | pr_info("Determined physical RAM map:\n"); | 497 | pr_info("Determined physical RAM map:\n"); |
464 | print_memory_map(); | 498 | print_memory_map(); |
465 | 499 | ||
@@ -523,6 +557,7 @@ static void __init resource_init(void) | |||
523 | res = alloc_bootmem(sizeof(struct resource)); | 557 | res = alloc_bootmem(sizeof(struct resource)); |
524 | switch (boot_mem_map.map[i].type) { | 558 | switch (boot_mem_map.map[i].type) { |
525 | case BOOT_MEM_RAM: | 559 | case BOOT_MEM_RAM: |
560 | case BOOT_MEM_INIT_RAM: | ||
526 | case BOOT_MEM_ROM_DATA: | 561 | case BOOT_MEM_ROM_DATA: |
527 | res->name = "System RAM"; | 562 | res->name = "System RAM"; |
528 | break; | 563 | break; |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index f0895e70e283..0a42ff3ff6a1 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -559,7 +559,7 @@ void smtc_prepare_cpus(int cpus) | |||
559 | 559 | ||
560 | pipi = kmalloc(nipi *sizeof(struct smtc_ipi), GFP_KERNEL); | 560 | pipi = kmalloc(nipi *sizeof(struct smtc_ipi), GFP_KERNEL); |
561 | if (pipi == NULL) | 561 | if (pipi == NULL) |
562 | panic("kmalloc of IPI message buffers failed\n"); | 562 | panic("kmalloc of IPI message buffers failed"); |
563 | else | 563 | else |
564 | printk("IPI buffer pool of %d buffers\n", nipi); | 564 | printk("IPI buffer pool of %d buffers\n", nipi); |
565 | for (i = 0; i < nipi; i++) { | 565 | for (i = 0; i < nipi; i++) { |
@@ -813,7 +813,7 @@ void smtc_send_ipi(int cpu, int type, unsigned int action) | |||
813 | if (pipi == NULL) { | 813 | if (pipi == NULL) { |
814 | bust_spinlocks(1); | 814 | bust_spinlocks(1); |
815 | mips_mt_regdump(dvpe()); | 815 | mips_mt_regdump(dvpe()); |
816 | panic("IPI Msg. Buffers Depleted\n"); | 816 | panic("IPI Msg. Buffers Depleted"); |
817 | } | 817 | } |
818 | pipi->type = type; | 818 | pipi->type = type; |
819 | pipi->arg = (void *)action; | 819 | pipi->arg = (void *)action; |
@@ -1130,7 +1130,7 @@ static void ipi_irq_dispatch(void) | |||
1130 | 1130 | ||
1131 | static struct irqaction irq_ipi = { | 1131 | static struct irqaction irq_ipi = { |
1132 | .handler = ipi_interrupt, | 1132 | .handler = ipi_interrupt, |
1133 | .flags = IRQF_DISABLED | IRQF_PERCPU, | 1133 | .flags = IRQF_PERCPU, |
1134 | .name = "SMTC_IPI" | 1134 | .name = "SMTC_IPI" |
1135 | }; | 1135 | }; |
1136 | 1136 | ||
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 5c8a49d55054..363c4764b818 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -400,7 +400,7 @@ void __noreturn die(const char *str, struct pt_regs *regs) | |||
400 | panic("Fatal exception in interrupt"); | 400 | panic("Fatal exception in interrupt"); |
401 | 401 | ||
402 | if (panic_on_oops) { | 402 | if (panic_on_oops) { |
403 | printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); | 403 | printk(KERN_EMERG "Fatal exception: panic in 5 seconds"); |
404 | ssleep(5); | 404 | ssleep(5); |
405 | panic("Fatal exception"); | 405 | panic("Fatal exception"); |
406 | } | 406 | } |
@@ -1150,7 +1150,7 @@ asmlinkage void do_mt(struct pt_regs *regs) | |||
1150 | asmlinkage void do_dsp(struct pt_regs *regs) | 1150 | asmlinkage void do_dsp(struct pt_regs *regs) |
1151 | { | 1151 | { |
1152 | if (cpu_has_dsp) | 1152 | if (cpu_has_dsp) |
1153 | panic("Unexpected DSP exception\n"); | 1153 | panic("Unexpected DSP exception"); |
1154 | 1154 | ||
1155 | force_sig(SIGILL, current); | 1155 | force_sig(SIGILL, current); |
1156 | } | 1156 | } |