From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8OFG-0007D3-Ew for qemu-devel@nongnu.org; Thu, 02 Jun 2016 04:44:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8OFA-0007Tx-G4 for qemu-devel@nongnu.org; Thu, 02 Jun 2016 04:44:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50717) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8OFA-0007Tq-A8 for qemu-devel@nongnu.org; Thu, 02 Jun 2016 04:44:44 -0400 Date: Thu, 2 Jun 2016 16:44:39 +0800 From: Peter Xu Message-ID: <20160602084439.GB3477@pxdev.xzpeter.org> References: <1463847590-22782-1-git-send-email-bd.aviv@gmail.com> <1463847590-22782-2-git-send-email-bd.aviv@gmail.com> <57408FDB.1010000@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <57408FDB.1010000@web.de> Subject: Re: [Qemu-devel] [PATCH v3 1/3] IOMMU: add VTD_CAP_CM to vIOMMU capability exposed to guest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: "Aviv B.D" , qemu-devel@nongnu.org, Alex Williamson , "Michael S. Tsirkin" On Sat, May 21, 2016 at 06:42:03PM +0200, Jan Kiszka wrote: > On 2016-05-21 18:19, Aviv B.D wrote: > > From: "Aviv Ben-David" > > > > This flag tells the guest to invalidate tlb cache also after unmap operations. > > > > Signed-off-by: Aviv Ben-David > > --- > > hw/i386/intel_iommu.c | 3 ++- > > hw/i386/intel_iommu_internal.h | 1 + > > 2 files changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c > > index 347718f..1af8da8 100644 > > --- a/hw/i386/intel_iommu.c > > +++ b/hw/i386/intel_iommu.c > > @@ -1949,7 +1949,8 @@ static void vtd_init(IntelIOMMUState *s) > > s->iq_last_desc_type = VTD_INV_DESC_NONE; > > s->next_frcd_reg = 0; > > s->cap = VTD_CAP_FRO | VTD_CAP_NFR | VTD_CAP_ND | VTD_CAP_MGAW | > > - VTD_CAP_SAGAW | VTD_CAP_MAMV | VTD_CAP_PSI | VTD_CAP_SLLPS; > > + VTD_CAP_SAGAW | VTD_CAP_MAMV | VTD_CAP_PSI | VTD_CAP_SLLPS | > > + VTD_CAP_CM; > > Again, needs to be optional because not all guests will support it or > behave differently when it's set (I've one that refuses to work). There should be more than one way to make it optional. Which is better? What I can think of: (Assume we have Marcel's "-device intel_iommu" working already) 1. Let the CM bit optional, or say, we need to specify something like "-device intel_iommu,cmbit=on" or we will disable CM bit. If we have CM disabled but with VFIO device, let QEMU raise error. 2. We automatically detect whether we need CM bit. E.g., if we have VFIO and vIOMMU both enabled, we automatically set the bit. Another case is maybe we would in the future support nested vIOMMU? If so, we can do the same thing for the nested feature. -- peterx