diff options
35 files changed, 129 insertions, 121 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 3549c94467b8..c4784494970e 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -791,7 +791,7 @@ static __init int setup_additional_cpus(char *s) | |||
791 | early_param("additional_cpus", setup_additional_cpus); | 791 | early_param("additional_cpus", setup_additional_cpus); |
792 | 792 | ||
793 | /* | 793 | /* |
794 | * cpu_possible_map should be static, it cannot change as cpu's | 794 | * cpu_possible_map should be static, it cannot change as CPUs |
795 | * are onlined, or offlined. The reason is per-cpu data-structures | 795 | * are onlined, or offlined. The reason is per-cpu data-structures |
796 | * are allocated by some modules at init time, and dont expect to | 796 | * are allocated by some modules at init time, and dont expect to |
797 | * do this dynamically on cpu arrival/departure. | 797 | * do this dynamically on cpu arrival/departure. |
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c index aeb79fb28f0b..1d64ef478dde 100644 --- a/arch/ia64/kernel/crash.c +++ b/arch/ia64/kernel/crash.c | |||
@@ -156,24 +156,30 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data) | |||
156 | if (!kdump_on_init) | 156 | if (!kdump_on_init) |
157 | return NOTIFY_DONE; | 157 | return NOTIFY_DONE; |
158 | 158 | ||
159 | if (val != DIE_INIT_MONARCH_ENTER && | 159 | if (val != DIE_INIT_MONARCH_LEAVE && |
160 | val != DIE_INIT_SLAVE_ENTER && | 160 | val != DIE_INIT_SLAVE_LEAVE && |
161 | val != DIE_INIT_MONARCH_PROCESS && | ||
161 | val != DIE_MCA_RENDZVOUS_LEAVE && | 162 | val != DIE_MCA_RENDZVOUS_LEAVE && |
162 | val != DIE_MCA_MONARCH_LEAVE) | 163 | val != DIE_MCA_MONARCH_LEAVE) |
163 | return NOTIFY_DONE; | 164 | return NOTIFY_DONE; |
164 | 165 | ||
165 | nd = (struct ia64_mca_notify_die *)args->err; | 166 | nd = (struct ia64_mca_notify_die *)args->err; |
166 | /* Reason code 1 means machine check rendezous*/ | 167 | /* Reason code 1 means machine check rendezvous*/ |
167 | if ((val == DIE_INIT_MONARCH_ENTER || val == DIE_INIT_SLAVE_ENTER) && | 168 | if ((val == DIE_INIT_MONARCH_LEAVE || val == DIE_INIT_SLAVE_LEAVE |
168 | nd->sos->rv_rc == 1) | 169 | || val == DIE_INIT_MONARCH_PROCESS) && nd->sos->rv_rc == 1) |
169 | return NOTIFY_DONE; | 170 | return NOTIFY_DONE; |
170 | 171 | ||
171 | switch (val) { | 172 | switch (val) { |
172 | case DIE_INIT_MONARCH_ENTER: | 173 | case DIE_INIT_MONARCH_PROCESS: |
174 | atomic_set(&kdump_in_progress, 1); | ||
175 | *(nd->monarch_cpu) = -1; | ||
176 | break; | ||
177 | case DIE_INIT_MONARCH_LEAVE: | ||
173 | machine_kdump_on_init(); | 178 | machine_kdump_on_init(); |
174 | break; | 179 | break; |
175 | case DIE_INIT_SLAVE_ENTER: | 180 | case DIE_INIT_SLAVE_LEAVE: |
176 | unw_init_running(kdump_cpu_freeze, NULL); | 181 | if (atomic_read(&kdump_in_progress)) |
182 | unw_init_running(kdump_cpu_freeze, NULL); | ||
177 | break; | 183 | break; |
178 | case DIE_MCA_RENDZVOUS_LEAVE: | 184 | case DIE_MCA_RENDZVOUS_LEAVE: |
179 | if (atomic_read(&kdump_in_progress)) | 185 | if (atomic_read(&kdump_in_progress)) |
@@ -215,8 +221,10 @@ static ctl_table sys_table[] = { | |||
215 | static int | 221 | static int |
216 | machine_crash_setup(void) | 222 | machine_crash_setup(void) |
217 | { | 223 | { |
224 | /* be notified before default_monarch_init_process */ | ||
218 | static struct notifier_block kdump_init_notifier_nb = { | 225 | static struct notifier_block kdump_init_notifier_nb = { |
219 | .notifier_call = kdump_init_notifier, | 226 | .notifier_call = kdump_init_notifier, |
227 | .priority = 1, | ||
220 | }; | 228 | }; |
221 | int ret; | 229 | int ret; |
222 | if((ret = register_die_notifier(&kdump_init_notifier_nb)) != 0) | 230 | if((ret = register_die_notifier(&kdump_init_notifier_nb)) != 0) |
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 144b056282af..95f517515235 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
@@ -1585,5 +1585,8 @@ sys_call_table: | |||
1585 | data8 sys_getcpu | 1585 | data8 sys_getcpu |
1586 | data8 sys_epoll_pwait // 1305 | 1586 | data8 sys_epoll_pwait // 1305 |
1587 | data8 sys_utimensat | 1587 | data8 sys_utimensat |
1588 | data8 sys_signalfd | ||
1589 | data8 sys_timerfd | ||
1590 | data8 sys_eventfd | ||
1588 | 1591 | ||
1589 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls | 1592 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index b4c239685d2e..407b45870489 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar | 4 | * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar |
5 | * | 5 | * |
6 | * This file contains the code used by various IRQ handling routines: | 6 | * This file contains the code used by various IRQ handling routines: |
7 | * asking for different IRQ's should be done through these routines | 7 | * asking for different IRQs should be done through these routines |
8 | * instead of just grabbing them. Thus setups with different IRQ numbers | 8 | * instead of just grabbing them. Thus setups with different IRQ numbers |
9 | * shouldn't result in any weird surprises, and installing new handlers | 9 | * shouldn't result in any weird surprises, and installing new handlers |
10 | * should be easier. | 10 | * should be easier. |
@@ -12,7 +12,7 @@ | |||
12 | * Copyright (C) Ashok Raj<ashok.raj@intel.com>, Intel Corporation 2004 | 12 | * Copyright (C) Ashok Raj<ashok.raj@intel.com>, Intel Corporation 2004 |
13 | * | 13 | * |
14 | * 4/14/2004: Added code to handle cpu migration and do safe irq | 14 | * 4/14/2004: Added code to handle cpu migration and do safe irq |
15 | * migration without lossing interrupts for iosapic | 15 | * migration without losing interrupts for iosapic |
16 | * architecture. | 16 | * architecture. |
17 | */ | 17 | */ |
18 | 18 | ||
@@ -190,7 +190,7 @@ void fixup_irqs(void) | |||
190 | } | 190 | } |
191 | 191 | ||
192 | /* | 192 | /* |
193 | * Phase 1: Locate irq's bound to this cpu and | 193 | * Phase 1: Locate IRQs bound to this cpu and |
194 | * relocate them for cpu removal. | 194 | * relocate them for cpu removal. |
195 | */ | 195 | */ |
196 | migrate_irqs(); | 196 | migrate_irqs(); |
diff --git a/arch/ia64/kernel/irq_lsapic.c b/arch/ia64/kernel/irq_lsapic.c index c2f07beb1759..e56a7a36aca3 100644 --- a/arch/ia64/kernel/irq_lsapic.c +++ b/arch/ia64/kernel/irq_lsapic.c | |||
@@ -23,7 +23,7 @@ lsapic_noop_startup (unsigned int irq) | |||
23 | static void | 23 | static void |
24 | lsapic_noop (unsigned int irq) | 24 | lsapic_noop (unsigned int irq) |
25 | { | 25 | { |
26 | /* nuthing to do... */ | 26 | /* nothing to do... */ |
27 | } | 27 | } |
28 | 28 | ||
29 | static int lsapic_retrigger(unsigned int irq) | 29 | static int lsapic_retrigger(unsigned int irq) |
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index 72e593e94053..5bc46f151344 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -151,12 +151,12 @@ static uint __kprobes is_cmp_ctype_unc_inst(uint template, uint slot, | |||
151 | 151 | ||
152 | cmp_inst.l = kprobe_inst; | 152 | cmp_inst.l = kprobe_inst; |
153 | if ((cmp_inst.f.x2 == 0) || (cmp_inst.f.x2 == 1)) { | 153 | if ((cmp_inst.f.x2 == 0) || (cmp_inst.f.x2 == 1)) { |
154 | /* Integere compare - Register Register (A6 type)*/ | 154 | /* Integer compare - Register Register (A6 type)*/ |
155 | if ((cmp_inst.f.tb == 0) && (cmp_inst.f.ta == 0) | 155 | if ((cmp_inst.f.tb == 0) && (cmp_inst.f.ta == 0) |
156 | &&(cmp_inst.f.c == 1)) | 156 | &&(cmp_inst.f.c == 1)) |
157 | ctype_unc = 1; | 157 | ctype_unc = 1; |
158 | } else if ((cmp_inst.f.x2 == 2)||(cmp_inst.f.x2 == 3)) { | 158 | } else if ((cmp_inst.f.x2 == 2)||(cmp_inst.f.x2 == 3)) { |
159 | /* Integere compare - Immediate Register (A8 type)*/ | 159 | /* Integer compare - Immediate Register (A8 type)*/ |
160 | if ((cmp_inst.f.ta == 0) &&(cmp_inst.f.c == 1)) | 160 | if ((cmp_inst.f.ta == 0) &&(cmp_inst.f.c == 1)) |
161 | ctype_unc = 1; | 161 | ctype_unc = 1; |
162 | } | 162 | } |
@@ -820,7 +820,7 @@ out: | |||
820 | return 1; | 820 | return 1; |
821 | } | 821 | } |
822 | 822 | ||
823 | static int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) | 823 | int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) |
824 | { | 824 | { |
825 | struct kprobe *cur = kprobe_running(); | 825 | struct kprobe *cur = kprobe_running(); |
826 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); | 826 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); |
@@ -904,13 +904,6 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self, | |||
904 | if (post_kprobes_handler(args->regs)) | 904 | if (post_kprobes_handler(args->regs)) |
905 | ret = NOTIFY_STOP; | 905 | ret = NOTIFY_STOP; |
906 | break; | 906 | break; |
907 | case DIE_PAGE_FAULT: | ||
908 | /* kprobe_running() needs smp_processor_id() */ | ||
909 | preempt_disable(); | ||
910 | if (kprobe_running() && | ||
911 | kprobes_fault_handler(args->regs, args->trapnr)) | ||
912 | ret = NOTIFY_STOP; | ||
913 | preempt_enable(); | ||
914 | default: | 907 | default: |
915 | break; | 908 | break; |
916 | } | 909 | } |
@@ -954,7 +947,7 @@ int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) | |||
954 | /* | 947 | /* |
955 | * Callee owns the argument space and could overwrite it, eg | 948 | * Callee owns the argument space and could overwrite it, eg |
956 | * tail call optimization. So to be absolutely safe | 949 | * tail call optimization. So to be absolutely safe |
957 | * we save the argument space before transfering the control | 950 | * we save the argument space before transferring the control |
958 | * to instrumented jprobe function which runs in | 951 | * to instrumented jprobe function which runs in |
959 | * the process context | 952 | * the process context |
960 | */ | 953 | */ |
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index 26814de6c29a..1ead5ea6c5ce 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
@@ -273,7 +273,6 @@ static void ia64_mlogbuf_finish(int wait) | |||
273 | 273 | ||
274 | mlogbuf_finished = 1; | 274 | mlogbuf_finished = 1; |
275 | } | 275 | } |
276 | EXPORT_SYMBOL(ia64_mlogbuf_finish); | ||
277 | 276 | ||
278 | /* | 277 | /* |
279 | * Print buffered messages from INIT context. | 278 | * Print buffered messages from INIT context. |
@@ -1477,6 +1476,10 @@ default_monarch_init_process(struct notifier_block *self, unsigned long val, voi | |||
1477 | struct task_struct *g, *t; | 1476 | struct task_struct *g, *t; |
1478 | if (val != DIE_INIT_MONARCH_PROCESS) | 1477 | if (val != DIE_INIT_MONARCH_PROCESS) |
1479 | return NOTIFY_DONE; | 1478 | return NOTIFY_DONE; |
1479 | #ifdef CONFIG_KEXEC | ||
1480 | if (atomic_read(&kdump_in_progress)) | ||
1481 | return NOTIFY_DONE; | ||
1482 | #endif | ||
1480 | 1483 | ||
1481 | /* | 1484 | /* |
1482 | * FIXME: mlogbuf will brim over with INIT stack dumps. | 1485 | * FIXME: mlogbuf will brim over with INIT stack dumps. |
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index 70b8bdbb7e6f..aba813c2c150 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
@@ -438,7 +438,7 @@ is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci, | |||
438 | * @peidx: pointer of index of processor error section | 438 | * @peidx: pointer of index of processor error section |
439 | * | 439 | * |
440 | * Return value: | 440 | * Return value: |
441 | * target address on Success / 0 on Failue | 441 | * target address on Success / 0 on Failure |
442 | */ | 442 | */ |
443 | static u64 | 443 | static u64 |
444 | get_target_identifier(peidx_table_t *peidx) | 444 | get_target_identifier(peidx_table_t *peidx) |
@@ -701,7 +701,7 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, | |||
701 | return fatal_mca("External bus check fatal status"); | 701 | return fatal_mca("External bus check fatal status"); |
702 | 702 | ||
703 | /* | 703 | /* |
704 | * This is a local MCA and estimated as a recoverble error. | 704 | * This is a local MCA and estimated as a recoverable error. |
705 | */ | 705 | */ |
706 | if (platform) | 706 | if (platform) |
707 | return recover_from_platform_error(slidx, peidx, pbci, sos); | 707 | return recover_from_platform_error(slidx, peidx, pbci, sos); |
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c index 158e3c51bb77..196287928bae 100644 --- a/arch/ia64/kernel/module.c +++ b/arch/ia64/kernel/module.c | |||
@@ -861,7 +861,7 @@ apply_relocate (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, | |||
861 | /* | 861 | /* |
862 | * Modules contain a single unwind table which covers both the core and the init text | 862 | * Modules contain a single unwind table which covers both the core and the init text |
863 | * sections but since the two are not contiguous, we need to split this table up such that | 863 | * sections but since the two are not contiguous, we need to split this table up such that |
864 | * we can register (and unregister) each "segment" seperately. Fortunately, this sounds | 864 | * we can register (and unregister) each "segment" separately. Fortunately, this sounds |
865 | * more complicated than it really is. | 865 | * more complicated than it really is. |
866 | */ | 866 | */ |
867 | static void | 867 | static void |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index e7191ca30b16..b7133cabdbea 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
@@ -1318,7 +1318,7 @@ pfm_reserve_session(struct task_struct *task, int is_syswide, unsigned int cpu) | |||
1318 | { | 1318 | { |
1319 | unsigned long flags; | 1319 | unsigned long flags; |
1320 | /* | 1320 | /* |
1321 | * validy checks on cpu_mask have been done upstream | 1321 | * validity checks on cpu_mask have been done upstream |
1322 | */ | 1322 | */ |
1323 | LOCK_PFS(flags); | 1323 | LOCK_PFS(flags); |
1324 | 1324 | ||
@@ -1384,7 +1384,7 @@ pfm_unreserve_session(pfm_context_t *ctx, int is_syswide, unsigned int cpu) | |||
1384 | { | 1384 | { |
1385 | unsigned long flags; | 1385 | unsigned long flags; |
1386 | /* | 1386 | /* |
1387 | * validy checks on cpu_mask have been done upstream | 1387 | * validity checks on cpu_mask have been done upstream |
1388 | */ | 1388 | */ |
1389 | LOCK_PFS(flags); | 1389 | LOCK_PFS(flags); |
1390 | 1390 | ||
@@ -1835,7 +1835,7 @@ pfm_flush(struct file *filp, fl_owner_t id) | |||
1835 | /* | 1835 | /* |
1836 | * remove our file from the async queue, if we use this mode. | 1836 | * remove our file from the async queue, if we use this mode. |
1837 | * This can be done without the context being protected. We come | 1837 | * This can be done without the context being protected. We come |
1838 | * here when the context has become unreacheable by other tasks. | 1838 | * here when the context has become unreachable by other tasks. |
1839 | * | 1839 | * |
1840 | * We may still have active monitoring at this point and we may | 1840 | * We may still have active monitoring at this point and we may |
1841 | * end up in pfm_overflow_handler(). However, fasync_helper() | 1841 | * end up in pfm_overflow_handler(). However, fasync_helper() |
@@ -2132,7 +2132,7 @@ doit: | |||
2132 | filp->private_data = NULL; | 2132 | filp->private_data = NULL; |
2133 | 2133 | ||
2134 | /* | 2134 | /* |
2135 | * if we free on the spot, the context is now completely unreacheable | 2135 | * if we free on the spot, the context is now completely unreachable |
2136 | * from the callers side. The monitored task side is also cut, so we | 2136 | * from the callers side. The monitored task side is also cut, so we |
2137 | * can freely cut. | 2137 | * can freely cut. |
2138 | * | 2138 | * |
@@ -2562,7 +2562,7 @@ pfm_reset_pmu_state(pfm_context_t *ctx) | |||
2562 | ctx->ctx_all_pmcs[0] = pmu_conf->impl_pmcs[0] & ~0x1; | 2562 | ctx->ctx_all_pmcs[0] = pmu_conf->impl_pmcs[0] & ~0x1; |
2563 | 2563 | ||
2564 | /* | 2564 | /* |
2565 | * bitmask of all PMDs that are accesible to this context | 2565 | * bitmask of all PMDs that are accessible to this context |
2566 | */ | 2566 | */ |
2567 | ctx->ctx_all_pmds[0] = pmu_conf->impl_pmds[0]; | 2567 | ctx->ctx_all_pmds[0] = pmu_conf->impl_pmds[0]; |
2568 | 2568 | ||
@@ -3395,7 +3395,7 @@ pfm_read_pmds(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) | |||
3395 | if (unlikely(!PMD_IS_IMPL(cnum))) goto error; | 3395 | if (unlikely(!PMD_IS_IMPL(cnum))) goto error; |
3396 | /* | 3396 | /* |
3397 | * we can only read the register that we use. That includes | 3397 | * we can only read the register that we use. That includes |
3398 | * the one we explicitely initialize AND the one we want included | 3398 | * the one we explicitly initialize AND the one we want included |
3399 | * in the sampling buffer (smpl_regs). | 3399 | * in the sampling buffer (smpl_regs). |
3400 | * | 3400 | * |
3401 | * Having this restriction allows optimization in the ctxsw routine | 3401 | * Having this restriction allows optimization in the ctxsw routine |
@@ -3715,7 +3715,7 @@ pfm_restart(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs) | |||
3715 | * if non-blocking, then we ensure that the task will go into | 3715 | * if non-blocking, then we ensure that the task will go into |
3716 | * pfm_handle_work() before returning to user mode. | 3716 | * pfm_handle_work() before returning to user mode. |
3717 | * | 3717 | * |
3718 | * We cannot explicitely reset another task, it MUST always | 3718 | * We cannot explicitly reset another task, it MUST always |
3719 | * be done by the task itself. This works for system wide because | 3719 | * be done by the task itself. This works for system wide because |
3720 | * the tool that is controlling the session is logically doing | 3720 | * the tool that is controlling the session is logically doing |
3721 | * "self-monitoring". | 3721 | * "self-monitoring". |
@@ -4644,7 +4644,7 @@ pfm_exit_thread(struct task_struct *task) | |||
4644 | switch(state) { | 4644 | switch(state) { |
4645 | case PFM_CTX_UNLOADED: | 4645 | case PFM_CTX_UNLOADED: |
4646 | /* | 4646 | /* |
4647 | * only comes to thios function if pfm_context is not NULL, i.e., cannot | 4647 | * only comes to this function if pfm_context is not NULL, i.e., cannot |
4648 | * be in unloaded state | 4648 | * be in unloaded state |
4649 | */ | 4649 | */ |
4650 | printk(KERN_ERR "perfmon: pfm_exit_thread [%d] ctx unloaded\n", task->pid); | 4650 | printk(KERN_ERR "perfmon: pfm_exit_thread [%d] ctx unloaded\n", task->pid); |
@@ -5247,7 +5247,7 @@ pfm_end_notify_user(pfm_context_t *ctx) | |||
5247 | 5247 | ||
5248 | /* | 5248 | /* |
5249 | * main overflow processing routine. | 5249 | * main overflow processing routine. |
5250 | * it can be called from the interrupt path or explicitely during the context switch code | 5250 | * it can be called from the interrupt path or explicitly during the context switch code |
5251 | */ | 5251 | */ |
5252 | static void | 5252 | static void |
5253 | pfm_overflow_handler(struct task_struct *task, pfm_context_t *ctx, u64 pmc0, struct pt_regs *regs) | 5253 | pfm_overflow_handler(struct task_struct *task, pfm_context_t *ctx, u64 pmc0, struct pt_regs *regs) |
diff --git a/arch/ia64/kernel/perfmon_mckinley.h b/arch/ia64/kernel/perfmon_mckinley.h index 9becccda2897..c4bec7a9d18f 100644 --- a/arch/ia64/kernel/perfmon_mckinley.h +++ b/arch/ia64/kernel/perfmon_mckinley.h | |||
@@ -181,7 +181,7 @@ static pmu_config_t pmu_conf_mck={ | |||
181 | .pmc_desc = pfm_mck_pmc_desc, | 181 | .pmc_desc = pfm_mck_pmc_desc, |
182 | .num_ibrs = 8, | 182 | .num_ibrs = 8, |
183 | .num_dbrs = 8, | 183 | .num_dbrs = 8, |
184 | .use_rr_dbregs = 1 /* debug register are use for range retrictions */ | 184 | .use_rr_dbregs = 1 /* debug register are use for range restrictions */ |
185 | }; | 185 | }; |
186 | 186 | ||
187 | 187 | ||
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c index 37c876f95dba..27c2ef445a56 100644 --- a/arch/ia64/kernel/sal.c +++ b/arch/ia64/kernel/sal.c | |||
@@ -134,7 +134,7 @@ set_smp_redirect (int flag) | |||
134 | * interrupt redirection. The reason is this would require that | 134 | * interrupt redirection. The reason is this would require that |
135 | * All interrupts be stopped and hard bind the irq to a cpu. | 135 | * All interrupts be stopped and hard bind the irq to a cpu. |
136 | * Later when the interrupt is fired we need to set the redir hint | 136 | * Later when the interrupt is fired we need to set the redir hint |
137 | * on again in the vector. This is combersome for something that the | 137 | * on again in the vector. This is cumbersome for something that the |
138 | * user mode irq balancer will solve anyways. | 138 | * user mode irq balancer will solve anyways. |
139 | */ | 139 | */ |
140 | no_int_routing=1; | 140 | no_int_routing=1; |
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index 89f6b138a62c..25cd75f50ab1 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c | |||
@@ -162,7 +162,7 @@ static DEFINE_SPINLOCK(data_saved_lock); | |||
162 | /** salinfo_platform_oemdata - optional callback to decode oemdata from an error | 162 | /** salinfo_platform_oemdata - optional callback to decode oemdata from an error |
163 | * record. | 163 | * record. |
164 | * @sect_header: pointer to the start of the section to decode. | 164 | * @sect_header: pointer to the start of the section to decode. |
165 | * @oemdata: returns vmalloc area containing the decded output. | 165 | * @oemdata: returns vmalloc area containing the decoded output. |
166 | * @oemdata_size: returns length of decoded output (strlen). | 166 | * @oemdata_size: returns length of decoded output (strlen). |
167 | * | 167 | * |
168 | * Description: If user space asks for oem data to be decoded by the kernel | 168 | * Description: If user space asks for oem data to be decoded by the kernel |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 9df1efe7487d..eaa6a24bc0b6 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -576,7 +576,7 @@ setup_arch (char **cmdline_p) | |||
576 | } | 576 | } |
577 | 577 | ||
578 | /* | 578 | /* |
579 | * Display cpu info for all cpu's. | 579 | * Display cpu info for all CPUs. |
580 | */ | 580 | */ |
581 | static int | 581 | static int |
582 | show_cpuinfo (struct seq_file *m, void *v) | 582 | show_cpuinfo (struct seq_file *m, void *v) |
@@ -761,7 +761,7 @@ identify_cpu (struct cpuinfo_ia64 *c) | |||
761 | c->cpu = smp_processor_id(); | 761 | c->cpu = smp_processor_id(); |
762 | 762 | ||
763 | /* below default values will be overwritten by identify_siblings() | 763 | /* below default values will be overwritten by identify_siblings() |
764 | * for Multi-Threading/Multi-Core capable cpu's | 764 | * for Multi-Threading/Multi-Core capable CPUs |
765 | */ | 765 | */ |
766 | c->threads_per_core = c->cores_per_socket = c->num_log = 1; | 766 | c->threads_per_core = c->cores_per_socket = c->num_log = 1; |
767 | c->socket_id = -1; | 767 | c->socket_id = -1; |
@@ -947,7 +947,7 @@ cpu_init (void) | |||
947 | ia32_cpu_init(); | 947 | ia32_cpu_init(); |
948 | #endif | 948 | #endif |
949 | 949 | ||
950 | /* Clear ITC to eliminiate sched_clock() overflows in human time. */ | 950 | /* Clear ITC to eliminate sched_clock() overflows in human time. */ |
951 | ia64_set_itc(0); | 951 | ia64_set_itc(0); |
952 | 952 | ||
953 | /* disable all local interrupt sources: */ | 953 | /* disable all local interrupt sources: */ |
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index 221de3804560..b3a47f986e1e 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -186,7 +186,7 @@ handle_IPI (int irq, void *dev_id) | |||
186 | } | 186 | } |
187 | 187 | ||
188 | /* | 188 | /* |
189 | * Called with preeemption disabled. | 189 | * Called with preemption disabled. |
190 | */ | 190 | */ |
191 | static inline void | 191 | static inline void |
192 | send_IPI_single (int dest_cpu, int op) | 192 | send_IPI_single (int dest_cpu, int op) |
@@ -196,7 +196,7 @@ send_IPI_single (int dest_cpu, int op) | |||
196 | } | 196 | } |
197 | 197 | ||
198 | /* | 198 | /* |
199 | * Called with preeemption disabled. | 199 | * Called with preemption disabled. |
200 | */ | 200 | */ |
201 | static inline void | 201 | static inline void |
202 | send_IPI_allbutself (int op) | 202 | send_IPI_allbutself (int op) |
@@ -210,7 +210,7 @@ send_IPI_allbutself (int op) | |||
210 | } | 210 | } |
211 | 211 | ||
212 | /* | 212 | /* |
213 | * Called with preeemption disabled. | 213 | * Called with preemption disabled. |
214 | */ | 214 | */ |
215 | static inline void | 215 | static inline void |
216 | send_IPI_all (int op) | 216 | send_IPI_all (int op) |
@@ -223,7 +223,7 @@ send_IPI_all (int op) | |||
223 | } | 223 | } |
224 | 224 | ||
225 | /* | 225 | /* |
226 | * Called with preeemption disabled. | 226 | * Called with preemption disabled. |
227 | */ | 227 | */ |
228 | static inline void | 228 | static inline void |
229 | send_IPI_self (int op) | 229 | send_IPI_self (int op) |
@@ -252,7 +252,7 @@ kdump_smp_send_init(void) | |||
252 | } | 252 | } |
253 | #endif | 253 | #endif |
254 | /* | 254 | /* |
255 | * Called with preeemption disabled. | 255 | * Called with preemption disabled. |
256 | */ | 256 | */ |
257 | void | 257 | void |
258 | smp_send_reschedule (int cpu) | 258 | smp_send_reschedule (int cpu) |
@@ -261,7 +261,7 @@ smp_send_reschedule (int cpu) | |||
261 | } | 261 | } |
262 | 262 | ||
263 | /* | 263 | /* |
264 | * Called with preeemption disabled. | 264 | * Called with preemption disabled. |
265 | */ | 265 | */ |
266 | static void | 266 | static void |
267 | smp_send_local_flush_tlb (int cpu) | 267 | smp_send_local_flush_tlb (int cpu) |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index a44792d0f3a9..542958079f1b 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -694,7 +694,7 @@ int migrate_platform_irqs(unsigned int cpu) | |||
694 | set_cpei_target_cpu(new_cpei_cpu); | 694 | set_cpei_target_cpu(new_cpei_cpu); |
695 | desc = irq_desc + ia64_cpe_irq; | 695 | desc = irq_desc + ia64_cpe_irq; |
696 | /* | 696 | /* |
697 | * Switch for now, immediatly, we need to do fake intr | 697 | * Switch for now, immediately, we need to do fake intr |
698 | * as other interrupts, but need to study CPEI behaviour with | 698 | * as other interrupts, but need to study CPEI behaviour with |
699 | * polling before making changes. | 699 | * polling before making changes. |
700 | */ | 700 | */ |
@@ -840,7 +840,7 @@ __cpu_up (unsigned int cpu) | |||
840 | } | 840 | } |
841 | 841 | ||
842 | /* | 842 | /* |
843 | * Assume that CPU's have been discovered by some platform-dependent interface. For | 843 | * Assume that CPUs have been discovered by some platform-dependent interface. For |
844 | * SoftSDV/Lion, that would be ACPI. | 844 | * SoftSDV/Lion, that would be ACPI. |
845 | * | 845 | * |
846 | * Setup of the IPI irq handler is done in irq.c:init_IRQ_SMP(). | 846 | * Setup of the IPI irq handler is done in irq.c:init_IRQ_SMP(). |
@@ -854,7 +854,7 @@ init_smp_config(void) | |||
854 | } *ap_startup; | 854 | } *ap_startup; |
855 | long sal_ret; | 855 | long sal_ret; |
856 | 856 | ||
857 | /* Tell SAL where to drop the AP's. */ | 857 | /* Tell SAL where to drop the APs. */ |
858 | ap_startup = (struct fptr *) start_ap; | 858 | ap_startup = (struct fptr *) start_ap; |
859 | sal_ret = ia64_sal_set_vectors(SAL_VECTOR_OS_BOOT_RENDEZ, | 859 | sal_ret = ia64_sal_set_vectors(SAL_VECTOR_OS_BOOT_RENDEZ, |
860 | ia64_tpa(ap_startup->fp), ia64_tpa(ap_startup->gp), 0, 0, 0, 0); | 860 | ia64_tpa(ap_startup->fp), ia64_tpa(ap_startup->gp), 0, 0, 0, 0); |
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index b8e0d70bf989..15ad85da15a9 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
@@ -304,7 +304,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr) | |||
304 | * Lower 4 bits are used as a count. Upper bits are a sequence | 304 | * Lower 4 bits are used as a count. Upper bits are a sequence |
305 | * number that is updated when count is reset. The cmpxchg will | 305 | * number that is updated when count is reset. The cmpxchg will |
306 | * fail is seqno has changed. This minimizes mutiple cpus | 306 | * fail is seqno has changed. This minimizes mutiple cpus |
307 | * reseting the count. | 307 | * resetting the count. |
308 | */ | 308 | */ |
309 | if (current_jiffies > last.time) | 309 | if (current_jiffies > last.time) |
310 | (void) cmpxchg_acq(&last.count, count, 16 + (count & ~15)); | 310 | (void) cmpxchg_acq(&last.count, count, 16 + (count & ~15)); |
diff --git a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c index fe1426266b9b..7d3dd6cdafa4 100644 --- a/arch/ia64/kernel/unwind.c +++ b/arch/ia64/kernel/unwind.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * Copyright (C) 1999-2004 Hewlett-Packard Co | 2 | * Copyright (C) 1999-2004 Hewlett-Packard Co |
3 | * David Mosberger-Tang <davidm@hpl.hp.com> | 3 | * David Mosberger-Tang <davidm@hpl.hp.com> |
4 | * Copyright (C) 2003 Fenghua Yu <fenghua.yu@intel.com> | 4 | * Copyright (C) 2003 Fenghua Yu <fenghua.yu@intel.com> |
5 | * - Change pt_regs_off() to make it less dependant on pt_regs structure. | 5 | * - Change pt_regs_off() to make it less dependent on pt_regs structure. |
6 | */ | 6 | */ |
7 | /* | 7 | /* |
8 | * This file implements call frame unwind support for the Linux | 8 | * This file implements call frame unwind support for the Linux |
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 38085ac18338..0dbf0e81f8c0 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -317,7 +317,7 @@ static void __meminit scatter_node_data(void) | |||
317 | * node_online_map is not set for hot-added nodes at this time, | 317 | * node_online_map is not set for hot-added nodes at this time, |
318 | * because we are halfway through initialization of the new node's | 318 | * because we are halfway through initialization of the new node's |
319 | * structures. If for_each_online_node() is used, a new node's | 319 | * structures. If for_each_online_node() is used, a new node's |
320 | * pg_data_ptrs will be not initialized. Insted of using it, | 320 | * pg_data_ptrs will be not initialized. Instead of using it, |
321 | * pgdat_list[] is checked. | 321 | * pgdat_list[] is checked. |
322 | */ | 322 | */ |
323 | for_each_node(node) { | 323 | for_each_node(node) { |
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 21658e02116c..b87f785c2416 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c | |||
@@ -19,36 +19,24 @@ | |||
19 | extern void die (char *, struct pt_regs *, long); | 19 | extern void die (char *, struct pt_regs *, long); |
20 | 20 | ||
21 | #ifdef CONFIG_KPROBES | 21 | #ifdef CONFIG_KPROBES |
22 | ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain); | 22 | static inline int notify_page_fault(struct pt_regs *regs, int trap) |
23 | |||
24 | /* Hook to register for page fault notifications */ | ||
25 | int register_page_fault_notifier(struct notifier_block *nb) | ||
26 | { | ||
27 | return atomic_notifier_chain_register(¬ify_page_fault_chain, nb); | ||
28 | } | ||
29 | |||
30 | int unregister_page_fault_notifier(struct notifier_block *nb) | ||
31 | { | 23 | { |
32 | return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb); | 24 | int ret = 0; |
33 | } | 25 | |
26 | if (!user_mode(regs)) { | ||
27 | /* kprobe_running() needs smp_processor_id() */ | ||
28 | preempt_disable(); | ||
29 | if (kprobe_running() && kprobes_fault_handler(regs, trap)) | ||
30 | ret = 1; | ||
31 | preempt_enable(); | ||
32 | } | ||
34 | 33 | ||
35 | static inline int notify_page_fault(enum die_val val, const char *str, | 34 | return ret; |
36 | struct pt_regs *regs, long err, int trap, int sig) | ||
37 | { | ||
38 | struct die_args args = { | ||
39 | .regs = regs, | ||
40 | .str = str, | ||
41 | .err = err, | ||
42 | .trapnr = trap, | ||
43 | .signr = sig | ||
44 | }; | ||
45 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); | ||
46 | } | 35 | } |
47 | #else | 36 | #else |
48 | static inline int notify_page_fault(enum die_val val, const char *str, | 37 | static inline int notify_page_fault(struct pt_regs *regs, int trap) |
49 | struct pt_regs *regs, long err, int trap, int sig) | ||
50 | { | 38 | { |
51 | return NOTIFY_DONE; | 39 | return 0; |
52 | } | 40 | } |
53 | #endif | 41 | #endif |
54 | 42 | ||
@@ -117,8 +105,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re | |||
117 | /* | 105 | /* |
118 | * This is to handle the kprobes on user space access instructions | 106 | * This is to handle the kprobes on user space access instructions |
119 | */ | 107 | */ |
120 | if (notify_page_fault(DIE_PAGE_FAULT, "page fault", regs, code, TRAP_BRKPT, | 108 | if (notify_page_fault(regs, TRAP_BRKPT)) |
121 | SIGSEGV) == NOTIFY_STOP) | ||
122 | return; | 109 | return; |
123 | 110 | ||
124 | down_read(&mm->mmap_sem); | 111 | down_read(&mm->mmap_sem); |
diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c index ff1c55601178..b362d6d6a8c8 100644 --- a/arch/ia64/sn/kernel/bte.c +++ b/arch/ia64/sn/kernel/bte.c | |||
@@ -63,7 +63,7 @@ static inline void bte_start_transfer(struct bteinfo_s *bte, u64 len, u64 mode) | |||
63 | * Use the block transfer engine to move kernel memory from src to dest | 63 | * Use the block transfer engine to move kernel memory from src to dest |
64 | * using the assigned mode. | 64 | * using the assigned mode. |
65 | * | 65 | * |
66 | * Paramaters: | 66 | * Parameters: |
67 | * src - physical address of the transfer source. | 67 | * src - physical address of the transfer source. |
68 | * dest - physical address of the transfer destination. | 68 | * dest - physical address of the transfer destination. |
69 | * len - number of bytes to transfer from source to dest. | 69 | * len - number of bytes to transfer from source to dest. |
@@ -247,7 +247,7 @@ EXPORT_SYMBOL(bte_copy); | |||
247 | * use the block transfer engine to move kernel | 247 | * use the block transfer engine to move kernel |
248 | * memory from src to dest using the assigned mode. | 248 | * memory from src to dest using the assigned mode. |
249 | * | 249 | * |
250 | * Paramaters: | 250 | * Parameters: |
251 | * src - physical address of the transfer source. | 251 | * src - physical address of the transfer source. |
252 | * dest - physical address of the transfer destination. | 252 | * dest - physical address of the transfer destination. |
253 | * len - number of bytes to transfer from source to dest. | 253 | * len - number of bytes to transfer from source to dest. |
@@ -255,7 +255,7 @@ EXPORT_SYMBOL(bte_copy); | |||
255 | * for IBCT0/1 in the SGI documentation. | 255 | * for IBCT0/1 in the SGI documentation. |
256 | * | 256 | * |
257 | * NOTE: If the source, dest, and len are all cache line aligned, | 257 | * NOTE: If the source, dest, and len are all cache line aligned, |
258 | * then it would be _FAR_ preferrable to use bte_copy instead. | 258 | * then it would be _FAR_ preferable to use bte_copy instead. |
259 | */ | 259 | */ |
260 | bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) | 260 | bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) |
261 | { | 261 | { |
@@ -300,7 +300,7 @@ bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) | |||
300 | * a standard bte copy. | 300 | * a standard bte copy. |
301 | * | 301 | * |
302 | * One nasty exception to the above rule is when the | 302 | * One nasty exception to the above rule is when the |
303 | * source and destination are not symetrically | 303 | * source and destination are not symmetrically |
304 | * mis-aligned. If the source offset from the first | 304 | * mis-aligned. If the source offset from the first |
305 | * cache line is different from the destination offset, | 305 | * cache line is different from the destination offset, |
306 | * we make the first section be the entire transfer | 306 | * we make the first section be the entire transfer |
@@ -337,7 +337,7 @@ bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) | |||
337 | 337 | ||
338 | if (footBcopyDest == (headBcopyDest + headBcopyLen)) { | 338 | if (footBcopyDest == (headBcopyDest + headBcopyLen)) { |
339 | /* | 339 | /* |
340 | * We have two contigous bcopy | 340 | * We have two contiguous bcopy |
341 | * blocks. Merge them. | 341 | * blocks. Merge them. |
342 | */ | 342 | */ |
343 | headBcopyLen += footBcopyLen; | 343 | headBcopyLen += footBcopyLen; |
@@ -375,7 +375,7 @@ bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) | |||
375 | } else { | 375 | } else { |
376 | 376 | ||
377 | /* | 377 | /* |
378 | * The transfer is not symetric, we will | 378 | * The transfer is not symmetric, we will |
379 | * allocate a buffer large enough for all the | 379 | * allocate a buffer large enough for all the |
380 | * data, bte_copy into that buffer and then | 380 | * data, bte_copy into that buffer and then |
381 | * bcopy to the destination. | 381 | * bcopy to the destination. |
diff --git a/arch/ia64/sn/kernel/bte_error.c b/arch/ia64/sn/kernel/bte_error.c index b6fcf8164f2b..27c5936ccfe9 100644 --- a/arch/ia64/sn/kernel/bte_error.c +++ b/arch/ia64/sn/kernel/bte_error.c | |||
@@ -105,7 +105,7 @@ int shub1_bte_error_handler(unsigned long _nodepda) | |||
105 | } | 105 | } |
106 | 106 | ||
107 | BTE_PRINTK(("eh:%p:%d Cleaning up\n", err_nodepda, smp_processor_id())); | 107 | BTE_PRINTK(("eh:%p:%d Cleaning up\n", err_nodepda, smp_processor_id())); |
108 | /* Reenable both bte interfaces */ | 108 | /* Re-enable both bte interfaces */ |
109 | imem.ii_imem_regval = REMOTE_HUB_L(nasid, IIO_IMEM); | 109 | imem.ii_imem_regval = REMOTE_HUB_L(nasid, IIO_IMEM); |
110 | imem.ii_imem_fld_s.i_b0_esd = imem.ii_imem_fld_s.i_b1_esd = 1; | 110 | imem.ii_imem_fld_s.i_b0_esd = imem.ii_imem_fld_s.i_b1_esd = 1; |
111 | REMOTE_HUB_S(nasid, IIO_IMEM, imem.ii_imem_regval); | 111 | REMOTE_HUB_S(nasid, IIO_IMEM, imem.ii_imem_regval); |
@@ -243,7 +243,7 @@ bte_crb_error_handler(cnodeid_t cnode, int btenum, | |||
243 | 243 | ||
244 | /* | 244 | /* |
245 | * The caller has already figured out the error type, we save that | 245 | * The caller has already figured out the error type, we save that |
246 | * in the bte handle structure for the thread excercising the | 246 | * in the bte handle structure for the thread exercising the |
247 | * interface to consume. | 247 | * interface to consume. |
248 | */ | 248 | */ |
249 | bte->bh_error = ioe->ie_errortype + BTEFAIL_OFFSET; | 249 | bte->bh_error = ioe->ie_errortype + BTEFAIL_OFFSET; |
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c index 7ed72d3faf73..787ed642dd49 100644 --- a/arch/ia64/sn/kernel/io_common.c +++ b/arch/ia64/sn/kernel/io_common.c | |||
@@ -479,7 +479,7 @@ sn_io_early_init(void) | |||
479 | } | 479 | } |
480 | 480 | ||
481 | /* | 481 | /* |
482 | * prime sn_pci_provider[]. Individial provider init routines will | 482 | * prime sn_pci_provider[]. Individual provider init routines will |
483 | * override their respective default entries. | 483 | * override their respective default entries. |
484 | */ | 484 | */ |
485 | 485 | ||
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index a9bed5ca2ed8..a574fcd163dd 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
@@ -167,7 +167,7 @@ void __init early_sn_setup(void) | |||
167 | * IO on SN2 is done via SAL calls, early_printk won't work without this. | 167 | * IO on SN2 is done via SAL calls, early_printk won't work without this. |
168 | * | 168 | * |
169 | * This code duplicates some of the ACPI table parsing that is in efi.c & sal.c. | 169 | * This code duplicates some of the ACPI table parsing that is in efi.c & sal.c. |
170 | * Any changes to those file may have to be made hereas well. | 170 | * Any changes to those file may have to be made here as well. |
171 | */ | 171 | */ |
172 | efi_systab = (efi_system_table_t *) __va(ia64_boot_param->efi_systab); | 172 | efi_systab = (efi_system_table_t *) __va(ia64_boot_param->efi_systab); |
173 | config_tables = __va(efi_systab->tables); | 173 | config_tables = __va(efi_systab->tables); |
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index 5d318b579fb1..033c8a9f000e 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
@@ -104,7 +104,7 @@ static inline unsigned long wait_piowc(void) | |||
104 | * | 104 | * |
105 | * SN2 PIO writes from separate CPUs are not guaranteed to arrive in order. | 105 | * SN2 PIO writes from separate CPUs are not guaranteed to arrive in order. |
106 | * Context switching user threads which have memory-mapped MMIO may cause | 106 | * Context switching user threads which have memory-mapped MMIO may cause |
107 | * PIOs to issue from seperate CPUs, thus the PIO writes must be drained | 107 | * PIOs to issue from separate CPUs, thus the PIO writes must be drained |
108 | * from the previous CPU's Shub before execution resumes on the new CPU. | 108 | * from the previous CPU's Shub before execution resumes on the new CPU. |
109 | */ | 109 | */ |
110 | void sn_migrate(struct task_struct *task) | 110 | void sn_migrate(struct task_struct *task) |
diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c index c08db9c2375d..44ccc0d789c9 100644 --- a/arch/ia64/sn/kernel/xpc_channel.c +++ b/arch/ia64/sn/kernel/xpc_channel.c | |||
@@ -293,7 +293,7 @@ xpc_pull_remote_cachelines(struct xpc_partition *part, void *dst, | |||
293 | 293 | ||
294 | 294 | ||
295 | /* | 295 | /* |
296 | * Pull the remote per partititon specific variables from the specified | 296 | * Pull the remote per partition specific variables from the specified |
297 | * partition. | 297 | * partition. |
298 | */ | 298 | */ |
299 | enum xpc_retval | 299 | enum xpc_retval |
@@ -461,7 +461,7 @@ xpc_allocate_local_msgqueue(struct xpc_channel *ch) | |||
461 | // >>> may want to check for ch->flags & XPC_C_DISCONNECTING between | 461 | // >>> may want to check for ch->flags & XPC_C_DISCONNECTING between |
462 | // >>> iterations of the for-loop, bail if set? | 462 | // >>> iterations of the for-loop, bail if set? |
463 | 463 | ||
464 | // >>> should we impose a minumum #of entries? like 4 or 8? | 464 | // >>> should we impose a minimum #of entries? like 4 or 8? |
465 | for (nentries = ch->local_nentries; nentries > 0; nentries--) { | 465 | for (nentries = ch->local_nentries; nentries > 0; nentries--) { |
466 | 466 | ||
467 | nbytes = nentries * ch->msg_size; | 467 | nbytes = nentries * ch->msg_size; |
@@ -514,7 +514,7 @@ xpc_allocate_remote_msgqueue(struct xpc_channel *ch) | |||
514 | // >>> may want to check for ch->flags & XPC_C_DISCONNECTING between | 514 | // >>> may want to check for ch->flags & XPC_C_DISCONNECTING between |
515 | // >>> iterations of the for-loop, bail if set? | 515 | // >>> iterations of the for-loop, bail if set? |
516 | 516 | ||
517 | // >>> should we impose a minumum #of entries? like 4 or 8? | 517 | // >>> should we impose a minimum #of entries? like 4 or 8? |
518 | for (nentries = ch->remote_nentries; nentries > 0; nentries--) { | 518 | for (nentries = ch->remote_nentries; nentries > 0; nentries--) { |
519 | 519 | ||
520 | nbytes = nentries * ch->msg_size; | 520 | nbytes = nentries * ch->msg_size; |
@@ -1478,7 +1478,7 @@ xpc_teardown_infrastructure(struct xpc_partition *part) | |||
1478 | 1478 | ||
1479 | 1479 | ||
1480 | /* | 1480 | /* |
1481 | * Before proceding with the teardown we have to wait until all | 1481 | * Before proceeding with the teardown we have to wait until all |
1482 | * existing references cease. | 1482 | * existing references cease. |
1483 | */ | 1483 | */ |
1484 | wait_event(part->teardown_wq, (atomic_read(&part->references) == 0)); | 1484 | wait_event(part->teardown_wq, (atomic_read(&part->references) == 0)); |
diff --git a/arch/ia64/sn/kernel/xpnet.c b/arch/ia64/sn/kernel/xpnet.c index da7213530972..e58fcadff2e9 100644 --- a/arch/ia64/sn/kernel/xpnet.c +++ b/arch/ia64/sn/kernel/xpnet.c | |||
@@ -531,7 +531,7 @@ xpnet_dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
531 | dev_dbg(xpnet, "destination Partitions mask (dp) = 0x%lx\n", dp); | 531 | dev_dbg(xpnet, "destination Partitions mask (dp) = 0x%lx\n", dp); |
532 | 532 | ||
533 | /* | 533 | /* |
534 | * If we wanted to allow promiscous mode to work like an | 534 | * If we wanted to allow promiscuous mode to work like an |
535 | * unswitched network, this would be a good point to OR in a | 535 | * unswitched network, this would be a good point to OR in a |
536 | * mask of partitions which should be receiving all packets. | 536 | * mask of partitions which should be receiving all packets. |
537 | */ | 537 | */ |
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c index 7a291a271511..d79ddacfba2d 100644 --- a/arch/ia64/sn/pci/pci_dma.c +++ b/arch/ia64/sn/pci/pci_dma.c | |||
@@ -333,7 +333,7 @@ int sn_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size) | |||
333 | /* | 333 | /* |
334 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work | 334 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work |
335 | * around hw issues at the pci bus level. SGI proms older than | 335 | * around hw issues at the pci bus level. SGI proms older than |
336 | * 4.10 don't implment this. | 336 | * 4.10 don't implement this. |
337 | */ | 337 | */ |
338 | 338 | ||
339 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, | 339 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, |
@@ -348,7 +348,7 @@ int sn_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size) | |||
348 | /* | 348 | /* |
349 | * If the above failed, retry using the SAL_PROBE call which should | 349 | * If the above failed, retry using the SAL_PROBE call which should |
350 | * be present in all proms (but which cannot work round PCI chipset | 350 | * be present in all proms (but which cannot work round PCI chipset |
351 | * bugs). This code is retained for compatability with old | 351 | * bugs). This code is retained for compatibility with old |
352 | * pre-4.10 proms, and should be removed at some point in the future. | 352 | * pre-4.10 proms, and should be removed at some point in the future. |
353 | */ | 353 | */ |
354 | 354 | ||
@@ -379,7 +379,7 @@ int sn_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size) | |||
379 | /* | 379 | /* |
380 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work | 380 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work |
381 | * around hw issues at the pci bus level. SGI proms older than | 381 | * around hw issues at the pci bus level. SGI proms older than |
382 | * 4.10 don't implment this. | 382 | * 4.10 don't implement this. |
383 | */ | 383 | */ |
384 | 384 | ||
385 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, | 385 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, |
@@ -394,7 +394,7 @@ int sn_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size) | |||
394 | /* | 394 | /* |
395 | * If the above failed, retry using the SAL_PROBE call which should | 395 | * If the above failed, retry using the SAL_PROBE call which should |
396 | * be present in all proms (but which cannot work round PCI chipset | 396 | * be present in all proms (but which cannot work round PCI chipset |
397 | * bugs). This code is retained for compatability with old | 397 | * bugs). This code is retained for compatibility with old |
398 | * pre-4.10 proms, and should be removed at some point in the future. | 398 | * pre-4.10 proms, and should be removed at some point in the future. |
399 | */ | 399 | */ |
400 | 400 | ||
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_ate.c b/arch/ia64/sn/pci/pcibr/pcibr_ate.c index 935029fc400d..239b3cedcf2b 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_ate.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_ate.c | |||
@@ -30,7 +30,7 @@ static void mark_ate(struct ate_resource *ate_resource, int start, int number, | |||
30 | 30 | ||
31 | /* | 31 | /* |
32 | * find_free_ate: Find the first free ate index starting from the given | 32 | * find_free_ate: Find the first free ate index starting from the given |
33 | * index for the desired consequtive count. | 33 | * index for the desired consecutive count. |
34 | */ | 34 | */ |
35 | static int find_free_ate(struct ate_resource *ate_resource, int start, | 35 | static int find_free_ate(struct ate_resource *ate_resource, int start, |
36 | int count) | 36 | int count) |
@@ -88,7 +88,7 @@ static inline int alloc_ate_resource(struct ate_resource *ate_resource, | |||
88 | return -1; | 88 | return -1; |
89 | 89 | ||
90 | /* | 90 | /* |
91 | * Find the required number of free consequtive ates. | 91 | * Find the required number of free consecutive ates. |
92 | */ | 92 | */ |
93 | start_index = | 93 | start_index = |
94 | find_free_ate(ate_resource, ate_resource->lowest_free_index, | 94 | find_free_ate(ate_resource, ate_resource->lowest_free_index, |
@@ -105,7 +105,7 @@ static inline int alloc_ate_resource(struct ate_resource *ate_resource, | |||
105 | /* | 105 | /* |
106 | * Allocate "count" contiguous Bridge Address Translation Entries | 106 | * Allocate "count" contiguous Bridge Address Translation Entries |
107 | * on the specified bridge to be used for PCI to XTALK mappings. | 107 | * on the specified bridge to be used for PCI to XTALK mappings. |
108 | * Indices in rm map range from 1..num_entries. Indicies returned | 108 | * Indices in rm map range from 1..num_entries. Indices returned |
109 | * to caller range from 0..num_entries-1. | 109 | * to caller range from 0..num_entries-1. |
110 | * | 110 | * |
111 | * Return the start index on success, -1 on failure. | 111 | * Return the start index on success, -1 on failure. |
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_dma.c b/arch/ia64/sn/pci/pcibr/pcibr_dma.c index 95af40cb22f2..e626e50a938a 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_dma.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_dma.c | |||
@@ -201,7 +201,7 @@ pcibr_dmatrans_direct32(struct pcidev_info * info, | |||
201 | } | 201 | } |
202 | 202 | ||
203 | /* | 203 | /* |
204 | * Wrapper routine for free'ing DMA maps | 204 | * Wrapper routine for freeing DMA maps |
205 | * DMA mappings for Direct 64 and 32 do not have any DMA maps. | 205 | * DMA mappings for Direct 64 and 32 do not have any DMA maps. |
206 | */ | 206 | */ |
207 | void | 207 | void |
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c index 8a2cb4e691fd..b9bedbd6e1d6 100644 --- a/arch/ia64/sn/pci/tioca_provider.c +++ b/arch/ia64/sn/pci/tioca_provider.c | |||
@@ -223,7 +223,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) | |||
223 | 223 | ||
224 | /* | 224 | /* |
225 | * Scan all vga controllers on this bus making sure they all | 225 | * Scan all vga controllers on this bus making sure they all |
226 | * suport FW. If not, return. | 226 | * support FW. If not, return. |
227 | */ | 227 | */ |
228 | 228 | ||
229 | list_for_each_entry(pdev, tioca_kern->ca_devices, bus_list) { | 229 | list_for_each_entry(pdev, tioca_kern->ca_devices, bus_list) { |
@@ -364,7 +364,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr) | |||
364 | * @req_size: len (bytes) to map | 364 | * @req_size: len (bytes) to map |
365 | * | 365 | * |
366 | * Map @paddr into CA address space using the GART mechanism. The mapped | 366 | * Map @paddr into CA address space using the GART mechanism. The mapped |
367 | * dma_addr_t is guarenteed to be contiguous in CA bus space. | 367 | * dma_addr_t is guaranteed to be contiguous in CA bus space. |
368 | */ | 368 | */ |
369 | static dma_addr_t | 369 | static dma_addr_t |
370 | tioca_dma_mapped(struct pci_dev *pdev, u64 paddr, size_t req_size) | 370 | tioca_dma_mapped(struct pci_dev *pdev, u64 paddr, size_t req_size) |
@@ -526,7 +526,7 @@ tioca_dma_map(struct pci_dev *pdev, u64 paddr, size_t byte_count, int dma_flags) | |||
526 | return 0; | 526 | return 0; |
527 | 527 | ||
528 | /* | 528 | /* |
529 | * If card is 64 or 48 bit addresable, use a direct mapping. 32 | 529 | * If card is 64 or 48 bit addressable, use a direct mapping. 32 |
530 | * bit direct is so restrictive w.r.t. where the memory resides that | 530 | * bit direct is so restrictive w.r.t. where the memory resides that |
531 | * we don't use it even though CA has some support. | 531 | * we don't use it even though CA has some support. |
532 | */ | 532 | */ |
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c index 35f854fb6120..f4c0b961a939 100644 --- a/arch/ia64/sn/pci/tioce_provider.c +++ b/arch/ia64/sn/pci/tioce_provider.c | |||
@@ -256,9 +256,9 @@ pcidev_to_tioce(struct pci_dev *pdev, struct tioce __iomem **base, | |||
256 | * @ct_addr: the coretalk address to map | 256 | * @ct_addr: the coretalk address to map |
257 | * @len: number of bytes to map | 257 | * @len: number of bytes to map |
258 | * | 258 | * |
259 | * Given the addressing type, set up various paramaters that define the | 259 | * Given the addressing type, set up various parameters that define the |
260 | * ATE pool to use. Search for a contiguous block of entries to cover the | 260 | * ATE pool to use. Search for a contiguous block of entries to cover the |
261 | * length, and if enough resources exist, fill in the ATE's and construct a | 261 | * length, and if enough resources exist, fill in the ATEs and construct a |
262 | * tioce_dmamap struct to track the mapping. | 262 | * tioce_dmamap struct to track the mapping. |
263 | */ | 263 | */ |
264 | static u64 | 264 | static u64 |
@@ -581,8 +581,8 @@ tioce_do_dma_map(struct pci_dev *pdev, u64 paddr, size_t byte_count, | |||
581 | */ | 581 | */ |
582 | if (!mapaddr && !barrier && dma_mask >= 0xffffffffffUL) { | 582 | if (!mapaddr && !barrier && dma_mask >= 0xffffffffffUL) { |
583 | /* | 583 | /* |
584 | * We have two options for 40-bit mappings: 16GB "super" ATE's | 584 | * We have two options for 40-bit mappings: 16GB "super" ATEs |
585 | * and 64MB "regular" ATE's. We'll try both if needed for a | 585 | * and 64MB "regular" ATEs. We'll try both if needed for a |
586 | * given mapping but which one we try first depends on the | 586 | * given mapping but which one we try first depends on the |
587 | * size. For requests >64MB, prefer to use a super page with | 587 | * size. For requests >64MB, prefer to use a super page with |
588 | * regular as the fallback. Otherwise, try in the reverse order. | 588 | * regular as the fallback. Otherwise, try in the reverse order. |
@@ -687,8 +687,8 @@ tioce_error_intr_handler(int irq, void *arg) | |||
687 | } | 687 | } |
688 | 688 | ||
689 | /** | 689 | /** |
690 | * tioce_reserve_m32 - reserve M32 ate's for the indicated address range | 690 | * tioce_reserve_m32 - reserve M32 ATEs for the indicated address range |
691 | * @tioce_kernel: TIOCE context to reserve ate's for | 691 | * @tioce_kernel: TIOCE context to reserve ATEs for |
692 | * @base: starting bus address to reserve | 692 | * @base: starting bus address to reserve |
693 | * @limit: last bus address to reserve | 693 | * @limit: last bus address to reserve |
694 | * | 694 | * |
@@ -763,7 +763,7 @@ tioce_kern_init(struct tioce_common *tioce_common) | |||
763 | 763 | ||
764 | /* | 764 | /* |
765 | * Set PMU pagesize to the largest size available, and zero out | 765 | * Set PMU pagesize to the largest size available, and zero out |
766 | * the ate's. | 766 | * the ATEs. |
767 | */ | 767 | */ |
768 | 768 | ||
769 | tioce_mmr = (struct tioce __iomem *)tioce_common->ce_pcibus.bs_base; | 769 | tioce_mmr = (struct tioce __iomem *)tioce_common->ce_pcibus.bs_base; |
@@ -784,7 +784,7 @@ tioce_kern_init(struct tioce_common *tioce_common) | |||
784 | } | 784 | } |
785 | 785 | ||
786 | /* | 786 | /* |
787 | * Reserve ATE's corresponding to reserved address ranges. These | 787 | * Reserve ATEs corresponding to reserved address ranges. These |
788 | * include: | 788 | * include: |
789 | * | 789 | * |
790 | * Memory space covered by each PPB mem base/limit register | 790 | * Memory space covered by each PPB mem base/limit register |
diff --git a/include/asm-ia64/kdebug.h b/include/asm-ia64/kdebug.h index ba211e011a1d..320cd8e754ea 100644 --- a/include/asm-ia64/kdebug.h +++ b/include/asm-ia64/kdebug.h | |||
@@ -28,14 +28,24 @@ | |||
28 | */ | 28 | */ |
29 | #include <linux/notifier.h> | 29 | #include <linux/notifier.h> |
30 | 30 | ||
31 | extern int register_page_fault_notifier(struct notifier_block *); | 31 | /* |
32 | extern int unregister_page_fault_notifier(struct notifier_block *); | 32 | * These are only here because kprobes.c wants them to implement a |
33 | * blatant layering violation. Will hopefully go away soon once all | ||
34 | * architectures are updated. | ||
35 | */ | ||
36 | static inline int register_page_fault_notifier(struct notifier_block *nb) | ||
37 | { | ||
38 | return 0; | ||
39 | } | ||
40 | static inline int unregister_page_fault_notifier(struct notifier_block *nb) | ||
41 | { | ||
42 | return 0; | ||
43 | } | ||
33 | 44 | ||
34 | enum die_val { | 45 | enum die_val { |
35 | DIE_BREAK = 1, | 46 | DIE_BREAK = 1, |
36 | DIE_FAULT, | 47 | DIE_FAULT, |
37 | DIE_OOPS, | 48 | DIE_OOPS, |
38 | DIE_PAGE_FAULT, | ||
39 | DIE_MACHINE_HALT, | 49 | DIE_MACHINE_HALT, |
40 | DIE_MACHINE_RESTART, | 50 | DIE_MACHINE_RESTART, |
41 | DIE_MCA_MONARCH_ENTER, | 51 | DIE_MCA_MONARCH_ENTER, |
diff --git a/include/asm-ia64/kprobes.h b/include/asm-ia64/kprobes.h index 2abc98b336f3..6382e52ec227 100644 --- a/include/asm-ia64/kprobes.h +++ b/include/asm-ia64/kprobes.h | |||
@@ -120,6 +120,7 @@ struct arch_specific_insn { | |||
120 | unsigned short slot; | 120 | unsigned short slot; |
121 | }; | 121 | }; |
122 | 122 | ||
123 | extern int kprobes_fault_handler(struct pt_regs *regs, int trapnr); | ||
123 | extern int kprobe_exceptions_notify(struct notifier_block *self, | 124 | extern int kprobe_exceptions_notify(struct notifier_block *self, |
124 | unsigned long val, void *data); | 125 | unsigned long val, void *data); |
125 | 126 | ||
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h index f049bc40ca7d..d7781a2ddefe 100644 --- a/include/asm-ia64/unistd.h +++ b/include/asm-ia64/unistd.h | |||
@@ -296,11 +296,14 @@ | |||
296 | #define __NR_getcpu 1304 | 296 | #define __NR_getcpu 1304 |
297 | #define __NR_epoll_pwait 1305 | 297 | #define __NR_epoll_pwait 1305 |
298 | #define __NR_utimensat 1306 | 298 | #define __NR_utimensat 1306 |
299 | #define __NR_signalfd 1307 | ||
300 | #define __NR_timerfd 1308 | ||
301 | #define __NR_eventfd 1309 | ||
299 | 302 | ||
300 | #ifdef __KERNEL__ | 303 | #ifdef __KERNEL__ |
301 | 304 | ||
302 | 305 | ||
303 | #define NR_syscalls 283 /* length of syscall table */ | 306 | #define NR_syscalls 286 /* length of syscall table */ |
304 | 307 | ||
305 | #define __ARCH_WANT_SYS_RT_SIGACTION | 308 | #define __ARCH_WANT_SYS_RT_SIGACTION |
306 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 309 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |