diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/include/asm/paravirt_privop.h | 2 | ||||
-rw-r--r-- | arch/ia64/include/asm/smp.h | 2 | ||||
-rw-r--r-- | arch/ia64/include/asm/unistd.h | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/cyclone.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/entry.S | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/pci-swiotlb.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/smp.c | 14 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 4 | ||||
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 14 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/sn2/timer.c | 2 |
10 files changed, 25 insertions, 23 deletions
diff --git a/arch/ia64/include/asm/paravirt_privop.h b/arch/ia64/include/asm/paravirt_privop.h index 3d2951130b5f..8f6cb11c9fae 100644 --- a/arch/ia64/include/asm/paravirt_privop.h +++ b/arch/ia64/include/asm/paravirt_privop.h | |||
@@ -445,7 +445,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1, | |||
445 | register unsigned long ia64_intri_res asm ("r8"); \ | 445 | register unsigned long ia64_intri_res asm ("r8"); \ |
446 | register unsigned long __reg asm ("r8") = (reg); \ | 446 | register unsigned long __reg asm ("r8") = (reg); \ |
447 | \ | 447 | \ |
448 | BUILD_BUG_ON(!__builtin_constant_p(reg)); \ | ||
449 | asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ | 448 | asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ |
450 | PARAVIRT_TYPE(GETREG) \ | 449 | PARAVIRT_TYPE(GETREG) \ |
451 | + (reg)) \ | 450 | + (reg)) \ |
@@ -464,7 +463,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1, | |||
464 | register unsigned long ia64_clobber1 asm ("r8"); \ | 463 | register unsigned long ia64_clobber1 asm ("r8"); \ |
465 | register unsigned long ia64_clobber2 asm ("r9"); \ | 464 | register unsigned long ia64_clobber2 asm ("r9"); \ |
466 | \ | 465 | \ |
467 | BUILD_BUG_ON(!__builtin_constant_p(reg)); \ | ||
468 | asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ | 466 | asm volatile (paravirt_alt_bundle(__PARAVIRT_BR, \ |
469 | PARAVIRT_TYPE(SETREG) \ | 467 | PARAVIRT_TYPE(SETREG) \ |
470 | + (reg)) \ | 468 | + (reg)) \ |
diff --git a/arch/ia64/include/asm/smp.h b/arch/ia64/include/asm/smp.h index 598408336251..d217d1d4e051 100644 --- a/arch/ia64/include/asm/smp.h +++ b/arch/ia64/include/asm/smp.h | |||
@@ -58,7 +58,7 @@ extern struct smp_boot_data { | |||
58 | extern char no_int_routing __devinitdata; | 58 | extern char no_int_routing __devinitdata; |
59 | 59 | ||
60 | extern cpumask_t cpu_core_map[NR_CPUS]; | 60 | extern cpumask_t cpu_core_map[NR_CPUS]; |
61 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); | 61 | DECLARE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map); |
62 | extern int smp_num_siblings; | 62 | extern int smp_num_siblings; |
63 | extern void __iomem *ipi_base_addr; | 63 | extern void __iomem *ipi_base_addr; |
64 | extern unsigned char smp_int_redirect; | 64 | extern unsigned char smp_int_redirect; |
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h index 9015979ebe0f..10a9eb05f74d 100644 --- a/arch/ia64/include/asm/unistd.h +++ b/arch/ia64/include/asm/unistd.h | |||
@@ -308,11 +308,13 @@ | |||
308 | #define __NR_dup3 1316 | 308 | #define __NR_dup3 1316 |
309 | #define __NR_pipe2 1317 | 309 | #define __NR_pipe2 1317 |
310 | #define __NR_inotify_init1 1318 | 310 | #define __NR_inotify_init1 1318 |
311 | #define __NR_preadv 1319 | ||
312 | #define __NR_pwritev 1320 | ||
311 | 313 | ||
312 | #ifdef __KERNEL__ | 314 | #ifdef __KERNEL__ |
313 | 315 | ||
314 | 316 | ||
315 | #define NR_syscalls 295 /* length of syscall table */ | 317 | #define NR_syscalls 297 /* length of syscall table */ |
316 | 318 | ||
317 | /* | 319 | /* |
318 | * The following defines stop scripts/checksyscalls.sh from complaining about | 320 | * The following defines stop scripts/checksyscalls.sh from complaining about |
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c index 790ef0d87e12..71e35864d2e2 100644 --- a/arch/ia64/kernel/cyclone.c +++ b/arch/ia64/kernel/cyclone.c | |||
@@ -21,7 +21,7 @@ void __init cyclone_setup(void) | |||
21 | 21 | ||
22 | static void __iomem *cyclone_mc; | 22 | static void __iomem *cyclone_mc; |
23 | 23 | ||
24 | static cycle_t read_cyclone(void) | 24 | static cycle_t read_cyclone(struct clocksource *cs) |
25 | { | 25 | { |
26 | return (cycle_t)readq((void __iomem *)cyclone_mc); | 26 | return (cycle_t)readq((void __iomem *)cyclone_mc); |
27 | } | 27 | } |
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 8dc69669586a..7bebac0e1d44 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
@@ -1803,6 +1803,8 @@ sys_call_table: | |||
1803 | data8 sys_dup3 | 1803 | data8 sys_dup3 |
1804 | data8 sys_pipe2 | 1804 | data8 sys_pipe2 |
1805 | data8 sys_inotify_init1 | 1805 | data8 sys_inotify_init1 |
1806 | data8 sys_preadv | ||
1807 | data8 sys_pwritev // 1320 | ||
1806 | 1808 | ||
1807 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls | 1809 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls |
1808 | #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ | 1810 | #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ |
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c index 573f02c39a00..285aae8431c6 100644 --- a/arch/ia64/kernel/pci-swiotlb.c +++ b/arch/ia64/kernel/pci-swiotlb.c | |||
@@ -16,7 +16,7 @@ EXPORT_SYMBOL(swiotlb); | |||
16 | static void *ia64_swiotlb_alloc_coherent(struct device *dev, size_t size, | 16 | static void *ia64_swiotlb_alloc_coherent(struct device *dev, size_t size, |
17 | dma_addr_t *dma_handle, gfp_t gfp) | 17 | dma_addr_t *dma_handle, gfp_t gfp) |
18 | { | 18 | { |
19 | if (dev->coherent_dma_mask != DMA_64BIT_MASK) | 19 | if (dev->coherent_dma_mask != DMA_BIT_MASK(64)) |
20 | gfp |= GFP_DMA; | 20 | gfp |= GFP_DMA; |
21 | return swiotlb_alloc_coherent(dev, size, dma_handle, gfp); | 21 | return swiotlb_alloc_coherent(dev, size, dma_handle, gfp); |
22 | } | 22 | } |
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index 2ea4199d9c57..5230eaafd83f 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -225,6 +225,7 @@ smp_send_reschedule (int cpu) | |||
225 | { | 225 | { |
226 | platform_send_ipi(cpu, IA64_IPI_RESCHEDULE, IA64_IPI_DM_INT, 0); | 226 | platform_send_ipi(cpu, IA64_IPI_RESCHEDULE, IA64_IPI_DM_INT, 0); |
227 | } | 227 | } |
228 | EXPORT_SYMBOL_GPL(smp_send_reschedule); | ||
228 | 229 | ||
229 | /* | 230 | /* |
230 | * Called with preemption disabled. | 231 | * Called with preemption disabled. |
@@ -300,15 +301,12 @@ smp_flush_tlb_mm (struct mm_struct *mm) | |||
300 | return; | 301 | return; |
301 | } | 302 | } |
302 | 303 | ||
304 | smp_call_function_mask(mm->cpu_vm_mask, | ||
305 | (void (*)(void *))local_finish_flush_tlb_mm, mm, 1); | ||
306 | local_irq_disable(); | ||
307 | local_finish_flush_tlb_mm(mm); | ||
308 | local_irq_enable(); | ||
303 | preempt_enable(); | 309 | preempt_enable(); |
304 | /* | ||
305 | * We could optimize this further by using mm->cpu_vm_mask to track which CPUs | ||
306 | * have been running in the address space. It's not clear that this is worth the | ||
307 | * trouble though: to avoid races, we have to raise the IPI on the target CPU | ||
308 | * anyhow, and once a CPU is interrupted, the cost of local_flush_tlb_all() is | ||
309 | * rather trivial. | ||
310 | */ | ||
311 | on_each_cpu((void (*)(void *))local_finish_flush_tlb_mm, mm, 1); | ||
312 | } | 310 | } |
313 | 311 | ||
314 | void arch_send_call_function_single_ipi(int cpu) | 312 | void arch_send_call_function_single_ipi(int cpu) |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 641c8b61c4f1..604c1a35db33 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | #include "fsyscall_gtod_data.h" | 34 | #include "fsyscall_gtod_data.h" |
35 | 35 | ||
36 | static cycle_t itc_get_cycles(void); | 36 | static cycle_t itc_get_cycles(struct clocksource *cs); |
37 | 37 | ||
38 | struct fsyscall_gtod_data_t fsyscall_gtod_data = { | 38 | struct fsyscall_gtod_data_t fsyscall_gtod_data = { |
39 | .lock = SEQLOCK_UNLOCKED, | 39 | .lock = SEQLOCK_UNLOCKED, |
@@ -383,7 +383,7 @@ ia64_init_itm (void) | |||
383 | } | 383 | } |
384 | } | 384 | } |
385 | 385 | ||
386 | static cycle_t itc_get_cycles(void) | 386 | static cycle_t itc_get_cycles(struct clocksource *cs) |
387 | { | 387 | { |
388 | u64 lcycle, now, ret; | 388 | u64 lcycle, now, ret; |
389 | 389 | ||
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 28af6a731bb8..d20a5db4c4dd 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -610,20 +610,22 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
610 | int r; | 610 | int r; |
611 | 611 | ||
612 | again: | 612 | again: |
613 | preempt_disable(); | ||
614 | local_irq_disable(); | ||
615 | |||
616 | if (signal_pending(current)) { | 613 | if (signal_pending(current)) { |
617 | local_irq_enable(); | ||
618 | preempt_enable(); | ||
619 | r = -EINTR; | 614 | r = -EINTR; |
620 | kvm_run->exit_reason = KVM_EXIT_INTR; | 615 | kvm_run->exit_reason = KVM_EXIT_INTR; |
621 | goto out; | 616 | goto out; |
622 | } | 617 | } |
623 | 618 | ||
619 | /* | ||
620 | * down_read() may sleep and return with interrupts enabled | ||
621 | */ | ||
622 | down_read(&vcpu->kvm->slots_lock); | ||
623 | |||
624 | preempt_disable(); | ||
625 | local_irq_disable(); | ||
626 | |||
624 | vcpu->guest_mode = 1; | 627 | vcpu->guest_mode = 1; |
625 | kvm_guest_enter(); | 628 | kvm_guest_enter(); |
626 | down_read(&vcpu->kvm->slots_lock); | ||
627 | r = vti_vcpu_run(vcpu, kvm_run); | 629 | r = vti_vcpu_run(vcpu, kvm_run); |
628 | if (r < 0) { | 630 | if (r < 0) { |
629 | local_irq_enable(); | 631 | local_irq_enable(); |
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c index cf67fc562054..21d6f09e3447 100644 --- a/arch/ia64/sn/kernel/sn2/timer.c +++ b/arch/ia64/sn/kernel/sn2/timer.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | extern unsigned long sn_rtc_cycles_per_second; | 24 | extern unsigned long sn_rtc_cycles_per_second; |
25 | 25 | ||
26 | static cycle_t read_sn2(void) | 26 | static cycle_t read_sn2(struct clocksource *cs) |
27 | { | 27 | { |
28 | return (cycle_t)readq(RTC_COUNTER_ADDR); | 28 | return (cycle_t)readq(RTC_COUNTER_ADDR); |
29 | } | 29 | } |