diff options
Diffstat (limited to 'include/linux/kvm.h')
-rw-r--r-- | include/linux/kvm.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 68e67e50d028..6c322a90b92f 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -162,6 +162,7 @@ struct kvm_pit_config { | |||
162 | #define KVM_EXIT_INTERNAL_ERROR 17 | 162 | #define KVM_EXIT_INTERNAL_ERROR 17 |
163 | #define KVM_EXIT_OSI 18 | 163 | #define KVM_EXIT_OSI 18 |
164 | #define KVM_EXIT_PAPR_HCALL 19 | 164 | #define KVM_EXIT_PAPR_HCALL 19 |
165 | #define KVM_EXIT_S390_UCONTROL 20 | ||
165 | 166 | ||
166 | /* For KVM_EXIT_INTERNAL_ERROR */ | 167 | /* For KVM_EXIT_INTERNAL_ERROR */ |
167 | #define KVM_INTERNAL_ERROR_EMULATION 1 | 168 | #define KVM_INTERNAL_ERROR_EMULATION 1 |
@@ -249,6 +250,11 @@ struct kvm_run { | |||
249 | #define KVM_S390_RESET_CPU_INIT 8 | 250 | #define KVM_S390_RESET_CPU_INIT 8 |
250 | #define KVM_S390_RESET_IPL 16 | 251 | #define KVM_S390_RESET_IPL 16 |
251 | __u64 s390_reset_flags; | 252 | __u64 s390_reset_flags; |
253 | /* KVM_EXIT_S390_UCONTROL */ | ||
254 | struct { | ||
255 | __u64 trans_exc_code; | ||
256 | __u32 pgm_code; | ||
257 | } s390_ucontrol; | ||
252 | /* KVM_EXIT_DCR */ | 258 | /* KVM_EXIT_DCR */ |
253 | struct { | 259 | struct { |
254 | __u32 dcrn; | 260 | __u32 dcrn; |
@@ -273,6 +279,20 @@ struct kvm_run { | |||
273 | /* Fix the size of the union. */ | 279 | /* Fix the size of the union. */ |
274 | char padding[256]; | 280 | char padding[256]; |
275 | }; | 281 | }; |
282 | |||
283 | /* | ||
284 | * shared registers between kvm and userspace. | ||
285 | * kvm_valid_regs specifies the register classes set by the host | ||
286 | * kvm_dirty_regs specified the register classes dirtied by userspace | ||
287 | * struct kvm_sync_regs is architecture specific, as well as the | ||
288 | * bits for kvm_valid_regs and kvm_dirty_regs | ||
289 | */ | ||
290 | __u64 kvm_valid_regs; | ||
291 | __u64 kvm_dirty_regs; | ||
292 | union { | ||
293 | struct kvm_sync_regs regs; | ||
294 | char padding[1024]; | ||
295 | } s; | ||
276 | }; | 296 | }; |
277 | 297 | ||
278 | /* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */ | 298 | /* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */ |
@@ -431,6 +451,11 @@ struct kvm_ppc_pvinfo { | |||
431 | 451 | ||
432 | #define KVMIO 0xAE | 452 | #define KVMIO 0xAE |
433 | 453 | ||
454 | /* machine type bits, to be used as argument to KVM_CREATE_VM */ | ||
455 | #define KVM_VM_S390_UCONTROL 1 | ||
456 | |||
457 | #define KVM_S390_SIE_PAGE_OFFSET 1 | ||
458 | |||
434 | /* | 459 | /* |
435 | * ioctls for /dev/kvm fds: | 460 | * ioctls for /dev/kvm fds: |
436 | */ | 461 | */ |
@@ -555,9 +580,15 @@ struct kvm_ppc_pvinfo { | |||
555 | #define KVM_CAP_PPC_SMT 64 | 580 | #define KVM_CAP_PPC_SMT 64 |
556 | #define KVM_CAP_PPC_RMA 65 | 581 | #define KVM_CAP_PPC_RMA 65 |
557 | #define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */ | 582 | #define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */ |
583 | #define KVM_CAP_PPC_HIOR 67 | ||
558 | #define KVM_CAP_PPC_PAPR 68 | 584 | #define KVM_CAP_PPC_PAPR 68 |
585 | #define KVM_CAP_SW_TLB 69 | ||
586 | #define KVM_CAP_ONE_REG 70 | ||
559 | #define KVM_CAP_S390_GMAP 71 | 587 | #define KVM_CAP_S390_GMAP 71 |
560 | #define KVM_CAP_TSC_DEADLINE_TIMER 72 | 588 | #define KVM_CAP_TSC_DEADLINE_TIMER 72 |
589 | #define KVM_CAP_S390_UCONTROL 73 | ||
590 | #define KVM_CAP_SYNC_REGS 74 | ||
591 | #define KVM_CAP_PCI_2_3 75 | ||
561 | 592 | ||
562 | #ifdef KVM_CAP_IRQ_ROUTING | 593 | #ifdef KVM_CAP_IRQ_ROUTING |
563 | 594 | ||
@@ -637,6 +668,52 @@ struct kvm_clock_data { | |||
637 | __u32 pad[9]; | 668 | __u32 pad[9]; |
638 | }; | 669 | }; |
639 | 670 | ||
671 | #define KVM_MMU_FSL_BOOKE_NOHV 0 | ||
672 | #define KVM_MMU_FSL_BOOKE_HV 1 | ||
673 | |||
674 | struct kvm_config_tlb { | ||
675 | __u64 params; | ||
676 | __u64 array; | ||
677 | __u32 mmu_type; | ||
678 | __u32 array_len; | ||
679 | }; | ||
680 | |||
681 | struct kvm_dirty_tlb { | ||
682 | __u64 bitmap; | ||
683 | __u32 num_dirty; | ||
684 | }; | ||
685 | |||
686 | /* Available with KVM_CAP_ONE_REG */ | ||
687 | |||
688 | #define KVM_REG_ARCH_MASK 0xff00000000000000ULL | ||
689 | #define KVM_REG_GENERIC 0x0000000000000000ULL | ||
690 | |||
691 | /* | ||
692 | * Architecture specific registers are to be defined in arch headers and | ||
693 | * ORed with the arch identifier. | ||
694 | */ | ||
695 | #define KVM_REG_PPC 0x1000000000000000ULL | ||
696 | #define KVM_REG_X86 0x2000000000000000ULL | ||
697 | #define KVM_REG_IA64 0x3000000000000000ULL | ||
698 | #define KVM_REG_ARM 0x4000000000000000ULL | ||
699 | #define KVM_REG_S390 0x5000000000000000ULL | ||
700 | |||
701 | #define KVM_REG_SIZE_SHIFT 52 | ||
702 | #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL | ||
703 | #define KVM_REG_SIZE_U8 0x0000000000000000ULL | ||
704 | #define KVM_REG_SIZE_U16 0x0010000000000000ULL | ||
705 | #define KVM_REG_SIZE_U32 0x0020000000000000ULL | ||
706 | #define KVM_REG_SIZE_U64 0x0030000000000000ULL | ||
707 | #define KVM_REG_SIZE_U128 0x0040000000000000ULL | ||
708 | #define KVM_REG_SIZE_U256 0x0050000000000000ULL | ||
709 | #define KVM_REG_SIZE_U512 0x0060000000000000ULL | ||
710 | #define KVM_REG_SIZE_U1024 0x0070000000000000ULL | ||
711 | |||
712 | struct kvm_one_reg { | ||
713 | __u64 id; | ||
714 | __u64 addr; | ||
715 | }; | ||
716 | |||
640 | /* | 717 | /* |
641 | * ioctls for VM fds | 718 | * ioctls for VM fds |
642 | */ | 719 | */ |
@@ -655,6 +732,17 @@ struct kvm_clock_data { | |||
655 | struct kvm_userspace_memory_region) | 732 | struct kvm_userspace_memory_region) |
656 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) | 733 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) |
657 | #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) | 734 | #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) |
735 | |||
736 | /* enable ucontrol for s390 */ | ||
737 | struct kvm_s390_ucas_mapping { | ||
738 | __u64 user_addr; | ||
739 | __u64 vcpu_addr; | ||
740 | __u64 length; | ||
741 | }; | ||
742 | #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping) | ||
743 | #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping) | ||
744 | #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long) | ||
745 | |||
658 | /* Device model IOC */ | 746 | /* Device model IOC */ |
659 | #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) | 747 | #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) |
660 | #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) | 748 | #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) |
@@ -697,6 +785,9 @@ struct kvm_clock_data { | |||
697 | /* Available with KVM_CAP_TSC_CONTROL */ | 785 | /* Available with KVM_CAP_TSC_CONTROL */ |
698 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) | 786 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) |
699 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) | 787 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) |
788 | /* Available with KVM_CAP_PCI_2_3 */ | ||
789 | #define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, \ | ||
790 | struct kvm_assigned_pci_dev) | ||
700 | 791 | ||
701 | /* | 792 | /* |
702 | * ioctls for vcpu fds | 793 | * ioctls for vcpu fds |
@@ -763,8 +854,15 @@ struct kvm_clock_data { | |||
763 | #define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce) | 854 | #define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce) |
764 | /* Available with KVM_CAP_RMA */ | 855 | /* Available with KVM_CAP_RMA */ |
765 | #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) | 856 | #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) |
857 | /* Available with KVM_CAP_SW_TLB */ | ||
858 | #define KVM_DIRTY_TLB _IOW(KVMIO, 0xaa, struct kvm_dirty_tlb) | ||
859 | /* Available with KVM_CAP_ONE_REG */ | ||
860 | #define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg) | ||
861 | #define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg) | ||
766 | 862 | ||
767 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) | 863 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) |
864 | #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) | ||
865 | #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) | ||
768 | 866 | ||
769 | struct kvm_assigned_pci_dev { | 867 | struct kvm_assigned_pci_dev { |
770 | __u32 assigned_dev_id; | 868 | __u32 assigned_dev_id; |