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