diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/Kconfig | 9 | ||||
-rw-r--r-- | arch/ia64/include/asm/gpio.h | 59 | ||||
-rw-r--r-- | arch/ia64/include/asm/kvm_host.h | 3 | ||||
-rw-r--r-- | arch/ia64/include/asm/kvm_para.h | 5 | ||||
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 30 |
5 files changed, 24 insertions, 82 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index ba667b60f32d..8186ec5ea151 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -37,6 +37,8 @@ config IA64 | |||
37 | select ARCH_INIT_TASK | 37 | select ARCH_INIT_TASK |
38 | select ARCH_TASK_STRUCT_ALLOCATOR | 38 | select ARCH_TASK_STRUCT_ALLOCATOR |
39 | select ARCH_THREAD_INFO_ALLOCATOR | 39 | select ARCH_THREAD_INFO_ALLOCATOR |
40 | select ARCH_CLOCKSOURCE_DATA | ||
41 | select GENERIC_TIME_VSYSCALL | ||
40 | default y | 42 | default y |
41 | help | 43 | help |
42 | The Itanium Processor Family is Intel's 64-bit successor to | 44 | The Itanium Processor Family is Intel's 64-bit successor to |
@@ -92,10 +94,6 @@ config GENERIC_CALIBRATE_DELAY | |||
92 | bool | 94 | bool |
93 | default y | 95 | default y |
94 | 96 | ||
95 | config GENERIC_TIME_VSYSCALL | ||
96 | bool | ||
97 | default y | ||
98 | |||
99 | config HAVE_SETUP_PER_CPU_AREA | 97 | config HAVE_SETUP_PER_CPU_AREA |
100 | def_bool y | 98 | def_bool y |
101 | 99 | ||
@@ -110,9 +108,6 @@ config EFI | |||
110 | bool | 108 | bool |
111 | default y | 109 | default y |
112 | 110 | ||
113 | config ARCH_CLOCKSOURCE_DATA | ||
114 | def_bool y | ||
115 | |||
116 | config SCHED_OMIT_FRAME_POINTER | 111 | config SCHED_OMIT_FRAME_POINTER |
117 | bool | 112 | bool |
118 | default y | 113 | default y |
diff --git a/arch/ia64/include/asm/gpio.h b/arch/ia64/include/asm/gpio.h index 590a20debc4e..b3799d88ffcf 100644 --- a/arch/ia64/include/asm/gpio.h +++ b/arch/ia64/include/asm/gpio.h | |||
@@ -1,55 +1,4 @@ | |||
1 | /* | 1 | #ifndef __LINUX_GPIO_H |
2 | * Generic GPIO API implementation for IA-64. | 2 | #warning Include linux/gpio.h instead of asm/gpio.h |
3 | * | 3 | #include <linux/gpio.h> |
4 | * A stright copy of that for PowerPC which was: | 4 | #endif |
5 | * | ||
6 | * Copyright (c) 2007-2008 MontaVista Software, Inc. | ||
7 | * | ||
8 | * Author: Anton Vorontsov <avorontsov@ru.mvista.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | */ | ||
15 | |||
16 | #ifndef _ASM_IA64_GPIO_H | ||
17 | #define _ASM_IA64_GPIO_H | ||
18 | |||
19 | #include <linux/errno.h> | ||
20 | #include <asm-generic/gpio.h> | ||
21 | |||
22 | #ifdef CONFIG_GPIOLIB | ||
23 | |||
24 | /* | ||
25 | * We don't (yet) implement inlined/rapid versions for on-chip gpios. | ||
26 | * Just call gpiolib. | ||
27 | */ | ||
28 | static inline int gpio_get_value(unsigned int gpio) | ||
29 | { | ||
30 | return __gpio_get_value(gpio); | ||
31 | } | ||
32 | |||
33 | static inline void gpio_set_value(unsigned int gpio, int value) | ||
34 | { | ||
35 | __gpio_set_value(gpio, value); | ||
36 | } | ||
37 | |||
38 | static inline int gpio_cansleep(unsigned int gpio) | ||
39 | { | ||
40 | return __gpio_cansleep(gpio); | ||
41 | } | ||
42 | |||
43 | static inline int gpio_to_irq(unsigned int gpio) | ||
44 | { | ||
45 | return __gpio_to_irq(gpio); | ||
46 | } | ||
47 | |||
48 | static inline int irq_to_gpio(unsigned int irq) | ||
49 | { | ||
50 | return -EINVAL; | ||
51 | } | ||
52 | |||
53 | #endif /* CONFIG_GPIOLIB */ | ||
54 | |||
55 | #endif /* _ASM_IA64_GPIO_H */ | ||
diff --git a/arch/ia64/include/asm/kvm_host.h b/arch/ia64/include/asm/kvm_host.h index e35b3a84a40b..6d6a5ac48d85 100644 --- a/arch/ia64/include/asm/kvm_host.h +++ b/arch/ia64/include/asm/kvm_host.h | |||
@@ -365,6 +365,7 @@ struct thash_cb { | |||
365 | }; | 365 | }; |
366 | 366 | ||
367 | struct kvm_vcpu_stat { | 367 | struct kvm_vcpu_stat { |
368 | u32 halt_wakeup; | ||
368 | }; | 369 | }; |
369 | 370 | ||
370 | struct kvm_vcpu_arch { | 371 | struct kvm_vcpu_arch { |
@@ -448,6 +449,8 @@ struct kvm_vcpu_arch { | |||
448 | char log_buf[VMM_LOG_LEN]; | 449 | char log_buf[VMM_LOG_LEN]; |
449 | union context host; | 450 | union context host; |
450 | union context guest; | 451 | union context guest; |
452 | |||
453 | char mmio_data[8]; | ||
451 | }; | 454 | }; |
452 | 455 | ||
453 | struct kvm_vm_stat { | 456 | struct kvm_vm_stat { |
diff --git a/arch/ia64/include/asm/kvm_para.h b/arch/ia64/include/asm/kvm_para.h index 1588aee781a2..2019cb99335e 100644 --- a/arch/ia64/include/asm/kvm_para.h +++ b/arch/ia64/include/asm/kvm_para.h | |||
@@ -26,6 +26,11 @@ static inline unsigned int kvm_arch_para_features(void) | |||
26 | return 0; | 26 | return 0; |
27 | } | 27 | } |
28 | 28 | ||
29 | static inline bool kvm_check_and_clear_guest_paused(void) | ||
30 | { | ||
31 | return false; | ||
32 | } | ||
33 | |||
29 | #endif | 34 | #endif |
30 | 35 | ||
31 | #endif | 36 | #endif |
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 463fb3bbe11e..bd77cb507c1c 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -232,12 +232,12 @@ static int handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
232 | if ((p->addr & PAGE_MASK) == IOAPIC_DEFAULT_BASE_ADDRESS) | 232 | if ((p->addr & PAGE_MASK) == IOAPIC_DEFAULT_BASE_ADDRESS) |
233 | goto mmio; | 233 | goto mmio; |
234 | vcpu->mmio_needed = 1; | 234 | vcpu->mmio_needed = 1; |
235 | vcpu->mmio_phys_addr = kvm_run->mmio.phys_addr = p->addr; | 235 | vcpu->mmio_fragments[0].gpa = kvm_run->mmio.phys_addr = p->addr; |
236 | vcpu->mmio_size = kvm_run->mmio.len = p->size; | 236 | vcpu->mmio_fragments[0].len = kvm_run->mmio.len = p->size; |
237 | vcpu->mmio_is_write = kvm_run->mmio.is_write = !p->dir; | 237 | vcpu->mmio_is_write = kvm_run->mmio.is_write = !p->dir; |
238 | 238 | ||
239 | if (vcpu->mmio_is_write) | 239 | if (vcpu->mmio_is_write) |
240 | memcpy(vcpu->mmio_data, &p->data, p->size); | 240 | memcpy(vcpu->arch.mmio_data, &p->data, p->size); |
241 | memcpy(kvm_run->mmio.data, &p->data, p->size); | 241 | memcpy(kvm_run->mmio.data, &p->data, p->size); |
242 | kvm_run->exit_reason = KVM_EXIT_MMIO; | 242 | kvm_run->exit_reason = KVM_EXIT_MMIO; |
243 | return 0; | 243 | return 0; |
@@ -719,7 +719,7 @@ static void kvm_set_mmio_data(struct kvm_vcpu *vcpu) | |||
719 | struct kvm_mmio_req *p = kvm_get_vcpu_ioreq(vcpu); | 719 | struct kvm_mmio_req *p = kvm_get_vcpu_ioreq(vcpu); |
720 | 720 | ||
721 | if (!vcpu->mmio_is_write) | 721 | if (!vcpu->mmio_is_write) |
722 | memcpy(&p->data, vcpu->mmio_data, 8); | 722 | memcpy(&p->data, vcpu->arch.mmio_data, 8); |
723 | p->state = STATE_IORESP_READY; | 723 | p->state = STATE_IORESP_READY; |
724 | } | 724 | } |
725 | 725 | ||
@@ -739,7 +739,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
739 | } | 739 | } |
740 | 740 | ||
741 | if (vcpu->mmio_needed) { | 741 | if (vcpu->mmio_needed) { |
742 | memcpy(vcpu->mmio_data, kvm_run->mmio.data, 8); | 742 | memcpy(vcpu->arch.mmio_data, kvm_run->mmio.data, 8); |
743 | kvm_set_mmio_data(vcpu); | 743 | kvm_set_mmio_data(vcpu); |
744 | vcpu->mmio_read_completed = 1; | 744 | vcpu->mmio_read_completed = 1; |
745 | vcpu->mmio_needed = 0; | 745 | vcpu->mmio_needed = 0; |
@@ -1872,21 +1872,6 @@ void kvm_arch_hardware_unsetup(void) | |||
1872 | { | 1872 | { |
1873 | } | 1873 | } |
1874 | 1874 | ||
1875 | void kvm_vcpu_kick(struct kvm_vcpu *vcpu) | ||
1876 | { | ||
1877 | int me; | ||
1878 | int cpu = vcpu->cpu; | ||
1879 | |||
1880 | if (waitqueue_active(&vcpu->wq)) | ||
1881 | wake_up_interruptible(&vcpu->wq); | ||
1882 | |||
1883 | me = get_cpu(); | ||
1884 | if (cpu != me && (unsigned) cpu < nr_cpu_ids && cpu_online(cpu)) | ||
1885 | if (!test_and_set_bit(KVM_REQ_KICK, &vcpu->requests)) | ||
1886 | smp_send_reschedule(cpu); | ||
1887 | put_cpu(); | ||
1888 | } | ||
1889 | |||
1890 | int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq) | 1875 | int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq) |
1891 | { | 1876 | { |
1892 | return __apic_accept_irq(vcpu, irq->vector); | 1877 | return __apic_accept_irq(vcpu, irq->vector); |
@@ -1956,6 +1941,11 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) | |||
1956 | (kvm_highest_pending_irq(vcpu) != -1); | 1941 | (kvm_highest_pending_irq(vcpu) != -1); |
1957 | } | 1942 | } |
1958 | 1943 | ||
1944 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu) | ||
1945 | { | ||
1946 | return (!test_and_set_bit(KVM_REQ_KICK, &vcpu->requests)); | ||
1947 | } | ||
1948 | |||
1959 | int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, | 1949 | int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, |
1960 | struct kvm_mp_state *mp_state) | 1950 | struct kvm_mp_state *mp_state) |
1961 | { | 1951 | { |