diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-28 17:35:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-28 17:35:31 -0400 |
commit | 2e7580b0e75d771d93e24e681031a165b1d31071 (patch) | |
tree | d9449702609eeaab28913a43b5a4434667e09d43 /arch/ia64 | |
parent | d25413efa9536e2f425ea45c7720598035c597bc (diff) | |
parent | cf9eeac46350b8b43730b7dc5e999757bed089a4 (diff) |
Merge branch 'kvm-updates/3.4' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm updates from Avi Kivity:
"Changes include timekeeping improvements, support for assigning host
PCI devices that share interrupt lines, s390 user-controlled guests, a
large ppc update, and random fixes."
This is with the sign-off's fixed, hopefully next merge window we won't
have rebased commits.
* 'kvm-updates/3.4' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (130 commits)
KVM: Convert intx_mask_lock to spin lock
KVM: x86: fix kvm_write_tsc() TSC matching thinko
x86: kvmclock: abstract save/restore sched_clock_state
KVM: nVMX: Fix erroneous exception bitmap check
KVM: Ignore the writes to MSR_K7_HWCR(3)
KVM: MMU: make use of ->root_level in reset_rsvds_bits_mask
KVM: PMU: add proper support for fixed counter 2
KVM: PMU: Fix raw event check
KVM: PMU: warn when pin control is set in eventsel msr
KVM: VMX: Fix delayed load of shared MSRs
KVM: use correct tlbs dirty type in cmpxchg
KVM: Allow host IRQ sharing for assigned PCI 2.3 devices
KVM: Ensure all vcpus are consistent with in-kernel irqchip settings
KVM: x86 emulator: Allow PM/VM86 switch during task switch
KVM: SVM: Fix CPL updates
KVM: x86 emulator: VM86 segments must have DPL 3
KVM: x86 emulator: Fix task switch privilege checks
arch/powerpc/kvm/book3s_hv.c: included linux/sched.h twice
KVM: x86 emulator: correctly mask pmc index bits in RDPMC instruction emulation
KVM: mmu_notifier: Flush TLBs before releasing mmu_lock
...
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/include/asm/kvm.h | 4 | ||||
-rw-r--r-- | arch/ia64/include/asm/kvm_host.h | 3 | ||||
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 25 |
3 files changed, 31 insertions, 1 deletions
diff --git a/arch/ia64/include/asm/kvm.h b/arch/ia64/include/asm/kvm.h index bc90c75adf67..b9f82c84f093 100644 --- a/arch/ia64/include/asm/kvm.h +++ b/arch/ia64/include/asm/kvm.h | |||
@@ -261,4 +261,8 @@ struct kvm_debug_exit_arch { | |||
261 | struct kvm_guest_debug_arch { | 261 | struct kvm_guest_debug_arch { |
262 | }; | 262 | }; |
263 | 263 | ||
264 | /* definition of registers in kvm_run */ | ||
265 | struct kvm_sync_regs { | ||
266 | }; | ||
267 | |||
264 | #endif | 268 | #endif |
diff --git a/arch/ia64/include/asm/kvm_host.h b/arch/ia64/include/asm/kvm_host.h index 2689ee54a1c9..e35b3a84a40b 100644 --- a/arch/ia64/include/asm/kvm_host.h +++ b/arch/ia64/include/asm/kvm_host.h | |||
@@ -459,6 +459,9 @@ struct kvm_sal_data { | |||
459 | unsigned long boot_gp; | 459 | unsigned long boot_gp; |
460 | }; | 460 | }; |
461 | 461 | ||
462 | struct kvm_arch_memory_slot { | ||
463 | }; | ||
464 | |||
462 | struct kvm_arch { | 465 | struct kvm_arch { |
463 | spinlock_t dirty_log_lock; | 466 | spinlock_t dirty_log_lock; |
464 | 467 | ||
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 405052002493..f5104b7c52cd 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -809,10 +809,13 @@ static void kvm_build_io_pmt(struct kvm *kvm) | |||
809 | #define GUEST_PHYSICAL_RR4 0x2739 | 809 | #define GUEST_PHYSICAL_RR4 0x2739 |
810 | #define VMM_INIT_RR 0x1660 | 810 | #define VMM_INIT_RR 0x1660 |
811 | 811 | ||
812 | int kvm_arch_init_vm(struct kvm *kvm) | 812 | int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) |
813 | { | 813 | { |
814 | BUG_ON(!kvm); | 814 | BUG_ON(!kvm); |
815 | 815 | ||
816 | if (type) | ||
817 | return -EINVAL; | ||
818 | |||
816 | kvm->arch.is_sn2 = ia64_platform_is("sn2"); | 819 | kvm->arch.is_sn2 = ia64_platform_is("sn2"); |
817 | 820 | ||
818 | kvm->arch.metaphysical_rr0 = GUEST_PHYSICAL_RR0; | 821 | kvm->arch.metaphysical_rr0 = GUEST_PHYSICAL_RR0; |
@@ -1169,6 +1172,11 @@ out: | |||
1169 | 1172 | ||
1170 | #define PALE_RESET_ENTRY 0x80000000ffffffb0UL | 1173 | #define PALE_RESET_ENTRY 0x80000000ffffffb0UL |
1171 | 1174 | ||
1175 | bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) | ||
1176 | { | ||
1177 | return irqchip_in_kernel(vcpu->kcm) == (vcpu->arch.apic != NULL); | ||
1178 | } | ||
1179 | |||
1172 | int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) | 1180 | int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) |
1173 | { | 1181 | { |
1174 | struct kvm_vcpu *v; | 1182 | struct kvm_vcpu *v; |
@@ -1563,6 +1571,21 @@ out: | |||
1563 | return r; | 1571 | return r; |
1564 | } | 1572 | } |
1565 | 1573 | ||
1574 | int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) | ||
1575 | { | ||
1576 | return VM_FAULT_SIGBUS; | ||
1577 | } | ||
1578 | |||
1579 | void kvm_arch_free_memslot(struct kvm_memory_slot *free, | ||
1580 | struct kvm_memory_slot *dont) | ||
1581 | { | ||
1582 | } | ||
1583 | |||
1584 | int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages) | ||
1585 | { | ||
1586 | return 0; | ||
1587 | } | ||
1588 | |||
1566 | int kvm_arch_prepare_memory_region(struct kvm *kvm, | 1589 | int kvm_arch_prepare_memory_region(struct kvm *kvm, |
1567 | struct kvm_memory_slot *memslot, | 1590 | struct kvm_memory_slot *memslot, |
1568 | struct kvm_memory_slot old, | 1591 | struct kvm_memory_slot old, |