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=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_RED, USER_AGENT_SANE_1 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 69070C433DB for ; Sun, 31 Jan 2021 18:29:37 +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 D10E964E4D for ; Sun, 31 Jan 2021 18:29:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D10E964E4D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.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 8666F203AA; Sun, 31 Jan 2021 18:29:36 +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 9n9De1cypYIx; Sun, 31 Jan 2021 18:29:34 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id EABF22034F; Sun, 31 Jan 2021 18:29:33 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id B87F2C0FA7; Sun, 31 Jan 2021 18:29:33 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id CE9DFC013A for ; Sun, 31 Jan 2021 18:29:31 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id C1D22840BF for ; Sun, 31 Jan 2021 18:29:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id f2O9geGBFnCd for ; Sun, 31 Jan 2021 18:29:30 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by fraxinus.osuosl.org (Postfix) with ESMTPS id B3A9983742 for ; Sun, 31 Jan 2021 18:29:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612117768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J/aN+VcFd0A+/O8Uby1eLbErmC7NfLDfVH8RGF6p+XM=; b=Ibg1OOyebU6DWiUbEjfGHGMXI9JfXy9INOi3RsKlhpH/Kf9zOD9auhkZjXKqvHxIPnpX1a pjnmIeTtA+X0ZvkSW17va2kAq9B2yTri9nXUBgC5QASYhY/MFnYvZc2G/bt7pryKJqCOjP ok6PWIwoXt9eeIxSVwJFq5wLAqPpAEs= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-153-AVhH2fj7OHmqo_Cz2tMkDA-1; Sun, 31 Jan 2021 13:29:23 -0500 X-MC-Unique: AVhH2fj7OHmqo_Cz2tMkDA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 25356801817; Sun, 31 Jan 2021 18:29:20 +0000 (UTC) Received: from [10.36.114.62] (ovpn-114-62.ams2.redhat.com [10.36.114.62]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 41D046E405; Sun, 31 Jan 2021 18:29:12 +0000 (UTC) Subject: Re: [PATCH v12 10/10] iommu/arm-smmu-v3: Add stall support for platform devices To: Jean-Philippe Brucker , joro@8bytes.org, will@kernel.org References: <20210127154322.3959196-1-jean-philippe@linaro.org> <20210127154322.3959196-11-jean-philippe@linaro.org> From: Auger Eric Message-ID: <0c609eeb-00b0-7573-fed7-5bc1e6c0b0d1@redhat.com> Date: Sun, 31 Jan 2021 19:29:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <20210127154322.3959196-11-jean-philippe@linaro.org> Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Cc: devicetree@vger.kernel.org, kevin.tian@intel.com, vivek.gautam@arm.com, guohanjun@huawei.com, rjw@rjwysocki.net, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, robh+dt@kernel.org, linux-accelerators@lists.ozlabs.org, sudeep.holla@arm.com, zhangfei.gao@linaro.org, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, lenb@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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" SGkgSmVhbiwKClNvbWUgcmF0aGVyIG1pbm9yIGNvbW1lbnRzwqdxdWVzdGlvbnMgYmVsb3cgdGhh dCBtYXkgbm90IGp1c3RpZnkgYSByZXNwaW4uCgpPbiAxLzI3LzIxIDQ6NDMgUE0sIEplYW4tUGhp bGlwcGUgQnJ1Y2tlciB3cm90ZToKPiBUaGUgU01NVSBwcm92aWRlcyBhIFN0YWxsIG1vZGVsIGZv ciBoYW5kbGluZyBwYWdlIGZhdWx0cyBpbiBwbGF0Zm9ybQo+IGRldmljZXMuIEl0IGlzIHNpbWls YXIgdG8gUENJZSBQUkksIGJ1dCBkb2Vzbid0IHJlcXVpcmUgZGV2aWNlcyB0byBoYXZlCj4gdGhl aXIgb3duIHRyYW5zbGF0aW9uIGNhY2hlLiBJbnN0ZWFkLCBmYXVsdGluZyB0cmFuc2FjdGlvbnMg YXJlIHBhcmtlZAo+IGFuZCB0aGUgT1MgaXMgZ2l2ZW4gYSBjaGFuY2UgdG8gZml4IHRoZSBwYWdl IHRhYmxlcyBhbmQgcmV0cnkgdGhlCj4gdHJhbnNhY3Rpb24uCj4gCj4gRW5hYmxlIHN0YWxsIGZv ciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBpdCAob3B0LWluIGJ5IGZpcm13YXJlKS4gV2hlbiBhbgo+ IGV2ZW50IGNvcnJlc3BvbmRzIHRvIGEgdHJhbnNsYXRpb24gZXJyb3IsIGNhbGwgdGhlIElPTU1V IGZhdWx0IGhhbmRsZXIuCj4gSWYgdGhlIGZhdWx0IGlzIHJlY292ZXJhYmxlLCBpdCB3aWxsIGNh bGwgdXMgYmFjayB0byB0ZXJtaW5hdGUgb3IKPiBjb250aW51ZSB0aGUgc3RhbGwuCj4gCj4gVG8g dXNlIHN0YWxsIGRldmljZSBkcml2ZXJzIG5lZWQgdG8gZW5hYmxlIElPTU1VX0RFVl9GRUFUX0lP UEYsIHdoaWNoCj4gaW5pdGlhbGl6ZXMgdGhlIGZhdWx0IHF1ZXVlIGZvciB0aGUgZGV2aWNlLgo+ IAo+IFRlc3RlZC1ieTogWmhhbmdmZWkgR2FvIDx6aGFuZ2ZlaS5nYW9AbGluYXJvLm9yZz4KPiBS ZXZpZXdlZC1ieTogSm9uYXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEplYW4tUGhpbGlwcGUgQnJ1Y2tlciA8amVhbi1waGlsaXBwZUBs aW5hcm8ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21t dS12My5oICAgfCAgNDMgKysrKwo+ICAuLi4vaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11 LXYzLXN2YS5jICAgfCAgNTkgKysrKystCj4gIGRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYz L2FybS1zbW11LXYzLmMgICB8IDE4OSArKysrKysrKysrKysrKysrKy0KPiAgMyBmaWxlcyBjaGFu Z2VkLCAyNzYgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmggYi9kcml2ZXJzL2lv bW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5oCj4gaW5kZXggN2IxNWI3NTgwYzZlLi41 OWFmMGJiZDJmN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMv YXJtLXNtbXUtdjMuaAo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1z bW11LXYzLmgKPiBAQCAtMzU0LDYgKzM1NCwxMyBAQAo+ICAjZGVmaW5lIENNRFFfUFJJXzFfR1JQ SUQJCUdFTk1BU0tfVUxMKDgsIDApCj4gICNkZWZpbmUgQ01EUV9QUklfMV9SRVNQCQkJR0VOTUFT S19VTEwoMTMsIDEyKQo+ICAKPiArI2RlZmluZSBDTURRX1JFU1VNRV8wX1JFU1BfVEVSTQkJMFVM Cj4gKyNkZWZpbmUgQ01EUV9SRVNVTUVfMF9SRVNQX1JFVFJZCTFVTAo+ICsjZGVmaW5lIENNRFFf UkVTVU1FXzBfUkVTUF9BQk9SVAkyVUwKPiArI2RlZmluZSBDTURRX1JFU1VNRV8wX1JFU1AJCUdF Tk1BU0tfVUxMKDEzLCAxMikKPiArI2RlZmluZSBDTURRX1JFU1VNRV8wX1NJRAkJR0VOTUFTS19V TEwoNjMsIDMyKQo+ICsjZGVmaW5lIENNRFFfUkVTVU1FXzFfU1RBRwkJR0VOTUFTS19VTEwoMTUs IDApCj4gKwo+ICAjZGVmaW5lIENNRFFfU1lOQ18wX0NTCQkJR0VOTUFTS19VTEwoMTMsIDEyKQo+ ICAjZGVmaW5lIENNRFFfU1lOQ18wX0NTX05PTkUJCTAKPiAgI2RlZmluZSBDTURRX1NZTkNfMF9D U19JUlEJCTEKPiBAQCAtMzcwLDYgKzM3NywyNSBAQAo+ICAKPiAgI2RlZmluZSBFVlRRXzBfSUQJ CQlHRU5NQVNLX1VMTCg3LCAwKQo+ICAKPiArI2RlZmluZSBFVlRfSURfVFJBTlNMQVRJT05fRkFV TFQJMHgxMAo+ICsjZGVmaW5lIEVWVF9JRF9BRERSX1NJWkVfRkFVTFQJCTB4MTEKPiArI2RlZmlu ZSBFVlRfSURfQUNDRVNTX0ZBVUxUCQkweDEyCj4gKyNkZWZpbmUgRVZUX0lEX1BFUk1JU1NJT05f RkFVTFQJCTB4MTMKPiArCj4gKyNkZWZpbmUgRVZUUV8wX1NTVgkJCSgxVUwgPDwgMTEpCj4gKyNk ZWZpbmUgRVZUUV8wX1NTSUQJCQlHRU5NQVNLX1VMTCgzMSwgMTIpCj4gKyNkZWZpbmUgRVZUUV8w X1NJRAkJCUdFTk1BU0tfVUxMKDYzLCAzMikKPiArI2RlZmluZSBFVlRRXzFfU1RBRwkJCUdFTk1B U0tfVUxMKDE1LCAwKQo+ICsjZGVmaW5lIEVWVFFfMV9TVEFMTAkJCSgxVUwgPDwgMzEpCj4gKyNk ZWZpbmUgRVZUUV8xX1BuVQkJCSgxVUwgPDwgMzMpCj4gKyNkZWZpbmUgRVZUUV8xX0luRAkJCSgx VUwgPDwgMzQpCj4gKyNkZWZpbmUgRVZUUV8xX1JuVwkJCSgxVUwgPDwgMzUpCj4gKyNkZWZpbmUg RVZUUV8xX1MyCQkJKDFVTCA8PCAzOSkKPiArI2RlZmluZSBFVlRRXzFfQ0xBU1MJCQlHRU5NQVNL X1VMTCg0MSwgNDApCj4gKyNkZWZpbmUgRVZUUV8xX1RUX1JFQUQJCQkoMVVMIDw8IDQ0KQo+ICsj ZGVmaW5lIEVWVFFfMl9BRERSCQkJR0VOTUFTS19VTEwoNjMsIDApCj4gKyNkZWZpbmUgRVZUUV8z X0lQQQkJCUdFTk1BU0tfVUxMKDUxLCAxMikKPiArCj4gIC8qIFBSSSBxdWV1ZSAqLwo+ICAjZGVm aW5lIFBSSVFfRU5UX1NaX1NISUZUCQk0Cj4gICNkZWZpbmUgUFJJUV9FTlRfRFdPUkRTCQkJKCgx IDw8IFBSSVFfRU5UX1NaX1NISUZUKSA+PiAzKQo+IEBAIC00NjQsNiArNDkwLDEzIEBAIHN0cnVj dCBhcm1fc21tdV9jbWRxX2VudCB7Cj4gIAkJCWVudW0gcHJpX3Jlc3AJCXJlc3A7Cj4gIAkJfSBw cmk7Cj4gIAo+ICsJCSNkZWZpbmUgQ01EUV9PUF9SRVNVTUUJCTB4NDQKPiArCQlzdHJ1Y3Qgewo+ ICsJCQl1MzIJCQlzaWQ7Cj4gKwkJCXUxNgkJCXN0YWc7Cj4gKwkJCXU4CQkJcmVzcDsKPiArCQl9 IHJlc3VtZTsKPiArCj4gIAkJI2RlZmluZSBDTURRX09QX0NNRF9TWU5DCTB4NDYKPiAgCQlzdHJ1 Y3Qgewo+ICAJCQl1NjQJCQltc2lhZGRyOwo+IEBAIC01MjIsNiArNTU1LDcgQEAgc3RydWN0IGFy bV9zbW11X2NtZHFfYmF0Y2ggewo+ICAKPiAgc3RydWN0IGFybV9zbW11X2V2dHEgewo+ICAJc3Ry dWN0IGFybV9zbW11X3F1ZXVlCQlxOwo+ICsJc3RydWN0IGlvcGZfcXVldWUJCSppb3BmOwo+ICAJ dTMyCQkJCW1heF9zdGFsbHM7Cj4gIH07Cj4gIAo+IEBAIC02NTksNyArNjkzLDkgQEAgc3RydWN0 IGFybV9zbW11X21hc3RlciB7Cj4gIAlzdHJ1Y3QgYXJtX3NtbXVfc3RyZWFtCQkqc3RyZWFtczsK PiAgCXVuc2lnbmVkIGludAkJCW51bV9zdHJlYW1zOwo+ICAJYm9vbAkJCQlhdHNfZW5hYmxlZDsK PiArCWJvb2wJCQkJc3RhbGxfZW5hYmxlZDsKPiAgCWJvb2wJCQkJc3ZhX2VuYWJsZWQ7Cj4gKwli b29sCQkJCWlvcGZfZW5hYmxlZDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQJCWJvbmRzOwo+ICAJdW5z aWduZWQgaW50CQkJc3NpZF9iaXRzOwo+ICB9Owo+IEBAIC02NzgsNiArNzE0LDcgQEAgc3RydWN0 IGFybV9zbW11X2RvbWFpbiB7Cj4gIAo+ICAJc3RydWN0IGlvX3BndGFibGVfb3BzCQkqcGd0Ymxf b3BzOwo+ICAJYm9vbAkJCQlub25fc3RyaWN0Owo+ICsJYm9vbAkJCQlzdGFsbF9lbmFibGVkOwo+ ICAJYXRvbWljX3QJCQlucl9hdHNfbWFzdGVyczsKPiAgCj4gIAllbnVtIGFybV9zbW11X2RvbWFp bl9zdGFnZQlzdGFnZTsKPiBAQCAtNzE5LDYgKzc1Niw3IEBAIGJvb2wgYXJtX3NtbXVfbWFzdGVy X3N2YV9zdXBwb3J0ZWQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyKTsKPiAgYm9vbCBh cm1fc21tdV9tYXN0ZXJfc3ZhX2VuYWJsZWQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVy KTsKPiAgaW50IGFybV9zbW11X21hc3Rlcl9lbmFibGVfc3ZhKHN0cnVjdCBhcm1fc21tdV9tYXN0 ZXIgKm1hc3Rlcik7Cj4gIGludCBhcm1fc21tdV9tYXN0ZXJfZGlzYWJsZV9zdmEoc3RydWN0IGFy bV9zbW11X21hc3RlciAqbWFzdGVyKTsKPiArYm9vbCBhcm1fc21tdV9tYXN0ZXJfaW9wZl9zdXBw b3J0ZWQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyKTsKPiAgc3RydWN0IGlvbW11X3N2 YSAqYXJtX3NtbXVfc3ZhX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbW1fc3RydWN0 ICptbSwKPiAgCQkJCSAgICB2b2lkICpkcnZkYXRhKTsKPiAgdm9pZCBhcm1fc21tdV9zdmFfdW5i aW5kKHN0cnVjdCBpb21tdV9zdmEgKmhhbmRsZSk7Cj4gQEAgLTc1MCw2ICs3ODgsMTEgQEAgc3Rh dGljIGlubGluZSBpbnQgYXJtX3NtbXVfbWFzdGVyX2Rpc2FibGVfc3ZhKHN0cnVjdCBhcm1fc21t dV9tYXN0ZXIgKm1hc3RlcikKPiAgCXJldHVybiAtRU5PREVWOwo+ICB9Cj4gIAo+ICtzdGF0aWMg aW5saW5lIGJvb2wgYXJtX3NtbXVfbWFzdGVyX2lvcGZfc3VwcG9ydGVkKHN0cnVjdCBhcm1fc21t dV9tYXN0ZXIgKm1hc3RlcikKPiArewo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgaW5saW5lIHN0cnVjdCBpb21tdV9zdmEgKgo+ICBhcm1fc21tdV9zdmFfYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB2b2lkICpkcnZkYXRhKQo+ICB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLXN2 YS5jIGIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMtc3ZhLmMKPiBp bmRleCBiYjI1MWNhYjYxZjMuLmVlNjZkMWY0Y2I4MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lv bW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My1zdmEuYwo+ICsrKyBiL2RyaXZlcnMvaW9t bXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLXN2YS5jCj4gQEAgLTQzNSw5ICs0MzUsMTMg QEAgYm9vbCBhcm1fc21tdV9zdmFfc3VwcG9ydGVkKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNt bXUpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wgYXJtX3NtbXVfaW9w Zl9zdXBwb3J0ZWQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyKQo+ICtib29sIGFybV9z bW11X21hc3Rlcl9pb3BmX3N1cHBvcnRlZChzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIp Cj4gIHsKPiAtCXJldHVybiBmYWxzZTsKPiArCS8qIFdlJ3JlIG5vdCBrZWVwaW5nIHRyYWNrIG9m IFNJRHMgaW4gZmF1bHQgZXZlbnRzICovCnNoYWxsIHdlPyBbKl0gYmVsb3cKPiArCWlmIChtYXN0 ZXItPm51bV9zdHJlYW1zICE9IDEpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiBt YXN0ZXItPnN0YWxsX2VuYWJsZWQ7Cj4gIH0KPiAgCj4gIGJvb2wgYXJtX3NtbXVfbWFzdGVyX3N2 YV9zdXBwb3J0ZWQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyKQo+IEBAIC00NDUsOCAr NDQ5LDggQEAgYm9vbCBhcm1fc21tdV9tYXN0ZXJfc3ZhX3N1cHBvcnRlZChzdHJ1Y3QgYXJtX3Nt bXVfbWFzdGVyICptYXN0ZXIpCj4gIAlpZiAoIShtYXN0ZXItPnNtbXUtPmZlYXR1cmVzICYgQVJN X1NNTVVfRkVBVF9TVkEpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQkvKiBTU0lEIGFuZCBJ T1BGIHN1cHBvcnQgYXJlIG1hbmRhdG9yeSBmb3IgdGhlIG1vbWVudCAqLwo+IC0JcmV0dXJuIG1h c3Rlci0+c3NpZF9iaXRzICYmIGFybV9zbW11X2lvcGZfc3VwcG9ydGVkKG1hc3Rlcik7Cj4gKwkv KiBTU0lEIHN1cHBvcnQgaXMgbWFuZGF0b3J5IGZvciB0aGUgbW9tZW50ICovCj4gKwlyZXR1cm4g bWFzdGVyLT5zc2lkX2JpdHM7Cj4gIH0KPiAgCj4gIGJvb2wgYXJtX3NtbXVfbWFzdGVyX3N2YV9l bmFibGVkKHN0cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlcikKPiBAQCAtNDU5LDEzICs0NjMs NTUgQEAgYm9vbCBhcm1fc21tdV9tYXN0ZXJfc3ZhX2VuYWJsZWQoc3RydWN0IGFybV9zbW11X21h c3RlciAqbWFzdGVyKQo+ICAJcmV0dXJuIGVuYWJsZWQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQg YXJtX3NtbXVfbWFzdGVyX3N2YV9lbmFibGVfaW9wZihzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICpt YXN0ZXIpCj4gK3sKPiArCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtYXN0ZXIt PmRldjsKPiArCj4gKwkvKgo+ICsJICogRHJpdmVycyBmb3IgZGV2aWNlcyBzdXBwb3J0aW5nIFBS SSBvciBzdGFsbCBzaG91bGQgZW5hYmxlIElPUEYgZmlyc3QuCj4gKwkgKiBPdGhlcnMgaGF2ZSBk ZXZpY2Utc3BlY2lmaWMgZmF1bHQgaGFuZGxlcnMgYW5kIGRvbid0IG5lZWQgSU9QRi4KPiArCSAq Lwo+ICsJaWYgKCFhcm1fc21tdV9tYXN0ZXJfaW9wZl9zdXBwb3J0ZWQobWFzdGVyKSkKPiArCQly ZXR1cm4gMDsKPiArCj4gKwlpZiAoIW1hc3Rlci0+aW9wZl9lbmFibGVkKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCXJldCA9IGlvcGZfcXVldWVfYWRkX2RldmljZShtYXN0ZXItPnNtbXUt PmV2dHEuaW9wZiwgZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwly ZXQgPSBpb21tdV9yZWdpc3Rlcl9kZXZpY2VfZmF1bHRfaGFuZGxlcihkZXYsIGlvbW11X3F1ZXVl X2lvcGYsIGRldik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJaW9wZl9xdWV1ZV9yZW1vdmVfZGV2aWNl KG1hc3Rlci0+c21tdS0+ZXZ0cS5pb3BmLCBkZXYpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXJtX3NtbXVfbWFzdGVyX3N2YV9k aXNhYmxlX2lvcGYoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyKQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBtYXN0ZXItPmRldjsKPiArCj4gKwlpZiAoIW1hc3Rlci0+aW9wZl9l bmFibGVkKQo+ICsJCXJldHVybjsKPiArCj4gKwlpb21tdV91bnJlZ2lzdGVyX2RldmljZV9mYXVs dF9oYW5kbGVyKGRldik7Cj4gKwlpb3BmX3F1ZXVlX3JlbW92ZV9kZXZpY2UobWFzdGVyLT5zbW11 LT5ldnRxLmlvcGYsIGRldik7Cj4gK30KPiArCj4gIGludCBhcm1fc21tdV9tYXN0ZXJfZW5hYmxl X3N2YShzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIpCj4gIHsKPiArCWludCByZXQ7Cj4g Kwo+ICAJbXV0ZXhfbG9jaygmc3ZhX2xvY2spOwo+IC0JbWFzdGVyLT5zdmFfZW5hYmxlZCA9IHRy dWU7Cj4gKwlyZXQgPSBhcm1fc21tdV9tYXN0ZXJfc3ZhX2VuYWJsZV9pb3BmKG1hc3Rlcik7Cj4g KwlpZiAoIXJldCkKPiArCQltYXN0ZXItPnN2YV9lbmFibGVkID0gdHJ1ZTsKPiAgCW11dGV4X3Vu bG9jaygmc3ZhX2xvY2spOwo+ICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIHJldDsKPiAgfQo+ ICAKPiAgaW50IGFybV9zbW11X21hc3Rlcl9kaXNhYmxlX3N2YShzdHJ1Y3QgYXJtX3NtbXVfbWFz dGVyICptYXN0ZXIpCj4gQEAgLTQ3Niw2ICs1MjIsNyBAQCBpbnQgYXJtX3NtbXVfbWFzdGVyX2Rp c2FibGVfc3ZhKHN0cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlcikKPiAgCQltdXRleF91bmxv Y2soJnN2YV9sb2NrKTsKPiAgCQlyZXR1cm4gLUVCVVNZOwo+ICAJfQo+ICsJYXJtX3NtbXVfbWFz dGVyX3N2YV9kaXNhYmxlX2lvcGYobWFzdGVyKTsKPiAgCW1hc3Rlci0+c3ZhX2VuYWJsZWQgPSBm YWxzZTsKPiAgCW11dGV4X3VubG9jaygmc3ZhX2xvY2spOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYyBiL2RyaXZlcnMvaW9tbXUv YXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMKPiBpbmRleCAzYWZlYzZlZDgwNzUuLjc2YjIz MDZkZGZmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0t c21tdS12My5jCj4gKysrIGIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUt djMuYwo+IEBAIC0zMiw2ICszMiw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9hbWJhL2J1cy5oPgo+ ICAKPiAgI2luY2x1ZGUgImFybS1zbW11LXYzLmgiCj4gKyNpbmNsdWRlICIuLi8uLi9pb21tdS1z dmEtbGliLmgiCj4gIAo+ICBzdGF0aWMgYm9vbCBkaXNhYmxlX2J5cGFzcyA9IHRydWU7Cj4gIG1v ZHVsZV9wYXJhbShkaXNhYmxlX2J5cGFzcywgYm9vbCwgMDQ0NCk7Cj4gQEAgLTMxNSw2ICszMTYs MTEgQEAgc3RhdGljIGludCBhcm1fc21tdV9jbWRxX2J1aWxkX2NtZCh1NjQgKmNtZCwgc3RydWN0 IGFybV9zbW11X2NtZHFfZW50ICplbnQpCj4gIAkJfQo+ICAJCWNtZFsxXSB8PSBGSUVMRF9QUkVQ KENNRFFfUFJJXzFfUkVTUCwgZW50LT5wcmkucmVzcCk7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIENN RFFfT1BfUkVTVU1FOgo+ICsJCWNtZFswXSB8PSBGSUVMRF9QUkVQKENNRFFfUkVTVU1FXzBfU0lE LCBlbnQtPnJlc3VtZS5zaWQpOwo+ICsJCWNtZFswXSB8PSBGSUVMRF9QUkVQKENNRFFfUkVTVU1F XzBfUkVTUCwgZW50LT5yZXN1bWUucmVzcCk7Cj4gKwkJY21kWzFdIHw9IEZJRUxEX1BSRVAoQ01E UV9SRVNVTUVfMV9TVEFHLCBlbnQtPnJlc3VtZS5zdGFnKTsKPiArCQlicmVhazsKPiAgCWNhc2Ug Q01EUV9PUF9DTURfU1lOQzoKPiAgCQlpZiAoZW50LT5zeW5jLm1zaWFkZHIpIHsKPiAgCQkJY21k WzBdIHw9IEZJRUxEX1BSRVAoQ01EUV9TWU5DXzBfQ1MsIENNRFFfU1lOQ18wX0NTX0lSUSk7Cj4g QEAgLTg3OCw2ICs4ODQsNDQgQEAgc3RhdGljIGludCBhcm1fc21tdV9jbWRxX2JhdGNoX3N1Ym1p dChzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LAo+ICAJcmV0dXJuIGFybV9zbW11X2NtZHFf aXNzdWVfY21kbGlzdChzbW11LCBjbWRzLT5jbWRzLCBjbWRzLT5udW0sIHRydWUpOwo+ICB9Cj4g IAo+ICtzdGF0aWMgaW50IGFybV9zbW11X3BhZ2VfcmVzcG9uc2Uoc3RydWN0IGRldmljZSAqZGV2 LAo+ICsJCQkJICBzdHJ1Y3QgaW9tbXVfZmF1bHRfZXZlbnQgKnVudXNlZCwKPiArCQkJCSAgc3Ry dWN0IGlvbW11X3BhZ2VfcmVzcG9uc2UgKnJlc3ApCj4gK3sKPiArCXN0cnVjdCBhcm1fc21tdV9j bWRxX2VudCBjbWQgPSB7MH07Cj4gKwlzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIgPSBk ZXZfaW9tbXVfcHJpdl9nZXQoZGV2KTsKPiArCWludCBzaWQgPSBtYXN0ZXItPnN0cmVhbXNbMF0u aWQ7ClsqXQo+ICsKPiArCWlmIChtYXN0ZXItPnN0YWxsX2VuYWJsZWQpIHsKPiArCQljbWQub3Bj b2RlCQk9IENNRFFfT1BfUkVTVU1FOwo+ICsJCWNtZC5yZXN1bWUuc2lkCQk9IHNpZDsKPiArCQlj bWQucmVzdW1lLnN0YWcJCT0gcmVzcC0+Z3JwaWQ7Cj4gKwkJc3dpdGNoIChyZXNwLT5jb2RlKSB7 Cj4gKwkJY2FzZSBJT01NVV9QQUdFX1JFU1BfSU5WQUxJRDoKYWRkIGZhbGx0aHJvdWdoPwo+ICsJ CWNhc2UgSU9NTVVfUEFHRV9SRVNQX0ZBSUxVUkU6Cj4gKwkJCWNtZC5yZXN1bWUucmVzcCA9IENN RFFfUkVTVU1FXzBfUkVTUF9BQk9SVDsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBJT01NVV9QQUdF X1JFU1BfU1VDQ0VTUzoKPiArCQkJY21kLnJlc3VtZS5yZXNwID0gQ01EUV9SRVNVTUVfMF9SRVNQ X1JFVFJZOwo+ICsJCQlicmVhazsKPiArCQlkZWZhdWx0Ogo+ICsJCQlyZXR1cm4gLUVJTlZBTDsK PiArCQl9Cj4gKwl9IGVsc2Ugewo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCWFy bV9zbW11X2NtZHFfaXNzdWVfY21kKG1hc3Rlci0+c21tdSwgJmNtZCk7Cj4gKwkvKgo+ICsJICog RG9uJ3Qgc2VuZCBhIFNZTkMsIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcgZm9yIFJFU1VNRSBvciBQ UklfUkVTUC4KPiArCSAqIFJFU1VNRSBjb25zdW1wdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIHN0 YWxsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZQo+ICsJICogdGVybWluYXRlZC4uLiBhdCBzb21lIHBv aW50IGluIHRoZSBmdXR1cmUuIFBSSV9SRVNQIGlzIGZpcmUgYW5kCj4gKwkgKiBmb3JnZXQuCj4g KwkgKi8KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgLyogQ29udGV4dCBkZXNjcmlwdG9y IG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgKi8KPiAgdm9pZCBhcm1fc21tdV90bGJfaW52X2FzaWQo c3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwgdTE2IGFzaWQpCj4gIHsKPiBAQCAtOTg4LDcg KzEwMzIsNiBAQCBpbnQgYXJtX3NtbXVfd3JpdGVfY3R4X2Rlc2Moc3RydWN0IGFybV9zbW11X2Rv bWFpbiAqc21tdV9kb21haW4sIGludCBzc2lkLAo+ICAJdTY0IHZhbDsKPiAgCWJvb2wgY2RfbGl2 ZTsKPiAgCV9fbGU2NCAqY2RwdHI7Cj4gLQlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11ID0g c21tdV9kb21haW4tPnNtbXU7Cj4gIAo+ICAJaWYgKFdBUk5fT04oc3NpZCA+PSAoMSA8PCBzbW11 X2RvbWFpbi0+czFfY2ZnLnMxY2RtYXgpKSkKPiAgCQlyZXR1cm4gLUUyQklHOwo+IEBAIC0xMDMz LDggKzEwNzYsNyBAQCBpbnQgYXJtX3NtbXVfd3JpdGVfY3R4X2Rlc2Moc3RydWN0IGFybV9zbW11 X2RvbWFpbiAqc21tdV9kb21haW4sIGludCBzc2lkLAo+ICAJCQlGSUVMRF9QUkVQKENUWERFU0Nf Q0RfMF9BU0lELCBjZC0+YXNpZCkgfAo+ICAJCQlDVFhERVNDX0NEXzBfVjsKPiAgCj4gLQkJLyog U1RBTExfTU9ERUw9PTBiMTAgJiYgQ0QuUz09MCBpcyBJTExFR0FMICovCj4gLQkJaWYgKHNtbXUt PmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9TVEFMTF9GT1JDRSkKPiArCQlpZiAoc21tdV9kb21h aW4tPnN0YWxsX2VuYWJsZWQpCj4gIAkJCXZhbCB8PSBDVFhERVNDX0NEXzBfUzsKPiAgCX0KPiAg Cj4gQEAgLTEyNzgsNyArMTMyMCw3IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X3dyaXRlX3N0cnRh Yl9lbnQoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyLCB1MzIgc2lkLAo+ICAJCQkgRklF TERfUFJFUChTVFJUQUJfU1RFXzFfU1RSVywgc3RydykpOwo+ICAKPiAgCQlpZiAoc21tdS0+ZmVh dHVyZXMgJiBBUk1fU01NVV9GRUFUX1NUQUxMUyAmJgo+IC0JCSAgICEoc21tdS0+ZmVhdHVyZXMg JiBBUk1fU01NVV9GRUFUX1NUQUxMX0ZPUkNFKSkKPiArCQkgICAgIW1hc3Rlci0+c3RhbGxfZW5h YmxlZCkKPiAgCQkJZHN0WzFdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMV9TMVNUQUxMRCk7 Cj4gIAo+ICAJCXZhbCB8PSAoczFfY2ZnLT5jZGNmZy5jZHRhYl9kbWEgJiBTVFJUQUJfU1RFXzBf UzFDVFhQVFJfTUFTSykgfAo+IEBAIC0xMzU1LDcgKzEzOTcsNiBAQCBzdGF0aWMgaW50IGFybV9z bW11X2luaXRfbDJfc3RydGFiKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUsIHUzMiBzaWQp Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtX19tYXliZV91bnVzZWQKPiAgc3RhdGljIHN0cnVj dCBhcm1fc21tdV9tYXN0ZXIgKgo+ICBhcm1fc21tdV9maW5kX21hc3RlcihzdHJ1Y3QgYXJtX3Nt bXVfZGV2aWNlICpzbW11LCB1MzIgc2lkKQo+ICB7Cj4gQEAgLTEzODIsOSArMTQyMyw5NiBAQCBh cm1fc21tdV9maW5kX21hc3RlcihzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LCB1MzIgc2lk KQo+ICB9Cj4gIAo+ICAvKiBJUlEgYW5kIGV2ZW50IGhhbmRsZXJzICovCj4gK3N0YXRpYyBpbnQg YXJtX3NtbXVfaGFuZGxlX2V2dChzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LCB1NjQgKmV2 dCkKPiArewo+ICsJaW50IHJldDsKPiArCXUzMiByZWFzb247Cj4gKwl1MzIgcGVybSA9IDA7Cj4g KwlzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXI7Cj4gKwlib29sIHNzaWRfdmFsaWQgPSBl dnRbMF0gJiBFVlRRXzBfU1NWOwo+ICsJdTMyIHNpZCA9IEZJRUxEX0dFVChFVlRRXzBfU0lELCBl dnRbMF0pOwo+ICsJc3RydWN0IGlvbW11X2ZhdWx0X2V2ZW50IGZhdWx0X2V2dCA9IHsgfTsKPiAr CXN0cnVjdCBpb21tdV9mYXVsdCAqZmx0ID0gJmZhdWx0X2V2dC5mYXVsdDsKPiArCj4gKwkvKiBT dGFnZS0yIGlzIGFsd2F5cyBwaW5uZWQgYXQgdGhlIG1vbWVudCAqLwo+ICsJaWYgKGV2dFsxXSAm IEVWVFFfMV9TMikKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwltYXN0ZXIgPSBhcm1fc21t dV9maW5kX21hc3RlcihzbW11LCBzaWQpOwo+ICsJaWYgKCFtYXN0ZXIpCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJaWYgKGV2dFsxXSAmIEVWVFFfMV9SblcpCj4gKwkJcGVybSB8PSBJT01N VV9GQVVMVF9QRVJNX1JFQUQ7Cj4gKwllbHNlCj4gKwkJcGVybSB8PSBJT01NVV9GQVVMVF9QRVJN X1dSSVRFOwo+ICsKPiArCWlmIChldnRbMV0gJiBFVlRRXzFfSW5EKQo+ICsJCXBlcm0gfD0gSU9N TVVfRkFVTFRfUEVSTV9FWEVDOwo+ICsKPiArCWlmIChldnRbMV0gJiBFVlRRXzFfUG5VKQo+ICsJ CXBlcm0gfD0gSU9NTVVfRkFVTFRfUEVSTV9QUklWOwo+ICsKPiArCXN3aXRjaCAoRklFTERfR0VU KEVWVFFfMF9JRCwgZXZ0WzBdKSkgewo+ICsJY2FzZSBFVlRfSURfVFJBTlNMQVRJT05fRkFVTFQ6 Cj4gKwljYXNlIEVWVF9JRF9BRERSX1NJWkVfRkFVTFQ6Cj4gKwljYXNlIEVWVF9JRF9BQ0NFU1Nf RkFVTFQ6Cj4gKwkJcmVhc29uID0gSU9NTVVfRkFVTFRfUkVBU09OX1BURV9GRVRDSDsKRG9lc24n dCBpdCByYXRoZXIgbWFwIHRvIElPTU1VX0ZBVUxUX1JFQVNPTl9BQ0NFU1M/Ci8qIGFjY2VzcyBm bGFnIGNoZWNrIGZhaWxlZCAqLyIKPiArCQlicmVhazsKPiArCWNhc2UgRVZUX0lEX1BFUk1JU1NJ T05fRkFVTFQ6Cj4gKwkJcmVhc29uID0gSU9NTVVfRkFVTFRfUkVBU09OX1BFUk1JU1NJT047Cj4g KwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAtRU9QTk9UU1VQUDsKPiArCX0KPiAr Cj4gKwlpZiAoZXZ0WzFdICYgRVZUUV8xX1NUQUxMKSB7Cj4gKwkJZmx0LT50eXBlID0gSU9NTVVf RkFVTFRfUEFHRV9SRVE7Cj4gKwkJZmx0LT5wcm0gPSAoc3RydWN0IGlvbW11X2ZhdWx0X3BhZ2Vf cmVxdWVzdCkgewo+ICsJCQkuZmxhZ3MgPSBJT01NVV9GQVVMVF9QQUdFX1JFUVVFU1RfTEFTVF9Q QUdFLAo+ICsJCQkuZ3JwaWQgPSBGSUVMRF9HRVQoRVZUUV8xX1NUQUcsIGV2dFsxXSksCj4gKwkJ CS5wZXJtID0gcGVybSwKPiArCQkJLmFkZHIgPSBGSUVMRF9HRVQoRVZUUV8yX0FERFIsIGV2dFsy XSksCj4gKwkJfTsKPiArCj4gKwkJaWYgKHNzaWRfdmFsaWQpIHsKPiArCQkJZmx0LT5wcm0uZmxh Z3MgfD0gSU9NTVVfRkFVTFRfUEFHRV9SRVFVRVNUX1BBU0lEX1ZBTElEOwo+ICsJCQlmbHQtPnBy bS5wYXNpZCA9IEZJRUxEX0dFVChFVlRRXzBfU1NJRCwgZXZ0WzBdKTsKPiArCQl9Cj4gKwl9IGVs c2Ugewo+ICsJCWZsdC0+dHlwZSA9IElPTU1VX0ZBVUxUX0RNQV9VTlJFQ09WOwo+ICsJCWZsdC0+ ZXZlbnQgPSAoc3RydWN0IGlvbW11X2ZhdWx0X3VucmVjb3ZlcmFibGUpIHsKPiArCQkJLnJlYXNv biA9IHJlYXNvbiwKPiArCQkJLmZsYWdzID0gSU9NTVVfRkFVTFRfVU5SRUNPVl9BRERSX1ZBTElE IHwKPiArCQkJCSBJT01NVV9GQVVMVF9VTlJFQ09WX0ZFVENIX0FERFJfVkFMSUQsCm5pdDogc2hh bGwgSU9NTVVfRkFVTFRfVU5SRUNPVl9GRVRDSF9BRERSX1ZBTElEIGJlIHNldCBoZXJlPyBTdXBw b3J0ZWQKdW5yZWNvdmVyYWJsZSBmYXVsdHMgZmVhdHVyZSB0aGUgSVBBIGZpZWxkIHdoaWNoIGlz IFVOS05PV04gZm9yIFMxCnRyYW5zbGF0aW9ucy4gZmV0Y2hfYWRkciByYXRoZXIgd2FzCmNvcnJl c3BvbmRpbmcgdG8gV0FMS19FQUJULkZldGNoX2FkZHIgdG8gbWUuCgo+ICsJCQkucGVybSA9IHBl cm0sCj4gKwkJCS5hZGRyID0gRklFTERfR0VUKEVWVFFfMl9BRERSLCBldnRbMl0pLAo+ICsJCQku ZmV0Y2hfYWRkciA9IEZJRUxEX0dFVChFVlRRXzNfSVBBLCBldnRbM10pLAo+ICsJCX07Cj4gKwo+ ICsJCWlmIChzc2lkX3ZhbGlkKSB7Cj4gKwkJCWZsdC0+ZXZlbnQuZmxhZ3MgfD0gSU9NTVVfRkFV TFRfVU5SRUNPVl9QQVNJRF9WQUxJRDsKPiArCQkJZmx0LT5ldmVudC5wYXNpZCA9IEZJRUxEX0dF VChFVlRRXzBfU1NJRCwgZXZ0WzBdKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gaW9tbXVf cmVwb3J0X2RldmljZV9mYXVsdChtYXN0ZXItPmRldiwgJmZhdWx0X2V2dCk7Cj4gKwlpZiAocmV0 ICYmIGZsdC0+dHlwZSA9PSBJT01NVV9GQVVMVF9QQUdFX1JFUSkgewo+ICsJCS8qIE5vYm9keSBj YXJlZCwgYWJvcnQgdGhlIGFjY2VzcyAqLwo+ICsJCXN0cnVjdCBpb21tdV9wYWdlX3Jlc3BvbnNl IHJlc3AgPSB7Cj4gKwkJCS5wYXNpZAkJPSBmbHQtPnBybS5wYXNpZCwKPiArCQkJLmdycGlkCQk9 IGZsdC0+cHJtLmdycGlkLAo+ICsJCQkuY29kZQkJPSBJT01NVV9QQUdFX1JFU1BfRkFJTFVSRSwK PiArCQl9Owo+ICsJCWFybV9zbW11X3BhZ2VfcmVzcG9uc2UobWFzdGVyLT5kZXYsICZmYXVsdF9l dnQsICZyZXNwKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMg aXJxcmV0dXJuX3QgYXJtX3NtbXVfZXZ0cV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGV2KQo+ICB7 Cj4gLQlpbnQgaTsKPiArCWludCBpLCByZXQ7Cj4gIAlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpz bW11ID0gZGV2Owo+ICAJc3RydWN0IGFybV9zbW11X3F1ZXVlICpxID0gJnNtbXUtPmV2dHEucTsK PiAgCXN0cnVjdCBhcm1fc21tdV9sbF9xdWV1ZSAqbGxxID0gJnEtPmxscTsKPiBAQCAtMTM5NCw2 ICsxNTIyLDEwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhcm1fc21tdV9ldnRxX3RocmVhZChpbnQg aXJxLCB2b2lkICpkZXYpCj4gIAkJd2hpbGUgKCFxdWV1ZV9yZW1vdmVfcmF3KHEsIGV2dCkpIHsK PiAgCQkJdTggaWQgPSBGSUVMRF9HRVQoRVZUUV8wX0lELCBldnRbMF0pOwo+ICAKPiArCQkJcmV0 ID0gYXJtX3NtbXVfaGFuZGxlX2V2dChzbW11LCBldnQpOwo+ICsJCQlpZiAoIXJldCkKPiArCQkJ CWNvbnRpbnVlOwo+ICsKPiAgCQkJZGV2X2luZm8oc21tdS0+ZGV2LCAiZXZlbnQgMHglMDJ4IHJl Y2VpdmVkOlxuIiwgaWQpOwo+ICAJCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShldnQpOyAr K2kpCj4gIAkJCQlkZXZfaW5mbyhzbW11LT5kZXYsICJcdDB4JTAxNmxseFxuIiwKPiBAQCAtMTky OCw2ICsyMDYwLDggQEAgc3RhdGljIGludCBhcm1fc21tdV9kb21haW5fZmluYWxpc2VfczEoc3Ry dWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCj4gIAo+ICAJY2ZnLT5zMWNkbWF4ID0g bWFzdGVyLT5zc2lkX2JpdHM7Cj4gIAo+ICsJc21tdV9kb21haW4tPnN0YWxsX2VuYWJsZWQgPSBt YXN0ZXItPnN0YWxsX2VuYWJsZWQ7Cj4gKwo+ICAJcmV0ID0gYXJtX3NtbXVfYWxsb2NfY2RfdGFi bGVzKHNtbXVfZG9tYWluKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBvdXRfZnJlZV9hc2lkOwo+ IEBAIC0yMjc1LDYgKzI0MDksMTIgQEAgc3RhdGljIGludCBhcm1fc21tdV9hdHRhY2hfZGV2KHN0 cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmljZSAqZGV2KQo+ICAJCQlzbW11 X2RvbWFpbi0+czFfY2ZnLnMxY2RtYXgsIG1hc3Rlci0+c3NpZF9iaXRzKTsKPiAgCQlyZXQgPSAt RUlOVkFMOwo+ICAJCWdvdG8gb3V0X3VubG9jazsKPiArCX0gZWxzZSBpZiAoc21tdV9kb21haW4t PnN0YWdlID09IEFSTV9TTU1VX0RPTUFJTl9TMSAmJgo+ICsJCSAgIHNtbXVfZG9tYWluLT5zdGFs bF9lbmFibGVkICE9IG1hc3Rlci0+c3RhbGxfZW5hYmxlZCkgewo+ICsJCWRldl9lcnIoZGV2LCAi Y2Fubm90IGF0dGFjaCB0byBzdGFsbC0lcyBkb21haW5cbiIsCj4gKwkJCXNtbXVfZG9tYWluLT5z dGFsbF9lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Cj4gKwkJcmV0ID0gLUVJTlZB TDsKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gIAl9Cj4gIAo+ICAJbWFzdGVyLT5kb21haW4gPSBz bW11X2RvbWFpbjsKPiBAQCAtMjUxMCw2ICsyNjUwLDExIEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVf ZGV2aWNlICphcm1fc21tdV9wcm9iZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJCW1h c3Rlci0+c3NpZF9iaXRzID0gbWluX3QodTgsIG1hc3Rlci0+c3NpZF9iaXRzLAo+ICAJCQkJCSAg Q1RYREVTQ19MSU5FQVJfQ0RNQVgpOwo+ICAKPiArCWlmICgoc21tdS0+ZmVhdHVyZXMgJiBBUk1f U01NVV9GRUFUX1NUQUxMUyAmJgo+ICsJICAgICBkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRl diwgImRtYS1jYW4tc3RhbGwiKSkgfHwKPiArCSAgICBzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1V X0ZFQVRfU1RBTExfRk9SQ0UpCj4gKwkJbWFzdGVyLT5zdGFsbF9lbmFibGVkID0gdHJ1ZTsKPiAr Cj4gIAlyZXR1cm4gJnNtbXUtPmlvbW11Owo+ICAKPiAgZXJyX2ZyZWVfbWFzdGVyOgo+IEBAIC0y NTI3LDcgKzI2NzIsOCBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9yZWxlYXNlX2RldmljZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCW1hc3RlciA9IGRldl9pb21tdV9w cml2X2dldChkZXYpOwo+IC0JV0FSTl9PTihhcm1fc21tdV9tYXN0ZXJfc3ZhX2VuYWJsZWQobWFz dGVyKSk7Cj4gKwlpZiAoV0FSTl9PTihhcm1fc21tdV9tYXN0ZXJfc3ZhX2VuYWJsZWQobWFzdGVy KSkpCj4gKwkJaW9wZl9xdWV1ZV9yZW1vdmVfZGV2aWNlKG1hc3Rlci0+c21tdS0+ZXZ0cS5pb3Bm LCBkZXYpOwo+ICAJYXJtX3NtbXVfZGV0YWNoX2RldihtYXN0ZXIpOwo+ICAJYXJtX3NtbXVfZGlz YWJsZV9wYXNpZChtYXN0ZXIpOwo+ICAJYXJtX3NtbXVfcmVtb3ZlX21hc3RlcihtYXN0ZXIpOwo+ IEBAIC0yNjU1LDYgKzI4MDEsOCBAQCBzdGF0aWMgYm9vbCBhcm1fc21tdV9kZXZfaGFzX2ZlYXR1 cmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlzd2l0Y2gg KGZlYXQpIHsKPiArCWNhc2UgSU9NTVVfREVWX0ZFQVRfSU9QRjoKPiArCQlyZXR1cm4gYXJtX3Nt bXVfbWFzdGVyX2lvcGZfc3VwcG9ydGVkKG1hc3Rlcik7Cj4gIAljYXNlIElPTU1VX0RFVl9GRUFU X1NWQToKPiAgCQlyZXR1cm4gYXJtX3NtbXVfbWFzdGVyX3N2YV9zdXBwb3J0ZWQobWFzdGVyKTsK PiAgCWRlZmF1bHQ6Cj4gQEAgLTI2NzEsNiArMjgxOSw4IEBAIHN0YXRpYyBib29sIGFybV9zbW11 X2Rldl9mZWF0dXJlX2VuYWJsZWQoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gIAlzd2l0Y2ggKGZlYXQpIHsKPiArCWNhc2UgSU9NTVVfREVWX0ZFQVRfSU9QRjoK PiArCQlyZXR1cm4gbWFzdGVyLT5pb3BmX2VuYWJsZWQ7Cj4gIAljYXNlIElPTU1VX0RFVl9GRUFU X1NWQToKPiAgCQlyZXR1cm4gYXJtX3NtbXVfbWFzdGVyX3N2YV9lbmFibGVkKG1hc3Rlcik7Cj4g IAlkZWZhdWx0Ogo+IEBAIC0yNjgxLDYgKzI4MzEsOCBAQCBzdGF0aWMgYm9vbCBhcm1fc21tdV9k ZXZfZmVhdHVyZV9lbmFibGVkKHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgc3RhdGljIGludCBhcm1f c21tdV9kZXZfZW5hYmxlX2ZlYXR1cmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCQkJICAgICAg IGVudW0gaW9tbXVfZGV2X2ZlYXR1cmVzIGZlYXQpCj4gIHsKPiArCXN0cnVjdCBhcm1fc21tdV9t YXN0ZXIgKm1hc3RlciA9IGRldl9pb21tdV9wcml2X2dldChkZXYpOwo+ICsKPiAgCWlmICghYXJt X3NtbXVfZGV2X2hhc19mZWF0dXJlKGRldiwgZmVhdCkpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4g IAo+IEBAIC0yNjg4LDggKzI4NDAsMTEgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZfZW5hYmxl X2ZlYXR1cmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCXJldHVybiAtRUJVU1k7Cj4gIAo+ICAJ c3dpdGNoIChmZWF0KSB7Cj4gKwljYXNlIElPTU1VX0RFVl9GRUFUX0lPUEY6Cj4gKwkJbWFzdGVy LT5pb3BmX2VuYWJsZWQgPSB0cnVlOwo+ICsJCXJldHVybiAwOwo+ICAJY2FzZSBJT01NVV9ERVZf RkVBVF9TVkE6Cj4gLQkJcmV0dXJuIGFybV9zbW11X21hc3Rlcl9lbmFibGVfc3ZhKGRldl9pb21t dV9wcml2X2dldChkZXYpKTsKPiArCQlyZXR1cm4gYXJtX3NtbXVfbWFzdGVyX2VuYWJsZV9zdmEo bWFzdGVyKTsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gQEAgLTI2 OTgsMTIgKzI4NTMsMTkgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZfZW5hYmxlX2ZlYXR1cmUo c3RydWN0IGRldmljZSAqZGV2LAo+ICBzdGF0aWMgaW50IGFybV9zbW11X2Rldl9kaXNhYmxlX2Zl YXR1cmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJCQkJCWVudW0gaW9tbXVfZGV2X2ZlYXR1cmVz IGZlYXQpCj4gIHsKPiArCXN0cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlciA9IGRldl9pb21t dV9wcml2X2dldChkZXYpOwo+ICsKPiAgCWlmICghYXJtX3NtbXVfZGV2X2ZlYXR1cmVfZW5hYmxl ZChkZXYsIGZlYXQpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXN3aXRjaCAoZmVhdCkg ewo+ICsJY2FzZSBJT01NVV9ERVZfRkVBVF9JT1BGOgo+ICsJCWlmIChtYXN0ZXItPnN2YV9lbmFi bGVkKQo+ICsJCQlyZXR1cm4gLUVCVVNZOwo+ICsJCW1hc3Rlci0+aW9wZl9lbmFibGVkID0gZmFs c2U7Cj4gKwkJcmV0dXJuIDA7Cj4gIAljYXNlIElPTU1VX0RFVl9GRUFUX1NWQToKPiAtCQlyZXR1 cm4gYXJtX3NtbXVfbWFzdGVyX2Rpc2FibGVfc3ZhKGRldl9pb21tdV9wcml2X2dldChkZXYpKTsK PiArCQlyZXR1cm4gYXJtX3NtbXVfbWFzdGVyX2Rpc2FibGVfc3ZhKG1hc3Rlcik7Cj4gIAlkZWZh dWx0Ogo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+IEBAIC0yNzM0LDYgKzI4OTYsNyBAQCBz dGF0aWMgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9vcHMgPSB7Cj4gIAkuc3ZhX2JpbmQJCT0g YXJtX3NtbXVfc3ZhX2JpbmQsCj4gIAkuc3ZhX3VuYmluZAkJPSBhcm1fc21tdV9zdmFfdW5iaW5k LAo+ICAJLnN2YV9nZXRfcGFzaWQJCT0gYXJtX3NtbXVfc3ZhX2dldF9wYXNpZCwKPiArCS5wYWdl X3Jlc3BvbnNlCQk9IGFybV9zbW11X3BhZ2VfcmVzcG9uc2UsCj4gIAkucGdzaXplX2JpdG1hcAkJ PSAtMVVMLCAvKiBSZXN0cmljdGVkIGR1cmluZyBkZXZpY2UgYXR0YWNoICovCj4gIH07Cj4gIAo+ IEBAIC0yODMxLDYgKzI5OTQsMTMgQEAgc3RhdGljIGludCBhcm1fc21tdV9pbml0X3F1ZXVlcyhz dHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiArCWlmICgoc21tdS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1NWQSkgJiYKPiAr CSAgICAoc21tdS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1NUQUxMUykpIHsKPiArCQlzbW11 LT5ldnRxLmlvcGYgPSBpb3BmX3F1ZXVlX2FsbG9jKGRldl9uYW1lKHNtbXUtPmRldikpOwo+ICsJ CWlmICghc21tdS0+ZXZ0cS5pb3BmKQo+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4g IAkvKiBwcmlxICovCj4gIAlpZiAoIShzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1VX0ZFQVRfUFJJ KSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMzc0Niw2ICszOTE2LDcgQEAgc3RhdGljIGludCBhcm1f c21tdV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlpb21t dV9kZXZpY2VfdW5yZWdpc3Rlcigmc21tdS0+aW9tbXUpOwo+ICAJaW9tbXVfZGV2aWNlX3N5c2Zz X3JlbW92ZSgmc21tdS0+aW9tbXUpOwo+ICAJYXJtX3NtbXVfZGV2aWNlX2Rpc2FibGUoc21tdSk7 Cj4gKwlpb3BmX3F1ZXVlX2ZyZWUoc21tdS0+ZXZ0cS5pb3BmKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+IApUaGFua3MKCkVyaWMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1mb3VuZGF0 aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5m by9pb21tdQ==