diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2014-08-05 03:55:22 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-08-05 03:58:11 -0400 |
commit | cc568ead3ce8e0284e7e2cc77bd1dafb03ba4ca1 (patch) | |
tree | 6525ab90e70f0e0736e9bc050f66645ca373c802 /virt/kvm | |
parent | 5d5768660539b6d0da0d46113ffb0676540579a6 (diff) | |
parent | 8e6afa36e754be84b468d7df9e5aa71cf4003f3b (diff) |
Merge tag 'signed-kvm-ppc-next' of git://github.com/agraf/linux-2.6 into kvm
Patch queue for ppc - 2014-08-01
Highlights in this release include:
- BookE: Rework instruction fetch, not racy anymore now
- BookE HV: Fix ONE_REG accessors for some in-hardware registers
- Book3S: Good number of LE host fixes, enable HV on LE
- Book3S: Some misc bug fixes
- Book3S HV: Add in-guest debug support
- Book3S HV: Preload cache lines on context switch
- Remove 440 support
Alexander Graf (31):
KVM: PPC: Book3s PR: Disable AIL mode with OPAL
KVM: PPC: Book3s HV: Fix tlbie compile error
KVM: PPC: Book3S PR: Handle hyp doorbell exits
KVM: PPC: Book3S PR: Fix ABIv2 on LE
KVM: PPC: Book3S PR: Fix sparse endian checks
PPC: Add asm helpers for BE 32bit load/store
KVM: PPC: Book3S HV: Make HTAB code LE host aware
KVM: PPC: Book3S HV: Access guest VPA in BE
KVM: PPC: Book3S HV: Access host lppaca and shadow slb in BE
KVM: PPC: Book3S HV: Access XICS in BE
KVM: PPC: Book3S HV: Fix ABIv2 on LE
KVM: PPC: Book3S HV: Enable for little endian hosts
KVM: PPC: Book3S: Move vcore definition to end of kvm_arch struct
KVM: PPC: Deflect page write faults properly in kvmppc_st
KVM: PPC: Book3S: Stop PTE lookup on write errors
KVM: PPC: Book3S: Add hack for split real mode
KVM: PPC: Book3S: Make magic page properly 4k mappable
KVM: PPC: Remove 440 support
KVM: Rename and add argument to check_extension
KVM: Allow KVM_CHECK_EXTENSION on the vm fd
KVM: PPC: Book3S: Provide different CAPs based on HV or PR mode
KVM: PPC: Implement kvmppc_xlate for all targets
KVM: PPC: Move kvmppc_ld/st to common code
KVM: PPC: Remove kvmppc_bad_hva()
KVM: PPC: Use kvm_read_guest in kvmppc_ld
KVM: PPC: Handle magic page in kvmppc_ld/st
KVM: PPC: Separate loadstore emulation from priv emulation
KVM: PPC: Expose helper functions for data/inst faults
KVM: PPC: Remove DCR handling
KVM: PPC: HV: Remove generic instruction emulation
KVM: PPC: PR: Handle FSCR feature deselects
Alexey Kardashevskiy (1):
KVM: PPC: Book3S: Fix LPCR one_reg interface
Aneesh Kumar K.V (4):
KVM: PPC: BOOK3S: PR: Fix PURR and SPURR emulation
KVM: PPC: BOOK3S: PR: Emulate virtual timebase register
KVM: PPC: BOOK3S: PR: Emulate instruction counter
KVM: PPC: BOOK3S: HV: Update compute_tlbie_rb to handle 16MB base page
Anton Blanchard (2):
KVM: PPC: Book3S HV: Fix ABIv2 indirect branch issue
KVM: PPC: Assembly functions exported to modules need _GLOBAL_TOC()
Bharat Bhushan (10):
kvm: ppc: bookehv: Added wrapper macros for shadow registers
kvm: ppc: booke: Use the shared struct helpers of SRR0 and SRR1
kvm: ppc: booke: Use the shared struct helpers of SPRN_DEAR
kvm: ppc: booke: Add shared struct helpers of SPRN_ESR
kvm: ppc: booke: Use the shared struct helpers for SPRN_SPRG0-7
kvm: ppc: Add SPRN_EPR get helper function
kvm: ppc: bookehv: Save restore SPRN_SPRG9 on guest entry exit
KVM: PPC: Booke-hv: Add one reg interface for SPRG9
KVM: PPC: Remove comment saying SPRG1 is used for vcpu pointer
KVM: PPC: BOOKEHV: rename e500hv_spr to bookehv_spr
Michael Neuling (1):
KVM: PPC: Book3S HV: Add H_SET_MODE hcall handling
Mihai Caraman (8):
KVM: PPC: e500mc: Enhance tlb invalidation condition on vcpu schedule
KVM: PPC: e500: Fix default tlb for victim hint
KVM: PPC: e500: Emulate power management control SPR
KVM: PPC: e500mc: Revert "add load inst fixup"
KVM: PPC: Book3e: Add TLBSEL/TSIZE defines for MAS0/1
KVM: PPC: Book3s: Remove kvmppc_read_inst() function
KVM: PPC: Allow kvmppc_get_last_inst() to fail
KVM: PPC: Bookehv: Get vcpu's last instruction for emulation
Paul Mackerras (4):
KVM: PPC: Book3S: Controls for in-kernel sPAPR hypercall handling
KVM: PPC: Book3S: Allow only implemented hcalls to be enabled or disabled
KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() call
KVM: PPC: Book3S: Make kvmppc_ld return a more accurate error indication
Stewart Smith (2):
Split out struct kvmppc_vcore creation to separate function
Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8
Conflicts:
Documentation/virtual/kvm/api.txt
Diffstat (limited to 'virt/kvm')
-rw-r--r-- | virt/kvm/kvm_main.c | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 4b6c01b477f9..1b95cc926cfc 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -2324,6 +2324,34 @@ static int kvm_ioctl_create_device(struct kvm *kvm, | |||
2324 | return 0; | 2324 | return 0; |
2325 | } | 2325 | } |
2326 | 2326 | ||
2327 | static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg) | ||
2328 | { | ||
2329 | switch (arg) { | ||
2330 | case KVM_CAP_USER_MEMORY: | ||
2331 | case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: | ||
2332 | case KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: | ||
2333 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | ||
2334 | case KVM_CAP_SET_BOOT_CPU_ID: | ||
2335 | #endif | ||
2336 | case KVM_CAP_INTERNAL_ERROR_DATA: | ||
2337 | #ifdef CONFIG_HAVE_KVM_MSI | ||
2338 | case KVM_CAP_SIGNAL_MSI: | ||
2339 | #endif | ||
2340 | #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING | ||
2341 | case KVM_CAP_IRQFD_RESAMPLE: | ||
2342 | #endif | ||
2343 | case KVM_CAP_CHECK_EXTENSION_VM: | ||
2344 | return 1; | ||
2345 | #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING | ||
2346 | case KVM_CAP_IRQ_ROUTING: | ||
2347 | return KVM_MAX_IRQ_ROUTES; | ||
2348 | #endif | ||
2349 | default: | ||
2350 | break; | ||
2351 | } | ||
2352 | return kvm_vm_ioctl_check_extension(kvm, arg); | ||
2353 | } | ||
2354 | |||
2327 | static long kvm_vm_ioctl(struct file *filp, | 2355 | static long kvm_vm_ioctl(struct file *filp, |
2328 | unsigned int ioctl, unsigned long arg) | 2356 | unsigned int ioctl, unsigned long arg) |
2329 | { | 2357 | { |
@@ -2487,6 +2515,9 @@ static long kvm_vm_ioctl(struct file *filp, | |||
2487 | r = 0; | 2515 | r = 0; |
2488 | break; | 2516 | break; |
2489 | } | 2517 | } |
2518 | case KVM_CHECK_EXTENSION: | ||
2519 | r = kvm_vm_ioctl_check_extension_generic(kvm, arg); | ||
2520 | break; | ||
2490 | default: | 2521 | default: |
2491 | r = kvm_arch_vm_ioctl(filp, ioctl, arg); | 2522 | r = kvm_arch_vm_ioctl(filp, ioctl, arg); |
2492 | if (r == -ENOTTY) | 2523 | if (r == -ENOTTY) |
@@ -2571,33 +2602,6 @@ static int kvm_dev_ioctl_create_vm(unsigned long type) | |||
2571 | return r; | 2602 | return r; |
2572 | } | 2603 | } |
2573 | 2604 | ||
2574 | static long kvm_dev_ioctl_check_extension_generic(long arg) | ||
2575 | { | ||
2576 | switch (arg) { | ||
2577 | case KVM_CAP_USER_MEMORY: | ||
2578 | case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: | ||
2579 | case KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: | ||
2580 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | ||
2581 | case KVM_CAP_SET_BOOT_CPU_ID: | ||
2582 | #endif | ||
2583 | case KVM_CAP_INTERNAL_ERROR_DATA: | ||
2584 | #ifdef CONFIG_HAVE_KVM_MSI | ||
2585 | case KVM_CAP_SIGNAL_MSI: | ||
2586 | #endif | ||
2587 | #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING | ||
2588 | case KVM_CAP_IRQFD_RESAMPLE: | ||
2589 | #endif | ||
2590 | return 1; | ||
2591 | #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING | ||
2592 | case KVM_CAP_IRQ_ROUTING: | ||
2593 | return KVM_MAX_IRQ_ROUTES; | ||
2594 | #endif | ||
2595 | default: | ||
2596 | break; | ||
2597 | } | ||
2598 | return kvm_dev_ioctl_check_extension(arg); | ||
2599 | } | ||
2600 | |||
2601 | static long kvm_dev_ioctl(struct file *filp, | 2605 | static long kvm_dev_ioctl(struct file *filp, |
2602 | unsigned int ioctl, unsigned long arg) | 2606 | unsigned int ioctl, unsigned long arg) |
2603 | { | 2607 | { |
@@ -2614,7 +2618,7 @@ static long kvm_dev_ioctl(struct file *filp, | |||
2614 | r = kvm_dev_ioctl_create_vm(arg); | 2618 | r = kvm_dev_ioctl_create_vm(arg); |
2615 | break; | 2619 | break; |
2616 | case KVM_CHECK_EXTENSION: | 2620 | case KVM_CHECK_EXTENSION: |
2617 | r = kvm_dev_ioctl_check_extension_generic(arg); | 2621 | r = kvm_vm_ioctl_check_extension_generic(NULL, arg); |
2618 | break; | 2622 | break; |
2619 | case KVM_GET_VCPU_MMAP_SIZE: | 2623 | case KVM_GET_VCPU_MMAP_SIZE: |
2620 | r = -EINVAL; | 2624 | r = -EINVAL; |