From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joerg Roedel Subject: Re: [PATCH 1/2] userspace: fix module load errors with kernel 2.6.27 and DMAR enabled Date: Wed, 21 Jan 2009 19:12:53 +0100 Message-ID: <20090121181253.GA14021@amd.com> References: <1229349294-3656-1-git-send-email-joerg.roedel@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: kvm@vger.kernel.org To: Avi Kivity Return-path: Received: from outbound-wa4.frontbridge.com ([216.32.181.16]:3156 "EHLO WA4EHSOBE006.bigfish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754837AbZAUSNP convert rfc822-to-8bit (ORCPT ); Wed, 21 Jan 2009 13:13:15 -0500 Content-Disposition: inline In-Reply-To: <1229349294-3656-1-git-send-email-joerg.roedel@amd.com> Sender: kvm-owner@vger.kernel.org List-ID: Hi Avi, what about these patches? On Mon, Dec 15, 2008 at 02:54:53PM +0100, Joerg Roedel wrote: > Signed-off-by: Joerg Roedel > --- > configure | 7 +++++++ > kernel/x86/Kbuild | 2 ++ > kernel/x86/external-module-compat.h | 8 ++++++++ > kernel/x86/hack-module.awk | 2 ++ > 4 files changed, 19 insertions(+), 0 deletions(-) >=20 > diff --git a/configure b/configure > index 4e88961..f7c0534 100755 > --- a/configure > +++ b/configure > @@ -15,6 +15,7 @@ qemu_opts=3D() > cross_prefix=3D > arch=3D`uname -m` > target_exec=3D > +kvm_vtd_iommu=3D"n" > # don't use uname if kerneldir is set > no_uname=3D > depmod_version=3D > @@ -111,6 +112,11 @@ case $arch in > ;; > esac > =20 > +# test for IOMMU support in the kernel we build for > +if [ -f "$kernelsourcedir/virt/kvm/vtd.c" ]; then > + kvm_vtd_iommu=3D"y" > +fi > + > processor=3D${arch#*-} > arch=3D${arch%%-*} > =20 > @@ -170,4 +176,5 @@ EOF > =20 > cat < kernel/config.kbuild > EXT_CONFIG_KVM_TRACE=3D$kvm_trace > +KVM_USE_VTD_IOMMU=3D$kvm_vtd_iommu > EOF > diff --git a/kernel/x86/Kbuild b/kernel/x86/Kbuild > index c4723b1..faee1e7 100644 > --- a/kernel/x86/Kbuild > +++ b/kernel/x86/Kbuild > @@ -10,8 +10,10 @@ ifeq ($(EXT_CONFIG_KVM_TRACE),y) > kvm-objs +=3D kvm_trace.o > endif > ifeq ($(CONFIG_DMAR),y) > +ifeq ($(KVM_USE_VTD_IOMMU),y) > kvm-objs +=3D vtd.o > endif > +endif > kvm-intel-objs :=3D vmx.o vmx-debug.o ../external-module-compat.o > kvm-amd-objs :=3D svm.o ../external-module-compat.o > =20 > diff --git a/kernel/x86/external-module-compat.h b/kernel/x86/externa= l-module-compat.h > index b5e11e2..ac78b81 100644 > --- a/kernel/x86/external-module-compat.h > +++ b/kernel/x86/external-module-compat.h > @@ -335,6 +335,14 @@ struct kvm_desc_ptr { > #define FEATURE_CONTROL_VMXON_ENABLED (1<<2) > #endif > =20 > +#if defined(CONFIG_DMAR) || defined(CONFIG_IOMMU_API) > +#define KVM_IOMMU_SUPPORT 1 > +#endif > + > +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) > +#undef KVM_IOMMU_SUPPORT > +#endif > + > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) > =20 > struct mtrr_var_range { > diff --git a/kernel/x86/hack-module.awk b/kernel/x86/hack-module.awk > index 2ad0951..8d2806f 100644 > --- a/kernel/x86/hack-module.awk > +++ b/kernel/x86/hack-module.awk > @@ -75,6 +75,8 @@ BEGIN { split("INIT_WORK tsc_khz desc_struct ldttss= _desc64 desc_ptr " \ > =20 > /\kvm_.*_fops\.owner =3D module;/ { $0 =3D "IF_ANON_INODES_DOES_REFC= OUNTS(" $0 ")" } > =20 > +{sub(/CONFIG_DMAR/, "KVM_IOMMU_SUPPORT");} > + > { print } > =20 > /kvm_x86_ops->run/ { > --=20 > 1.5.6.4 >=20 --=20 | Advanced Micro Devices GmbH Operating | Karl-Hammerschmidt-Str. 34, 85609 Dornach bei M=C3=BCnchen System |=20 Research | Gesch=C3=A4ftsf=C3=BChrer: Jochen Polster, Thomas M. McCoy= , Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis M=C3=BCnchen | Registergericht M=C3=BCnchen, HRB Nr. 43632