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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 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 C21C4C43331 for ; Fri, 27 Mar 2020 23:41:21 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 82CFB2071B for ; Fri, 27 Mar 2020 23:41:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 82CFB2071B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 49BEB2042B; Fri, 27 Mar 2020 23:41:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oWaHk97Svh9r; Fri, 27 Mar 2020 23:41:19 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id E6E7D2041C; Fri, 27 Mar 2020 23:41:19 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C8B7FC1D7C; Fri, 27 Mar 2020 23:41:19 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 3A78AC0177 for ; Fri, 27 Mar 2020 23:41:18 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 26FAC884BE for ; Fri, 27 Mar 2020 23:41:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uqtGNHRcN6j3 for ; Fri, 27 Mar 2020 23:41:17 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by whitealder.osuosl.org (Postfix) with ESMTPS id 11BFC88426 for ; Fri, 27 Mar 2020 23:41:17 +0000 (UTC) IronPort-SDR: ijMETLb5ROYgTuN2yUmEPfY7q0QL7BtqYSLpoC0qPe9BjFO7rbqNfcqByL0gvA5HK6rOPrrB0/ HSnAQ71g9WNQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2020 16:41:16 -0700 IronPort-SDR: ngS9OYOSHXIg2UyGp+aPeAjjJ6RVJ0VCTVig+06C2N9UpvTsLgX7gKcvmibvN+FFsWBSDHlhhj 0073ApSfWqEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,314,1580803200"; d="scan'208";a="251299291" Received: from jacob-builder.jf.intel.com (HELO jacob-builder) ([10.7.199.155]) by orsmga006.jf.intel.com with ESMTP; 27 Mar 2020 16:41:14 -0700 Date: Fri, 27 Mar 2020 16:47:01 -0700 From: Jacob Pan To: "Tian, Kevin" Subject: Re: [PATCH 10/10] iommu/vt-d: Register PASID notifier for status change Message-ID: <20200327164701.5cfee1c3@jacob-builder> In-Reply-To: References: <1585158931-1825-1-git-send-email-jacob.jun.pan@linux.intel.com> <1585158931-1825-11-git-send-email-jacob.jun.pan@linux.intel.com> Organization: OTC X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Cc: "Raj, Ashok" , Jean-Philippe Brucker , LKML , "iommu@lists.linux-foundation.org" , Alex Williamson , David Woodhouse , Jonathan Cameron X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gRnJpLCAyNyBNYXIgMjAyMCAxMDoyMjo1NyArMDAwMAoiVGlhbiwgS2V2aW4iIDxrZXZpbi50 aWFuQGludGVsLmNvbT4gd3JvdGU6Cgo+ID4gRnJvbTogSmFjb2IgUGFuCj4gPiBTZW50OiBUaHVy c2RheSwgTWFyY2ggMjYsIDIwMjAgMTo1NiBBTQo+ID4gCj4gPiBJbiBiYXJlIG1ldGFsIFNWQSwg SU9NTVUgZHJpdmVyIGVuc3VyZXMgdGhhdCBJT0FTSUQgZnJlZSBjYWxsCj4gPiBhbHdheXMgY29t ZXMgYWZ0ZXIgSU9BU0lEIHVuYmluZCBvcGVyYXRpb24uCj4gPiAKPiA+IEhvd2V2ZXIsIGZvciBn dWVzdCBTVkEgdGhlIHVuYmluZCBhbmQgZnJlZSBjYWxsIGNvbWUgZnJvbSB1c2VyIHNwYWNlCj4g PiB2aWEgVkZJTywgd2hpY2ggY291bGQgYmUgb3V0IG9mIG9yZGVyLiBUaGlzIHBhdGNoIHJlZ2lz dGVycyBhCj4gPiBub3RpZmllciBibG9jayBpbiBjYXNlIElPQVNJRCBmcmVlKCkgY29tZXMgYmVm b3JlIHVuYmluZCBzdWNoIHRoYXQKPiA+IFZULWQgZHJpdmVyIGNhbiB0YWtlIGFjdGlvbiB0byBj bGVhbiB1cCBQQVNJRCBjb250ZXh0IGFuZCBkYXRhLiAgCj4gCj4gY2xlYXJseSB0aGUgcGF0Y2gg aW5jbHVkZXMgbW9yZSB0aGFuIGFib3ZlIHVzYWdlLiBJdCBhbHNvIGhhbmRsZXMgdGhlCj4gYmlu ZCB1c2FnZSB0byBub3RpZnkgS1ZNIGZvciBzZXR0aW5nIFBBU0lEIHRyYW5zbGF0aW9uIHRhYmxl Lgo+IAo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMaXUgWWkgTCA8eWkubC5saXVAaW50ZWwuY29t Pgo+ID4gU2lnbmVkLW9mZi1ieTogSmFjb2IgUGFuIDxqYWNvYi5qdW4ucGFuQGxpbnV4LmludGVs LmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvaW9tbXUvaW50ZWwtc3ZtLmMgICB8IDY4Cj4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ICBpbmNsdWRl L2xpbnV4L2ludGVsLWlvbW11LmggfCAgMSArCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lv bW11L2ludGVsLXN2bS5jIGIvZHJpdmVycy9pb21tdS9pbnRlbC1zdm0uYwo+ID4gaW5kZXggZjUx MTg1NWQxODdiLi43NzlkZDJjNmY5ZTEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2lvbW11L2lu dGVsLXN2bS5jCj4gPiArKysgYi9kcml2ZXJzL2lvbW11L2ludGVsLXN2bS5jCj4gPiBAQCAtMjMs NiArMjMsNyBAQAo+ID4gICNpbmNsdWRlICJpbnRlbC1wYXNpZC5oIgo+ID4gCj4gPiAgc3RhdGlj IGlycXJldHVybl90IHBycV9ldmVudF90aHJlYWQoaW50IGlycSwgdm9pZCAqZCk7Cj4gPiArc3Rh dGljIERFRklORV9NVVRFWChwYXNpZF9tdXRleCk7Cj4gPiAKPiA+ICAjZGVmaW5lIFBSUV9PUkRF UiAwCj4gPiAKPiA+IEBAIC05Miw2ICs5Myw2NSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxf c3ZtX2NhcGFibGUoc3RydWN0Cj4gPiBpbnRlbF9pb21tdSAqaW9tbXUpCj4gPiAgCXJldHVybiBp b21tdS0+ZmxhZ3MgJiBWVERfRkxBR19TVk1fQ0FQQUJMRTsKPiA+ICB9Cj4gPiAKPiA+ICsjZGVm aW5lIHBhc2lkX2xvY2tfaGVsZCgpIGxvY2tfaXNfaGVsZCgmcGFzaWRfbXV0ZXguZGVwX21hcCkK PiA+ICsKPiA+ICtzdGF0aWMgaW50IHBhc2lkX3N0YXR1c19jaGFuZ2Uoc3RydWN0IG5vdGlmaWVy X2Jsb2NrICpuYiwKPiA+ICsJCQkJdW5zaWduZWQgbG9uZyBjb2RlLCB2b2lkICpkYXRhKQo+ID4g K3sKPiA+ICsJc3RydWN0IGlvYXNpZF9uYl9hcmdzICphcmdzID0gKHN0cnVjdCBpb2FzaWRfbmJf YXJncwo+ID4gKilkYXRhOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc3ZtX2RldiAqc2RldjsKPiA+ICsJ c3RydWN0IGludGVsX3N2bSAqc3ZtOwo+ID4gKwlpbnQgcmV0ID0gTk9USUZZX0RPTkU7Cj4gPiAr Cj4gPiArCWlmIChjb2RlID09IElPQVNJRF9GUkVFKSB7Cj4gPiArCQkvKgo+ID4gKwkJICogVW5i aW5kIGFsbCBkZXZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFBBU0lECj4gPiB3aGljaCBpcwo+ ID4gKwkJICogYmVpbmcgZnJlZWQgYnkgb3RoZXIgdXNlcnMgc3VjaCBhcyBWRklPLgo+ID4gKwkJ ICovCj4gPiArCQltdXRleF9sb2NrKCZwYXNpZF9tdXRleCk7Cj4gPiArCQlzdm0gPSBpb2FzaWRf ZmluZChJTlZBTElEX0lPQVNJRF9TRVQsIGFyZ3MtPmlkLAo+ID4gTlVMTCk7Cj4gPiArCQlpZiAo IXN2bSB8fCAhc3ZtLT5pb21tdSkKPiA+ICsJCQlnb3RvIGRvbmVfdW5sb2NrOyAgCj4gCj4gc2hv dWxkIHdlIHRyZWF0ICFzdm0tPmlvbW11IGFzIGFuIGVycm9yIGNvbmRpdGlvbj8gaWYgbm90LCBk byB5b3UgaGF2ZQo+IGFuIGV4YW1wbGUgd2hlbiBpdCBtYXkgb2NjdXIgaW4gbm9ybWFsIHNpdHVh dGlvbj8KPiAKUmlnaHQsIHNob3VsZCBiZSBhbiBlcnJvci4gSW5pdGlhbGx5LCB1bmJpbmQgY291 bGQgcmV0cmlldmUgaW9tbXUgZnJvbQpzdHJ1Y3QgZGV2aWNlLCBidXQgd2l0aCBub3RpZmllciB3 ZSBoYXZlIHRvIHNldCBzdm0tPmlvbW11IGFsbCB0aGUgdGltZS4KCj4gPiArCj4gPiArCQlpZiAo SVNfRVJSKHN2bSkpIHsKPiA+ICsJCQlyZXQgPSBOT1RJRllfQkFEOwo+ID4gKwkJCWdvdG8gZG9u ZV91bmxvY2s7Cj4gPiArCQl9ICAKPiAKPiBzdm0tPmlvbW11IHNob3VsZCBiZSByZWZlcmVuY2Vk IGFmdGVyIElTX0VSUiBjaGVjawo+IApHb29kIHBvaW50LCB3aWxsIG1vdmUgdXAuCj4gPiArCj4g PiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShzZGV2LCAmc3ZtLT5kZXZzLCBsaXN0LAo+ID4g cGFzaWRfbG9ja19oZWxkKCkpIHsKPiA+ICsJCQkvKiBEb2VzIG5vdCBwb2lzb24gZm9yd2FyZCBw b2ludGVyICovCj4gPiArCQkJbGlzdF9kZWxfcmN1KCZzZGV2LT5saXN0KTsKPiA+ICsJCQlpbnRl bF9wYXNpZF90ZWFyX2Rvd25fZW50cnkoc3ZtLT5pb21tdSwKPiA+IHNkZXYtICAKPiA+ID5kZXYs ICAKPiA+ICsJCQkJCQkgICAgc3ZtLT5wYXNpZCk7Cj4gPiArCQkJa2ZyZWVfcmN1KHNkZXYsIHJj dSk7Cj4gPiArCj4gPiArCQkJLyoKPiA+ICsJCQkgKiBGcmVlIGJlZm9yZSB1bmJpbmQgb25seSBo YXBwZW5zIHdpdGgKPiA+IGd1ZXN0IHVzYWdlZAo+ID4gKwkJCSAqIGhvc3QgUEFTSURzLiBJT0FT SUQgZnJlZSB3aWxsIGRldGFjaAo+ID4gcHJpdmF0ZSBkYXRhCj4gPiArCQkJICogYW5kIGZyZWUg dGhlIElPQVNJRCBlbnRyeS4gIAo+IAo+ICJndWVzdCB1c2FnZWQgaG9zdCBQQVNJRHMiPwo+IApJ IG1lYW4gVk0gdXNlZCBQQVNJRCwgd2lsbCBjaGFuZ2UgdG8KLyoKICogRnJlZSBiZWZvcmUgdW5i aW5kIG9ubHkgaGFwcGVucyB3aXRoIFBBU0lEcyB1c2VkCiAqIGJ5IFZNLiBJT0FTSUQgZnJlZSB3 aWxsIGRldGFjaCBwcml2YXRlIGRhdGEKICogYW5kIGZyZWUgdGhlIElPQVNJRCBlbnRyeS4KICov Cgo+ID4gKwkJCSAqLwo+ID4gKwkJCWlmIChsaXN0X2VtcHR5KCZzdm0tPmRldnMpKQo+ID4gKwkJ CQlrZnJlZShzdm0pOwo+ID4gKwkJfQo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZwYXNpZF9tdXRleCk7 Cj4gPiArCj4gPiArCQlyZXR1cm4gTk9USUZZX09LOwo+ID4gKwl9Cj4gPiArCj4gPiArZG9uZV91 bmxvY2s6Cj4gPiArCW11dGV4X3VubG9jaygmcGFzaWRfbXV0ZXgpOwo+ID4gKwlyZXR1cm4gcmV0 Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBhc2lkX25i ID0gewo+ID4gKwkJLm5vdGlmaWVyX2NhbGwgPSBwYXNpZF9zdGF0dXNfY2hhbmdlLAo+ID4gK307 Cj4gPiArCj4gPiArdm9pZCBpbnRlbF9zdm1fYWRkX3Bhc2lkX25vdGlmaWVyKHZvaWQpCj4gPiAr ewo+ID4gKwlpb2FzaWRfYWRkX25vdGlmaWVyKCZwYXNpZF9uYik7Cj4gPiArfQo+ID4gKwo+ID4g IHZvaWQgaW50ZWxfc3ZtX2NoZWNrKHN0cnVjdCBpbnRlbF9pb21tdSAqaW9tbXUpCj4gPiAgewo+ ID4gIAlpZiAoIXBhc2lkX3N1cHBvcnRlZChpb21tdSkpCj4gPiBAQCAtMjE5LDcgKzI3OSw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcwo+ID4gaW50ZWxfbW11b3BzID0g ewo+ID4gIAkuaW52YWxpZGF0ZV9yYW5nZSA9IGludGVsX2ludmFsaWRhdGVfcmFuZ2UsCj4gPiAg fTsKPiA+IAo+ID4gLXN0YXRpYyBERUZJTkVfTVVURVgocGFzaWRfbXV0ZXgpOwo+ID4gIHN0YXRp YyBMSVNUX0hFQUQoZ2xvYmFsX3N2bV9saXN0KTsKPiA+IAo+ID4gICNkZWZpbmUgZm9yX2VhY2hf c3ZtX2RldihzZGV2LCBzdm0sIGQpCQkJXAo+ID4gQEAgLTMxOSw2ICszNzgsNyBAQCBpbnQgaW50 ZWxfc3ZtX2JpbmRfZ3Bhc2lkKHN0cnVjdCBpb21tdV9kb21haW4KPiA+ICpkb21haW4sCj4gPiAg CQkJc3ZtLT5ncGFzaWQgPSBkYXRhLT5ncGFzaWQ7Cj4gPiAgCQkJc3ZtLT5mbGFncyB8PSBTVk1f RkxBR19HVUVTVF9QQVNJRDsKPiA+ICAJCX0KPiA+ICsJCXN2bS0+aW9tbXUgPSBpb21tdTsgIAo+ IAo+IGFoLCBpdCdzIGludGVyZXN0aW5nIHRvIHNlZSB3ZSBoYXZlIGEgZmllbGQgZGVmaW5lZCBi ZWZvcmUgYnV0IG5ldmVyCj4gdXNlZC4g8J+Yigo+IApUaGUgdW5iaW5kIGNhbGwgY2FuIHJldHJp ZXZlIGlvbW11IGZyb20gc3RydWN0IGRldmljZS4KCj4gPiAKPiA+ICAJCWlvYXNpZF9hdHRhY2hf ZGF0YShkYXRhLT5ocGFzaWQsIHN2bSk7Cj4gPiAgCQlJTklUX0xJU1RfSEVBRF9SQ1UoJnN2bS0+ ZGV2cyk7Cj4gPiBAQCAtMzgzLDYgKzQ0MywxMSBAQCBpbnQgaW50ZWxfc3ZtX2JpbmRfZ3Bhc2lk KHN0cnVjdCBpb21tdV9kb21haW4KPiA+ICpkb21haW4sCj4gPiAgCX0KPiA+ICAJc3ZtLT5mbGFn cyB8PSBTVk1fRkxBR19HVUVTVF9NT0RFOwo+ID4gCj4gPiArCS8qCj4gPiArCSAqIE5vdGlmeSBL Vk0gbmV3IGhvc3QtZ3Vlc3QgUEFTSUQgYmluZCBpcyByZWFkeS4gS1ZNIHdpbGwKPiA+IHNldCB1 cAo+ID4gKwkgKiBQQVNJRCB0cmFuc2xhdGlvbiB0YWJsZSB0byBzdXBwb3J0IGd1ZXN0IEVOUUNN RC4KPiA+ICsJICovICAKPiAKPiBzaG91bGQgdGFrZSBpdCBhcyBhbiBleGFtcGxlIGluc3RlYWQg b2YgdGhlIG9ubHkgcG9zc2libGUgdXNhZ2UuCj4gClRydWUsIHdlIGRvbjt0IGtub3cgd2hvIGlz IGdldHRpbmcgbm90aWZpZWQuCgo+ID4gKwlpb2FzaWRfbm90aWZ5KGRhdGEtPmhwYXNpZCwgSU9B U0lEX0JJTkQpOwo+ID4gIAlpbml0X3JjdV9oZWFkKCZzZGV2LT5yY3UpOwo+ID4gIAlsaXN0X2Fk ZF9yY3UoJnNkZXYtPmxpc3QsICZzdm0tPmRldnMpOwo+ID4gICBvdXQ6Cj4gPiBAQCAtNDQwLDYg KzUwNSw3IEBAIGludCBpbnRlbF9zdm1fdW5iaW5kX2dwYXNpZChzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gPiBpbnQgcGFzaWQpCj4gPiAgCQkJCSAqIHVzZWQgYnkgYW5vdGhlci4KPiA+ICAJCQkJICov Cj4gPiAgCQkJCWlvYXNpZF9hdHRhY2hfZGF0YShwYXNpZCwgTlVMTCk7Cj4gPiArCQkJCWlvYXNp ZF9ub3RpZnkocGFzaWQsCj4gPiBJT0FTSURfVU5CSU5EKTsga2ZyZWUoc3ZtKTsKPiA+ICAJCQl9 Cj4gPiAgCQl9Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbnRlbC1pb21tdS5oCj4g PiBiL2luY2x1ZGUvbGludXgvaW50ZWwtaW9tbXUuaCBpbmRleCBmODUwNGE5ODA5ODEuLjY0Nzk5 MDY3ZWE1OAo+ID4gMTAwNjQ0IC0tLSBhL2luY2x1ZGUvbGludXgvaW50ZWwtaW9tbXUuaAo+ID4g KysrIGIvaW5jbHVkZS9saW51eC9pbnRlbC1pb21tdS5oCj4gPiBAQCAtNzA4LDYgKzcwOCw3IEBA IGV4dGVybiBzdHJ1Y3QgaW9tbXVfc3ZhICoKPiA+ICBpbnRlbF9zdm1fYmluZChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB2b2lkCj4gPiAqZHJ2ZGF0YSk7IGV4dGVy biB2b2lkIGludGVsX3N2bV91bmJpbmQoc3RydWN0IGlvbW11X3N2YSAqaGFuZGxlKTsKPiA+ICBl eHRlcm4gaW50IGludGVsX3N2bV9nZXRfcGFzaWQoc3RydWN0IGlvbW11X3N2YSAqaGFuZGxlKTsK PiA+ICtleHRlcm4gdm9pZCBpbnRlbF9zdm1fYWRkX3Bhc2lkX25vdGlmaWVyKHZvaWQpOwo+ID4g Cj4gPiAgc3RydWN0IHN2bV9kZXZfb3BzOwo+ID4gCj4gPiAtLQo+ID4gMi43LjQKPiA+IAo+ID4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGlvbW11 IG1haWxpbmcgbGlzdAo+ID4gaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKPiA+IGh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11ICAK CltKYWNvYiBQYW5dCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpo dHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9pb21tdQ== 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 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 BC21AC43331 for ; Fri, 27 Mar 2020 23:41:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8D26120717 for ; Fri, 27 Mar 2020 23:41:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726340AbgC0XlR convert rfc822-to-8bit (ORCPT ); Fri, 27 Mar 2020 19:41:17 -0400 Received: from mga18.intel.com ([134.134.136.126]:3082 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726071AbgC0XlR (ORCPT ); Fri, 27 Mar 2020 19:41:17 -0400 IronPort-SDR: pyk7PQTRAfD7snv26tplXpu+1mEK5kivfDWNhceigNtVnNsh7GG+zrDWjSwC2PaADTGuUC1xB+ JB91B/utX4rw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2020 16:41:16 -0700 IronPort-SDR: ngS9OYOSHXIg2UyGp+aPeAjjJ6RVJ0VCTVig+06C2N9UpvTsLgX7gKcvmibvN+FFsWBSDHlhhj 0073ApSfWqEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,314,1580803200"; d="scan'208";a="251299291" Received: from jacob-builder.jf.intel.com (HELO jacob-builder) ([10.7.199.155]) by orsmga006.jf.intel.com with ESMTP; 27 Mar 2020 16:41:14 -0700 Date: Fri, 27 Mar 2020 16:47:01 -0700 From: Jacob Pan To: "Tian, Kevin" Cc: Joerg Roedel , Alex Williamson , Lu Baolu , "iommu@lists.linux-foundation.org" , LKML , David Woodhouse , Jean-Philippe Brucker , "Raj, Ashok" , Jonathan Cameron , jacob.jun.pan@linux.intel.com Subject: Re: [PATCH 10/10] iommu/vt-d: Register PASID notifier for status change Message-ID: <20200327164701.5cfee1c3@jacob-builder> In-Reply-To: References: <1585158931-1825-1-git-send-email-jacob.jun.pan@linux.intel.com> <1585158931-1825-11-git-send-email-jacob.jun.pan@linux.intel.com> Organization: OTC X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 27 Mar 2020 10:22:57 +0000 "Tian, Kevin" wrote: > > From: Jacob Pan > > Sent: Thursday, March 26, 2020 1:56 AM > > > > In bare metal SVA, IOMMU driver ensures that IOASID free call > > always comes after IOASID unbind operation. > > > > However, for guest SVA the unbind and free call come from user space > > via VFIO, which could be out of order. This patch registers a > > notifier block in case IOASID free() comes before unbind such that > > VT-d driver can take action to clean up PASID context and data. > > clearly the patch includes more than above usage. It also handles the > bind usage to notify KVM for setting PASID translation table. > > > > > Signed-off-by: Liu Yi L > > Signed-off-by: Jacob Pan > > --- > > drivers/iommu/intel-svm.c | 68 > > ++++++++++++++++++++++++++++++++++++++++++++- > > include/linux/intel-iommu.h | 1 + > > 2 files changed, 68 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c > > index f511855d187b..779dd2c6f9e1 100644 > > --- a/drivers/iommu/intel-svm.c > > +++ b/drivers/iommu/intel-svm.c > > @@ -23,6 +23,7 @@ > > #include "intel-pasid.h" > > > > static irqreturn_t prq_event_thread(int irq, void *d); > > +static DEFINE_MUTEX(pasid_mutex); > > > > #define PRQ_ORDER 0 > > > > @@ -92,6 +93,65 @@ static inline bool intel_svm_capable(struct > > intel_iommu *iommu) > > return iommu->flags & VTD_FLAG_SVM_CAPABLE; > > } > > > > +#define pasid_lock_held() lock_is_held(&pasid_mutex.dep_map) > > + > > +static int pasid_status_change(struct notifier_block *nb, > > + unsigned long code, void *data) > > +{ > > + struct ioasid_nb_args *args = (struct ioasid_nb_args > > *)data; > > + struct intel_svm_dev *sdev; > > + struct intel_svm *svm; > > + int ret = NOTIFY_DONE; > > + > > + if (code == IOASID_FREE) { > > + /* > > + * Unbind all devices associated with this PASID > > which is > > + * being freed by other users such as VFIO. > > + */ > > + mutex_lock(&pasid_mutex); > > + svm = ioasid_find(INVALID_IOASID_SET, args->id, > > NULL); > > + if (!svm || !svm->iommu) > > + goto done_unlock; > > should we treat !svm->iommu as an error condition? if not, do you have > an example when it may occur in normal situation? > Right, should be an error. Initially, unbind could retrieve iommu from struct device, but with notifier we have to set svm->iommu all the time. > > + > > + if (IS_ERR(svm)) { > > + ret = NOTIFY_BAD; > > + goto done_unlock; > > + } > > svm->iommu should be referenced after IS_ERR check > Good point, will move up. > > + > > + list_for_each_entry_rcu(sdev, &svm->devs, list, > > pasid_lock_held()) { > > + /* Does not poison forward pointer */ > > + list_del_rcu(&sdev->list); > > + intel_pasid_tear_down_entry(svm->iommu, > > sdev- > > >dev, > > + svm->pasid); > > + kfree_rcu(sdev, rcu); > > + > > + /* > > + * Free before unbind only happens with > > guest usaged > > + * host PASIDs. IOASID free will detach > > private data > > + * and free the IOASID entry. > > "guest usaged host PASIDs"? > I mean VM used PASID, will change to /* * Free before unbind only happens with PASIDs used * by VM. IOASID free will detach private data * and free the IOASID entry. */ > > + */ > > + if (list_empty(&svm->devs)) > > + kfree(svm); > > + } > > + mutex_unlock(&pasid_mutex); > > + > > + return NOTIFY_OK; > > + } > > + > > +done_unlock: > > + mutex_unlock(&pasid_mutex); > > + return ret; > > +} > > + > > +static struct notifier_block pasid_nb = { > > + .notifier_call = pasid_status_change, > > +}; > > + > > +void intel_svm_add_pasid_notifier(void) > > +{ > > + ioasid_add_notifier(&pasid_nb); > > +} > > + > > void intel_svm_check(struct intel_iommu *iommu) > > { > > if (!pasid_supported(iommu)) > > @@ -219,7 +279,6 @@ static const struct mmu_notifier_ops > > intel_mmuops = { > > .invalidate_range = intel_invalidate_range, > > }; > > > > -static DEFINE_MUTEX(pasid_mutex); > > static LIST_HEAD(global_svm_list); > > > > #define for_each_svm_dev(sdev, svm, d) \ > > @@ -319,6 +378,7 @@ int intel_svm_bind_gpasid(struct iommu_domain > > *domain, > > svm->gpasid = data->gpasid; > > svm->flags |= SVM_FLAG_GUEST_PASID; > > } > > + svm->iommu = iommu; > > ah, it's interesting to see we have a field defined before but never > used. 😊 > The unbind call can retrieve iommu from struct device. > > > > ioasid_attach_data(data->hpasid, svm); > > INIT_LIST_HEAD_RCU(&svm->devs); > > @@ -383,6 +443,11 @@ int intel_svm_bind_gpasid(struct iommu_domain > > *domain, > > } > > svm->flags |= SVM_FLAG_GUEST_MODE; > > > > + /* > > + * Notify KVM new host-guest PASID bind is ready. KVM will > > set up > > + * PASID translation table to support guest ENQCMD. > > + */ > > should take it as an example instead of the only possible usage. > True, we don;t know who is getting notified. > > + ioasid_notify(data->hpasid, IOASID_BIND); > > init_rcu_head(&sdev->rcu); > > list_add_rcu(&sdev->list, &svm->devs); > > out: > > @@ -440,6 +505,7 @@ int intel_svm_unbind_gpasid(struct device *dev, > > int pasid) > > * used by another. > > */ > > ioasid_attach_data(pasid, NULL); > > + ioasid_notify(pasid, > > IOASID_UNBIND); kfree(svm); > > } > > } > > diff --git a/include/linux/intel-iommu.h > > b/include/linux/intel-iommu.h index f8504a980981..64799067ea58 > > 100644 --- a/include/linux/intel-iommu.h > > +++ b/include/linux/intel-iommu.h > > @@ -708,6 +708,7 @@ extern struct iommu_sva * > > intel_svm_bind(struct device *dev, struct mm_struct *mm, void > > *drvdata); extern void intel_svm_unbind(struct iommu_sva *handle); > > extern int intel_svm_get_pasid(struct iommu_sva *handle); > > +extern void intel_svm_add_pasid_notifier(void); > > > > struct svm_dev_ops; > > > > -- > > 2.7.4 > > > > _______________________________________________ > > iommu mailing list > > iommu@lists.linux-foundation.org > > https://lists.linuxfoundation.org/mailman/listinfo/iommu [Jacob Pan]