diff options
Diffstat (limited to 'arch/ia64/kvm/kvm-ia64.c')
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 30 |
1 files changed, 10 insertions, 20 deletions
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 | { |