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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 4542BC4345F for ; Fri, 19 Apr 2024 21:07:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XRXm7hhW2rUSSTetG/McvUHHKadz4K+LexdEjU/+4ws=; b=cAawvtZ8XqiHNQ ocxIRPcr34Xk3YhR5BRtqeeyDPrsM4ti305K7lKJ/lg8030PvLe3hO7sUn6NoV2SCJAF7QZlq+3sy hdwiTvBloQUXwHlbewSh/m2rr82MFh0Swr5CNX4nYSpYOaMS2kOVWiEobiLE68Q9d1A8ScJXQPrPK PMVQ1J8VjDkBf5P6S/RHOKuszHoiwU4n7h6kK0zTS5nZ/Em7+40x9agskKmDnHENY0jH4+M1hKGAc lYqje8gPprf9UgIORv9DyTE0ZGkWuDE6sJABnUAZxi26cCFzF1F6fR5emrhQg9L67SXSUxmd0Gpl4 Cd7B23rHRPAPx5ud89pQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxvSL-00000006yxR-3Wib; Fri, 19 Apr 2024 21:07:37 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxvSA-00000006yqz-3J2z for linux-arm-kernel@lists.infradead.org; Fri, 19 Apr 2024 21:07:28 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-418820e6effso19685e9.0 for ; Fri, 19 Apr 2024 14:07:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713560844; x=1714165644; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=+mFRmA2+vtjCGnJ49FWij0+vJ7sZXnTD59OX7FUL/N8=; b=c0nQK7fvVisV+IyO2H1hRqhcVnal5yujuw5Qy+H40VS+98IuO8CVDmchUYnMRMsUTR TQh32WFlE36HDM1G2hBgI5WzNRyQ4CAtu/YV68Z/jniuBBbEB17hRRD/P9nBG8oVXtk8 QFOvNVYOX6NpRsHZFbFyOqFcZ3Hu+FFS3JkiGne/As0m4RbPSkB3vlFeOqm69QNQpcR1 3wNkq4toVaGwaW3rlLvDRt0/OthhK/5oM3oew5dY7gv1sWc0qcyIBk9YVR8soQlck+XR 7fUb0AN77DxUrJX/Vt52eGw3AfikTkNXSW7TvW42bWt9i56fehc88naPOb7yyX6ZgGwm 04kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713560844; x=1714165644; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+mFRmA2+vtjCGnJ49FWij0+vJ7sZXnTD59OX7FUL/N8=; b=G0mY4vtvqpwERMu5pvDwgF3m60HbsBDqVxOCdcpSY6jTigOEBpWl0zyOj88erhUnxx Om5S3CuVQiTedtWJiAcMSLfPDr395xSFumD8xp9grzYw85M14XTHczNbd+K+OvjA5PlJ CWMmc0rHMxgQVmY3NpkU1QlHimFUUOr/k1YQ9NyBgW4T1SxNWSrRtqHZtXnUP/6ylO+2 JoWmb4Fo2Gw7CzAEMUxOt/VeO6isW6M0hjR0h4i7CxoMzPiMZwd/apA+FpBxCcZJz+yu S4Alyqxkhl+8RGiDDX1liJACnJYu6bQqRCDYZGbFnn5Nt7/QdoqCwk06q1GGQH/9FT0S sTmA== X-Forwarded-Encrypted: i=1; AJvYcCX9+tvgfsy+vNuM1KK9m6PHaBpWCcvED6zD/5cgnXeGsV9hIyUBM+oaKRvnvbRfvvuf5LNyotl9GUr2Bz2HBML1Fm2Zf74J7h5cWUDMVh2YAm5wIG8= X-Gm-Message-State: AOJu0YwWU8/FGp+42NgTIiarDuyGhRrqIJdDZcbVHsE2ilWARISUQRnJ xp88EL4O8vzY6ZsqzD8WnRkXgdgSLXtE+a+Snkf2WgS8zqhj94Lp8d2LIYh9mQ== X-Google-Smtp-Source: AGHT+IEgmcEf2n6BYNeXMofNMgoEHQ1FVf2q+Yy7Wp6SOBfzoXY702Ztz1K+Qc4eEw/oWXUUf9Df/A== X-Received: by 2002:a05:600c:4fc7:b0:418:cef2:7575 with SMTP id o7-20020a05600c4fc700b00418cef27575mr53344wmq.0.1713560843921; Fri, 19 Apr 2024 14:07:23 -0700 (PDT) Received: from google.com (180.232.140.34.bc.googleusercontent.com. [34.140.232.180]) by smtp.gmail.com with ESMTPSA id o28-20020a05600c511c00b0041898fc168bsm11500669wms.36.2024.04.19.14.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Apr 2024 14:07:23 -0700 (PDT) Date: Fri, 19 Apr 2024 21:07:19 +0000 From: Mostafa Saleh To: Jason Gunthorpe Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Eric Auger , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameerali Kolothum Thodi Subject: Re: [PATCH v7 2/9] iommu/arm-smmu-v3: Make CD programming use arm_smmu_write_entry() Message-ID: References: <0-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> <2-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <2-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240419_140726_870199_C1A36D5C X-CRM114-Status: GOOD ( 34.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSmFzb24sCgpPbiBUdWUsIEFwciAxNiwgMjAyNCBhdCAwNDoyODoxM1BNIC0wMzAwLCBKYXNv biBHdW50aG9ycGUgd3JvdGU6Cj4gQ0QgdGFibGUgZW50cmllcyBhbmQgU1RFJ3MgaGF2ZSB0aGUg c2FtZSBlc3NlbnRpYWwgcHJvZ3JhbW1pbmcgc2VxdWVuY2UsCj4ganVzdCB3aXRoIGRpZmZlcmVu dCB0eXBlcy4KPiAKPiBIYXZlIGFybV9zbW11X3dyaXRlX2N0eF9kZXNjKCkgZ2VuZXJhdGUgYSB0 YXJnZXQgQ0QgYW5kIGNhbGwKPiBhcm1fc21tdV93cml0ZV9lbnRyeSgpIHRvIGRvIHRoZSBwcm9n cmFtbWluZy4gRHVlIHRvIHRoZSB3YXkgdGhlIHRhcmdldCBDRAo+IGlzIGdlbmVyYXRlZCBieSBt b2RpZnlpbmcgdGhlIGV4aXN0aW5nIENEIHRoaXMgYWxvbmUgaXMgbm90IGVub3VnaCBmb3IgdGhl Cj4gQ0QgY2FsbGVycyB0byBiZSBmcmVlZCBvZiB0aGUgb3JkZXJpbmcgcmVxdWlyZW1lbnRzLgo+ IAo+IFRoZSBmb2xsb3dpbmcgcGF0Y2hlcyB3aWxsIG1ha2UgdGhlIHJlc3Qgb2YgdGhlIENEIGZs b3cgbWlycm9yIHRoZSBTVEUKPiBmbG93IHdpdGggcHJlY2lzZSBDRCBjb250ZW50cyBnZW5lcmF0 ZWQgaW4gYWxsIGNhc2VzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2hhdml0IDxtc2hh dml0QGdvb2dsZS5jb20+Cj4gVGVzdGVkLWJ5OiBOaWNvbGluIENoZW4gPG5pY29saW5jQG52aWRp YS5jb20+Cj4gVGVzdGVkLWJ5OiBTaGFtZWVyIEtvbG90aHVtIDxzaGFtZWVyYWxpLmtvbG90aHVt LnRob2RpQGh1YXdlaS5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1vcml0eiBGaXNjaGVyIDxtb3JpdHpm QGdvb2dsZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbnZpZGlh LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMu YyB8IDk0ICsrKysrKysrKysrKysrKystLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0 aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUv YXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21t dS12My9hcm0tc21tdS12My5jCj4gaW5kZXggYmYxMDVlOTE0ZDM4YjEuLjM5ODNkZTkwYzJmYTAx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYz LmMKPiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4g QEAgLTU2LDYgKzU2LDcgQEAgc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlcl9vcHMgewo+ICAK PiAgI2RlZmluZSBOVU1fRU5UUllfUVdPUkRTIDgKPiAgc3RhdGljX2Fzc2VydChzaXplb2Yoc3Ry dWN0IGFybV9zbW11X3N0ZSkgPT0gTlVNX0VOVFJZX1FXT1JEUyAqIHNpemVvZih1NjQpKTsKPiAr c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IGFybV9zbW11X2NkKSA9PSBOVU1fRU5UUllfUVdP UkRTICogc2l6ZW9mKHU2NCkpOwo+ICAKPiAgc3RhdGljIHBoeXNfYWRkcl90IGFybV9zbW11X21z aV9jZmdbQVJNX1NNTVVfTUFYX01TSVNdWzNdID0gewo+ICAJW0VWVFFfTVNJX0lOREVYXSA9IHsK PiBAQCAtMTIzMSw2ICsxMjMyLDY3IEBAIHN0YXRpYyBzdHJ1Y3QgYXJtX3NtbXVfY2QgKmFybV9z bW11X2dldF9jZF9wdHIoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyLAo+ICAJcmV0dXJu ICZsMV9kZXNjLT5sMnB0cltpZHhdOwo+ICB9Cj4gIAo+ICtzdHJ1Y3QgYXJtX3NtbXVfY2Rfd3Jp dGVyIHsKPiArCXN0cnVjdCBhcm1fc21tdV9lbnRyeV93cml0ZXIgd3JpdGVyOwo+ICsJdW5zaWdu ZWQgaW50IHNzaWQ7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBhcm1fc21tdV9nZXRfY2RfdXNl ZChjb25zdCBfX2xlNjQgKmVudCwgX19sZTY0ICp1c2VkX2JpdHMpCj4gK3sKPiArCXVzZWRfYml0 c1swXSA9IGNwdV90b19sZTY0KENUWERFU0NfQ0RfMF9WKTsKPiArCWlmICghKGVudFswXSAmIGNw dV90b19sZTY0KENUWERFU0NfQ0RfMF9WKSkpCj4gKwkJcmV0dXJuOwo+ICsJbWVtc2V0KHVzZWRf Yml0cywgMHhGRiwgc2l6ZW9mKHN0cnVjdCBhcm1fc21tdV9jZCkpOwo+ICsKPiArCS8qIEVQRDAg bWVhbnMgVDBTWi9URzAvSVIwL09SMC9TSDAvVFRCMCBhcmUgSUdOT1JFRCAqLwo+ICsJaWYgKGVu dFswXSAmIGNwdV90b19sZTY0KENUWERFU0NfQ0RfMF9UQ1JfRVBEMCkpIHsKPiArCQl1c2VkX2Jp dHNbMF0gJj0gfmNwdV90b19sZTY0KAo+ICsJCQlDVFhERVNDX0NEXzBfVENSX1QwU1ogfCBDVFhE RVNDX0NEXzBfVENSX1RHMCB8Cj4gKwkJCUNUWERFU0NfQ0RfMF9UQ1JfSVJHTjAgfCBDVFhERVND X0NEXzBfVENSX09SR04wIHwKPiArCQkJQ1RYREVTQ19DRF8wX1RDUl9TSDApOwo+ICsJCXVzZWRf Yml0c1sxXSAmPSB+Y3B1X3RvX2xlNjQoQ1RYREVTQ19DRF8xX1RUQjBfTUFTSyk7Cj4gKwl9Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGFybV9zbW11X2NkX3dyaXRlcl9zeW5jX2VudHJ5KHN0cnVj dCBhcm1fc21tdV9lbnRyeV93cml0ZXIgKndyaXRlcikKPiArewo+ICsJc3RydWN0IGFybV9zbW11 X2NkX3dyaXRlciAqY2Rfd3JpdGVyID0KPiArCQljb250YWluZXJfb2Yod3JpdGVyLCBzdHJ1Y3Qg YXJtX3NtbXVfY2Rfd3JpdGVyLCB3cml0ZXIpOwo+ICsKPiArCWFybV9zbW11X3N5bmNfY2Qod3Jp dGVyLT5tYXN0ZXIsIGNkX3dyaXRlci0+c3NpZCwgdHJ1ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyX29wcyBhcm1fc21tdV9jZF93cml0ZXJf b3BzID0gewo+ICsJLnN5bmMgPSBhcm1fc21tdV9jZF93cml0ZXJfc3luY19lbnRyeSwKPiArCS5n ZXRfdXNlZCA9IGFybV9zbW11X2dldF9jZF91c2VkLAo+ICsJLnZfYml0ID0gY3B1X3RvX2xlNjQo Q1RYREVTQ19DRF8wX1YpLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgYXJtX3NtbXVfd3JpdGVf Y2RfZW50cnkoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyLCBpbnQgc3NpZCwKPiArCQkJ CSAgICBzdHJ1Y3QgYXJtX3NtbXVfY2QgKmNkcHRyLAo+ICsJCQkJICAgIGNvbnN0IHN0cnVjdCBh cm1fc21tdV9jZCAqdGFyZ2V0KQo+ICt7Cj4gKwlzdHJ1Y3QgYXJtX3NtbXVfY2Rfd3JpdGVyIGNk X3dyaXRlciA9IHsKPiArCQkud3JpdGVyID0gewo+ICsJCQkub3BzID0gJmFybV9zbW11X2NkX3dy aXRlcl9vcHMsCj4gKwkJCS5tYXN0ZXIgPSBtYXN0ZXIsCj4gKwkJfSwKPiArCQkuc3NpZCA9IHNz aWQsCj4gKwl9Owo+ICsKPiArCWFybV9zbW11X3dyaXRlX2VudHJ5KCZjZF93cml0ZXIud3JpdGVy LCBjZHB0ci0+ZGF0YSwgdGFyZ2V0LT5kYXRhKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXJt X3NtbXVfY2xlYW5fY2RfZW50cnkoc3RydWN0IGFybV9zbW11X2NkICp0YXJnZXQpCj4gK3sKPiAr CXN0cnVjdCBhcm1fc21tdV9jZCB1c2VkID0ge307Cj4gKwlpbnQgaTsKPiArCj4gKwlhcm1fc21t dV9nZXRfY2RfdXNlZCh0YXJnZXQtPmRhdGEsIHVzZWQuZGF0YSk7Cj4gKwlmb3IgKGkgPSAwOyBp ICE9IEFSUkFZX1NJWkUodGFyZ2V0LT5kYXRhKTsgaSsrKQo+ICsJCXRhcmdldC0+ZGF0YVtpXSAm PSB1c2VkLmRhdGFbaV07Cj4gK30KPiArCj4gIGludCBhcm1fc21tdV93cml0ZV9jdHhfZGVzYyhz dHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIsIGludCBzc2lkLAo+ICAJCQkgICAgc3RydWN0 IGFybV9zbW11X2N0eF9kZXNjICpjZCkKPiAgewo+IEBAIC0xMjQ3LDE3ICsxMzA5LDIwIEBAIGlu dCBhcm1fc21tdV93cml0ZV9jdHhfZGVzYyhzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIs IGludCBzc2lkLAo+ICAJICovCj4gIAl1NjQgdmFsOwo+ICAJYm9vbCBjZF9saXZlOwo+IC0Jc3Ry dWN0IGFybV9zbW11X2NkICpjZHB0cjsKPiArCXN0cnVjdCBhcm1fc21tdV9jZCB0YXJnZXQ7Cj4g KwlzdHJ1Y3QgYXJtX3NtbXVfY2QgKmNkcHRyID0gJnRhcmdldDsKPiArCXN0cnVjdCBhcm1fc21t dV9jZCAqY2RfdGFibGVfZW50cnk7Cj4gIAlzdHJ1Y3QgYXJtX3NtbXVfY3R4X2Rlc2NfY2ZnICpj ZF90YWJsZSA9ICZtYXN0ZXItPmNkX3RhYmxlOwo+ICAJc3RydWN0IGFybV9zbW11X2RldmljZSAq c21tdSA9IG1hc3Rlci0+c21tdTsKPiAgCj4gIAlpZiAoV0FSTl9PTihzc2lkID49ICgxIDw8IGNk X3RhYmxlLT5zMWNkbWF4KSkpCj4gIAkJcmV0dXJuIC1FMkJJRzsKPiAgCj4gLQljZHB0ciA9IGFy bV9zbW11X2dldF9jZF9wdHIobWFzdGVyLCBzc2lkKTsKPiAtCWlmICghY2RwdHIpCj4gKwljZF90 YWJsZV9lbnRyeSA9IGFybV9zbW11X2dldF9jZF9wdHIobWFzdGVyLCBzc2lkKTsKPiArCWlmICgh Y2RfdGFibGVfZW50cnkpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICsJdGFyZ2V0ID0gKmNk X3RhYmxlX2VudHJ5OwoKQXMgdGhpcyBjaGFuZ2VzIHRoZSBsb2dpYyB3aGVyZSBhbGwgQ0QgbWFu aXB1bGF0aW9uIGlzIG5vdCBvbiB0aGUgYWN0dWFsCkNELCBJIGJlbGlldmUgYSBjb21tZW50IHdv dWxkIGJlIGhlbHBmdWwgaGVyZS4KCj4gIAl2YWwgPSBsZTY0X3RvX2NwdShjZHB0ci0+ZGF0YVsw XSk7Cj4gIAljZF9saXZlID0gISEodmFsICYgQ1RYREVTQ19DRF8wX1YpOwo+ICAKPiBAQCAtMTI3 OSwxMyArMTM0NCw2IEBAIGludCBhcm1fc21tdV93cml0ZV9jdHhfZGVzYyhzdHJ1Y3QgYXJtX3Nt bXVfbWFzdGVyICptYXN0ZXIsIGludCBzc2lkLAo+ICAJCWNkcHRyLT5kYXRhWzJdID0gMDsKPiAg CQljZHB0ci0+ZGF0YVszXSA9IGNwdV90b19sZTY0KGNkLT5tYWlyKTsKPiAgCj4gLQkJLyoKPiAt CQkgKiBTVEUgbWF5IGJlIGxpdmUsIGFuZCB0aGUgU01NVSBtaWdodCByZWFkIGR3b3JkcyBvZiB0 aGlzIENEIGluIGFueQo+IC0JCSAqIG9yZGVyLiBFbnN1cmUgdGhhdCBpdCBvYnNlcnZlcyB2YWxp ZCB2YWx1ZXMgYmVmb3JlIHJlYWRpbmcKPiAtCQkgKiBWPTEuCj4gLQkJICovCj4gLQkJYXJtX3Nt bXVfc3luY19jZChtYXN0ZXIsIHNzaWQsIHRydWUpOwo+IC0KPiAgCQl2YWwgPSBjZC0+dGNyIHwK PiAgI2lmZGVmIF9fQklHX0VORElBTgo+ICAJCQlDVFhERVNDX0NEXzBfRU5ESSB8Cj4gQEAgLTEy OTksMTggKzEzNTcsMTQgQEAgaW50IGFybV9zbW11X3dyaXRlX2N0eF9kZXNjKHN0cnVjdCBhcm1f c21tdV9tYXN0ZXIgKm1hc3RlciwgaW50IHNzaWQsCj4gIAkJaWYgKGNkX3RhYmxlLT5zdGFsbF9l bmFibGVkKQo+ICAJCQl2YWwgfD0gQ1RYREVTQ19DRF8wX1M7Cj4gIAl9Cj4gLQo+ICsJY2RwdHIt PmRhdGFbMF0gPSBjcHVfdG9fbGU2NCh2YWwpOwo+ICAJLyoKPiAtCSAqIFRoZSBTTU1VIGFjY2Vz c2VzIDY0LWJpdCB2YWx1ZXMgYXRvbWljYWxseS4gU2VlIElISTAwNzBDYSAzLjIxLjMKPiAtCSAq ICJDb25maWd1cmF0aW9uIHN0cnVjdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gaW52YWxpZGF0aW9u IGNvbXBsZXRpb24iCj4gLQkgKgo+IC0JICogICBUaGUgc2l6ZSBvZiBzaW5nbGUtY29weSBhdG9t aWMgcmVhZHMgbWFkZSBieSB0aGUgU01NVSBpcwo+IC0JICogICBJTVBMRU1FTlRBVElPTiBERUZJ TkVEIGJ1dCBtdXN0IGJlIGF0IGxlYXN0IDY0IGJpdHMuIEFueSBzaW5nbGUKPiAtCSAqICAgZmll bGQgd2l0aGluIGFuIGFsaWduZWQgNjQtYml0IHNwYW4gb2YgYSBzdHJ1Y3R1cmUgY2FuIGJlIGFs dGVyZWQKPiAtCSAqICAgd2l0aG91dCBmaXJzdCBtYWtpbmcgdGhlIHN0cnVjdHVyZSBpbnZhbGlk Lgo+ICsJICogU2luY2UgdGhlIGFib3ZlIGlzIHVwZGF0aW5nIHRoZSBDRCBlbnRyeSBiYXNlZCBv biB0aGUgY3VycmVudCB2YWx1ZQo+ICsJICogd2l0aG91dCB6ZXJvaW5nIHVudXNlZCBiaXRzIGl0 IG5lZWRzIGZpeGluZyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvCj4gKwkgKiB0aGUgcHJvZ3JhbW1p bmcgbG9naWMuCj4gIAkgKi8KPiAtCVdSSVRFX09OQ0UoY2RwdHItPmRhdGFbMF0sIGNwdV90b19s ZTY0KHZhbCkpOwo+IC0JYXJtX3NtbXVfc3luY19jZChtYXN0ZXIsIHNzaWQsIHRydWUpOwo+ICsJ YXJtX3NtbXVfY2xlYW5fY2RfZW50cnkoJnRhcmdldCk7CgpJIGFtIG5vdCBzdXJlIEkgdW5kZXJz dGFuZCB0aGUgbG9naWMgaGVyZSwgaXMgdGhhdCBvbmx5IG5lZWRlZCBmb3IgZW50cnlbMF0KQXMg SSBzZWUgdGhlIG90aGVyIGVudHJpZXMgYXJlIHNldCBhbmQgbm90IHJldXNlZC4KCklmIHNvLCBJ IHRoaW5rIGl04oCZZCBiZSBiZXR0ZXIgdG8gbWFrZSB0aGF0IGNsZWFyLCBhbHNvIGFzIHVzZWRf Yml0cyBhcmUgYWx3YXlzIDB4ZmYKZm9yIGFsbCBjYXNlcywgSSBiZWxpZXZlIHRoZSBFUEQwIGxv Z2ljIHNob3VsZCBiZSBpbnRlZ3JhdGVkIGluIHBvcHVsYXRpbmcgdGhlIENEIHNvCml0IGlzIGNv cnJlY3QgYnkgY29uc3RydWN0aW9uLCBhcyB0aGlzIGxvb2tzIGxpa2UgYSBoYWNrIHRvIG1lLgoK VGhhbmtzLApNb3N0YWZhCgo+ICsJYXJtX3NtbXVfd3JpdGVfY2RfZW50cnkobWFzdGVyLCBzc2lk LCBjZF90YWJsZV9lbnRyeSwgJnRhcmdldCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtLSAK PiAyLjQzLjIKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK