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 Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D88DAC433EF for ; Thu, 21 Apr 2022 06:47:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 888BD41B51; Thu, 21 Apr 2022 06:47:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KoCki34KzQx8; Thu, 21 Apr 2022 06:47:40 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id A75E0418CD; Thu, 21 Apr 2022 06:47:39 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6C069C002F; Thu, 21 Apr 2022 06:47:39 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 898D2C002C for ; Thu, 21 Apr 2022 06:47:35 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 76B02402B1 for ; Thu, 21 Apr 2022 06:47:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=foxmail.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bHzoFr60y7fQ for ; Thu, 21 Apr 2022 06:47:33 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from out203-205-221-205.mail.qq.com (out203-205-221-205.mail.qq.com [203.205.221.205]) by smtp2.osuosl.org (Postfix) with ESMTPS id 44C5040241 for ; Thu, 21 Apr 2022 06:47:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1650523649; bh=UCAgP/sZs/C6j2bxf30J77uiXRtYuq1jRK0KgNfK59E=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=G5zUiA2D+OCQecjUCUTlPmsrYdLnYuit3HNuMclLTkCMba0xsF6Bql5h6cPGpvjMQ 4f3PfThd8KF1wPrf70Py3Hl1sAsguUgK2iTYLo23Dg7vZBbE4sxiptxLZp0CP9kYyj Xlf4kV+F6lCIyukalC++mUrRk3B/njkdg1Twb3sU= Received: from [IPv6:240e:362:431:df00:4c4b:c9ad:7c98:c56e] ([240e:362:431:df00:4c4b:c9ad:7c98:c56e]) by newxmesmtplogicsvrszc6.qq.com (NewEsmtp) with SMTP id BD801CAE; Thu, 21 Apr 2022 14:47:24 +0800 X-QQ-mid: xmsmtpt1650523644tcdazw0uv Message-ID: X-QQ-XMAILINFO: OZZSS56D9fAj7I0kuNy93BRXcT9WEUGATwHKfBaw0xOuVEqDfP3LayA0ouGdGF /4H8mX73reyQrAo6p6HB8IoYEWR/SmddMLsbz7tU5gxmX19LmTzPXP9z4y/TmS/AyAFglCtVhFK5 ZlTjz+G2ZEySnL5cXkgb4KvdIMBfz2yulpB00Zfv/9uIYnEZKCT4igawk9KF8eo+aZHCEty1ZuGG hpPEA4BJ+hQnHVz9iSSkUCxfpbNJMehdiY55FzTAxIJHt6ioTfKjpmumKans6H7OHxKnN8DUDV0l Q0CaudGokCm03Kf9r20ccXSJ7z8vlXxC89ganeUxYSM9gVdnOYDfkT2UIzTo5pRhxag7HH1/IzmZ +uN1dzWzUu7YMhnp38Bwy9VcJRu5r1DHjYyNUIDm9ih66cfYHmncPA9UccU+wGd3YLzZv+i4nzEn btGz0C/E6yvTrraPNH2bONi5g6AAJQj9Zyy5BEe/XabkSfYTjY6m1Qcb2NG/KZoBKgOXsaGeC0DM LjaWOLQ2anfskq3Wfa/xWWMFtAyH2hKO12GS81/9hz/zkgxXKTsNtR0RX4eLlZ/7j4DIToMUebTS fwRNqZvK8bvcnwipVb13d/PUQzvkPyKWwUxECt7KdiWQZjvMt0ZK1DhaqLYyyA0NRGMmGhOwNkNU eHYkBLZeOXDLuOP0y0JthzMfot65jt1UZeypM3iPDZ6LzR+CaTbc4/yEilQy3HF2RRKUHBSQNVPR buFMK4nHw+QpvIU7uBdz1NgpIny8pR6ko5CJN6zz4RKIMDsxMwEuAfxwdHs8FK3P1NDZHmNQxH53 2z5PIROo/EU3ydXH9PY6p2RwTRtVUy6kaRCLM5wZktdHrzUKj5j8R1PSyppY+q0yQEDor27iFUbo lXzrXVlhc2GSrttpcNmSlb0MsqrDR9lM+UVscGjy7+WVA8/89Mxj+WN+B31kuEKf8ANd2Uci16vD kUetcFqmCafT4PrKihsqSMCZomAz5L Subject: Re: [PATCH v4 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit To: Jean-Philippe Brucker , Fenghua Yu References: <56ed509d-a7cf-1fde-676c-a28eb204989b@intel.com> From: "zhangfei.gao@foxmail.com" X-OQ-MSGID: Date: Thu, 21 Apr 2022 14:47:23 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Cc: Ravi V Shankar , Tony Luck , Ashok Raj , Peter Zijlstra , robin.murphy@arm.com, Dave Hansen , x86 , linux-kernel , Dave Hansen , iommu , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Josh Poimboeuf , Thomas Gleixner , will@kernel.org 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" CgpPbiAyMDIyLzQvMjEg5LiK5Y2IMTI6NDUsIEplYW4tUGhpbGlwcGUgQnJ1Y2tlciB3cm90ZToK PiBIaSwKPgo+IE9uIEZyaSwgQXByIDE1LCAyMDIyIGF0IDAyOjUxOjA4QU0gLTA3MDAsIEZlbmdo dWEgWXUgd3JvdGU6Cj4+ICBGcm9tIGE2NDQ0ZTFlNWJkODA3NmY1ZTVjNWU5NTBkMzE5MmRlMzI3 ZjBjOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4+IEZyb206IEZlbmdodWEgWXUgPGZlbmdo dWEueXVAaW50ZWwuY29tPgo+PiBEYXRlOiBGcmksIDE1IEFwciAyMDIyIDAwOjUxOjMzIC0wNzAw Cj4+IFN1YmplY3Q6IFtSRkMgUEFUQ0hdIGlvbW11L3N2YTogRml4IFBBU0lEIHVzZS1hZnRlci1m cmVlIGlzc3VlCj4+Cj4+IEEgUEFTSUQgbWlnaHQgYmUgc3RpbGwgdXNlZCBldmVuIHRob3VnaCBp dCBpcyBmcmVlZCBvbiBtbSBleGl0Lgo+Pgo+PiBwcm9jZXNzIEE6Cj4+IAlzdmFfYmluZCgpOwo+ PiAJaW9hc2lkX2FsbG9jKCkgPSBOOyAvLyBHZXQgUEFTSUQgTiBmb3IgdGhlIG1tCj4+IAlmb3Jr KCk6IC8vIHNwYXduIHByb2Nlc3MgQgo+PiAJZXhpdCgpOwo+PiAJaW9hc2lkX2ZyZWUoTik7Cj4+ Cj4+IHByb2Nlc3MgQjoKPj4gCWRldmljZSB1c2VzIFBBU0lEIE4gLT4gZmFpbHVyZQo+PiAJc3Zh X3VuYmluZCgpOwo+Pgo+PiBEYXZlIEhhbnNlbiBzdWdnZXN0cyB0byB0YWtlIGEgcmVmY291bnQg b24gdGhlIG1tIHdoZW5ldmVyIGJpbmRpbmcgdGhlCj4+IFBBU0lEIHRvIGEgZGV2aWNlIGFuZCBk cm9wIHRoZSByZWZjb3VudCBvbiB1bmJpbmRpbmcuIFRoZSBtbSB3b24ndCBiZQo+PiBkcm9wcGVk IGlmIHRoZSBQQVNJRCBpcyBzdGlsbCBib3VuZCB0byBpdC4KPj4KPj4gRml4ZXM6IDcwMWZhYzQw Mzg0ZiAoImlvbW11L3N2YTogQXNzaWduIGEgUEFTSUQgdG8gbW0gb24gUEFTSUQgYWxsb2NhdGlv biBhbmQgZnJlZSBpdCBvbiBtbSBleGl0IikKPj4KPj4gUmVwb3J0ZWQtYnk6IFpoYW5nZmVpIEdh byA8emhhbmdmZWkuZ2FvQGZveG1haWwuY29tPgo+PiBTdWdnZXN0ZWQtYnk6IERhdmUgSGFuc2Vu IiA8ZGF2ZS5oYW5zZW5AbGludXguaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBGZW5naHVh IFl1IDxmZW5naHVhLnl1QGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9pb21tdS9hcm0v YXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMtc3ZhLmMgfCA2ICsrKysrKwo+PiAgIGRyaXZlcnMvaW9t bXUvaW50ZWwvc3ZtLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKysrCj4+ICAgMiBmaWxl cyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lv bW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My1zdmEuYyBiL2RyaXZlcnMvaW9tbXUvYXJt L2FybS1zbW11LXYzL2FybS1zbW11LXYzLXN2YS5jCj4+IGluZGV4IDIyZGRkMDViYmRjZC4uM2Zj Yjg0MmEwZGYwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9h cm0tc21tdS12My1zdmEuYwo+PiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9h cm0tc21tdS12My1zdmEuYwo+PiBAQCAtNyw2ICs3LDcgQEAKPj4gICAjaW5jbHVkZSA8bGludXgv bW11X2NvbnRleHQuaD4KPj4gICAjaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+Cj4+ICAg I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zY2hlZC9tbS5oPgo+ PiAgIAo+PiAgICNpbmNsdWRlICJhcm0tc21tdS12My5oIgo+PiAgICNpbmNsdWRlICIuLi8uLi9p b21tdS1zdmEtbGliLmgiCj4+IEBAIC0zNjMsNiArMzY0LDkgQEAgYXJtX3NtbXVfc3ZhX2JpbmQo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdm9pZCAqZHJ2ZGF0YSkK Pj4gICAKPj4gICAJbXV0ZXhfbG9jaygmc3ZhX2xvY2spOwo+PiAgIAloYW5kbGUgPSBfX2FybV9z bW11X3N2YV9iaW5kKGRldiwgbW0pOwo+PiArCS8qIFRha2UgYW4gbW0gcmVmY291bnQgb24gYSBz dWNjZXNzZnVsIGJpbmQuICovCj4+ICsJaWYgKCFJU19FUlIoaGFuZGxlKSkKPj4gKwkJbW1nZXQo bW0pOwo+PiAgIAltdXRleF91bmxvY2soJnN2YV9sb2NrKTsKPj4gICAJcmV0dXJuIGhhbmRsZTsK Pj4gICB9Cj4+IEBAIC0zNzIsNiArMzc2LDggQEAgdm9pZCBhcm1fc21tdV9zdmFfdW5iaW5kKHN0 cnVjdCBpb21tdV9zdmEgKmhhbmRsZSkKPj4gICAJc3RydWN0IGFybV9zbW11X2JvbmQgKmJvbmQg PSBzdmFfdG9fYm9uZChoYW5kbGUpOwo+PiAgIAo+PiAgIAltdXRleF9sb2NrKCZzdmFfbG9jayk7 Cj4+ICsJLyogRHJvcCBhbiBtbSByZWZjb3VudC4gKi8KPj4gKwltbXB1dChib25kLT5tbSk7Cj4g SSBkbyBsaWtlIHRoZSBpZGVhIGJlY2F1c2UgaXQgd2lsbCBzaW1wbGlmeSB0aGUgZHJpdmVyLiBX ZSBjYW4ndCBjYWxsCj4gbW1wdXQoKSBoZXJlLCB0aG91Z2gsIGJlY2F1c2UgaXQgbWF5IGNhbGwg dGhlIHJlbGVhc2UoKSBNTVUgbm90aWZpZXIgd2hpY2gKPiB3aWxsIHRyeSB0byBncmFiIHN2YV9s b2NrLCBhbHJlYWR5IGhlbGQuCj4KPiBJIGFsc28gZm91bmQgYW5vdGhlciB1c2UtYWZ0ZXItZnJl ZSBpbiBhcm1fc21tdV9mcmVlX3NoYXJlZF9jZCgpLCB3aGVyZSB3ZQo+IGNhbGwgYXJtNjRfbW1f Y29udGV4dF9wdXQoKSB3aGVuIHRoZSBtbSBjb3VsZCBhbHJlYWR5IGJlIGZyZWVkLiBUaGVyZSB1 c2VkCj4gdG8gYmUgYW4gbW1ncmFiKCkgcHJldmVudGluZyB0aGlzIGJ1dCBpdCB3ZW50IGF3YXkg ZHVyaW5nIGEgcmV3cml0ZS4KPgo+IFRvIGZpeCBib3RoIHdlIGNvdWxkIGp1c3QgbW92ZSBtbXB1 dCgpIGF0IHRoZSBlbmQgb2YgdW5iaW5kKCkgYnV0IEknZAo+IHJhdGhlciBkbyBhIHByb3BlciBj bGVhbnVwIHJlbW92aW5nIHRoZSByZWxlYXNlKCkgbm90aWZpZXIgcmlnaHQgYXdheS4KPiBaaGFu Z2ZlaSwgY291bGQgeW91IHRyeSB0aGUgcGF0Y2ggYmVsb3c/Cj4KPiBUaGFua3MsCj4gSmVhbgo+ Cj4gLS0tIDg8IC0tLQo+Cj4gIEZyb20gNGUwOWMwZDcxZGZiMzVmYzkwOTE1YmQxZTM2NTQ1MDI3 ZmJmOGEwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiBGcm9tOiBKZWFuLVBoaWxpcHBlIEJy dWNrZXIgPGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZz4KPiBEYXRlOiBXZWQsIDIwIEFwciAyMDIy IDEwOjE5OjI0ICswMTAwCj4gU3ViamVjdDogW1BBVENIXSBpb21tdS9hcm0tc21tdS12My1zdmE6 IEZpeCBQQVNJRCBhbmQgbW0gdXNlLWFmdGVyLWZyZWUgaXNzdWVzCj4KPiBDb21taXQgNzAxZmFj NDAzODRmICgiaW9tbXUvc3ZhOiBBc3NpZ24gYSBQQVNJRCB0byBtbSBvbiBQQVNJRAo+IGFsbG9j YXRpb24gYW5kIGZyZWUgaXQgb24gbW0gZXhpdCIpIGZyZWVzIHRoZSBQQVNJRCBlYXJsaWVyIHRo YW4gd2hhdAo+IHRoZSBTTU1VdjMgZHJpdmVyIGV4cGVjdHMuIEF0IHRoZSBtb21lbnQgdGhlIFNN TVUgZHJpdmVyIGhhbmRsZXMgbW0gZXhpdAo+IGluIHRoZSByZWxlYXNlKCkgTU1VIG5vdGlmaWVy IGJ5IHF1aWVzY2luZyB0aGUgY29udGV4dCBkZXNjcmlwdG9yLiBUaGUKPiBjb250ZXh0IGRlc2Ny aXB0b3IgaXMgb25seSBtYWRlIGludmFsaWQgaW4gdW5iaW5kKCksIGFmdGVyIHRoZSBkZXZpY2UK PiBkcml2ZXIgZW5zdXJlZCB0aGUgUEFTSUQgaXMgbm90IHVzZWQgYW55bW9yZS4gUmVsZWFzaW5n IHRoZSBQQVNJRCBvbiBtbQo+IGV4aXQgbWF5IGNhdXNlIGl0IHRvIGJlIHJlYWxsb2NhdGVkIHdo aWxlIGl0IGlzIHN0aWxsIHVzZWQgYnkgdGhlCj4gY29udGV4dCBkZXNjcmlwdG9yLgo+Cj4gVGhl cmUgaXMgYW5vdGhlciB1c2UtYWZ0ZXItZnJlZSwgcHJlc2VudCBzaW5jZSB0aGUgYmVnaW5uaW5n LCB3aGVyZSB3ZQo+IGNhbGwgYXJtNjRfbW1fY29udGV4dF9wdXQoKSB3aXRob3V0IGEgZ3VhcmFu dGVlIHRoYXQgbW1fY291bnQgaXMgaGVsZC4KPgo+IERhdmUgSGFuc2VuIHN1Z2dlc3RzIHRvIGdy YWIgbW1fdXNlcnMgd2hlbmV2ZXIgYmluZGluZyB0aGUgbW0gdG8gYQo+IGRldmljZSBhbmQgZHJv cCBpdCBvbiB1bmJpbmRpbmcuIFdpdGggdGhhdCB3ZSBjYW4gZml4IGJvdGggaXNzdWVzIGFuZAo+ IHNpbXBsaWZ5IHRoZSBkcml2ZXIgYnkgcmVtb3ZpbmcgdGhlIHJlbGVhc2UoKSBub3RpZmllci4K Pgo+IEZpeGVzOiAzMjc4NGE5NTYyZmIgKCJpb21tdS9hcm0tc21tdS12MzogSW1wbGVtZW50IGlv bW11X3N2YV9iaW5kL3VuYmluZCgpIikKPiBSZXBvcnRlZC1ieTogWmhhbmdmZWkgR2FvIDx6aGFu Z2ZlaS5nYW9AZm94bWFpbC5jb20+Cj4gU3VnZ2VzdGVkLWJ5OiBEYXZlIEhhbnNlbiA8ZGF2ZS5o YW5zZW5AbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEZlbmdodWEgWXUgPGZlbmdo dWEueXVAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEplYW4tUGhpbGlwcGUgQnJ1Y2tlciA8 amVhbi1waGlsaXBwZUBsaW5hcm8ub3JnPgo+IC0tLQo+ICAgZHJpdmVycy9pb21tdS9hcm0vYXJt LXNtbXUtdjMvYXJtLXNtbXUtdjMuaCAgIHwgIDEgLQo+ICAgLi4uL2lvbW11L2FybS9hcm0tc21t dS12My9hcm0tc21tdS12My1zdmEuYyAgIHwgNDkgKysrKystLS0tLS0tLS0tLS0tLQo+ICAgZHJp dmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYyAgIHwgMTQgKy0tLS0tCj4g ICAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmgg Yi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5oCj4gaW5kZXggY2Q0 ODU5MGFkYTMwLi5kNTBkMjE1ZDk0NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pb21tdS9hcm0v YXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuaAo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1z bW11LXYzL2FybS1zbW11LXYzLmgKPiBAQCAtNzM1LDcgKzczNSw2IEBAIHN0YXRpYyBpbmxpbmUg c3RydWN0IGFybV9zbW11X2RvbWFpbiAqdG9fc21tdV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFp biAqZG9tKQo+ICAgCj4gICBleHRlcm4gc3RydWN0IHhhcnJheSBhcm1fc21tdV9hc2lkX3hhOwo+ ICAgZXh0ZXJuIHN0cnVjdCBtdXRleCBhcm1fc21tdV9hc2lkX2xvY2s7Cj4gLWV4dGVybiBzdHJ1 Y3QgYXJtX3NtbXVfY3R4X2Rlc2MgcXVpZXRfY2Q7Cj4gICAKPiAgIGludCBhcm1fc21tdV93cml0 ZV9jdHhfZGVzYyhzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiwgaW50IHNzaWQs Cj4gICAJCQkgICAgc3RydWN0IGFybV9zbW11X2N0eF9kZXNjICpjZCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLXN2YS5jIGIvZHJpdmVy cy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMtc3ZhLmMKPiBpbmRleCAyMmRkZDA1 YmJkY2QuLmY5ZGZmMGY2Y2RkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lvbW11L2FybS9hcm0t c21tdS12My9hcm0tc21tdS12My1zdmEuYwo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1z bW11LXYzL2FybS1zbW11LXYzLXN2YS5jCj4gQEAgLTYsNiArNiw3IEBACj4gICAjaW5jbHVkZSA8 bGludXgvbW0uaD4KPiAgICNpbmNsdWRlIDxsaW51eC9tbXVfY29udGV4dC5oPgo+ICAgI2luY2x1 ZGUgPGxpbnV4L21tdV9ub3RpZmllci5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2NoZWQvbW0uaD4K PiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gICAKPiAgICNpbmNsdWRlICJhcm0tc21tdS12 My5oIgo+IEBAIC0xNSw3ICsxNiw2IEBACj4gICBzdHJ1Y3QgYXJtX3NtbXVfbW11X25vdGlmaWVy IHsKPiAgIAlzdHJ1Y3QgbW11X25vdGlmaWVyCQltbjsKPiAgIAlzdHJ1Y3QgYXJtX3NtbXVfY3R4 X2Rlc2MJKmNkOwo+IC0JYm9vbAkJCQljbGVhcmVkOwo+ICAgCXJlZmNvdW50X3QJCQlyZWZzOwo+ ICAgCXN0cnVjdCBsaXN0X2hlYWQJCWxpc3Q7Cj4gICAJc3RydWN0IGFybV9zbW11X2RvbWFpbgkJ KmRvbWFpbjsKPiBAQCAtOTYsOSArOTYsMTQgQEAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9jdHhf ZGVzYyAqYXJtX3NtbXVfYWxsb2Nfc2hhcmVkX2NkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICAg CXN0cnVjdCBhcm1fc21tdV9jdHhfZGVzYyAqY2Q7Cj4gICAJc3RydWN0IGFybV9zbW11X2N0eF9k ZXNjICpyZXQgPSBOVUxMOwo+ICAgCj4gKwkvKiBQcmV2ZW50IG1tIGV4aXQgYXMgbG9uZyBhcyBp dCBpcyB1c2VkIGJ5IHRoZSBjb250ZXh0IGRlc2NyaXB0b3IgKi8KPiArCW1tZ2V0KG1tKTsKPiAr Cj4gICAJYXNpZCA9IGFybTY0X21tX2NvbnRleHRfZ2V0KG1tKTsKPiAtCWlmICghYXNpZCkKPiAt CQlyZXR1cm4gRVJSX1BUUigtRVNSQ0gpOwo+ICsJaWYgKCFhc2lkKSB7Cj4gKwkJZXJyID0gLUVT UkNIOwo+ICsJCWdvdG8gb3V0X3B1dF9tbTsKPiArCX0KPiAgIAo+ICAgCWNkID0ga3phbGxvYyhz aXplb2YoKmNkKSwgR0ZQX0tFUk5FTCk7Cj4gICAJaWYgKCFjZCkgewo+IEBAIC0xNjUsNiArMTcw LDggQEAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9jdHhfZGVzYyAqYXJtX3NtbXVfYWxsb2Nfc2hh cmVkX2NkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICAgCWtmcmVlKGNkKTsKPiAgIG91dF9wdXRf Y29udGV4dDoKPiAgIAlhcm02NF9tbV9jb250ZXh0X3B1dChtbSk7Cj4gK291dF9wdXRfbW06Cj4g KwltbXB1dChtbSk7Cj4gICAJcmV0dXJuIGVyciA8IDAgPyBFUlJfUFRSKGVycikgOiByZXQ7Cj4g ICB9Cj4gICAKPiBAQCAtMTczLDYgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2ZyZWVf c2hhcmVkX2NkKHN0cnVjdCBhcm1fc21tdV9jdHhfZGVzYyAqY2QpCj4gICAJaWYgKGFybV9zbW11 X2ZyZWVfYXNpZChjZCkpIHsKPiAgIAkJLyogVW5waW4gQVNJRCAqLwo+ICAgCQlhcm02NF9tbV9j b250ZXh0X3B1dChjZC0+bW0pOwo+ICsJCW1tcHV0KGNkLT5tbSk7Cj4gICAJCWtmcmVlKGNkKTsK PiAgIAl9Cj4gICB9Cj4gQEAgLTE5MSwzMCArMTk5LDYgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVf bW1faW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAlhcm1fc21t dV9hdGNfaW52X2RvbWFpbihzbW11X2RvbWFpbiwgbW0tPnBhc2lkLCBzdGFydCwgc2l6ZSk7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgYXJtX3NtbXVfbW1fcmVsZWFzZShzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwgc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gLXsKPiAtCXN0cnVjdCBhcm1fc21t dV9tbXVfbm90aWZpZXIgKnNtbXVfbW4gPSBtbl90b19zbW11KG1uKTsKPiAtCXN0cnVjdCBhcm1f c21tdV9kb21haW4gKnNtbXVfZG9tYWluID0gc21tdV9tbi0+ZG9tYWluOwo+IC0KPiAtCW11dGV4 X2xvY2soJnN2YV9sb2NrKTsKPiAtCWlmIChzbW11X21uLT5jbGVhcmVkKSB7Cj4gLQkJbXV0ZXhf dW5sb2NrKCZzdmFfbG9jayk7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBE TUEgbWF5IHN0aWxsIGJlIHJ1bm5pbmcuIEtlZXAgdGhlIGNkIHZhbGlkIHRvIGF2b2lkIENfQkFE X0NEIGV2ZW50cywKPiAtCSAqIGJ1dCBkaXNhYmxlIHRyYW5zbGF0aW9uLgo+IC0JICovCj4gLQlh cm1fc21tdV93cml0ZV9jdHhfZGVzYyhzbW11X2RvbWFpbiwgbW0tPnBhc2lkLCAmcXVpZXRfY2Qp Owo+IC0KPiAtCWFybV9zbW11X3RsYl9pbnZfYXNpZChzbW11X2RvbWFpbi0+c21tdSwgc21tdV9t bi0+Y2QtPmFzaWQpOwo+IC0JYXJtX3NtbXVfYXRjX2ludl9kb21haW4oc21tdV9kb21haW4sIG1t LT5wYXNpZCwgMCwgMCk7Cj4gLQo+IC0Jc21tdV9tbi0+Y2xlYXJlZCA9IHRydWU7Cj4gLQltdXRl eF91bmxvY2soJnN2YV9sb2NrKTsKPiAtfQo+IC0KPiAgIHN0YXRpYyB2b2lkIGFybV9zbW11X21t dV9ub3RpZmllcl9mcmVlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uKQo+ICAgewo+ICAgCWtmcmVl KG1uX3RvX3NtbXUobW4pKTsKPiBAQCAtMjIyLDcgKzIwNiw2IEBAIHN0YXRpYyB2b2lkIGFybV9z bW11X21tdV9ub3RpZmllcl9mcmVlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uKQo+ICAgCj4gICBz dGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMgYXJtX3NtbXVfbW11X25vdGlmaWVy X29wcyA9IHsKPiAgIAkuaW52YWxpZGF0ZV9yYW5nZQk9IGFybV9zbW11X21tX2ludmFsaWRhdGVf cmFuZ2UsCj4gLQkucmVsZWFzZQkJPSBhcm1fc21tdV9tbV9yZWxlYXNlLAo+ICAgCS5mcmVlX25v dGlmaWVyCQk9IGFybV9zbW11X21tdV9ub3RpZmllcl9mcmVlLAo+ICAgfTsKPiAgIAo+IEBAIC0y OTAsMTQgKzI3Myw4IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X21tdV9ub3RpZmllcl9wdXQoc3Ry dWN0IGFybV9zbW11X21tdV9ub3RpZmllciAqc21tdV9tbikKPiAgIAlsaXN0X2RlbCgmc21tdV9t bi0+bGlzdCk7Cj4gICAJYXJtX3NtbXVfd3JpdGVfY3R4X2Rlc2Moc21tdV9kb21haW4sIG1tLT5w YXNpZCwgTlVMTCk7Cj4gICAKPiAtCS8qCj4gLQkgKiBJZiB3ZSB3ZW50IHRocm91Z2ggY2xlYXIo KSwgd2UndmUgYWxyZWFkeSBpbnZhbGlkYXRlZCwgYW5kIG5vCj4gLQkgKiBuZXcgVExCIGVudHJ5 IGNhbiBoYXZlIGJlZW4gZm9ybWVkLgo+IC0JICovCj4gLQlpZiAoIXNtbXVfbW4tPmNsZWFyZWQp IHsKPiAtCQlhcm1fc21tdV90bGJfaW52X2FzaWQoc21tdV9kb21haW4tPnNtbXUsIGNkLT5hc2lk KTsKPiAtCQlhcm1fc21tdV9hdGNfaW52X2RvbWFpbihzbW11X2RvbWFpbiwgbW0tPnBhc2lkLCAw LCAwKTsKPiAtCX0KPiArCWFybV9zbW11X3RsYl9pbnZfYXNpZChzbW11X2RvbWFpbi0+c21tdSwg Y2QtPmFzaWQpOwo+ICsJYXJtX3NtbXVfYXRjX2ludl9kb21haW4oc21tdV9kb21haW4sIG1tLT5w YXNpZCwgMCwgMCk7Cj4gICAKPiAgIAkvKiBGcmVlcyBzbW11X21uICovCj4gICAJbW11X25vdGlm aWVyX3B1dCgmc21tdV9tbi0+bW4pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS9h cm0tc21tdS12My9hcm0tc21tdS12My5jIGIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMv YXJtLXNtbXUtdjMuYwo+IGluZGV4IDYyN2EzZWQ1ZWU4Zi4uMjQ2NjcwMzE4ZWRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMKPiArKysg Yi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4gQEAgLTc2LDEy ICs3Niw2IEBAIHN0cnVjdCBhcm1fc21tdV9vcHRpb25fcHJvcCB7Cj4gICBERUZJTkVfWEFSUkFZ X0FMTE9DMShhcm1fc21tdV9hc2lkX3hhKTsKPiAgIERFRklORV9NVVRFWChhcm1fc21tdV9hc2lk X2xvY2spOwo+ICAgCj4gLS8qCj4gLSAqIFNwZWNpYWwgdmFsdWUgdXNlZCBieSBTVkEgd2hlbiBh IHByb2Nlc3MgZGllcywgdG8gcXVpZXNjZSBhIENEIHdpdGhvdXQKPiAtICogZGlzYWJsaW5nIGl0 Lgo+IC0gKi8KPiAtc3RydWN0IGFybV9zbW11X2N0eF9kZXNjIHF1aWV0X2NkID0geyAwIH07Cj4g LQo+ICAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9vcHRpb25fcHJvcCBhcm1fc21tdV9vcHRpb25z W10gPSB7Cj4gICAJeyBBUk1fU01NVV9PUFRfU0tJUF9QUkVGRVRDSCwgImhpc2lsaWNvbixicm9r ZW4tcHJlZmV0Y2gtY21kIiB9LAo+ICAgCXsgQVJNX1NNTVVfT1BUX1BBR0UwX1JFR1NfT05MWSwg ImNhdml1bSxjbjk5MDAtYnJva2VuLXBhZ2UxLXJlZ3NwYWNlIn0sCj4gQEAgLTEwNDcsOSArMTA0 MSw3IEBAIGludCBhcm1fc21tdV93cml0ZV9jdHhfZGVzYyhzdHJ1Y3QgYXJtX3NtbXVfZG9tYWlu ICpzbW11X2RvbWFpbiwgaW50IHNzaWQsCj4gICAJICogKDIpIEluc3RhbGwgYSBzZWNvbmRhcnkg Q0QsIGZvciBTSUQrU1NJRCB0cmFmZmljLgo+ICAgCSAqICgzKSBVcGRhdGUgQVNJRCBvZiBhIENE LiBBdG9taWNhbGx5IHdyaXRlIHRoZSBmaXJzdCA2NCBiaXRzIG9mIHRoZQo+ICAgCSAqICAgICBD RCwgdGhlbiBpbnZhbGlkYXRlIHRoZSBvbGQgZW50cnkgYW5kIG1hcHBpbmdzLgo+IC0JICogKDQp IFF1aWVzY2UgdGhlIGNvbnRleHQgd2l0aG91dCBjbGVhcmluZyB0aGUgdmFsaWQgYml0LiBEaXNh YmxlCj4gLQkgKiAgICAgdHJhbnNsYXRpb24sIGFuZCBpZ25vcmUgYW55IHRyYW5zbGF0aW9uIGZh dWx0Lgo+IC0JICogKDUpIFJlbW92ZSBhIHNlY29uZGFyeSBDRC4KPiArCSAqICg0KSBSZW1vdmUg YSBzZWNvbmRhcnkgQ0QuCj4gICAJICovCj4gICAJdTY0IHZhbDsKPiAgIAlib29sIGNkX2xpdmU7 Cj4gQEAgLTEwNjUsMTAgKzEwNTcsOCBAQCBpbnQgYXJtX3NtbXVfd3JpdGVfY3R4X2Rlc2Moc3Ry dWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sIGludCBzc2lkLAo+ICAgCXZhbCA9IGxl NjRfdG9fY3B1KGNkcHRyWzBdKTsKPiAgIAljZF9saXZlID0gISEodmFsICYgQ1RYREVTQ19DRF8w X1YpOwo+ICAgCj4gLQlpZiAoIWNkKSB7IC8qICg1KSAqLwo+ICsJaWYgKCFjZCkgeyAvKiAoNCkg Ki8KPiAgIAkJdmFsID0gMDsKPiAtCX0gZWxzZSBpZiAoY2QgPT0gJnF1aWV0X2NkKSB7IC8qICg0 KSAqLwo+IC0JCXZhbCB8PSBDVFhERVNDX0NEXzBfVENSX0VQRDA7Cj4gICAJfSBlbHNlIGlmIChj ZF9saXZlKSB7IC8qICgzKSAqLwo+ICAgCQl2YWwgJj0gfkNUWERFU0NfQ0RfMF9BU0lEOwo+ICAg CQl2YWwgfD0gRklFTERfUFJFUChDVFhERVNDX0NEXzBfQVNJRCwgY2QtPmFzaWQpOwpUaGFua3Mg SmVhbgoKSGF2ZSB0ZXN0ZWQsIHN0aWxsIGdvdCBzb21lIGlzc3VlIHdpdGggb3VyIG9wZW5zc2wt ZW5naW5lLgoKMS4gSWYgb3BlbnNzbC1lbmdpbmUgZG9lcyBub3QgcmVnaXN0ZXIgcnNhLCBuZ2lu eCB3b3JrcyB3ZWxsLgoKMi4gSWYgb3BlbnNzbC1lbmdpbmUgcmVnaXN0ZXIgcnNhLCBuZ2lueCBh bHNvIHdvcmtzLCBidXQgaW9hc2lkIGlzIG5vdCAKZnJlZWQgd2hlbiBuZ2lueCBzdG9wLgoKSU1Q TEVNRU5UX0RZTkFNSUNfQklORF9GTihiaW5kX2ZuKQpiaW5kX2ZuCkVOR0lORV9zZXRfUlNBKGUs IHJzYV9tZXRob2RzKCkpCgpkZXN0cm95X2ZuCgpJZiBFTkdJTkVfc2V0X1JTQSBpcyBzZXQsIG5n aW54IHN0YXJ0IGFuZCBzdG9wIHdpbGwgTk9UIGNhbGwgZGVzdHJveV9mbi4KRXZlbiByc2FfbWV0 aG9kcyBpcyBhbG1vc3QgbmV3IHZpYSBSU0FfbWV0aF9uZXcuCgpJbiA1LjE4LXJjeCwgdGhpcyBj YXVzZWQgaW9hc2lkwqAgbm90IGZyZWVkIGluIG5naW54IHN0YXJ0IGFuZCBzdG9wLgpJbiA1LjE3 LCB0aG91Z2ggZGVzdHJveV9mbiBpcyBub3QgY2FsbGVkLCBidXQgaW9hc2lkIGlzIGZyZWVkIHdo ZW4gbmdpbnggCnN0b3AsIHNvIG5vdCBub3RpY2VkIHRoaXMgaXNzdWUgYmVmb3JlLgoKU3RpbGwg aW4gY2hlY2tpbmcgd2h5IEVOR0lORV9zZXRfUlNBIGJsb2NrcyBkZXN0cm95X2ZuLgoKVGhhbmtz CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppb21tdSBt YWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0 cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vaW9tbXU= 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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD1E9C433EF for ; Thu, 21 Apr 2022 06:51:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1385305AbiDUGyW (ORCPT ); Thu, 21 Apr 2022 02:54:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1385650AbiDUGxH (ORCPT ); Thu, 21 Apr 2022 02:53:07 -0400 Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B98A61DA7E for ; Wed, 20 Apr 2022 23:47:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1650523649; bh=UCAgP/sZs/C6j2bxf30J77uiXRtYuq1jRK0KgNfK59E=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=G5zUiA2D+OCQecjUCUTlPmsrYdLnYuit3HNuMclLTkCMba0xsF6Bql5h6cPGpvjMQ 4f3PfThd8KF1wPrf70Py3Hl1sAsguUgK2iTYLo23Dg7vZBbE4sxiptxLZp0CP9kYyj Xlf4kV+F6lCIyukalC++mUrRk3B/njkdg1Twb3sU= Received: from [IPv6:240e:362:431:df00:4c4b:c9ad:7c98:c56e] ([240e:362:431:df00:4c4b:c9ad:7c98:c56e]) by newxmesmtplogicsvrszc6.qq.com (NewEsmtp) with SMTP id BD801CAE; Thu, 21 Apr 2022 14:47:24 +0800 X-QQ-mid: xmsmtpt1650523644tcdazw0uv Message-ID: X-QQ-XMAILINFO: OZZSS56D9fAj7I0kuNy93BRXcT9WEUGATwHKfBaw0xOuVEqDfP3LayA0ouGdGF /4H8mX73reyQrAo6p6HB8IoYEWR/SmddMLsbz7tU5gxmX19LmTzPXP9z4y/TmS/AyAFglCtVhFK5 ZlTjz+G2ZEySnL5cXkgb4KvdIMBfz2yulpB00Zfv/9uIYnEZKCT4igawk9KF8eo+aZHCEty1ZuGG hpPEA4BJ+hQnHVz9iSSkUCxfpbNJMehdiY55FzTAxIJHt6ioTfKjpmumKans6H7OHxKnN8DUDV0l Q0CaudGokCm03Kf9r20ccXSJ7z8vlXxC89ganeUxYSM9gVdnOYDfkT2UIzTo5pRhxag7HH1/IzmZ +uN1dzWzUu7YMhnp38Bwy9VcJRu5r1DHjYyNUIDm9ih66cfYHmncPA9UccU+wGd3YLzZv+i4nzEn btGz0C/E6yvTrraPNH2bONi5g6AAJQj9Zyy5BEe/XabkSfYTjY6m1Qcb2NG/KZoBKgOXsaGeC0DM LjaWOLQ2anfskq3Wfa/xWWMFtAyH2hKO12GS81/9hz/zkgxXKTsNtR0RX4eLlZ/7j4DIToMUebTS fwRNqZvK8bvcnwipVb13d/PUQzvkPyKWwUxECt7KdiWQZjvMt0ZK1DhaqLYyyA0NRGMmGhOwNkNU eHYkBLZeOXDLuOP0y0JthzMfot65jt1UZeypM3iPDZ6LzR+CaTbc4/yEilQy3HF2RRKUHBSQNVPR buFMK4nHw+QpvIU7uBdz1NgpIny8pR6ko5CJN6zz4RKIMDsxMwEuAfxwdHs8FK3P1NDZHmNQxH53 2z5PIROo/EU3ydXH9PY6p2RwTRtVUy6kaRCLM5wZktdHrzUKj5j8R1PSyppY+q0yQEDor27iFUbo lXzrXVlhc2GSrttpcNmSlb0MsqrDR9lM+UVscGjy7+WVA8/89Mxj+WN+B31kuEKf8ANd2Uci16vD kUetcFqmCafT4PrKihsqSMCZomAz5L Subject: Re: [PATCH v4 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit To: Jean-Philippe Brucker , Fenghua Yu Cc: Dave Hansen , Joerg Roedel , Ravi V Shankar , Tony Luck , Ashok Raj , Peter Zijlstra , Dave Hansen , x86 , linux-kernel , iommu , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Josh Poimboeuf , Thomas Gleixner , will@kernel.org, robin.murphy@arm.com References: <56ed509d-a7cf-1fde-676c-a28eb204989b@intel.com> From: "zhangfei.gao@foxmail.com" X-OQ-MSGID: Date: Thu, 21 Apr 2022 14:47:23 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/4/21 上午12:45, Jean-Philippe Brucker wrote: > Hi, > > On Fri, Apr 15, 2022 at 02:51:08AM -0700, Fenghua Yu wrote: >> From a6444e1e5bd8076f5e5c5e950d3192de327f0c9c Mon Sep 17 00:00:00 2001 >> From: Fenghua Yu >> Date: Fri, 15 Apr 2022 00:51:33 -0700 >> Subject: [RFC PATCH] iommu/sva: Fix PASID use-after-free issue >> >> A PASID might be still used even though it is freed on mm exit. >> >> process A: >> sva_bind(); >> ioasid_alloc() = N; // Get PASID N for the mm >> fork(): // spawn process B >> exit(); >> ioasid_free(N); >> >> process B: >> device uses PASID N -> failure >> sva_unbind(); >> >> Dave Hansen suggests to take a refcount on the mm whenever binding the >> PASID to a device and drop the refcount on unbinding. The mm won't be >> dropped if the PASID is still bound to it. >> >> Fixes: 701fac40384f ("iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit") >> >> Reported-by: Zhangfei Gao >> Suggested-by: Dave Hansen" >> Signed-off-by: Fenghua Yu >> --- >> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 6 ++++++ >> drivers/iommu/intel/svm.c | 4 ++++ >> 2 files changed, 10 insertions(+) >> >> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c >> index 22ddd05bbdcd..3fcb842a0df0 100644 >> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c >> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c >> @@ -7,6 +7,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "arm-smmu-v3.h" >> #include "../../iommu-sva-lib.h" >> @@ -363,6 +364,9 @@ arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, void *drvdata) >> >> mutex_lock(&sva_lock); >> handle = __arm_smmu_sva_bind(dev, mm); >> + /* Take an mm refcount on a successful bind. */ >> + if (!IS_ERR(handle)) >> + mmget(mm); >> mutex_unlock(&sva_lock); >> return handle; >> } >> @@ -372,6 +376,8 @@ void arm_smmu_sva_unbind(struct iommu_sva *handle) >> struct arm_smmu_bond *bond = sva_to_bond(handle); >> >> mutex_lock(&sva_lock); >> + /* Drop an mm refcount. */ >> + mmput(bond->mm); > I do like the idea because it will simplify the driver. We can't call > mmput() here, though, because it may call the release() MMU notifier which > will try to grab sva_lock, already held. > > I also found another use-after-free in arm_smmu_free_shared_cd(), where we > call arm64_mm_context_put() when the mm could already be freed. There used > to be an mmgrab() preventing this but it went away during a rewrite. > > To fix both we could just move mmput() at the end of unbind() but I'd > rather do a proper cleanup removing the release() notifier right away. > Zhangfei, could you try the patch below? > > Thanks, > Jean > > --- 8< --- > > From 4e09c0d71dfb35fc90915bd1e36545027fbf8a03 Mon Sep 17 00:00:00 2001 > From: Jean-Philippe Brucker > Date: Wed, 20 Apr 2022 10:19:24 +0100 > Subject: [PATCH] iommu/arm-smmu-v3-sva: Fix PASID and mm use-after-free issues > > Commit 701fac40384f ("iommu/sva: Assign a PASID to mm on PASID > allocation and free it on mm exit") frees the PASID earlier than what > the SMMUv3 driver expects. At the moment the SMMU driver handles mm exit > in the release() MMU notifier by quiescing the context descriptor. The > context descriptor is only made invalid in unbind(), after the device > driver ensured the PASID is not used anymore. Releasing the PASID on mm > exit may cause it to be reallocated while it is still used by the > context descriptor. > > There is another use-after-free, present since the beginning, where we > call arm64_mm_context_put() without a guarantee that mm_count is held. > > Dave Hansen suggests to grab mm_users whenever binding the mm to a > device and drop it on unbinding. With that we can fix both issues and > simplify the driver by removing the release() notifier. > > Fixes: 32784a9562fb ("iommu/arm-smmu-v3: Implement iommu_sva_bind/unbind()") > Reported-by: Zhangfei Gao > Suggested-by: Dave Hansen > Signed-off-by: Fenghua Yu > Signed-off-by: Jean-Philippe Brucker > --- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 - > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 49 +++++-------------- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 14 +----- > 3 files changed, 15 insertions(+), 49 deletions(-) > > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > index cd48590ada30..d50d215d946c 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > @@ -735,7 +735,6 @@ static inline struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom) > > extern struct xarray arm_smmu_asid_xa; > extern struct mutex arm_smmu_asid_lock; > -extern struct arm_smmu_ctx_desc quiet_cd; > > int arm_smmu_write_ctx_desc(struct arm_smmu_domain *smmu_domain, int ssid, > struct arm_smmu_ctx_desc *cd); > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > index 22ddd05bbdcd..f9dff0f6cdd4 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > #include > > #include "arm-smmu-v3.h" > @@ -15,7 +16,6 @@ > struct arm_smmu_mmu_notifier { > struct mmu_notifier mn; > struct arm_smmu_ctx_desc *cd; > - bool cleared; > refcount_t refs; > struct list_head list; > struct arm_smmu_domain *domain; > @@ -96,9 +96,14 @@ static struct arm_smmu_ctx_desc *arm_smmu_alloc_shared_cd(struct mm_struct *mm) > struct arm_smmu_ctx_desc *cd; > struct arm_smmu_ctx_desc *ret = NULL; > > + /* Prevent mm exit as long as it is used by the context descriptor */ > + mmget(mm); > + > asid = arm64_mm_context_get(mm); > - if (!asid) > - return ERR_PTR(-ESRCH); > + if (!asid) { > + err = -ESRCH; > + goto out_put_mm; > + } > > cd = kzalloc(sizeof(*cd), GFP_KERNEL); > if (!cd) { > @@ -165,6 +170,8 @@ static struct arm_smmu_ctx_desc *arm_smmu_alloc_shared_cd(struct mm_struct *mm) > kfree(cd); > out_put_context: > arm64_mm_context_put(mm); > +out_put_mm: > + mmput(mm); > return err < 0 ? ERR_PTR(err) : ret; > } > > @@ -173,6 +180,7 @@ static void arm_smmu_free_shared_cd(struct arm_smmu_ctx_desc *cd) > if (arm_smmu_free_asid(cd)) { > /* Unpin ASID */ > arm64_mm_context_put(cd->mm); > + mmput(cd->mm); > kfree(cd); > } > } > @@ -191,30 +199,6 @@ static void arm_smmu_mm_invalidate_range(struct mmu_notifier *mn, > arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, start, size); > } > > -static void arm_smmu_mm_release(struct mmu_notifier *mn, struct mm_struct *mm) > -{ > - struct arm_smmu_mmu_notifier *smmu_mn = mn_to_smmu(mn); > - struct arm_smmu_domain *smmu_domain = smmu_mn->domain; > - > - mutex_lock(&sva_lock); > - if (smmu_mn->cleared) { > - mutex_unlock(&sva_lock); > - return; > - } > - > - /* > - * DMA may still be running. Keep the cd valid to avoid C_BAD_CD events, > - * but disable translation. > - */ > - arm_smmu_write_ctx_desc(smmu_domain, mm->pasid, &quiet_cd); > - > - arm_smmu_tlb_inv_asid(smmu_domain->smmu, smmu_mn->cd->asid); > - arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, 0, 0); > - > - smmu_mn->cleared = true; > - mutex_unlock(&sva_lock); > -} > - > static void arm_smmu_mmu_notifier_free(struct mmu_notifier *mn) > { > kfree(mn_to_smmu(mn)); > @@ -222,7 +206,6 @@ static void arm_smmu_mmu_notifier_free(struct mmu_notifier *mn) > > static const struct mmu_notifier_ops arm_smmu_mmu_notifier_ops = { > .invalidate_range = arm_smmu_mm_invalidate_range, > - .release = arm_smmu_mm_release, > .free_notifier = arm_smmu_mmu_notifier_free, > }; > > @@ -290,14 +273,8 @@ static void arm_smmu_mmu_notifier_put(struct arm_smmu_mmu_notifier *smmu_mn) > list_del(&smmu_mn->list); > arm_smmu_write_ctx_desc(smmu_domain, mm->pasid, NULL); > > - /* > - * If we went through clear(), we've already invalidated, and no > - * new TLB entry can have been formed. > - */ > - if (!smmu_mn->cleared) { > - arm_smmu_tlb_inv_asid(smmu_domain->smmu, cd->asid); > - arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, 0, 0); > - } > + arm_smmu_tlb_inv_asid(smmu_domain->smmu, cd->asid); > + arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, 0, 0); > > /* Frees smmu_mn */ > mmu_notifier_put(&smmu_mn->mn); > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > index 627a3ed5ee8f..246670318eda 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > @@ -76,12 +76,6 @@ struct arm_smmu_option_prop { > DEFINE_XARRAY_ALLOC1(arm_smmu_asid_xa); > DEFINE_MUTEX(arm_smmu_asid_lock); > > -/* > - * Special value used by SVA when a process dies, to quiesce a CD without > - * disabling it. > - */ > -struct arm_smmu_ctx_desc quiet_cd = { 0 }; > - > static struct arm_smmu_option_prop arm_smmu_options[] = { > { ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch-cmd" }, > { ARM_SMMU_OPT_PAGE0_REGS_ONLY, "cavium,cn9900-broken-page1-regspace"}, > @@ -1047,9 +1041,7 @@ int arm_smmu_write_ctx_desc(struct arm_smmu_domain *smmu_domain, int ssid, > * (2) Install a secondary CD, for SID+SSID traffic. > * (3) Update ASID of a CD. Atomically write the first 64 bits of the > * CD, then invalidate the old entry and mappings. > - * (4) Quiesce the context without clearing the valid bit. Disable > - * translation, and ignore any translation fault. > - * (5) Remove a secondary CD. > + * (4) Remove a secondary CD. > */ > u64 val; > bool cd_live; > @@ -1065,10 +1057,8 @@ int arm_smmu_write_ctx_desc(struct arm_smmu_domain *smmu_domain, int ssid, > val = le64_to_cpu(cdptr[0]); > cd_live = !!(val & CTXDESC_CD_0_V); > > - if (!cd) { /* (5) */ > + if (!cd) { /* (4) */ > val = 0; > - } else if (cd == &quiet_cd) { /* (4) */ > - val |= CTXDESC_CD_0_TCR_EPD0; > } else if (cd_live) { /* (3) */ > val &= ~CTXDESC_CD_0_ASID; > val |= FIELD_PREP(CTXDESC_CD_0_ASID, cd->asid); Thanks Jean Have tested, still got some issue with our openssl-engine. 1. If openssl-engine does not register rsa, nginx works well. 2. If openssl-engine register rsa, nginx also works, but ioasid is not freed when nginx stop. IMPLEMENT_DYNAMIC_BIND_FN(bind_fn) bind_fn ENGINE_set_RSA(e, rsa_methods()) destroy_fn If ENGINE_set_RSA is set, nginx start and stop will NOT call destroy_fn. Even rsa_methods is almost new via RSA_meth_new. In 5.18-rcx, this caused ioasid  not freed in nginx start and stop. In 5.17, though destroy_fn is not called, but ioasid is freed when nginx stop, so not noticed this issue before. Still in checking why ENGINE_set_RSA blocks destroy_fn. Thanks