Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp7719079ybi; Wed, 5 Jun 2019 23:57:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqxTBpdpLh+hXi32pwU96iAFvloI0c3JP0iXkdL/8nhGSygDZmQ0YYICPnT6vculeL321yck X-Received: by 2002:a17:90a:650c:: with SMTP id i12mr50092272pjj.44.1559804277141; Wed, 05 Jun 2019 23:57:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559804277; cv=none; d=google.com; s=arc-20160816; b=r+yfcueV/kUD8JsM0RYPtSbNqs4/7abjBb1WmArAbtsMLu4bqeoc2NgFU3920RAzw4 vVoWJR80lpIshwkUVg236yw2monx5HYLgOpYruRi6zzvZeG4/yUPvoXGKgsruMD7bHxw SEsXvqfM91QkIKOsJScz80cro72cn4+S4gpx/e+CFgRWHK17ZynRaeGjvwffj6D149+Y 1+9OlmtJdJe/hah9hr5T6i/TvuoGOZ3lSbQ6qwjgs9wEVnLEvu90wTPmgFE7UY1xDD0e veV2qxIZsFVM1vCSorizw6MJFHwHsUnr3T18x7P5X/9pib23iynBkurEn4NCjOyta8Sl faWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=yjWJSz2M7+cEUcngk4j/upxq4himoaPRQubmGnXcGQE=; b=AIPPw+xzJqBpdQtfzDkYfBmlRsjAQUIaQjNQOR8yGodfr7B/vee5W9IratwyemflEL sIh+o4fdy2SF1jONRm/zop1+OWxqzM9Ta5T9HgI3lixd+DUZTgqJazuI6X6dpoe0ZOaX /YPdvK7JMc9HDCc5SXs6mOAU6ThUTq4TwcRkxuzvJ8m+LyVwKNgKob+D/vXuLvCx3cKC Pzo1uYD/paxiuex5QutOclDnIb9jx0lvC6q6cJi1vKTYFyfPPhAW2N8csR3Ns5O6jZou AnFbLp65dduLZwchneKAwywlzxOmds+lp7WyJ7fKTo+La6P74/y9lsycNCSTjgo9JTw2 bcfw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b6si1099692pfa.36.2019.06.05.23.57.40; Wed, 05 Jun 2019 23:57:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726722AbfFFGyu convert rfc822-to-8bit (ORCPT + 99 others); Thu, 6 Jun 2019 02:54:50 -0400 Received: from mga18.intel.com ([134.134.136.126]:41988 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725766AbfFFGyu (ORCPT ); Thu, 6 Jun 2019 02:54:50 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2019 23:54:49 -0700 X-ExtLoop1: 1 Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga007.fm.intel.com with ESMTP; 05 Jun 2019 23:54:49 -0700 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 5 Jun 2019 23:54:49 -0700 Received: from shsmsx153.ccr.corp.intel.com (10.239.6.53) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 5 Jun 2019 23:54:48 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.137]) by SHSMSX153.ccr.corp.intel.com ([169.254.12.192]) with mapi id 14.03.0415.000; Thu, 6 Jun 2019 14:54:46 +0800 From: "Tian, Kevin" To: Jacob Pan CC: Jean-Philippe Brucker , "Raj, Ashok" , "alex.williamson@redhat.com" , "iommu@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "robin.murphy@arm.com" Subject: RE: [PATCH v2 2/4] iommu: Introduce device fault data Thread-Topic: [PATCH v2 2/4] iommu: Introduce device fault data Thread-Index: AQHVGhzpdp8RFw2/OU64MEW+KDLfp6aJ93gAgALLAvCAAA3/AIABY4qw Date: Thu, 6 Jun 2019 06:54:46 +0000 Message-ID: References: <20190603145749.46347-1-jean-philippe.brucker@arm.com> <20190603145749.46347-3-jean-philippe.brucker@arm.com> <20190603150842.11070cfd@jacob-builder> <20190605103754.6d8830d7@jacob-builder> In-Reply-To: <20190605103754.6d8830d7@jacob-builder> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiM2NhYzQ0YmUtNjAzMC00OTBmLTg1NTgtZWMzMDM2YWVhYjQ0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRG5NZm1PSmJMUlIyalpCdWFITlVkb3o2ejdOUWp5Z0d5RXBoMVVtV0tjc1lFV21RU00wMXNmajFxZFJ6MkhSRSJ9 dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > From: Jacob Pan [mailto:jacob.jun.pan@linux.intel.com] > Sent: Thursday, June 6, 2019 1:38 AM > > On Wed, 5 Jun 2019 08:51:45 +0000 > "Tian, Kevin" wrote: > > > > From: Jacob Pan > > > Sent: Tuesday, June 4, 2019 6:09 AM > > > > > > On Mon, 3 Jun 2019 15:57:47 +0100 > > > Jean-Philippe Brucker wrote: > > > > > > > +/** > > > > + * struct iommu_fault_page_request - Page Request data > > > > + * @flags: encodes whether the corresponding fields are valid and > > > > whether this > > > > + * is the last page in group (IOMMU_FAULT_PAGE_REQUEST_* > > > > values) > > > > + * @pasid: Process Address Space ID > > > > + * @grpid: Page Request Group Index > > > > + * @perm: requested page permissions (IOMMU_FAULT_PERM_* > values) > > > > + * @addr: page address > > > > + * @private_data: device-specific private information > > > > + */ > > > > +struct iommu_fault_page_request { > > > > +#define IOMMU_FAULT_PAGE_REQUEST_PASID_VALID (1 << 0) > > > > +#define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1) > > > > +#define IOMMU_FAULT_PAGE_REQUEST_PRIV_DATA (1 << 2) > > > > + __u32 flags; > > > > + __u32 pasid; > > > > + __u32 grpid; > > > > + __u32 perm; > > > > + __u64 addr; > > > > + __u64 private_data[2]; > > > > +}; > > > > + > > > > > > Just a thought, for non-identity G-H PASID management. We could > > > pass on guest PASID in PRQ to save a lookup in QEMU. In this case, > > > QEMU allocate a GPASID for vIOMMU then a host PASID for pIOMMU. > > > QEMU has a G->H lookup. When PRQ comes in to the pIOMMU with > > > HPASID, IOMMU driver > > > can retrieve GPASID from the bind data then report to the guest via > > > VFIO. In this case QEMU does not need to do a H->G PASID lookup. > > > > > > Should we add a gpasid field here? or we can add a flag and field > > > later, up to you. > > > > > > > Can private_data serve this purpose? It's better not introducing > > gpasid awareness within host IOMMU driver. It is just a user-level > > data associated with a PASID when binding happens. Kernel doesn't > > care the actual meaning, simply record it and then return back to > > user space later upon device fault. Qemu interprets the meaning as > > gpasid in its own context. otherwise usages may use it for other > > purpose. > > > private_data was intended for device PRQ with private data, part of the > VT-d PRQ descriptor. For vSVA, we can withhold private_data in the host > then respond back when page response from the guest matches pending PRQ > with the data withheld. But for in-kernel PRQ reporting, private data > still might be passed on to any driver who wants to process the PRQ. So > we can't re-purpose it. sure. I just use it as one example to extend. > > But for in-kernel VDCM driver, it needs a lookup from guest PASID to > host PASID. I thought you wanted to have IOMMU driver provide such > service since the knowledge of H-G pasid can be established during > bind_gpasid time. In that sense, we _do_ have gpasid awareness. > yes, it makes sense. My original point is that IOMMU driver itself doesn't need to know the actual meaning of this field (then it may be reused for different purpose from gpasid), but you are right that mdev driver in kernel anyway needs to do G-H translation then explicitly defining it looks reasonable. Thanks Kevin