diff options
Diffstat (limited to 'include/linux/kvm_host.h')
| -rw-r--r-- | include/linux/kvm_host.h | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 894a56e365e8..aacc5449f586 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #define KVM_REQ_UNHALT 6 | 38 | #define KVM_REQ_UNHALT 6 |
| 39 | #define KVM_REQ_MMU_SYNC 7 | 39 | #define KVM_REQ_MMU_SYNC 7 |
| 40 | #define KVM_REQ_KVMCLOCK_UPDATE 8 | 40 | #define KVM_REQ_KVMCLOCK_UPDATE 8 |
| 41 | #define KVM_REQ_KICK 9 | ||
| 41 | 42 | ||
| 42 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 | 43 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 |
| 43 | 44 | ||
| @@ -72,7 +73,6 @@ struct kvm_vcpu { | |||
| 72 | struct mutex mutex; | 73 | struct mutex mutex; |
| 73 | int cpu; | 74 | int cpu; |
| 74 | struct kvm_run *run; | 75 | struct kvm_run *run; |
| 75 | int guest_mode; | ||
| 76 | unsigned long requests; | 76 | unsigned long requests; |
| 77 | unsigned long guest_debug; | 77 | unsigned long guest_debug; |
| 78 | int fpu_active; | 78 | int fpu_active; |
| @@ -298,6 +298,7 @@ int kvm_arch_hardware_setup(void); | |||
| 298 | void kvm_arch_hardware_unsetup(void); | 298 | void kvm_arch_hardware_unsetup(void); |
| 299 | void kvm_arch_check_processor_compat(void *rtn); | 299 | void kvm_arch_check_processor_compat(void *rtn); |
| 300 | int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); | 300 | int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); |
| 301 | int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu); | ||
| 301 | 302 | ||
| 302 | void kvm_free_physmem(struct kvm *kvm); | 303 | void kvm_free_physmem(struct kvm *kvm); |
| 303 | 304 | ||
| @@ -319,6 +320,13 @@ struct kvm_irq_ack_notifier { | |||
| 319 | void (*irq_acked)(struct kvm_irq_ack_notifier *kian); | 320 | void (*irq_acked)(struct kvm_irq_ack_notifier *kian); |
| 320 | }; | 321 | }; |
| 321 | 322 | ||
| 323 | #define KVM_ASSIGNED_MSIX_PENDING 0x1 | ||
| 324 | struct kvm_guest_msix_entry { | ||
| 325 | u32 vector; | ||
| 326 | u16 entry; | ||
| 327 | u16 flags; | ||
| 328 | }; | ||
| 329 | |||
| 322 | struct kvm_assigned_dev_kernel { | 330 | struct kvm_assigned_dev_kernel { |
| 323 | struct kvm_irq_ack_notifier ack_notifier; | 331 | struct kvm_irq_ack_notifier ack_notifier; |
| 324 | struct work_struct interrupt_work; | 332 | struct work_struct interrupt_work; |
| @@ -326,18 +334,18 @@ struct kvm_assigned_dev_kernel { | |||
| 326 | int assigned_dev_id; | 334 | int assigned_dev_id; |
| 327 | int host_busnr; | 335 | int host_busnr; |
| 328 | int host_devfn; | 336 | int host_devfn; |
| 337 | unsigned int entries_nr; | ||
| 329 | int host_irq; | 338 | int host_irq; |
| 330 | bool host_irq_disabled; | 339 | bool host_irq_disabled; |
| 340 | struct msix_entry *host_msix_entries; | ||
| 331 | int guest_irq; | 341 | int guest_irq; |
| 332 | #define KVM_ASSIGNED_DEV_GUEST_INTX (1 << 0) | 342 | struct kvm_guest_msix_entry *guest_msix_entries; |
| 333 | #define KVM_ASSIGNED_DEV_GUEST_MSI (1 << 1) | ||
| 334 | #define KVM_ASSIGNED_DEV_HOST_INTX (1 << 8) | ||
| 335 | #define KVM_ASSIGNED_DEV_HOST_MSI (1 << 9) | ||
| 336 | unsigned long irq_requested_type; | 343 | unsigned long irq_requested_type; |
| 337 | int irq_source_id; | 344 | int irq_source_id; |
| 338 | int flags; | 345 | int flags; |
| 339 | struct pci_dev *dev; | 346 | struct pci_dev *dev; |
| 340 | struct kvm *kvm; | 347 | struct kvm *kvm; |
| 348 | spinlock_t assigned_dev_lock; | ||
| 341 | }; | 349 | }; |
| 342 | 350 | ||
| 343 | struct kvm_irq_mask_notifier { | 351 | struct kvm_irq_mask_notifier { |
| @@ -360,6 +368,9 @@ void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian); | |||
| 360 | int kvm_request_irq_source_id(struct kvm *kvm); | 368 | int kvm_request_irq_source_id(struct kvm *kvm); |
| 361 | void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id); | 369 | void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id); |
| 362 | 370 | ||
| 371 | /* For vcpu->arch.iommu_flags */ | ||
| 372 | #define KVM_IOMMU_CACHE_COHERENCY 0x1 | ||
| 373 | |||
| 363 | #ifdef CONFIG_IOMMU_API | 374 | #ifdef CONFIG_IOMMU_API |
| 364 | int kvm_iommu_map_pages(struct kvm *kvm, gfn_t base_gfn, | 375 | int kvm_iommu_map_pages(struct kvm *kvm, gfn_t base_gfn, |
| 365 | unsigned long npages); | 376 | unsigned long npages); |
