the KVM79 doesn't support the case of running pci passthrough on a machine w/o
VT-d. The following fixes it
---
diff -uNr kvm-79/kernel/x86/kvm_main.c kvm-79-fixed/kernel/x86/kvm_main.c
--- kvm-79/kernel/x86/kvm_main.c 2008-11-12 20:24:04.000000000 +0800
+++ kvm-79-fixed/kernel/x86/kvm_main.c 2008-12-12 15:56:19.000000000 +0800
@@ -1059,11 +1061,22 @@
 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn)
 {
  pfn_t pfn;
+ pfn_t reserved_top = 0;
 
  pfn = gfn_to_pfn(kvm, gfn);
  if (!kvm_is_mmio_pfn(pfn))
  return pfn_to_page(pfn);
 
+#ifdef CONFIG_RESERVE_PHYSICAL_START
+ reserved_top = __PHYSICAL_START>>PAGE_SHIFT;
+#else
+#warning   if you want to use pci passthrough w/o mechanisms like VT-d,
+#warning   please define CONFIG_RESERVE_PHYSICAL_START and __PHYSICAL_START, 
+#warning   when compiling your linux kernel!
+#endif
+ if(pfn < reserved_top)
+     return pfn_to_page(pfn);
+
  WARN_ON(kvm_is_mmio_pfn(pfn));
 
  get_page(bad_page);


Xiaojian Liu


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to