diff options
Diffstat (limited to 'include/linux/kvm.h')
| -rw-r--r-- | include/linux/kvm.h | 72 |
1 files changed, 66 insertions, 6 deletions
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 70a30651cd12..797fcd781242 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
| @@ -311,22 +311,33 @@ struct kvm_s390_interrupt { | |||
| 311 | 311 | ||
| 312 | /* This structure represents a single trace buffer record. */ | 312 | /* This structure represents a single trace buffer record. */ |
| 313 | struct kvm_trace_rec { | 313 | struct kvm_trace_rec { |
| 314 | __u32 event:28; | 314 | /* variable rec_val |
| 315 | __u32 extra_u32:3; | 315 | * is split into: |
| 316 | __u32 cycle_in:1; | 316 | * bits 0 - 27 -> event id |
| 317 | * bits 28 -30 -> number of extra data args of size u32 | ||
| 318 | * bits 31 -> binary indicator for if tsc is in record | ||
| 319 | */ | ||
| 320 | __u32 rec_val; | ||
| 317 | __u32 pid; | 321 | __u32 pid; |
| 318 | __u32 vcpu_id; | 322 | __u32 vcpu_id; |
| 319 | union { | 323 | union { |
| 320 | struct { | 324 | struct { |
| 321 | __u64 cycle_u64; | 325 | __u64 timestamp; |
| 322 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; | 326 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; |
| 323 | } __attribute__((packed)) cycle; | 327 | } __attribute__((packed)) timestamp; |
| 324 | struct { | 328 | struct { |
| 325 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; | 329 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; |
| 326 | } nocycle; | 330 | } notimestamp; |
| 327 | } u; | 331 | } u; |
| 328 | }; | 332 | }; |
| 329 | 333 | ||
| 334 | #define TRACE_REC_EVENT_ID(val) \ | ||
| 335 | (0x0fffffff & (val)) | ||
| 336 | #define TRACE_REC_NUM_DATA_ARGS(val) \ | ||
| 337 | (0x70000000 & ((val) << 28)) | ||
| 338 | #define TRACE_REC_TCS(val) \ | ||
| 339 | (0x80000000 & ((val) << 31)) | ||
| 340 | |||
| 330 | #define KVMIO 0xAE | 341 | #define KVMIO 0xAE |
| 331 | 342 | ||
| 332 | /* | 343 | /* |
| @@ -372,6 +383,10 @@ struct kvm_trace_rec { | |||
| 372 | #define KVM_CAP_MP_STATE 14 | 383 | #define KVM_CAP_MP_STATE 14 |
| 373 | #define KVM_CAP_COALESCED_MMIO 15 | 384 | #define KVM_CAP_COALESCED_MMIO 15 |
| 374 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ | 385 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ |
| 386 | #if defined(CONFIG_X86)||defined(CONFIG_IA64) | ||
| 387 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 | ||
| 388 | #endif | ||
| 389 | #define KVM_CAP_IOMMU 18 | ||
| 375 | 390 | ||
| 376 | /* | 391 | /* |
| 377 | * ioctls for VM fds | 392 | * ioctls for VM fds |
| @@ -401,6 +416,10 @@ struct kvm_trace_rec { | |||
| 401 | _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) | 416 | _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) |
| 402 | #define KVM_UNREGISTER_COALESCED_MMIO \ | 417 | #define KVM_UNREGISTER_COALESCED_MMIO \ |
| 403 | _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) | 418 | _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) |
| 419 | #define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \ | ||
| 420 | struct kvm_assigned_pci_dev) | ||
| 421 | #define KVM_ASSIGN_IRQ _IOR(KVMIO, 0x70, \ | ||
| 422 | struct kvm_assigned_irq) | ||
| 404 | 423 | ||
| 405 | /* | 424 | /* |
| 406 | * ioctls for vcpu fds | 425 | * ioctls for vcpu fds |
| @@ -440,4 +459,45 @@ struct kvm_trace_rec { | |||
| 440 | #define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state) | 459 | #define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state) |
| 441 | #define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state) | 460 | #define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state) |
| 442 | 461 | ||
| 462 | #define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) | ||
| 463 | #define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) | ||
| 464 | #define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) | ||
| 465 | #define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05) | ||
| 466 | #define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06) | ||
| 467 | #define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07) | ||
| 468 | #define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08) | ||
| 469 | #define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09) | ||
| 470 | #define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A) | ||
| 471 | #define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B) | ||
| 472 | #define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C) | ||
| 473 | #define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D) | ||
| 474 | #define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E) | ||
| 475 | #define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F) | ||
| 476 | #define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10) | ||
| 477 | #define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11) | ||
| 478 | #define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12) | ||
| 479 | #define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13) | ||
| 480 | #define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14) | ||
| 481 | #define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15) | ||
| 482 | #define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16) | ||
| 483 | #define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17) | ||
| 484 | #define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18) | ||
| 485 | #define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19) | ||
| 486 | |||
| 487 | struct kvm_assigned_pci_dev { | ||
| 488 | __u32 assigned_dev_id; | ||
| 489 | __u32 busnr; | ||
| 490 | __u32 devfn; | ||
| 491 | __u32 flags; | ||
| 492 | }; | ||
| 493 | |||
| 494 | struct kvm_assigned_irq { | ||
| 495 | __u32 assigned_dev_id; | ||
| 496 | __u32 host_irq; | ||
| 497 | __u32 guest_irq; | ||
| 498 | __u32 flags; | ||
| 499 | }; | ||
| 500 | |||
| 501 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) | ||
| 502 | |||
| 443 | #endif | 503 | #endif |
