From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?gb2312?B?wfXP/r2o?=" Subject: [PATCH 3/3] KVM: pci passthrough un-page-aligned mmio device on machines w/o VT-d Date: Mon, 15 Dec 2008 23:01:23 +0800 Message-ID: <429353283.11759@nudt.edu.cn> Reply-To: "=?gb2312?B?wfXP/r2o?=" Content-Type: text/plain To: kvm@vger.kernel.org Return-path: Received: from [61.187.54.12] ([61.187.54.12]:42863 "HELO nudt.edu.cn" rhost-flags-FAIL-FAIL-OK-OK) by vger.kernel.org with SMTP id S1753649AbYLOPGN (ORCPT ); Mon, 15 Dec 2008 10:06:13 -0500 Sender: kvm-owner@vger.kernel.org List-ID: 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