From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25A5BC43382 for ; Wed, 26 Sep 2018 03:15:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A3F8320833 for ; Wed, 26 Sep 2018 03:15:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A3F8320833 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-pci-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726197AbeIZJZm (ORCPT ); Wed, 26 Sep 2018 05:25:42 -0400 Received: from mga09.intel.com ([134.134.136.24]:5410 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726229AbeIZJZm (ORCPT ); Wed, 26 Sep 2018 05:25:42 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Sep 2018 20:14:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,304,1534834800"; d="scan'208";a="89385468" Received: from allen-box.sh.intel.com (HELO [10.239.161.122]) ([10.239.161.122]) by fmsmga002.fm.intel.com with ESMTP; 25 Sep 2018 20:13:53 -0700 Cc: baolu.lu@linux.intel.com, "joro@8bytes.org" , "linux-pci@vger.kernel.org" , "jcrouse@codeaurora.org" , "alex.williamson@redhat.com" , "Jonathan.Cameron@huawei.com" , "jacob.jun.pan@linux.intel.com" , "christian.koenig@amd.com" , "eric.auger@redhat.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , Andrew Murray , Will Deacon , Robin Murphy , "ashok.raj@intel.com" , "xuzaibo@huawei.com" , "liguozhu@hisilicon.com" , "okaya@codeaurora.org" , "bharatku@xilinx.com" , "ilias.apalodimas@linaro.org" , "shunyong.yang@hxt-semitech.com" Subject: Re: [PATCH v3 03/10] iommu/sva: Manage process address spaces To: Jean-Philippe Brucker , "iommu@lists.linux-foundation.org" References: <20180920170046.20154-1-jean-philippe.brucker@arm.com> <20180920170046.20154-4-jean-philippe.brucker@arm.com> <09933fce-b959-32e1-b1f3-0d4389abf735@linux.intel.com> <5aff8dc0-9ce7-5018-e78e-770279681cbc@arm.com> From: Lu Baolu Message-ID: Date: Wed, 26 Sep 2018 11:12:22 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <5aff8dc0-9ce7-5018-e78e-770279681cbc@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Hi, On 09/25/2018 06:32 PM, Jean-Philippe Brucker wrote: > On 25/09/2018 04:15, Lu Baolu wrote: >>> +     /* If an io_mm already exists, use it */ >>> +     spin_lock(&iommu_sva_lock); >>> +     idr_for_each_entry(&iommu_pasid_idr, io_mm, i) { >> >> This might be problematic for vt-d (and other possible arch's which use >> PASID other than SVA). When vt-d iommu works in scalable mode, a PASID >> might be allocated for: >> >> (1) SVA >> (2) Device Assignable Interface (might be a mdev or directly managed >>      within a device driver). >> (3) SVA in VM guest >> (4) Device Assignable Interface in VM guest >> >> So we can't expect that an io_mm pointer was associated with each PASID. > > Yes as discussed on the previous series, we'll need to move the PASID > allocator outside of iommu-sva at some point, and even outside of > drivers/iommu since device driver might want to use the PASID allocator > without an IOMMU. > > To be usable by all consumers of PASIDs, that allocator will need the > same interface as IDR, so I don't think we have a problem here. I > haven't had time or need to write such allocator yet (and don't plan to > do it as part of this series), but I drafted an interface, that at least > fulfills the needs of SVA. I have a patch set for the global pasid allocator. It mostly matches your idea. I can send it out for comments later. Best regards, Lu Baolu > > * Single system-wide PASID space > * Multiple consumers, each associating their own structure to PASIDs. > Each consumer gets a token. > * Device drivers might want to use both SVA and private PASIDs for a > device at the same time. > * In my opinion "pasid" isn't the right name, "ioasid" would be better > but that's not important. > > typedef unsigned int pasid_t; > > /* Returns consumer token */ > void *pasid_get_consumer(); > void pasid_put_consumer(void *consumer); > > /* Returns pasid or invalid (pasid_t)(-1) */ > pasid_t pasid_alloc(void *consumer, pasid_t min, pasid_t max, > void *private); > void pasid_remove(pasid_t pasid); > > /* Iterate over PASIDs for this consumer. Func returns non-zero to stop > iterating */ > int pasid_for_each(void *consumer, void *iter_data, > int (*func)(void *iter_data, pasid_t pasid, > void *private)); > /* Returns priv data or NULL */ > void *pasid_find(void *consumer, pasid_t pasid); > > Thanks, > Jean > >> And this code might run into problem if the pasid is allocated for >> usages other than SVA. >> >> Best regards, >> Lu Baolu > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lu Baolu Subject: Re: [PATCH v3 03/10] iommu/sva: Manage process address spaces Date: Wed, 26 Sep 2018 11:12:22 +0800 Message-ID: References: <20180920170046.20154-1-jean-philippe.brucker@arm.com> <20180920170046.20154-4-jean-philippe.brucker@arm.com> <09933fce-b959-32e1-b1f3-0d4389abf735@linux.intel.com> <5aff8dc0-9ce7-5018-e78e-770279681cbc@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5aff8dc0-9ce7-5018-e78e-770279681cbc-5wv7dgnIgG8@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Jean-Philippe Brucker , "iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org" Cc: "kevin.tian-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org" , "ashok.raj-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org" , "linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "ilias.apalodimas-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org" , Will Deacon , "okaya-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org" , "alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org" , "liguozhu-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org" , Robin Murphy , "christian.koenig-5C7GfCeVMHo@public.gmane.org" List-Id: iommu@lists.linux-foundation.org SGksCgpPbiAwOS8yNS8yMDE4IDA2OjMyIFBNLCBKZWFuLVBoaWxpcHBlIEJydWNrZXIgd3JvdGU6 Cj4gT24gMjUvMDkvMjAxOCAwNDoxNSwgTHUgQmFvbHUgd3JvdGU6Cj4+PiArwqDCoMKgwqAgLyog SWYgYW4gaW9fbW0gYWxyZWFkeSBleGlzdHMsIHVzZSBpdCAqLwo+Pj4gK8KgwqDCoMKgIHNwaW5f bG9jaygmaW9tbXVfc3ZhX2xvY2spOwo+Pj4gK8KgwqDCoMKgIGlkcl9mb3JfZWFjaF9lbnRyeSgm aW9tbXVfcGFzaWRfaWRyLCBpb19tbSwgaSkgewo+Pgo+PiBUaGlzIG1pZ2h0IGJlIHByb2JsZW1h dGljIGZvciB2dC1kIChhbmQgb3RoZXIgcG9zc2libGUgYXJjaCdzIHdoaWNoIHVzZQo+PiBQQVNJ RCBvdGhlciB0aGFuIFNWQSkuIFdoZW4gdnQtZCBpb21tdSB3b3JrcyBpbiBzY2FsYWJsZSBtb2Rl LCBhIFBBU0lECj4+IG1pZ2h0IGJlIGFsbG9jYXRlZCBmb3I6Cj4+Cj4+ICgxKSBTVkEKPj4gKDIp IERldmljZSBBc3NpZ25hYmxlIEludGVyZmFjZSAobWlnaHQgYmUgYSBtZGV2IG9yIGRpcmVjdGx5 IG1hbmFnZWQKPj4gIMKgwqDCoMKgIHdpdGhpbiBhIGRldmljZSBkcml2ZXIpLgo+PiAoMykgU1ZB IGluIFZNIGd1ZXN0Cj4+ICg0KSBEZXZpY2UgQXNzaWduYWJsZSBJbnRlcmZhY2UgaW4gVk0gZ3Vl c3QKPj4KPj4gU28gd2UgY2FuJ3QgZXhwZWN0IHRoYXQgYW4gaW9fbW0gcG9pbnRlciB3YXMgYXNz b2NpYXRlZCB3aXRoIGVhY2ggUEFTSUQuCj4gCj4gWWVzIGFzIGRpc2N1c3NlZCBvbiB0aGUgcHJl dmlvdXMgc2VyaWVzLCB3ZSdsbCBuZWVkIHRvIG1vdmUgdGhlIFBBU0lECj4gYWxsb2NhdG9yIG91 dHNpZGUgb2YgaW9tbXUtc3ZhIGF0IHNvbWUgcG9pbnQsIGFuZCBldmVuIG91dHNpZGUgb2YKPiBk cml2ZXJzL2lvbW11IHNpbmNlIGRldmljZSBkcml2ZXIgbWlnaHQgd2FudCB0byB1c2UgdGhlIFBB U0lEIGFsbG9jYXRvcgo+IHdpdGhvdXQgYW4gSU9NTVUuCj4gCj4gVG8gYmUgdXNhYmxlIGJ5IGFs bCBjb25zdW1lcnMgb2YgUEFTSURzLCB0aGF0IGFsbG9jYXRvciB3aWxsIG5lZWQgdGhlCj4gc2Ft ZSBpbnRlcmZhY2UgYXMgSURSLCBzbyBJIGRvbid0IHRoaW5rIHdlIGhhdmUgYSBwcm9ibGVtIGhl cmUuIEkKPiBoYXZlbid0IGhhZCB0aW1lIG9yIG5lZWQgdG8gd3JpdGUgc3VjaCBhbGxvY2F0b3Ig eWV0IChhbmQgZG9uJ3QgcGxhbiB0bwo+IGRvIGl0IGFzIHBhcnQgb2YgdGhpcyBzZXJpZXMpLCBi dXQgSSBkcmFmdGVkIGFuIGludGVyZmFjZSwgdGhhdCBhdCBsZWFzdAo+IGZ1bGZpbGxzIHRoZSBu ZWVkcyBvZiBTVkEuCgpJIGhhdmUgYSBwYXRjaCBzZXQgZm9yIHRoZSBnbG9iYWwgcGFzaWQgYWxs b2NhdG9yLiBJdCBtb3N0bHkgbWF0Y2hlcwp5b3VyIGlkZWEuIEkgY2FuIHNlbmQgaXQgb3V0IGZv ciBjb21tZW50cyBsYXRlci4KCkJlc3QgcmVnYXJkcywKTHUgQmFvbHUKCj4gCj4gKiBTaW5nbGUg c3lzdGVtLXdpZGUgUEFTSUQgc3BhY2UKPiAqIE11bHRpcGxlIGNvbnN1bWVycywgZWFjaCBhc3Nv Y2lhdGluZyB0aGVpciBvd24gc3RydWN0dXJlIHRvIFBBU0lEcy4KPiAgICBFYWNoIGNvbnN1bWVy IGdldHMgYSB0b2tlbi4KPiAqIERldmljZSBkcml2ZXJzIG1pZ2h0IHdhbnQgdG8gdXNlIGJvdGgg U1ZBIGFuZCBwcml2YXRlIFBBU0lEcyBmb3IgYQo+ICAgIGRldmljZSBhdCB0aGUgc2FtZSB0aW1l Lgo+ICogSW4gbXkgb3BpbmlvbiAicGFzaWQiIGlzbid0IHRoZSByaWdodCBuYW1lLCAiaW9hc2lk IiB3b3VsZCBiZSBiZXR0ZXIKPiAgICBidXQgdGhhdCdzIG5vdCBpbXBvcnRhbnQuCj4gCj4gdHlw ZWRlZiB1bnNpZ25lZCBpbnQgcGFzaWRfdDsKPiAKPiAvKiBSZXR1cm5zIGNvbnN1bWVyIHRva2Vu ICovCj4gdm9pZCAqcGFzaWRfZ2V0X2NvbnN1bWVyKCk7Cj4gdm9pZCBwYXNpZF9wdXRfY29uc3Vt ZXIodm9pZCAqY29uc3VtZXIpOwo+IAo+IC8qIFJldHVybnMgcGFzaWQgb3IgaW52YWxpZCAocGFz aWRfdCkoLTEpICovCj4gcGFzaWRfdCBwYXNpZF9hbGxvYyh2b2lkICpjb25zdW1lciwgcGFzaWRf dCBtaW4sIHBhc2lkX3QgbWF4LAo+ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnByaXZhdGUp Owo+IHZvaWQgcGFzaWRfcmVtb3ZlKHBhc2lkX3QgcGFzaWQpOwo+IAo+IC8qIEl0ZXJhdGUgb3Zl ciBQQVNJRHMgZm9yIHRoaXMgY29uc3VtZXIuIEZ1bmMgcmV0dXJucyBub24temVybyB0byBzdG9w Cj4gaXRlcmF0aW5nICovCj4gaW50IHBhc2lkX2Zvcl9lYWNoKHZvaWQgKmNvbnN1bWVyLCB2b2lk ICppdGVyX2RhdGEsCj4gCQkgICBpbnQgKCpmdW5jKSh2b2lkICppdGVyX2RhdGEsIHBhc2lkX3Qg cGFzaWQsCj4gCQkJICAgICAgIHZvaWQgKnByaXZhdGUpKTsKPiAvKiBSZXR1cm5zIHByaXYgZGF0 YSBvciBOVUxMICovCj4gdm9pZCAqcGFzaWRfZmluZCh2b2lkICpjb25zdW1lciwgcGFzaWRfdCBw YXNpZCk7Cj4gCj4gVGhhbmtzLAo+IEplYW4KPiAKPj4gQW5kIHRoaXMgY29kZSBtaWdodCBydW4g aW50byBwcm9ibGVtIGlmIHRoZSBwYXNpZCBpcyBhbGxvY2F0ZWQgZm9yCj4+IHVzYWdlcyBvdGhl ciB0aGFuIFNWQS4KPj4KPj4gQmVzdCByZWdhcmRzLAo+PiBMdSBCYW9sdQo+IAo+IApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppb21tdSBtYWlsaW5nIGxp c3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZv dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vaW9tbXU=