From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [Qemu-devel] [PATCH 2 of 5] add can_dma/post_dma for direct IO Date: Fri, 12 Dec 2008 13:18:43 -0600 Message-ID: <4942B913.8010306@codemonkey.ws> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, chrisw@redhat.com, avi@redhat.com, Gerd Hoffmann , kvm@vger.kernel.org To: Blue Swirl Return-path: Received: from yx-out-2324.google.com ([74.125.44.30]:54179 "EHLO yx-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751808AbYLLTSs (ORCPT ); Fri, 12 Dec 2008 14:18:48 -0500 Received: by yx-out-2324.google.com with SMTP id 8so747276yxm.1 for ; Fri, 12 Dec 2008 11:18:46 -0800 (PST) In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: Blue Swirl wrote: > On 12/12/08, Andrea Arcangeli wrote: > >> From: Andrea Arcangeli >> >> Add can_dma and post_dma methods needed before/after direct IO to guest >> physical memory. >> >> Signed-off-by: Andrea Arcangeli >> > > >> + /* nonlinear range */ >> + if (pd_first != pd) >> + return NULL; >> > > In my tests on Sparc32, IOMMU can map a linear DVMA range to several > non-linear physical pages, so this case should be handled correctly. > I think we should go back to Fabrice's earliest suggestion here. We should just have a simple map/unmap lock/unlock API for physical memory. That should be the base API IMHO. As long the map function goes from guest physical => host virtual, it can work for everything we care about. This is orthogonal to an API dealing with scatter/gather lists and translation to and from them. Regards, Anthony Liguori