From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zachary Amsden Subject: Re: [PATCH 4/4] Hack around IOMMU changes Date: Tue, 25 May 2010 17:37:09 -1000 Message-ID: <4BFC9765.6070200@redhat.com> References: <4BFC974D.8010206@redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040803060709050009090706" To: kvm , Jan Kiszka , Avi Kivity , Gleb Natapov Return-path: Received: from mx1.redhat.com ([209.132.183.28]:36980 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759184Ab0EZDhL (ORCPT ); Tue, 25 May 2010 23:37:11 -0400 In-Reply-To: <4BFC974D.8010206@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------040803060709050009090706 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 05/25/2010 05:36 PM, Zachary Amsden wrote: > Not for the faint of heart, this patch subverts the code by > reassigning a local variable from a macro. This time, with patch. --------------040803060709050009090706 Content-Type: text/plain; name="0004-IOMMU-API-changed.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0004-IOMMU-API-changed.patch" >>From 97b9230f699aba1c5f47972032b2d4d935a83054 Mon Sep 17 00:00:00 2001 From: Zachary Amsden Date: Tue, 25 May 2010 17:17:32 -1000 Subject: [PATCH 4/5] IOMMU API changed Ugly, dirty, disease ridden fix for IOMMU changes; the module is now trying to use larger IOMMU intervals; deny it this, and stick to page size. This requires forcibly setting page_size variable through knowledge of the code. Yuck. If you have a better solution, implement it. Signed-off-by: Zachary Amsden --- external-module-compat-comm.h | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h index c5284e5..708019e 100644 --- a/external-module-compat-comm.h +++ b/external-module-compat-comm.h @@ -1128,3 +1128,15 @@ perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *cbs) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32) #define lockdep_is_held(m) (1) #endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34) +/* This is a dirty, nasty trick */ +#define iommu_map(domain, iova, paddr, gfp_order, prot) \ +({ \ + int _r = iommu_map_range(domain, iova, paddr, PAGE_SIZE, prot); \ + page_size = PAGE_SIZE; \ + _r; \ +}) +#define iommu_unmap(domain, iova, gfp_order) \ + (iommu_unmap_range(domain, iova, PAGE_SIZE),1) +#endif -- 1.7.0.1 --------------040803060709050009090706--