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 A15A1CD128A for ; Mon, 8 Apr 2024 10:40:46 +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=gYp3/5b6HOC5sCa0dhDW8SOq8DmAHQElilXmq/efVfE=; b=Xj3TtKfpXgXHGQ UsJNI9FN6UTHQZUjiKatnbycyK6uLnohb0wHBng3Qyo7rQ0i5s9mpsS3QCZ+olhktwgjwV4VYvdei pJPcQOzwt5BSam/uHc5HDOezl8V7RBFRk6I7ytVHrHBfvXnkd7YZ1PTPn8/DqFPnRiJNIBnEyWwXn htR0xaWe1gHF0sDGOyA4gYNIVBWtwaG4Y40ZzblzzSGa6vo6boLxMae7CgCFOlKcnxTz6wdREyQ6f bzLkZq3tWqnS118rvtiCjBN/Wa5GIruFzXXsGLiaqZdcmRsFYjq0fHcPClHZwXKD9d+eF73mcywxt diEgad0O6GOry9OfQDzQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rtmQP-0000000FHw2-3cI3; Mon, 08 Apr 2024 10:40:29 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rtmQL-0000000FHvf-1UXT for linux-arm-kernel@lists.infradead.org; Mon, 08 Apr 2024 10:40:27 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 391AC339; Mon, 8 Apr 2024 03:40:55 -0700 (PDT) Received: from pluto (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6CAF13F766; Mon, 8 Apr 2024 03:40:23 -0700 (PDT) Date: Mon, 8 Apr 2024 11:40:20 +0100 From: Cristian Marussi To: Jassi Brar Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, sudeep.holla@arm.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org Subject: Re: [PATCH v3 2/2] mailbox: arm_mhuv3: Add driver Message-ID: References: <20240404062347.3219795-1-cristian.marussi@arm.com> <20240404062347.3219795-3-cristian.marussi@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240408_034025_548254_BC79446C X-CRM114-Status: GOOD ( 40.58 ) 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 T24gU3VuLCBBcHIgMDcsIDIwMjQgYXQgMDg6MTQ6MjNQTSAtMDUwMCwgSmFzc2kgQnJhciB3cm90 ZToKPiBPbiBUaHUsIEFwciA0LCAyMDI0IGF0IDE6MjXigK9BTSBDcmlzdGlhbiBNYXJ1c3NpCj4g PGNyaXN0aWFuLm1hcnVzc2lAYXJtLmNvbT4gd3JvdGU6Cj4gPgo+ID4gQWRkIHN1cHBvcnQgZm9y IEFSTSBNSFV2MyBtYWlsYm94IGNvbnRyb2xsZXIuCj4gPgo+ID4gU3VwcG9ydCBpcyBsaW1pdGVk IHRvIHRoZSBNSFV2MyBEb29yYmVsbCBleHRlbnNpb24gdXNpbmcgb25seSB0aGUgUEJYL01CWAo+ ID4gY29tYmluZWQgaW50ZXJydXB0cy4KPiA+CgpIaSBKYXNzaSwKCnRoYW5rcyBmb3IgaGF2aW5n IGEgbG9vayBhdCB0aGlzICEKCj4gPiBTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBNYXJ1c3NpIDxj cmlzdGlhbi5tYXJ1c3NpQGFybS5jb20+Cj4gPiAtLS0KPiA+IHYxIC0+IHYyCj4gPiAtIGZpeGVk IGNoZWNrcGF0Y2ggd2FybmluZ3MgYWJvdXQgc2lkZS1lZmZlY3RzCj4gPiAtIGZpeGVkIHNwYXJz ZSBlcnJvcnMgYXMgcmVwb3J0ZWQKPiA+ICAgfCBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9i b3QgPGxrcEBpbnRlbC5jb20+Cj4gPiAgIHwgQ2xvc2VzOiBodHRwczovL2xvcmUua2VybmVsLm9y Zy9vZS1rYnVpbGQtYWxsLzIwMjQwMzI5MDAxNS50Q0xYdWRxQy1sa3BAaW50ZWwuY29tLwo+ID4g LS0tCj4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgIHwgICAgOSArCj4gPiAgZHJpdmVy cy9tYWlsYm94L0tjb25maWcgICAgIHwgICAxMSArCj4gPiAgZHJpdmVycy9tYWlsYm94L01ha2Vm aWxlICAgIHwgICAgMiArCj4gPiAgZHJpdmVycy9tYWlsYm94L2FybV9taHV2My5jIHwgMTA2MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDQgZmlsZXMgY2hhbmdlZCwg MTA4NSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWFpbGJv eC9hcm1fbWh1djMuYwo+ID4KPiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlO RVJTCj4gPiBpbmRleCBhYTNiOTQ3ZmIwODAuLmU5NTdiOWQ5ZTMyYSAxMDA2NDQKPiA+IC0tLSBh L01BSU5UQUlORVJTCj4gPiArKysgYi9NQUlOVEFJTkVSUwo+ID4gQEAgLTEyOTk4LDYgKzEyOTk4 LDE1IEBAIEY6ICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9h cm0sbWh1djIueWFtbAo+ID4gIEY6ICAgICBkcml2ZXJzL21haWxib3gvYXJtX21odXYyLmMKPiA+ ICBGOiAgICAgaW5jbHVkZS9saW51eC9tYWlsYm94L2FybV9taHV2Ml9tZXNzYWdlLmgKPiA+Cj4g PiArTUFJTEJPWCBBUk0gTUhVdjMKPiA+ICtNOiAgICAgU3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9s bGFAYXJtLmNvbT4KPiA+ICtNOiAgICAgQ3Jpc3RpYW4gTWFydXNzaSA8Y3Jpc3RpYW4ubWFydXNz aUBhcm0uY29tPgo+ID4gK0w6ICAgICBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCj4gPiAr TDogICAgIGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZv ciBub24tc3Vic2NyaWJlcnMpCj4gPiArUzogICAgIE1haW50YWluZWQKPiA+ICtGOiAgICAgRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYXJtLG1odXYzLnlhbWwKPiA+ ICtGOiAgICAgZHJpdmVycy9tYWlsYm94L2FybV9taHV2My5jCj4gPiArCj4gPiAgTUFOLVBBR0VT OiBNQU5VQUwgUEFHRVMgRk9SIExJTlVYIC0tIFNlY3Rpb25zIDIsIDMsIDQsIDUsIGFuZCA3Cj4g PiAgTTogICAgIEFsZWphbmRybyBDb2xvbWFyIDxhbHhAa2VybmVsLm9yZz4KPiA+ICBMOiAgICAg bGludXgtbWFuQHZnZXIua2VybmVsLm9yZwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFpbGJv eC9LY29uZmlnIGIvZHJpdmVycy9tYWlsYm94L0tjb25maWcKPiA+IGluZGV4IDQyOTQwMTA4YTE4 Ny4uZDIwY2RhZTY1Y2ZlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tYWlsYm94L0tjb25maWcK PiA+ICsrKyBiL2RyaXZlcnMvbWFpbGJveC9LY29uZmlnCj4gPiBAQCAtMjMsNiArMjMsMTcgQEAg Y29uZmlnIEFSTV9NSFVfVjIKPiA+ICAgICAgICAgICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRv IGJ1aWxkIHRoZSBBUk0gTUhVdjIgY29udHJvbGxlciBkcml2ZXIsCj4gPiAgICAgICAgICAgd2hp Y2ggcHJvdmlkZXMgdW5pZGlyZWN0aW9uYWwgbWFpbGJveGVzIGJldHdlZW4gcHJvY2Vzc2luZyBl bGVtZW50cy4KPiA+Cj4gPiArY29uZmlnIEFSTV9NSFVfVjMKPiA+ICsgICAgICAgdHJpc3RhdGUg IkFSTSBNSFV2MyBNYWlsYm94Igo+ID4gKyAgICAgICBkZXBlbmRzIG9uIEFSTTY0IHx8IENPTVBJ TEVfVEVTVAo+ID4gKyAgICAgICBoZWxwCj4gPiArICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3Ug d2FudCB0byBidWlsZCB0aGUgQVJNIE1IVXYzIGNvbnRyb2xsZXIgZHJpdmVyLAo+ID4gKyAgICAg ICAgIHdoaWNoIHByb3ZpZGVzIHVuaWRpcmVjdGlvbmFsIG1haWxib3hlcyBiZXR3ZWVuIHByb2Nl c3NpbmcgZWxlbWVudHMuCj4gPiArCj4gPiArICAgICAgICAgQVJNIE1IVXYzIGNvbnRyb2xsZXJz IGNhbiBpbXBsZW1lbnQgYSB2YXJ5aW5nIG51bWJlciBvZiBleHRlbnNpb25zCj4gPiArICAgICAg ICAgdGhhdCBwcm92aWRlcyBkaWZmZXJlbnQgbWVhbnMgb2YgdHJhbnNwb3J0czogc3VwcG9ydGVk IGV4dGVuc2lvbnMKPiA+ICsgICAgICAgICB3aWxsIGJlIGRpc2NvdmVyZWQgYW5kIHBvc3NpYmx5 IG1hbmFnZWQgYXQgcHJvYmUtdGltZS4KPiA+ICsKPiA+ICBjb25maWcgSU1YX01CT1gKPiA+ICAg ICAgICAgdHJpc3RhdGUgImkuTVggTWFpbGJveCIKPiA+ICAgICAgICAgZGVwZW5kcyBvbiBBUkNI X01YQyB8fCBDT01QSUxFX1RFU1QKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21haWxib3gvTWFr ZWZpbGUgYi9kcml2ZXJzL21haWxib3gvTWFrZWZpbGUKPiA+IGluZGV4IDE4NzkzZTZjYWEyZi4u NWNmMmY1NGRlYmFmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tYWlsYm94L01ha2VmaWxlCj4g PiArKysgYi9kcml2ZXJzL21haWxib3gvTWFrZWZpbGUKPiA+IEBAIC05LDYgKzksOCBAQCBvYmot JChDT05GSUdfQVJNX01IVSkgICArPSBhcm1fbWh1Lm8gYXJtX21odV9kYi5vCj4gPgo+ID4gIG9i ai0kKENPTkZJR19BUk1fTUhVX1YyKSAgICAgICArPSBhcm1fbWh1djIubwo+ID4KPiA+ICtvYmot JChDT05GSUdfQVJNX01IVV9WMykgICAgICAgKz0gYXJtX21odXYzLm8KPiA+ICsKPiA+ICBvYmot JChDT05GSUdfSU1YX01CT1gpICs9IGlteC1tYWlsYm94Lm8KPiA+Cj4gPiAgb2JqLSQoQ09ORklH X0FSTUFEQV8zN1hYX1JXVE1fTUJPWCkgICAgKz0gYXJtYWRhLTM3eHgtcnd0bS1tYWlsYm94Lm8K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21haWxib3gvYXJtX21odXYzLmMgYi9kcml2ZXJzL21h aWxib3gvYXJtX21odXYzLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLmU0MTI1NTY4YmVjMAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVy cy9tYWlsYm94L2FybV9taHV2My5jCj4gPiBAQCAtMCwwICsxLDEwNjMgQEAKPiA+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICogQVJNIE1lc3NhZ2Ug SGFuZGxpbmcgVW5pdCBWZXJzaW9uIDMgKE1IVXYzKSBkcml2ZXIuCj4gPiArICoKPiA+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMjQgQVJNIEx0ZC4KPiA+ICsgKgo+ID4gKyAqIEJhc2VkIG9uIEFSTSBN SFV2MiBkcml2ZXIuCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5o Pgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgv bWFpbGJveF9jb250cm9sbGVyLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4g KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+ID4gKyNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgo+ID4gKwo+ID4gKy8qID09PT09PSBNSFV2MyBSZWdpc3RlcnMg PT09PT09ICovCj4gPiArCj4gPiArLyogTWF4aW11bSBudW1iZXIgb2YgRG9vcmJlbGwgY2hhbm5l bCB3aW5kb3dzICovCj4gPiArI2RlZmluZSBNSFVWM19EQkNXX01BWCAgICAgICAgICAgICAgICAg MTI4Cj4gPiArLyogTnVtYmVyIG9mIERCQ0ggY29tYmluZWQgaW50ZXJydXB0IHN0YXR1cyByZWdp c3RlcnMgKi8KPiA+ICsjZGVmaW5lIE1IVVYzX0RCQ0hfQ01CX0lOVF9TVF9SRUdfQ05UICA0Cj4g PiArI2RlZmluZSBNSFVWM19JTlZBTElEX0RPT1JCRUxMICAgICAgICAgMHhGRkZGRkZGRlVMCj4g PiArCj4gPiArLyogTnVtYmVyIG9mIEZGQ0ggY29tYmluZWQgaW50ZXJydXB0IHN0YXR1cyByZWdp c3RlcnMgKi8KPiA+ICsjZGVmaW5lIE1IVVYzX0ZGQ0hfQ01CX0lOVF9TVF9SRUdfQ05UICAyCj4g PiArCj4gPiArI2RlZmluZSBNSFVWM19TVEFUX0JZVEVTICAgICAgICAgICAgICAgKHNpemVvZih1 MzIpKQo+ID4KPiBTaW1wbHkgNCBwbGVhc2UuCj4KCk9rLgogCj4gPiArI2RlZmluZSBNSFVWM19T VEFUX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAoTUhVVjNfU1RBVF9CWVRFUyAqIF9fQ0hB Ul9CSVRfXykKPiA+Cj4ganVzdCAzMi4KPgoKT2suCiAKPiA+ICsKPiA+ICsvKiBOb3QgYSB0eXBv IC4uLiAqLwo+ID4gKyNkZWZpbmUgTUhVVjNfTUFKT1JfVkVSU0lPTiAgICAgICAgICAgIDIKPiA+ ICsKPiA+ICtlbnVtIHsKPiA+ICsgICAgICAgTUhVVjNfTUJPWF9DRUxMX1RZUEUsCj4gPiArICAg ICAgIE1IVVYzX01CT1hfQ0VMTF9DSFdOLAo+ID4gKyAgICAgICBNSFVWM19NQk9YX0NFTExfUEFS QU0sCj4gPiArICAgICAgIE1IVVYzX01CT1hfQ0VMTFMKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIENU UkxfUGFnZSAqLwo+ID4gKwo+ID4gK3N0cnVjdCBibGtfaWQgewo+ID4gKyAgICAgICB1MzIgYmxr X2lkIDogNDsKPiAKPiBQbGVhc2UgYXZvaWQgbmFtZSBjbGFzaGVzLgo+IAoKSSdsbCBmaXguCgo+ ID4gKyAgICAgICB1MzIgcGFkIDogMjg7Cj4gPiArfSBfX3BhY2tlZDsKPiA+ICsKPiA+ICtzdHJ1 Y3QgZmVhdF9zcHQwIHsKPiA+ICsgICAgICAgdTMyIGRiZV9zcHQgOiA0Owo+ID4gKyAgICAgICB1 MzIgZmVfc3B0IDogNDsKPiA+ICsgICAgICAgdTMyIGZjZV9zcHQgOiA0Owo+ID4gKyAgICAgICB1 MzIgdHplX3NwdCA6IDQ7Cj4gPiArICAgICAgIHUzMiBybWVfc3B0IDogNDsKPiA+ICsgICAgICAg dTMyIHJhc2Vfc3B0IDogNDsKPiA+ICsgICAgICAgdTMyIHBhZDogODsKPiA+ICt9IF9fcGFja2Vk Owo+ID4gKwo+ID4gK3N0cnVjdCBmZWF0X3NwdDEgewo+ID4gKyAgICAgICB1MzIgYXV0b19vcF9z cHQgOiA0Owo+ID4gKyAgICAgICB1MzIgcGFkOiAyODsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ ID4gK3N0cnVjdCBkYmNoX2NmZzAgewo+ID4gKyAgICAgICB1MzIgbnVtX2RiY2ggOiA4Owo+ID4g KyAgICAgICB1MzIgcGFkOiAyNDsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBm ZmNoX2NmZzAgewo+ID4gKyAgICAgICB1MzIgbnVtX2ZmY2ggOiA4Owo+ID4gKyAgICAgICB1MzIg eDhiYV9zcHQgOiAxOwo+ID4gKyAgICAgICB1MzIgeDE2YmFfc3B0IDogMTsKPiA+ICsgICAgICAg dTMyIHgzMmJhX3NwdCA6IDE7Cj4gPiArICAgICAgIHUzMiB4NjRiYV9zcHQgOiAxOwo+ID4gKyAg ICAgICB1MzIgcGFkIDogNDsKPiA+ICsgICAgICAgdTMyIGZmY2hfZGVwdGggOiAxMDsKPiA+ICsg ICAgICAgdTMyIHBhZDIgOiA2Owo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4gPiArc3RydWN0IGZj aF9jZmcwIHsKPiA+ICsgICAgICAgdTMyIG51bV9mY2ggOiAxMDsKPiA+ICsgICAgICAgLyogTUJY IG9ubHkgcmVnaXN0ZXJzICovCj4gPiArICAgICAgIHUzMiBmY2dpX3NwdCA6IDE7Cj4gPiArICAg ICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLSAqLwo+ID4gKyAgICAgICB1MzIgbnVtX2ZjZyA6IDU7 Cj4gPiArICAgICAgIHUzMiBudW1fZmNoX3Blcl9ncnAgOiA1Owo+ID4gKyAgICAgICB1MzIgZmNo X3dzIDogODsKPiA+ICsgICAgICAgdTMyIHBhZCA6IDM7Cj4gPiArfSBfX3BhY2tlZDsKPiA+ICsK PiA+ICtzdHJ1Y3QgY3RybCB7Cj4gPiArICAgICAgIHUzMiBvcF9yZXEgOiAxOwo+ID4gKyAgICAg ICB1MzIgY2hfb3BfbWFzayA6IDE7Cj4gPiArICAgICAgIHUzMiBwYWQgOiAzMDsKPiA+ICt9IF9f cGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBmY2hfY3RybCB7Cj4gPiArICAgICAgIHUzMiBwYWQg OiAyOwo+ID4gKyAgICAgICB1MzIgaW50X2VuIDogMTsKPiA+ICsgICAgICAgdTMyIHBhZDIgOiAy OTsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBpaWRyIHsKPiA+ICsgICAgICAg dTMyIGltcGxlbWVudGVyIDogMTI7Cj4gPiArICAgICAgIHUzMiByZXZpc2lvbiA6IDQ7Cj4gPiAr ICAgICAgIHUzMiB2YXJpYW50IDogNDsKPiA+ICsgICAgICAgdTMyIHByb2R1Y3RfaWQgOiAxMjsK PiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBhaWRyIHsKPiA+ICsgICAgICAgdTMy IGFyY2hfbWlub3JfcmV2IDogNDsKPiA+ICsgICAgICAgdTMyIGFyY2hfbWFqb3JfcmV2IDogNDsK PiA+ICsgICAgICAgdTMyIHBhZCA6IDI0Owo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4gSSBhbSBu b3Qgc3VyZSBhYm91dCB1c2luZyBiaXRmaWVsZHMgb24gcmVnaXN0ZXIgdmFsdWVzLiBJIGtub3cg djIKPiBkcml2ZXIgYWxzbyB1c2VzIGJpdGZpZWxkcyBidXQgdGhpcyBzdGlsbCBpcyBub3QgdmVy eSBwb3J0YWJsZSBhbmQgaXMKPiBkZXBlbmRlbnQgb24gY29tcGlsZXIgYmVoYXZpb3VyLiBXZSBt YXkgYWN0dWFsbHkgc2F2ZSBzb21lIGxvYyBieSBub3QKPiBoYXZpbmcgdW51c2VkIGZpZWxkcyBp ZiB3ZSB1c2Ugc2hpZnRzIGFuZCBtYXNrcy4gVGhvdWdoIEkgZG9uJ3QKPiBzdHJvbmdseSBmZWVs IGVpdGhlciB3YXkuCj4gCgpZZXMsIGluZGVlZCBzZWVtZWQgYSBiaXQgb2RkIHdheSBvZiBoYW5k bGluZyByZWdzIHdoZW4gSSBzYXcgaXQgaW4gbWh1djIsCkJVVCBpdCBzZWVtZWQgaXQgaGFkIGl0 cyBhZHZhbnRhZ2VzIGluIHRlcm1zIG9mIGNsYXJpdHkgb2YgdXNhZ2UuLi4uZGlkCm5vdCBrbm93 IGFib3V0IHBvc3NpYmxlIGRyYXdiYWNrcywgdGhvdWdoLiBJJ2xsIHJlLXRoaW5rIGFib3V0IHRo ZSBwcm9zCmFuZCBjb25zIG9mIHRoaXMgYXBwcm9hY2guCgo+ID4gK3N0cnVjdCBjdHJsX3BhZ2Ug ewo+ID4gKyAgICAgICBzdHJ1Y3QgYmxrX2lkIGJsa19pZDsKPiA+ICsgICAgICAgdTggcGFkWzB4 MTAgLSAweDRdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZmVhdF9zcHQwIGZlYXRfc3B0MDsKPiA+ICsg ICAgICAgc3RydWN0IGZlYXRfc3B0MSBmZWF0X3NwdDE7Cj4gPiArICAgICAgIHU4IHBhZDFbMHgy MCAtIDB4MThdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZGJjaF9jZmcwIGRiY2hfY2ZnMDsKPiA+ICsg ICAgICAgdTggcGFkMlsweDMwIC0gMHgyNF07Cj4gPiArICAgICAgIHN0cnVjdCBmZmNoX2NmZzAg ZmZjaF9jZmcwOwo+ID4gKyAgICAgICB1OCBwYWQzWzB4NDAgLSAweDM0XTsKPiA+ICsgICAgICAg c3RydWN0IGZjaF9jZmcwIGZjaF9jZmcwOwo+ID4gKyAgICAgICB1OCBwYWQ0WzB4MTAwIC0gMHg0 NF07Cj4gPiArICAgICAgIHN0cnVjdCBjdHJsIGN0cmw7Cj4gPiArICAgICAgIC8qIE1CWCBvbmx5 IHJlZ2lzdGVycyAqLwo+ID4gKyAgICAgICB1OCBwYWQ1WzB4MTQwIC0gMHgxMDRdOwo+ID4gKyAg ICAgICBzdHJ1Y3QgZmNoX2N0cmwgZmNoX2N0cmw7Cj4gPiArICAgICAgIHUzMiBmY2dfaW50X2Vu Owo+ID4gKyAgICAgICB1OCBwYWQ2WzB4NDAwIC0gMHgxNDhdOwo+ID4gKyAgICAgICAvKiAtLS0t LS0tLS0tLS0tLS0tLS0gKi8KPiBXaHkgdGhlIGRlY29yYXRpb24gPyBNYXliZSBjb21tZW50IG9u IHdoYXQgZGlmZmVyZW50IHN0YXJ0cyBmcm9tIGhlcmUuCj4gCgpQQlggYW5kIE1CWCBDdHJsIHBh Z2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUsIEJVVCBmb3Igc29tZSByZWdpc3RlcnMgYmFua3MKdGhh dCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgUEJYOiB0aGlzIGRlY29yYXRpb24gaXMgaW5kZWVkIHRo ZSBlbmQsIG5vdAp0aGUgc3RhcnQsIG9mIHRoZSBNQlggb25seSByZWdzIHRoYXQgc3RhcnRzIDUg bGluZXMgYWJvdmUgd2l0aCB0aGUgcmVsYXRlZApjb21tZW50Li4ud2FzIHRyeWluZyB0byBhdm9p ZCB0byB1c2UgMiBkaWZmZXJlbnQgdHlwZXMgZm9yIHRoZSBiYXNpY2FsbHkKdGhlIHNhbWUgZGF0 YS4uLm9mIGNvdXJzZSBpdCB3b3JrcyBqdXN0IGJlY2F1c2UgdGhlIFBCWCBjb2RlIHJlZnJhaW5z CmZyb20gYWNjZXNzaW5nIHRoZSBhcmVhcyB3aGVyZSBvbmx5IHJlZ3Mga25vd24gdG8gTUJYIGxp dmVzLgoKPiA+ICsgICAgICAgdTMyIGRiY2hfaW50X3N0W01IVVYzX0RCQ0hfQ01CX0lOVF9TVF9S RUdfQ05UXTsKPiA+ICsgICAgICAgdTMyIGZmY2hfaW50X3N0W01IVVYzX0ZGQ0hfQ01CX0lOVF9T VF9SRUdfQ05UXTsKPiA+ICsgICAgICAgLyogTUJYIG9ubHkgcmVnaXN0ZXJzICovCj4gPiArICAg ICAgIHU4IHBhZDdbMHg0NzAgLSAweDQxOF07Cj4gPiArICAgICAgIHUzMiBmY2dfaW50X3N0Owo+ ID4gKyAgICAgICB1OCBwYWQ4WzB4NDgwIC0gMHg0NzRdOwo+ID4gKyAgICAgICB1MzIgZmNnX2dy cF9pbnRfc3RbMzJdOwo+ID4gKyAgICAgICB1OCBwYWQ5WzB4RkM4IC0gMHg1MDBdOwo+ID4gKyAg ICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0gKi8KClNhbWUgaGVyZS4KCj4gPiArICAgICAgIHN0 cnVjdCBpaWRyIGlpZHI7Cj4gPiArICAgICAgIHN0cnVjdCBhaWRyIGFpZHI7Cj4gPiArICAgICAg IHUzMiBpbXBfZGVmX2lkWzEyXTsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gKy8qIERCQ1df UGFnZSAqLwo+ID4gKwo+ID4gK3N0cnVjdCB4YmN3X2N0cmwgewo+ID4gKyAgICAgICB1MzIgY29t Yl9lbiA6IDE7Cj4gPiArICAgICAgIHUzMiBwYWQgOiAzMTsKPiA+ICt9IF9fcGFja2VkOwo+ID4g Kwo+ID4gK3N0cnVjdCBwZGJjd19pbnQgewo+ID4gKyAgICAgICB1MzIgdGZyX2FjayA6IDE7Cj4g PiArICAgICAgIHUzMiBwYWQgOiAzMTsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVj dCBwZGJjd19wYWdlIHsKPiA+ICsgICAgICAgdTMyIHN0Owo+ID4gKyAgICAgICB1OCBwYWRbMHhD IC0gMHg0XTsKPiA+ICsgICAgICAgdTMyIHNldDsKPiA+ICsgICAgICAgc3RydWN0IHBkYmN3X2lu dCBpbnRfc3Q7Cj4gPiArICAgICAgIHN0cnVjdCBwZGJjd19pbnQgaW50X2NscjsKPiA+ICsgICAg ICAgc3RydWN0IHBkYmN3X2ludCBpbnRfZW47Cj4gPiArICAgICAgIHN0cnVjdCB4YmN3X2N0cmwg Y3RybDsKPiA+ICt9IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBtZGJjd19wYWdlIHsKPiA+ ICsgICAgICAgdTMyIHN0Owo+ID4gKyAgICAgICB1MzIgc3RfbXNrOwo+ID4gKyAgICAgICB1MzIg Y2xyOwo+ID4gKyAgICAgICB1OCBwYWRbMHgxMCAtIDB4Q107Cj4gPiArICAgICAgIHUzMiBtc2tf c3Q7Cj4gPiArICAgICAgIHUzMiBtc2tfc2V0Owo+ID4gKyAgICAgICB1MzIgbXNrX2NscjsKPiA+ ICsgICAgICAgc3RydWN0IHhiY3dfY3RybCBjdHJsOwo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4g PiArc3RydWN0IGR1bW15X3BhZ2Ugewo+ID4gKyAgICAgICB1OCBwYWRbMHgxMDAwXTsKPiA+ICt9 IF9fcGFja2VkOwo+ID4gKwo+ID4gK3N0cnVjdCBtaHUzX3BieF9mcmFtZV9yZWcgewo+ID4gKyAg ICAgICBzdHJ1Y3QgY3RybF9wYWdlIGN0cmw7Cj4gPiArICAgICAgIHN0cnVjdCBwZGJjd19wYWdl IGRiY3dbTUhVVjNfREJDV19NQVhdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZHVtbXlfcGFnZSBmZmN3 Owo+ID4gKyAgICAgICBzdHJ1Y3QgZHVtbXlfcGFnZSBmY3c7Cj4gPiArICAgICAgIHU4IHBhZFsw eEYwMDAgLSAweDQwMDBdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZHVtbXlfcGFnZSBpbXBkZWY7Cj4g PiArfSBfX3BhY2tlZDsKPiA+ICsKPiA+ICtzdHJ1Y3QgbWh1M19tYnhfZnJhbWVfcmVnIHsKPiA+ ICsgICAgICAgc3RydWN0IGN0cmxfcGFnZSBjdHJsOwo+ID4gKyAgICAgICBzdHJ1Y3QgbWRiY3df cGFnZSBkYmN3W01IVVYzX0RCQ1dfTUFYXTsKPiA+ICsgICAgICAgc3RydWN0IGR1bW15X3BhZ2Ug ZmZjdzsKPiA+ICsgICAgICAgc3RydWN0IGR1bW15X3BhZ2UgZmN3Owo+ID4gKyAgICAgICB1OCBw YWRbMHhGMDAwIC0gMHg0MDAwXTsKPiA+ICsgICAgICAgc3RydWN0IGR1bW15X3BhZ2UgaW1wZGVm Owo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4gPiArLyogTWFjcm8gZm9yIHJlYWRpbmcgYSBiaXRm aWVsZCB3aXRoaW4gYSBwaHlzaWNhbGx5IG1hcHBlZCBwYWNrZWQgc3RydWN0ICovCj4gPiArI2Rl ZmluZSByZWFkbF9yZWxheGVkX2JpdGZpZWxkKF9yZWdwdHIsIF9maWVsZCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgKHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgICAg ICAgICB1MzIgX3J2YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiA+ICsgICAgICAgICAgICAgICB0eXBlb2YoX3JlZ3B0cikgX3JwdHIgPSBfcmVncHRy OyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgICAgICAgICBfcnZhbCA9IHJl YWRsX3JlbGF4ZWQoX3JwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAg ICAgICAgICAgICAoKHR5cGVvZigqX3JwdHIpIF9fZm9yY2UgKikoJl9ydmFsKSktPl9maWVsZDsg ICAgICAgICAgIFwKPiA+ICsgICAgICAgfSkKPiA+ICsKPiA+ICsvKiBNYWNybyBmb3Igd3JpdGlu ZyBhIGJpdGZpZWxkIHdpdGhpbiBhIHBoeXNpY2FsbHkgbWFwcGVkIHBhY2tlZCBzdHJ1Y3QgKi8K PiA+ICsjZGVmaW5lIHdyaXRlbF9yZWxheGVkX2JpdGZpZWxkKF92YWx1ZSwgX3JlZ3B0ciwgX2Zp ZWxkKSAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgKHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgICAg ICAgICB1MzIgX3J2YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiA+ICsgICAgICAgICAgICAgICB0eXBlb2YoX3JlZ3B0cikgX3JwdHIgPSBfcmVncHRy OyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgICAgICAgICBfcnZhbCA9IHJl YWRsX3JlbGF4ZWQoX3JwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAg ICAgICAgICAgICAoKHR5cGVvZigqX3JwdHIpIF9fZm9yY2UgKikoJl9ydmFsKSktPl9maWVsZCA9 IF92YWx1ZTsgIFwKPiA+ICsgICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZChfcnZhbCwgX3Jw dHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgfSkKPiA+ICsKPiA+ ICsvKiA9PT09PT0gTUhVdjMgZGF0YSBzdHJ1Y3R1cmVzID09PT09PSAqLwo+ID4gKwo+ID4gK2Vu dW0gbWh1djNfZnJhbWUgewo+ID4gKyAgICAgICBQQlhfRlJBTUUsCj4gPiArICAgICAgIE1CWF9G UkFNRQo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNoYXIgKm1odXYzX3N0cltdID0gewo+ID4g KyAgICAgICAiUEJYIiwKPiA+ICsgICAgICAgIk1CWCIKPiA+ICt9Owo+ID4gKwo+ID4gK2VudW0g bWh1djNfZXh0ZW5zaW9uX3R5cGUgewo+ID4gKyAgICAgICBGSVJTVF9FWFQgPSAwLAo+ID4gKyAg ICAgICBEQkVfRVhUID0gRklSU1RfRVhULAo+ID4gKyAgICAgICBGQ0VfRVhULAo+ID4gKyAgICAg ICBGRV9FWFQsCj4gPiArICAgICAgIE1BWF9FWFQKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBt aHV2MzsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBzdHJ1Y3QgbWh1djNfcHJvdG9jb2xfb3BzIC0g TUhVdjMgb3BlcmF0aW9ucwo+ID4gKyAqCj4gPiArICogQHJ4X3N0YXJ0dXA6IFJlY2VpdmVyIHN0 YXJ0dXAgY2FsbGJhY2suCj4gPiArICogQHJ4X3NodXRkb3duOiBSZWNlaXZlciBzaHV0ZG93biBj YWxsYmFjay4KPiA+ICsgKiBAcmVhZF9kYXRhOiBSZWFkIGF2YWlsYWJsZSBTZW5kZXIgaW4tYmFu ZCBMRSBkYXRhIChpZiBhbnkpLgo+ID4gKyAqIEByeF9jb21wbGV0ZTogQWNrbm93bGVkZ2UgZGF0 YSByZWNlcHRpb24gdG8gdGhlIFNlbmRlci4gQW55IG91dC1vZi1iYW5kIGRhdGEKPiA+ICsgKiAg ICAgICAgICAgICAgaGFzIHRvIGhhdmUgYmVlbiBhbHJlYWR5IHJldHJpZXZlZCBiZWZvcmUgY2Fs bGluZyB0aGlzLgo+ID4gKyAqIEB0eF9zdGFydHVwOiBTZW5kZXIgc3RhcnR1cCBjYWxsYmFjay4K PiA+ICsgKiBAdHhfc2h1dGRvd246IFNlbmRlciBzaHV0ZG93biBjYWxsYmFjay4KPiA+ICsgKiBA bGFzdF90eF9kb25lOiBSZXBvcnQgYmFjayB0byB0aGUgU2VuZGVyIGlmIHRoZSBsYXN0IHRyYW5z ZmVyIGhhcyBjb21wbGV0ZWQuCj4gPiArICogQHNlbmRfZGF0YTogU2VuZCBkYXRhIHRvIHRoZSBy ZWNlaXZlci4KPiA+ICsgKgo+ID4gKyAqIEVhY2ggc3VwcG9ydGVkIHRyYW5zcG9ydCBwcm90b2Nv bCBwcm92aWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mCj4gPiArICogdGhlc2Ugb3BlcmF0 aW9ucy4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgbWh1djNfcHJvdG9jb2xfb3BzIHsKPiA+ICsgICAg ICAgaW50ICgqcnhfc3RhcnR1cCkoc3RydWN0IG1odXYzICptaHUsIHN0cnVjdCBtYm94X2NoYW4g KmNoYW4pOwo+ID4gKyAgICAgICB2b2lkICgqcnhfc2h1dGRvd24pKHN0cnVjdCBtaHV2MyAqbWh1 LCBzdHJ1Y3QgbWJveF9jaGFuICpjaGFuKTsKPiA+ICsgICAgICAgdm9pZCAqKCpyZWFkX2RhdGEp KHN0cnVjdCBtaHV2MyAqbWh1LCBzdHJ1Y3QgbWJveF9jaGFuICpjaGFuKTsKPiA+ICsgICAgICAg dm9pZCAoKnJ4X2NvbXBsZXRlKShzdHJ1Y3QgbWh1djMgKm1odSwgc3RydWN0IG1ib3hfY2hhbiAq Y2hhbik7Cj4gPiArICAgICAgIHZvaWQgKCp0eF9zdGFydHVwKShzdHJ1Y3QgbWh1djMgKm1odSwg c3RydWN0IG1ib3hfY2hhbiAqY2hhbik7Cj4gPiArICAgICAgIHZvaWQgKCp0eF9zaHV0ZG93biko c3RydWN0IG1odXYzICptaHUsIHN0cnVjdCBtYm94X2NoYW4gKmNoYW4pOwo+ID4gKyAgICAgICBp bnQgKCpsYXN0X3R4X2RvbmUpKHN0cnVjdCBtaHV2MyAqbWh1LCBzdHJ1Y3QgbWJveF9jaGFuICpj aGFuKTsKPiA+ICsgICAgICAgaW50ICgqc2VuZF9kYXRhKShzdHJ1Y3QgbWh1djMgKm1odSwgc3Ry dWN0IG1ib3hfY2hhbiAqY2hhbiwgdm9pZCAqYXJnKTsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ ID4gKyAqIHN0cnVjdCBtaHV2M19tYm94X2NoYW5fcHJpdiAtIE1IVXYzIGNoYW5uZWwgcHJpdmF0 ZSBpbmZvcm1hdGlvbgo+ID4gKyAqCj4gPiArICogQGNoX2lkeDogQ2hhbm5lbCB3aW5kb3cgaW5k ZXggYXNzb2NpYXRlZCB0byB0aGlzIG1haWxib3ggY2hhbm5lbC4KPiA+ICsgKiBAZG9vcmJlbGw6 IERvb3JiZWxsIGJpdCBudW1iZXIgd2l0aGluIHRoZSBAY2hfaWR4IHdpbmRvdy4KPiA+ICsgKiAg ICAgICAgICAgT25seSByZWxldmFudCB0byBEb29yYmVsbCB0cmFuc3BvcnQuCj4gPiArICogQG9w czogVHJhbnNwb3J0IHByb3RvY29sIHNwZWNpZmljIG9wZXJhdGlvbnMgZm9yIHRoaXMgY2hhbm5l bC4KPiA+ICsgKgo+ID4gKyAqIFRyYW5zcG9ydCBzcGVjaWZpYyBkYXRhIGF0dGFjaGVkIHRvIG1t YWlsYm94IGNoYW5uZWwgcHJpdiBkYXRhLgo+ID4gKyAqLwo+ID4gK3N0cnVjdCBtaHV2M19tYm94 X2NoYW5fcHJpdiB7Cj4gPiArICAgICAgIHUzMiBjaF9pZHg7Cj4gPiArICAgICAgIHUzMiBkb29y YmVsbDsKPiA+ICsgICAgICAgY29uc3Qgc3RydWN0IG1odXYzX3Byb3RvY29sX29wcyAqb3BzOwo+ ID4gK307Cj4gPiArCj4gPiArLyoqCj4gPiArICogc3RydWN0IG1odXYzX2V4dGVuc2lvbiAtIE1I VXYzIGV4dGVuc2lvbiBkZXNjcmlwdG9yCj4gPiArICoKPiA+ICsgKiBAdHlwZTogVHlwZSBvZiBl eHRlbnNpb24KPiA+ICsgKiBAbWF4X2NoYW5zOiBNYXggbnVtYmVyIG9mIGNoYW5uZWxzIGZvdW5k IGZvciB0aGlzIGV4dGVuc2lvbi4KPiA+ICsgKiBAYmFzZV9jaF9pZHg6IEZpcnN0IGNoYW5uZWwg bnVtYmVyIGFzc2lnbmVkIHRvIHRoaXMgZXh0ZW5zaW9uLCBwaWNrZWQgZnJvbQo+ID4gKyAqICAg ICAgICAgICAgICB0aGUgc2V0IG9mIGFsbCBtYWlsYm94IGNoYW5uZWxzIGRlc2NyaXB0b3JzIGNy ZWF0ZWQuCj4gPiArICogQG1ib3hfb2ZfeGxhdGU6IEV4dGVuc2lvbiBzcGVjaWZpYyBoZWxwZXIg dG8gcGFyc2UgRFQgYW5kIGxvb2t1cCBhc3NvY2lhdGVkCj4gPiArICogICAgICAgICAgICAgICAg Y2hhbm5lbCBmcm9tIHRoZSByZWxhdGVkICdtYm94ZXMnIHByb3BlcnR5Lgo+ID4gKyAqIEBjb21i aW5lZF9pcnFfc2V0dXA6IEV4dGVuc2lvbiBzcGVjaWZpYyBoZWxwZXIgdG8gc2V0dXAgdGhlIGNv bWJpbmVkIGlycS4KPiA+ICsgKiBAY2hhbm5lbHNfaW5pdDogRXh0ZW5zaW9uIHNwZWNpZmljIGhl bHBlciB0byBpbml0aWFsaXplIGNoYW5uZWxzLgo+ID4gKyAqIEBjaGFuX2Zyb21fY29tYl9pcnFf Z2V0OiBFeHRlbnNpb24gc3BlY2lmaWMgaGVscGVyIHRvIGxvb2t1cCB3aGljaCBjaGFubmVsCj4g PiArICogICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkIHRoZSBjb21iaW5lZCBpcnEu Cj4gPiArICogQHBlbmRpbmdfZGI6IEFycmF5IG9mIHBlci1jaGFubmVsIHBlbmRpbmcgZG9vcmJl bGxzLgo+ID4gKyAqIEBwZW5kaW5nX2xvY2s6IFByb3RlY3QgYWNjZXNzIHRvIHBlbmRpbmdfZGIu Cj4gPiArICovCj4gPiArc3RydWN0IG1odXYzX2V4dGVuc2lvbiB7Cj4gPiArICAgICAgIGVudW0g bWh1djNfZXh0ZW5zaW9uX3R5cGUgdHlwZTsKPiA+ICsgICAgICAgdW5zaWduZWQgaW50IG1heF9j aGFuczsKPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGJhc2VfY2hfaWR4Owo+ID4gKyAgICAgICBz dHJ1Y3QgbWJveF9jaGFuICooKm1ib3hfb2ZfeGxhdGUpKHN0cnVjdCBtaHV2MyAqbWh1LAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBj aGFubmVsLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBwYXJhbSk7Cj4gPiArICAgICAgIHZvaWQgKCpjb21iaW5lZF9pcnFfc2V0dXAp KHN0cnVjdCBtaHV2MyAqbWh1KTsKPiA+ICsgICAgICAgaW50ICgqY2hhbm5lbHNfaW5pdCkoc3Ry dWN0IG1odXYzICptaHUpOwo+ID4gKyAgICAgICBzdHJ1Y3QgbWJveF9jaGFuICooKmNoYW5fZnJv bV9jb21iX2lycV9nZXQpKHN0cnVjdCBtaHV2MyAqbWh1KTsKPiA+ICsgICAgICAgdTMyIHBlbmRp bmdfZGJbTUhVVjNfREJDV19NQVhdOwo+ID4gKyAgICAgICAvKiBQcm90ZWN0IGFjY2VzcyB0byBw ZW5kaW5nX2RiICovCj4gPiArICAgICAgIHNwaW5sb2NrX3QgcGVuZGluZ19sb2NrOwo+ID4gK307 Cj4gPiArCj4gPiArLyoqCj4gPiArICogc3RydWN0IG1odXYzIC0gTUhVdjMgbWFpbGJveCBjb250 cm9sbGVyIGRhdGEKPiA+ICsgKgo+ID4gKyAqIEBmcmFtZTogICAgIEZyYW1lIHR5cGU6IE1CWF9G UkFNRSBvciBQQlhfRlJBTUUuCj4gPiArICogQGF1dG9fb3BfZnVsbDogRmxhZyB0byBpbmRpY2F0 ZSBpZiB0aGUgTUhVIHN1cHBvcnRzIEF1dG9PcCBmdWxsIG1vZGUuCj4gPiArICogQG1ham9yOiBN SFV2MyBjb250cm9sbGVyIGFyY2hpdGVjdHVyYWwgbWFqb3IgdmVyc2lvbi4KPiA+ICsgKiBAbWlu b3I6IE1IVXYzIGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJhbCBtaW5vciB2ZXJzaW9uLgo+ID4gKyAq IEB0b3RfY2hhbnM6IFRoZSB0b3RhbCBudW1iZXIgb2YgY2hhbm5uZWxzIGRpc2NvdmVyZWQgYWNy b3NzIGFsbCBleHRlbnNpb25zLgo+ID4gKyAqIEBjbWJfaXJxOiBDb21iaW5lZCBJUlEgbnVtYmVy IGlmIGFueSBmb3VuZCBkZWZpbmVkLgo+ID4gKyAqIEBjdHJsOiBBIHJlZmVyZW5jZSB0byB0aGUg TUhVdjMgY29udHJvbCBwYWdlIGZvciB0aGlzIGJsb2NrLgo+ID4gKyAqIEBwYng6IEJhc2UgYWRk cmVzcyBvZiB0aGUgUEJYIHJlZ2lzdGVyIG1hcHBpbmcgcmVnaW9uLgo+ID4gKyAqIEBtYng6IEJh c2UgYWRkcmVzcyBvZiB0aGUgTUJYIHJlZ2lzdGVyIG1hcHBpbmcgcmVnaW9uLgo+ID4gKyAqIEBl eHQ6IEFycmF5IGhvbGRpbmcgZGVzY3JpcHRvcnMgZm9yIGFueSBmb3VuZCBpbXBsZW1lbnRlZCBl eHRlbnNpb24uCj4gPiArICogQG1ib3g6IE1haWxib3ggY29udHJvbGxlciBiZWxvbmdpbmcgdG8g dGhlIE1IVSBmcmFtZS4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgbWh1djMgewo+ID4gKyAgICAgICBl bnVtIG1odXYzX2ZyYW1lIGZyYW1lOwo+ID4gKyAgICAgICBib29sIGF1dG9fb3BfZnVsbDsKPiA+ ICsgICAgICAgdW5zaWduZWQgaW50IG1ham9yOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgbWlu b3I7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCB0b3RfY2hhbnM7Cj4gPgo+IG1heSBiZSBudW1f Y2hhbnMgb3IgY2hhbl9jb3VudCA/Cj4gCgpPay4KCj4gCj4gPiArICAgICAgIGludCBjbWJfaXJx Owo+ID4gKyAgICAgICBzdHJ1Y3QgY3RybF9wYWdlIF9faW9tZW0gKmN0cmw7Cj4gPiArICAgICAg IHVuaW9uIHsKPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbWh1M19wYnhfZnJhbWVfcmVnIF9f aW9tZW0gKnBieDsKPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgbWh1M19tYnhfZnJhbWVfcmVn IF9faW9tZW0gKm1ieDsKPiA+ICsgICAgICAgfTsKPiA+ICsgICAgICAgc3RydWN0IG1odXYzX2V4 dGVuc2lvbiAqZXh0W01BWF9FWFRdOwo+ID4gKyAgICAgICBzdHJ1Y3QgbWJveF9jb250cm9sbGVy IG1ib3g7Cj4gPiArfTsKPiA+ICsKPiA+ICsjZGVmaW5lIG1odV9mcm9tX21ib3goX21ib3gpIGNv bnRhaW5lcl9vZihfbWJveCwgc3RydWN0IG1odXYzLCBtYm94KQo+ID4gKwo+ID4gK3R5cGVkZWYg aW50ICgqbWh1djNfZXh0ZW5zaW9uX2luaXRpYWxpemVyKShzdHJ1Y3QgbWh1djMgKm1odSk7Cj4g PiArCj4gPiArLyogPT09PT09PT09PT09PT09PT09PSBEb29yYmVsbCB0cmFuc3BvcnQgcHJvdG9j b2wgb3BlcmF0aW9ucyA9PT09PT09PT09PT09PT0gKi8KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBt aHV2M19kb29yYmVsbF90eF9zdGFydHVwKHN0cnVjdCBtaHV2MyAqbWh1LCBzdHJ1Y3QgbWJveF9j aGFuICpjaGFuKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IG1odXYzX21ib3hfY2hhbl9wcml2 ICpwcml2ID0gY2hhbi0+Y29uX3ByaXY7Cj4gPiArCj4gPiArICAgICAgIC8qIEVuYWJsZSBUcmFu c2ZlciBBY2tub3dsZWRnbWVudCBldmVudHMgKi8KPiA+ICsgICAgICAgd3JpdGVsX3JlbGF4ZWRf Yml0ZmllbGQoMHgxLCAmbWh1LT5wYngtPmRiY3dbcHJpdi0+Y2hfaWR4XS5pbnRfZW4sIHRmcl9h Y2spOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBtaHV2M19kb29yYmVsbF90eF9zaHV0 ZG93bihzdHJ1Y3QgbWh1djMgKm1odSwgc3RydWN0IG1ib3hfY2hhbiAqY2hhbikKPiA+ICt7Cj4g PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiArICAgICAgIHN0cnVjdCBtaHV2M19l eHRlbnNpb24gKmUgPSBtaHUtPmV4dFtEQkVfRVhUXTsKPiA+ICsgICAgICAgc3RydWN0IG1odXYz X21ib3hfY2hhbl9wcml2ICpwcml2ID0gY2hhbi0+Y29uX3ByaXY7Cj4gPiArCj4gSW4gb3JkZXIg b2YgZGVjcmVhc2luZyBsaW5lLWxlbmd0aHMgcGxlYXNlIGV2ZXJ5d2hlcmUuCj4KClN1cmUuCiAK PiA+ICsgICAgICAgLyogRGlzYWJsZSBDaGFubmVsIFRyYW5zZmVyIEFjayBldmVudHMgKi8KPiA+ ICsgICAgICAgd3JpdGVsX3JlbGF4ZWRfYml0ZmllbGQoMHgwLCAmbWh1LT5wYngtPmRiY3dbcHJp di0+Y2hfaWR4XS5pbnRfZW4sIHRmcl9hY2spOwo+ID4gKwo+ID4gKyAgICAgICAvKiBDbGVhciBD aGFubmVsIFRyYW5zZmVyIEFjayBhbmQgcGVuZGluZyBkb29yYmVsbHMgKi8KPiA+ICsgICAgICAg d3JpdGVsX3JlbGF4ZWRfYml0ZmllbGQoMHgxLCAmbWh1LT5wYngtPmRiY3dbcHJpdi0+Y2hfaWR4 XS5pbnRfY2xyLCB0ZnJfYWNrKTsKPiA+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmUtPnBl bmRpbmdfbG9jaywgZmxhZ3MpOwo+ID4gKyAgICAgICBlLT5wZW5kaW5nX2RiW3ByaXYtPmNoX2lk eF0gPSAwOwo+ID4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlLT5wZW5kaW5nX2xv Y2ssIGZsYWdzKTsKPiA+ICt9Cgpbc25pcF0KCj4gPiArc3RhdGljIHN0cnVjdCBtYm94X2NoYW4g Km1odXYzX2RiZV9jaGFuX2Zyb21fY29tYl9pcnFfZ2V0KHN0cnVjdCBtaHV2MyAqbWh1KQo+ID4g K3sKPiA+ICsgICAgICAgaW50IGk7Cj4gPiArICAgICAgIHN0cnVjdCBtaHV2M19leHRlbnNpb24g KmUgPSBtaHUtPmV4dFtEQkVfRVhUXTsKPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0g bWh1LT5tYm94LmRldjsKPiA+ICsKPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IE1IVVYzX0RC Q0hfQ01CX0lOVF9TVF9SRUdfQ05UOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgY2hhbm5lbCwgZGIgPSBNSFVWM19JTlZBTElEX0RPT1JCRUxMOwo+ID4gKyAgICAgICAg ICAgICAgIHUzMiBjbWJfc3QsIHN0Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGNtYl9zdCA9 IHJlYWRsX3JlbGF4ZWQoJm1odS0+Y3RybC0+ZGJjaF9pbnRfc3RbaV0pOwo+ID4gKyAgICAgICAg ICAgICAgIGlmICghY21iX3N0KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgY2hhbm5lbCA9IGkgKiBNSFVWM19TVEFUX0JJVFMg KyBfX2J1aWx0aW5fY3R6KGNtYl9zdCk7Cj4gCj4gX19mZnMgaW5zdGVhZCBvZiBfX2J1aWx0aW5f Y3R6IHBsZWFzZS4KPgoKb2suCiAKPiA+ICsgICAgICAgICAgICAgICBpZiAoY2hhbm5lbCA+PSBl LT5tYXhfY2hhbnMpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAi SW52YWxpZCAlcyBjaGFubmVsOiVkXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtaHV2M19zdHJbbWh1LT5mcmFtZV0sIGNoYW5uZWwpOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKwoKW3NuaXBdCgo+ID4g K3N0YXRpYyBpcnFyZXR1cm5fdCBtaHV2M19wYnhfY29tYl9pbnRlcnJ1cHQoaW50IGlycSwgdm9p ZCAqYXJnKQo+ID4gK3sKPiA+ICsgICAgICAgaW50IHJldCA9IElSUV9OT05FOwo+ID4gKyAgICAg ICB1bnNpZ25lZCBpbnQgaSwgZm91bmQgPSAwOwo+ID4gKyAgICAgICBzdHJ1Y3QgbWh1djMgKm1o dSA9IGFyZzsKPiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gbWh1LT5tYm94LmRldjsK PiA+ICsgICAgICAgc3RydWN0IG1ib3hfY2hhbiAqY2hhbjsKPiA+ICsKPiA+ICsgICAgICAgZm9y IChpID0gRklSU1RfRVhUOyBpIDwgTUFYX0VYVDsgaSsrKSB7Cj4gPiArICAgICAgICAgICAgICAg LyogRkNFIGRvZXMgbm90IHBhcnRpY2lwYXRlIHRvIHRoZSBQQlggY29tYmluZWQgKi8KPiA+ICsg ICAgICAgICAgICAgICBpZiAoaSA9PSBGQ0VfRVhUIHx8ICFtaHUtPmV4dFtpXSkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGNo YW4gPSBtaHUtPmV4dFtpXS0+Y2hhbl9mcm9tX2NvbWJfaXJxX2dldChtaHUpOwo+ID4gKyAgICAg ICAgICAgICAgIGlmICghSVNfRVJSKGNoYW4pKSB7Cj4gPgo+ICAgJ2NvbnRpbnVlJyBmb3IgZXJy b3IgaW5zdGVhZCwgdG8gaGF2ZSBmZXdlciBpbmRlbnRlZCBsaW5lcy4KPgoKb2suCiAKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtaHV2M19tYm94X2NoYW5fcHJpdiAqcHJpdiA9 IGNoYW4tPmNvbl9wcml2Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZm91bmQr KzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFuLT5jbCkgewo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYm94X2NoYW5fdHhkb25lKGNoYW4sIDApOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBJUlFfSEFORExFRDsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldl93YXJuKGRldiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlRYIEFjayBvbiBVTkJPVU5EIGNoYW5uZWwgKCV1KVxuIiwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2hfaWR4KTsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArICAgICAg IH0KPiA+ICsKPiA+ICsgICAgICAgaWYgKCFmb3VuZCkKPiA+ICsgICAgICAgICAgICAgICBkZXZf d2Fybl9vbmNlKGRldiwgIkZhaWxlZCB0byBmaW5kIGNoYW5uZWwgZm9yIHRoZSBUWCBpbnRlcnJ1 cHRcbiIpOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgaXJxcmV0dXJuX3QgbWh1djNfbWJ4X2NvbWJfaW50ZXJydXB0KGludCBpcnEsIHZvaWQg KmFyZykKPiA+ICt7Cj4gPiArICAgICAgIGludCByZXQgPSBJUlFfTk9ORTsKPiA+ICsgICAgICAg dW5zaWduZWQgaW50IGksIGZvdW5kID0gMDsKPiA+ICsgICAgICAgc3RydWN0IG1odXYzICptaHUg PSBhcmc7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IG1odS0+bWJveC5kZXY7Cj4g PiArICAgICAgIHN0cnVjdCBtYm94X2NoYW4gKmNoYW47Cj4gPiArCj4gPiArICAgICAgIGZvciAo aSA9IEZJUlNUX0VYVDsgaSA8IE1BWF9FWFQ7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAgIGlm ICghbWh1LT5leHRbaV0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ ICsKPiA+ICsgICAgICAgICAgICAgICAvKiBQcm9jZXNzIGFueSBleHRlbnNpb24gd2hpY2ggY291 bGQgYmUgc291cmNlIG9mIHRoZSBJUlEgKi8KPiA+ICsgICAgICAgICAgICAgICBjaGFuID0gbWh1 LT5leHRbaV0tPmNoYW5fZnJvbV9jb21iX2lycV9nZXQobWh1KTsKPiA+ICsgICAgICAgICAgICAg ICBpZiAoIUlTX0VSUihjaGFuKSkgewo+ICAgJ2NvbnRpbnVlJyBmb3IgZXJyb3IgaW5zdGVhZCwg dG8gaGF2ZSBmZXdlciBpbmRlbnRlZCBsaW5lcy4KPgoKb2suCgpUaGFua3MsCkNyaXN0aWFuCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==