aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86
diff options
context:
space:
mode:
authorBen-Ami Yassour <benami@il.ibm.com>2008-09-13 20:48:28 -0400
committerAvi Kivity <avi@redhat.com>2008-10-15 08:25:04 -0400
commit62c476c7c7f25a5b245b9902a935636e6316e58c (patch)
tree6584591c7c345fcbb3c6d437203dc7f4a628573a /include/asm-x86
parent387179464257921eb9aa3d15cc3ff194f6945a7c (diff)
KVM: Device Assignment with VT-d
Based on a patch by: Kay, Allen M <allen.m.kay@intel.com> This patch enables PCI device assignment based on VT-d support. When a device is assigned to the guest, the guest memory is pinned and the mapping is updated in the VT-d IOMMU. [Amit: Expose KVM_CAP_IOMMU so we can check if an IOMMU is present and also control enable/disable from userspace] Signed-off-by: Kay, Allen M <allen.m.kay@intel.com> Signed-off-by: Weidong Han <weidong.han@intel.com> Signed-off-by: Ben-Ami Yassour <benami@il.ibm.com> Signed-off-by: Amit Shah <amit.shah@qumranet.com> Acked-by: Mark Gross <mgross@linux.intel.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'include/asm-x86')
-rw-r--r--include/asm-x86/kvm_host.h23
1 files changed, 3 insertions, 20 deletions
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
index 68a3ac13afce..805629c0f15f 100644
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -331,26 +331,6 @@ struct kvm_mem_alias {
331 gfn_t target_gfn; 331 gfn_t target_gfn;
332}; 332};
333 333
334struct kvm_irq_ack_notifier {
335 struct hlist_node link;
336 unsigned gsi;
337 void (*irq_acked)(struct kvm_irq_ack_notifier *kian);
338};
339
340struct kvm_assigned_dev_kernel {
341 struct kvm_irq_ack_notifier ack_notifier;
342 struct work_struct interrupt_work;
343 struct list_head list;
344 int assigned_dev_id;
345 int host_busnr;
346 int host_devfn;
347 int host_irq;
348 int guest_irq;
349 int irq_requested;
350 struct pci_dev *dev;
351 struct kvm *kvm;
352};
353
354struct kvm_arch{ 334struct kvm_arch{
355 int naliases; 335 int naliases;
356 struct kvm_mem_alias aliases[KVM_ALIAS_SLOTS]; 336 struct kvm_mem_alias aliases[KVM_ALIAS_SLOTS];
@@ -364,6 +344,7 @@ struct kvm_arch{
364 */ 344 */
365 struct list_head active_mmu_pages; 345 struct list_head active_mmu_pages;
366 struct list_head assigned_dev_head; 346 struct list_head assigned_dev_head;
347 struct dmar_domain *intel_iommu_domain;
367 struct kvm_pic *vpic; 348 struct kvm_pic *vpic;
368 struct kvm_ioapic *vioapic; 349 struct kvm_ioapic *vioapic;
369 struct kvm_pit *vpit; 350 struct kvm_pit *vpit;
@@ -514,6 +495,8 @@ int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
514int kvm_pv_mmu_op(struct kvm_vcpu *vcpu, unsigned long bytes, 495int kvm_pv_mmu_op(struct kvm_vcpu *vcpu, unsigned long bytes,
515 gpa_t addr, unsigned long *ret); 496 gpa_t addr, unsigned long *ret);
516 497
498int is_mmio_pfn(pfn_t pfn);
499
517extern bool tdp_enabled; 500extern bool tdp_enabled;
518 501
519enum emulation_result { 502enum emulation_result {