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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 25C9AFA373D for ; Tue, 1 Nov 2022 09:00:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9693210E330; Tue, 1 Nov 2022 09:00:16 +0000 (UTC) Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C2DA10E330 for ; Tue, 1 Nov 2022 09:00:12 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 921A7201B7; Tue, 1 Nov 2022 09:00:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1667293210; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=oTDbTbc82rQDJN2n5Dj39Ioxo52z4Sxzvq28t3zAndM=; b=oxscEzlTnYR6MK21qUonmqu0Br1tp5Kkwy8GeZ17uSsMuHYy/iKo4JSa07Ey+VpTUquCeJ 7DU0/idhjrDAWuygrnIHjfGjxF8zb7PLdwB5FGJpLRBLitkqnIihsmRvpNhI5xa3E2m2o7 MWizhfyqBx1thtsqS4oc4raA55o3Lp4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1667293210; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=oTDbTbc82rQDJN2n5Dj39Ioxo52z4Sxzvq28t3zAndM=; b=IEWmduLD6Pi1J0TmbMoxTKYC+/ww7D1TofCjDg7gP+NA2yKEgs90AXyHlCLHv7v6iKwymN pPl1hPf08m3dPMAw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 5AA121346F; Tue, 1 Nov 2022 09:00:10 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id eIAvFRrgYGOHLwAAMHmgww (envelope-from ); Tue, 01 Nov 2022 09:00:10 +0000 Message-ID: <6cfd6459-4ea2-742a-aa94-4b1ecd253d7d@suse.de> Date: Tue, 1 Nov 2022 10:00:09 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: [PATCH v3 2/7] drm/ivpu: Add Intel VPU MMU support Content-Language: en-US To: Jacek Lawrynowicz , dri-devel@lists.freedesktop.org, airlied@gmail.com, daniel@ffwll.ch References: <20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com> <20220924151149.323622-3-jacek.lawrynowicz@linux.intel.com> From: Thomas Zimmermann In-Reply-To: <20220924151149.323622-3-jacek.lawrynowicz@linux.intel.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------B7LiFqnpq2v1CBTLulqw7h0Y" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: andrzej.kacprowski@linux.intel.com, stanislaw.gruszka@linux.intel.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------B7LiFqnpq2v1CBTLulqw7h0Y Content-Type: multipart/mixed; boundary="------------02k8CJF4Udx0Fj0KVlds5iz7"; protected-headers="v1" From: Thomas Zimmermann To: Jacek Lawrynowicz , dri-devel@lists.freedesktop.org, airlied@gmail.com, daniel@ffwll.ch Cc: andrzej.kacprowski@linux.intel.com, stanislaw.gruszka@linux.intel.com Message-ID: <6cfd6459-4ea2-742a-aa94-4b1ecd253d7d@suse.de> Subject: Re: [PATCH v3 2/7] drm/ivpu: Add Intel VPU MMU support References: <20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com> <20220924151149.323622-3-jacek.lawrynowicz@linux.intel.com> In-Reply-To: <20220924151149.323622-3-jacek.lawrynowicz@linux.intel.com> --------------02k8CJF4Udx0Fj0KVlds5iz7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMjQuMDkuMjIgdW0gMTc6MTEgc2NocmllYiBKYWNlayBMYXdyeW5vd2ljejoN Cj4gVlBVIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgaXMgYmFzZWQgb24gQVJNIE1NVS02MDAu DQo+IEl0IGFsbG93cyB0byBjcmVhdGUgbXVsdGlwbGUgdmlydHVhbCBhZGRyZXNzIHNwYWNl cyBmb3IgdGhlIGRldmljZSBhbmQNCj4gbWFwIG5vbmNvbnRpbnVvdXMgaG9zdCBtZW1vcnkg KHRoZXJlIGlzIG5vIGRlZGljYXRlZCBtZW1vcnkgb24gdGhlIFZQVSkuDQo+IA0KPiBBZGRy ZXNzIHNwYWNlIGlzIGltcGxlbWVudGVkIGFzIGEgc3RydWN0IGl2cHVfbW11X2NvbnRleHQs IGl0IGhhcyBhbiBJRCwNCj4gZHJtX21tIGFsbG9jYXRvciBmb3IgVlBVIGFkZHJlc3NlcyBh bmQgc3RydWN0IGl2cHVfbW11X3BndGFibGUgdGhhdCBob2xkcw0KPiBhY3R1YWwgMy1sZXZl bCwgNEtCIHBhZ2UgdGFibGUuDQo+IENvbnRleHQgd2l0aCBJRCAwIChnbG9iYWwgY29udGV4 dCkgaXMgY3JlYXRlZCB1cG9uIGRyaXZlciBpbml0aWFsaXphdGlvbg0KPiBhbmQgaXQncyBt YWlubHkgdXNlZCBmb3IgbWFwcGluZyBtZW1vcnkgcmVxdWlyZWQgdG8gZXhlY3V0ZQ0KPiB0 aGUgZmlybXdhcmUuDQo+IENvbnRleHRzIHdpdGggbm9uLXplcm8gSURzIGFyZSB1c2VyIGNv bnRleHRzIGFsbG9jYXRlZCBlYWNoIHRpbWUNCj4gdGhlIGRldmljZXMgaXMgb3BlbigpLWVk IGFuZCB0aGV5IG1hcCBjb21tYW5kIGJ1ZmZlcnMgYW5kIG90aGVyDQo+IHdvcmtsb2FkLXJl bGF0ZWQgbWVtb3J5Lg0KPiBXb3JrbG9hZHMgZXhlY3V0aW5nIGluIGEgZ2l2ZW4gY29udGV4 dHMgaGF2ZSBhY2Nlc3Mgb25seQ0KPiB0byB0aGUgbWVtb3J5IG1hcHBlZCBpbiB0aGlzIGNv bnRleHQuDQo+IA0KPiBUaGlzIHBhdGNoIGlzIGhhcyB0byBtYWluIGZpbGVzOg0KPiAgICAt IGl2cHVfbW11X2NvbnRleHQuYyBoYW5kbGVzIE1NVSBwYWdlIHRhYmxlcyBhbmQgbWVtb3J5 IG1hcHBpbmcNCj4gICAgLSBpdnB1X21tdS5jIGltcGxlbWVudHMgYSBkcml2ZXIgdGhhdCBw cm9ncmFtcyB0aGUgTU1VIGRldmljZQ0KPiANCj4gU2lnbmVkLW9mZi1ieTogS2Fyb2wgV2Fj aG93c2tpIDxrYXJvbC53YWNob3dza2lAbGludXguaW50ZWwuY29tPg0KPiBTaWduZWQtb2Zm LWJ5OiBLcnlzdGlhbiBQcmFkenluc2tpIDxrcnlzdGlhbi5wcmFkenluc2tpQGxpbnV4Lmlu dGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmFjZWsgTGF3cnlub3dpY3ogPGphY2VrLmxh d3J5bm93aWN6QGxpbnV4LmludGVsLmNvbT4NCj4gLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJt L2l2cHUvTWFrZWZpbGUgICAgICAgICAgIHwgICA0ICstDQo+ICAgZHJpdmVycy9ncHUvZHJt L2l2cHUvaXZwdV9kcnYuYyAgICAgICAgIHwgIDU5ICstDQo+ICAgZHJpdmVycy9ncHUvZHJt L2l2cHUvaXZwdV9kcnYuaCAgICAgICAgIHwgICA3ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0v aXZwdS9pdnB1X2h3X210bC5jICAgICAgfCAgMTAgKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p dnB1L2l2cHVfbW11LmMgICAgICAgICB8IDg4MyArKysrKysrKysrKysrKysrKysrKysrKysN Cj4gICBkcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X21tdS5oICAgICAgICAgfCAgNTMgKysN Cj4gICBkcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X21tdV9jb250ZXh0LmMgfCA0MTkgKysr KysrKysrKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X21tdV9jb250ZXh0Lmgg fCAgNDkgKysNCj4gICBpbmNsdWRlL3VhcGkvZHJtL2l2cHVfZHJtLmggICAgICAgICAgICAg fCAgIDQgKw0KPiAgIDkgZmlsZXMgY2hhbmdlZCwgMTQ4NSBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZw dS9pdnB1X21tdS5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p dnB1L2l2cHVfbW11LmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2l2cHUvaXZwdV9tbXVfY29udGV4dC5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pdnB1L2l2cHVfbW11X2NvbnRleHQuaA0KPiANCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pdnB1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2l2cHUv TWFrZWZpbGUNCj4gaW5kZXggZTU5ZGM2NWFiZTZhLi45NWJiMDRmMjYyOTYgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pdnB1L01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pdnB1L01ha2VmaWxlDQo+IEBAIC0zLDYgKzMsOCBAQA0KPiAgIA0KPiAgIGlu dGVsX3ZwdS15IDo9IFwNCj4gICAJaXZwdV9kcnYubyBcDQo+IC0JaXZwdV9od19tdGwubw0K PiArCWl2cHVfaHdfbXRsLm8gXA0KPiArCWl2cHVfbW11Lm8gXA0KPiArCWl2cHVfbW11X2Nv bnRleHQubw0KPiAgIA0KPiAgIG9iai0kKENPTkZJR19EUk1fSVZQVSkgKz0gaW50ZWxfdnB1 Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X2Rydi5jDQo+IGluZGV4IGEwMWM3MjQ0ZjZlNS4u Y2JlYjlhODAxYTMxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1 X2Rydi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfZHJ2LmMNCj4gQEAg LTE0LDYgKzE0LDggQEANCj4gICANCj4gICAjaW5jbHVkZSAiaXZwdV9kcnYuaCINCj4gICAj aW5jbHVkZSAiaXZwdV9ody5oIg0KPiArI2luY2x1ZGUgIml2cHVfbW11LmgiDQo+ICsjaW5j bHVkZSAiaXZwdV9tbXVfY29udGV4dC5oIg0KPiAgIA0KPiAgICNpZm5kZWYgRFJJVkVSX1ZF UlNJT05fU1RSDQo+ICAgI2RlZmluZSBEUklWRVJfVkVSU0lPTl9TVFIgX19zdHJpbmdpZnko RFJNX0lWUFVfRFJJVkVSX01BSk9SKSAiLiIgXA0KPiBAQCAtNTAsNiArNTIsMTEgQEAgY2hh ciAqaXZwdV9wbGF0Zm9ybV90b19zdHIodTMyIHBsYXRmb3JtKQ0KPiAgIA0KPiAgIHZvaWQg aXZwdV9maWxlX3ByaXZfZ2V0KHN0cnVjdCBpdnB1X2ZpbGVfcHJpdiAqZmlsZV9wcml2LCBz dHJ1Y3QgaXZwdV9maWxlX3ByaXYgKipsaW5rKQ0KPiAgIHsNCj4gKwlzdHJ1Y3QgaXZwdV9k ZXZpY2UgKnZkZXYgPSBmaWxlX3ByaXYtPnZkZXY7DQo+ICsNCj4gKwlpdnB1X2RiZyhLUkVG LCAiZmlsZV9wcml2IGdldDogY3R4ICV1IHJlZmNvdW50ICV1XG4iLA0KPiArCQkgZmlsZV9w cml2LT5jdHguaWQsIGtyZWZfcmVhZCgmZmlsZV9wcml2LT5yZWYpKTsNCj4gKw0KPiAgIAlr cmVmX2dldCgmZmlsZV9wcml2LT5yZWYpOw0KPiAgIAkqbGluayA9IGZpbGVfcHJpdjsNCj4g ICB9DQo+IEBAIC01Nyw2ICs2NCwxMiBAQCB2b2lkIGl2cHVfZmlsZV9wcml2X2dldChzdHJ1 Y3QgaXZwdV9maWxlX3ByaXYgKmZpbGVfcHJpdiwgc3RydWN0IGl2cHVfZmlsZV9wcml2DQo+ ICAgc3RhdGljIHZvaWQgZmlsZV9wcml2X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikNCj4g ICB7DQo+ICAgCXN0cnVjdCBpdnB1X2ZpbGVfcHJpdiAqZmlsZV9wcml2ID0gY29udGFpbmVy X29mKHJlZiwgc3RydWN0IGl2cHVfZmlsZV9wcml2LCByZWYpOw0KPiArCXN0cnVjdCBpdnB1 X2RldmljZSAqdmRldiA9IGZpbGVfcHJpdi0+dmRldjsNCj4gKw0KPiArCWl2cHVfZGJnKEZJ TEUsICJmaWxlX3ByaXYgcmVsZWFzZTogY3R4ICV1XG4iLCBmaWxlX3ByaXYtPmN0eC5pZCk7 DQo+ICsNCj4gKwlpZiAoZmlsZV9wcml2LT5jdHguaWQpDQo+ICsJCWl2cHVfbW11X3VzZXJf Y29udGV4dF9maW5pKGZpbGVfcHJpdik7DQo+ICAgDQo+ICAgCWtmcmVlKGZpbGVfcHJpdik7 DQo+ICAgfQ0KPiBAQCAtNjQsNiArNzcsMTAgQEAgc3RhdGljIHZvaWQgZmlsZV9wcml2X3Jl bGVhc2Uoc3RydWN0IGtyZWYgKnJlZikNCj4gICB2b2lkIGl2cHVfZmlsZV9wcml2X3B1dChz dHJ1Y3QgaXZwdV9maWxlX3ByaXYgKipsaW5rKQ0KPiAgIHsNCj4gICAJc3RydWN0IGl2cHVf ZmlsZV9wcml2ICpmaWxlX3ByaXYgPSAqbGluazsNCj4gKwlzdHJ1Y3QgaXZwdV9kZXZpY2Ug KnZkZXYgPSBmaWxlX3ByaXYtPnZkZXY7DQo+ICsNCj4gKwlpdnB1X2RiZyhLUkVGLCAiZmls ZV9wcml2IHB1dDogY3R4ICV1IHJlZmNvdW50ICV1XG4iLA0KPiArCQkgZmlsZV9wcml2LT5j dHguaWQsIGtyZWZfcmVhZCgmZmlsZV9wcml2LT5yZWYpKTsNCj4gICANCj4gICAJKmxpbmsg PSBOVUxMOw0KPiAgIAlrcmVmX3B1dCgmZmlsZV9wcml2LT5yZWYsIGZpbGVfcHJpdl9yZWxl YXNlKTsNCj4gQEAgLTc1LDcgKzkyLDExIEBAIHN0YXRpYyBpbnQgaXZwdV9nZXRfcGFyYW1f aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9m DQo+ICAgCXN0cnVjdCBpdnB1X2RldmljZSAqdmRldiA9IGZpbGVfcHJpdi0+dmRldjsNCj4g ICAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KHZkZXYtPmRybS5kZXYpOw0K PiAgIAlzdHJ1Y3QgZHJtX2l2cHVfcGFyYW0gKmFyZ3MgPSBkYXRhOw0KPiAtCWludCByZXQg PSAwOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV91c2VyX2NvbnRl eHRfaW5pdChmaWxlX3ByaXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ ICAgDQo+ICAgCXN3aXRjaCAoYXJncy0+cGFyYW0pIHsNCj4gICAJY2FzZSBEUk1fSVZQVV9Q QVJBTV9ERVZJQ0VfSUQ6DQo+IEBAIC05OSw2ICsxMjAsOSBAQCBzdGF0aWMgaW50IGl2cHVf Z2V0X3BhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0 cnVjdCBkcm1fZg0KPiAgIAljYXNlIERSTV9JVlBVX1BBUkFNX0NPTlRFWFRfUFJJT1JJVFk6 DQo+ICAgCQlhcmdzLT52YWx1ZSA9IGZpbGVfcHJpdi0+cHJpb3JpdHk7DQo+ICAgCQlicmVh azsNCj4gKwljYXNlIERSTV9JVlBVX1BBUkFNX0NPTlRFWFRfSUQ6DQo+ICsJCWFyZ3MtPnZh bHVlID0gZmlsZV9wcml2LT5jdHguaWQ7DQo+ICsJCWJyZWFrOw0KPiAgIAlkZWZhdWx0Og0K PiAgIAkJcmV0ID0gLUVJTlZBTDsNCj4gICAJfQ0KPiBAQCAtMTEwLDcgKzEzNCwxMSBAQCBz dGF0aWMgaW50IGl2cHVfc2V0X3BhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZg0KPiAgIHsNCj4gICAJc3RydWN0IGl2cHVfZmls ZV9wcml2ICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsNCj4gICAJc3RydWN0IGRy bV9pdnB1X3BhcmFtICphcmdzID0gZGF0YTsNCj4gLQlpbnQgcmV0ID0gMDsNCj4gKwlpbnQg cmV0Ow0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfdXNlcl9jb250ZXh0X2luaXQoZmlsZV9w cml2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiAgIA0KPiAgIAlzd2l0 Y2ggKGFyZ3MtPnBhcmFtKSB7DQo+ICAgCWNhc2UgRFJNX0lWUFVfUEFSQU1fQ09OVEVYVF9Q UklPUklUWToNCj4gQEAgLTEzOSw5ICsxNjcsMTMgQEAgc3RhdGljIGludCBpdnB1X29wZW4o c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQ0KPiAgIAlm aWxlX3ByaXYtPnByaW9yaXR5ID0gRFJNX0lWUFVfQ09OVEVYVF9QUklPUklUWV9OT1JNQUw7 DQo+ICAgDQo+ICAgCWtyZWZfaW5pdCgmZmlsZV9wcml2LT5yZWYpOw0KPiArCW11dGV4X2lu aXQoJmZpbGVfcHJpdi0+bG9jayk7DQo+ICAgDQo+ICAgCWZpbGUtPmRyaXZlcl9wcml2ID0g ZmlsZV9wcml2Ow0KPiAgIA0KPiArCWl2cHVfZGJnKEZJTEUsICJmaWxlX3ByaXYgYWxsb2M6 IHByb2Nlc3MgJXMgcGlkICVkXG4iLA0KPiArCQkgY3VycmVudC0+Y29tbSwgdGFza19waWRf bnIoY3VycmVudCkpOw0KPiArDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gQEAg LTE2NCw2ICsxOTYsNyBAQCBpbnQgaXZwdV9zaHV0ZG93bihzdHJ1Y3QgaXZwdV9kZXZpY2Ug KnZkZXYpDQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCWl2cHVfaHdfaXJxX2Rpc2FibGUo dmRldik7DQo+ICsJaXZwdV9tbXVfZGlzYWJsZSh2ZGV2KTsNCj4gICANCj4gICAJcmV0ID0g aXZwdV9od19wb3dlcl9kb3duKHZkZXYpOw0KPiAgIAlpZiAocmV0KQ0KPiBAQCAtMjcyLDYg KzMwNSwxMCBAQCBzdGF0aWMgaW50IGl2cHVfZGV2X2luaXQoc3RydWN0IGl2cHVfZGV2aWNl ICp2ZGV2KQ0KPiAgIAlpZiAoIXZkZXYtPmh3KQ0KPiAgIAkJcmV0dXJuIC1FTk9NRU07DQo+ ICAgDQo+ICsJdmRldi0+bW11ID0gZGV2bV9remFsbG9jKHZkZXYtPmRybS5kZXYsIHNpemVv ZigqdmRldi0+bW11KSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCF2ZGV2LT5tbXUpDQo+ICsJ CXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICAgCXZkZXYtPmh3LT5vcHMgPSAmaXZwdV9od19t dGxfb3BzOw0KPiAgIAl2ZGV2LT5wbGF0Zm9ybSA9IElWUFVfUExBVEZPUk1fSU5WQUxJRDsN Cj4gICANCj4gQEAgLTMwMyw4ICszNDAsMjQgQEAgc3RhdGljIGludCBpdnB1X2Rldl9pbml0 KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikNCj4gICAJCWdvdG8gZXJyX2lycV9maW5pOw0K PiAgIAl9DQo+ICAgDQo+ICsJcmV0ID0gaXZwdV9tbXVfZ2xvYmFsX2NvbnRleHRfaW5pdCh2 ZGV2KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWl2cHVfZXJyKHZkZXYsICJGYWlsZWQgdG8g aW5pdGlhbGl6ZSBnbG9iYWwgTU1VIGNvbnRleHQ6ICVkXG4iLCByZXQpOw0KPiArCQlnb3Rv IGVycl9wb3dlcl9kb3duOw0KPiArCX0NCj4gKw0KPiArCXJldCA9IGl2cHVfbW11X2luaXQo dmRldik7DQo+ICsJaWYgKHJldCkgew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRv IGluaXRpYWxpemUgTU1VIGRldmljZTogJWRcbiIsIHJldCk7DQo+ICsJCWdvdG8gZXJyX21t dV9nY3R4X2Zpbmk7DQo+ICsJfQ0KPiArDQo+ICAgCXJldHVybiAwOw0KPiAgIA0KPiArZXJy X21tdV9nY3R4X2Zpbmk6DQo+ICsJaXZwdV9tbXVfZ2xvYmFsX2NvbnRleHRfZmluaSh2ZGV2 KTsNCj4gK2Vycl9wb3dlcl9kb3duOg0KPiArCWl2cHVfaHdfcG93ZXJfZG93bih2ZGV2KTsN Cj4gICBlcnJfaXJxX2Zpbmk6DQo+ICAgCWl2cHVfaXJxX2ZpbmkodmRldik7DQo+ICAgZXJy X3BjaV9maW5pOg0KPiBAQCAtMzE2LDYgKzM2OSw4IEBAIHN0YXRpYyB2b2lkIGl2cHVfZGV2 X2Zpbmkoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2KQ0KPiAgIHsNCj4gICAJaXZwdV9zaHV0 ZG93bih2ZGV2KTsNCj4gICANCj4gKwlpdnB1X21tdV9maW5pKHZkZXYpOw0KPiArCWl2cHVf bW11X2dsb2JhbF9jb250ZXh0X2ZpbmkodmRldik7DQo+ICAgCWl2cHVfaXJxX2ZpbmkodmRl dik7DQo+ICAgCWl2cHVfcGNpX2ZpbmkodmRldik7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2l2cHUv aXZwdV9kcnYuaA0KPiBpbmRleCA0M2RmYTc4NTQ0YzYuLjZlZWMzZWI3NmMyZiAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2l2cHUvaXZwdV9kcnYuaA0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X2Rydi5oDQo+IEBAIC0xNCw2ICsxNCw4IEBADQo+ICAg I2luY2x1ZGUgPGxpbnV4L3hhcnJheS5oPg0KPiAgICNpbmNsdWRlIDx1YXBpL2RybS9pdnB1 X2RybS5oPg0KPiAgIA0KPiArI2luY2x1ZGUgIml2cHVfbW11X2NvbnRleHQuaCINCj4gKw0K PiAgICNkZWZpbmUgRFJJVkVSX05BTUUgImludGVsX3ZwdSINCj4gICAjZGVmaW5lIERSSVZF Ul9ERVNDICJEcml2ZXIgZm9yIEludGVsIFZlcnNhdGlsZSBQcm9jZXNzaW5nIFVuaXQgKFZQ VSkiDQo+ICAgI2RlZmluZSBEUklWRVJfREFURSAiMjAyMjA5MTMiDQo+IEBAIC03MCw2ICs3 Miw3IEBAIHN0cnVjdCBpdnB1X3dhX3RhYmxlIHsNCj4gICB9Ow0KPiAgIA0KPiAgIHN0cnVj dCBpdnB1X2h3X2luZm87DQo+ICtzdHJ1Y3QgaXZwdV9tbXVfaW5mbzsNCj4gICANCj4gICBz dHJ1Y3QgaXZwdV9kZXZpY2Ugew0KPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07IC8qIE11 c3QgYmUgZmlyc3QgKi8NCj4gQEAgLTgwLDcgKzgzLDkgQEAgc3RydWN0IGl2cHVfZGV2aWNl IHsNCj4gICANCj4gICAJc3RydWN0IGl2cHVfd2FfdGFibGUgd2E7DQo+ICAgCXN0cnVjdCBp dnB1X2h3X2luZm8gKmh3Ow0KPiArCXN0cnVjdCBpdnB1X21tdV9pbmZvICptbXU7DQo+ICAg DQo+ICsJc3RydWN0IGl2cHVfbW11X2NvbnRleHQgZ2N0eDsNCj4gICAJc3RydWN0IHhhcnJh eSBjb250ZXh0X3hhOw0KPiAgIAlzdHJ1Y3QgeGFfbGltaXQgY29udGV4dF94YV9saW1pdDsN Cj4gICANCj4gQEAgLTk1LDYgKzEwMCw4IEBAIHN0cnVjdCBpdnB1X2RldmljZSB7DQo+ICAg c3RydWN0IGl2cHVfZmlsZV9wcml2IHsNCj4gICAJc3RydWN0IGtyZWYgcmVmOw0KPiAgIAlz dHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXY7DQo+ICsJc3RydWN0IG11dGV4IGxvY2s7DQoNClRo ZXJlIHdhcyBhbm90aGVyIGxvY2sgaW4gdGhlIG1tdSBzdHJ1Y3QsIGJ1dCB3aGF0J3MgdGhp cyBsb2NrIGZvcj8NCg0KQnN0IHJlZ2FyZHMNClRob21hcw0KDQo+ICsJc3RydWN0IGl2cHVf bW11X2NvbnRleHQgY3R4Ow0KPiAgIAl1MzIgcHJpb3JpdHk7DQo+ICAgfTsNCj4gICANCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfaHdfbXRsLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X2h3X210bC5jDQo+IGluZGV4IDE3ZmM4ZTExMDRkZi4u NTI1YjU3YzQwMjljIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1 X2h3X210bC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfaHdfbXRsLmMN Cj4gQEAgLTcsNiArNyw3IEBADQo+ICAgI2luY2x1ZGUgIml2cHVfaHdfbXRsX3JlZy5oIg0K PiAgICNpbmNsdWRlICJpdnB1X2h3X3JlZ19pby5oIg0KPiAgICNpbmNsdWRlICJpdnB1X2h3 LmgiDQo+ICsjaW5jbHVkZSAiaXZwdV9tbXUuaCINCj4gICANCj4gICAjZGVmaW5lIFRJTEVf RlVTRV9FTkFCTEVfQk9USAkgICAgIDB4MA0KPiAgICNkZWZpbmUgVElMRV9GVVNFX0VOQUJM RV9VUFBFUgkgICAgIDB4MQ0KPiBAQCAtOTMwLDYgKzkzMSwxNSBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgaXZwdV9od19tdGxfaXJxdl9oYW5kbGVyKHN0cnVjdCBpdnB1X2RldmljZSAqdmRl diwgaW50IGlycSkNCj4gICANCj4gICAJUkVHVl9XUjMyKE1UTF9WUFVfSE9TVF9TU19JQ0Jf Q0xFQVJfMCwgc3RhdHVzKTsNCj4gICANCj4gKwlpZiAoUkVHX1RFU1RfRkxEKE1UTF9WUFVf SE9TVF9TU19JQ0JfU1RBVFVTXzAsIE1NVV9JUlFfMF9JTlQsIHN0YXR1cykpDQo+ICsJCXJl dCAmPSBpdnB1X21tdV9pcnFfZXZ0cV9oYW5kbGVyKHZkZXYpOw0KPiArDQo+ICsJaWYgKFJF R19URVNUX0ZMRChNVExfVlBVX0hPU1RfU1NfSUNCX1NUQVRVU18wLCBNTVVfSVJRXzFfSU5U LCBzdGF0dXMpKQ0KPiArCQlpdnB1X2RiZyhJUlEsICJNTVUgc3luYyBjb21wbGV0ZVxuIik7 DQo+ICsNCj4gKwlpZiAoUkVHX1RFU1RfRkxEKE1UTF9WUFVfSE9TVF9TU19JQ0JfU1RBVFVT XzAsIE1NVV9JUlFfMl9JTlQsIHN0YXR1cykpDQo+ICsJCXJldCAmPSBpdnB1X21tdV9pcnFf Z2Vycl9oYW5kbGVyKHZkZXYpOw0KPiArDQo+ICAgCWlmIChSRUdfVEVTVF9GTEQoTVRMX1ZQ VV9IT1NUX1NTX0lDQl9TVEFUVVNfMCwgQ1BVX0lOVF9SRURJUkVDVF8wX0lOVCwgc3RhdHVz KSkNCj4gICAJCXJldCAmPSBpdnB1X2h3X210bF9pcnFfd2R0X21zc19oYW5kbGVyKHZkZXYp Ow0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2cHUvaXZwdV9tbXUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfbW11LmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iOWYyMjVhODNjNDUNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X21tdS5jDQo+IEBAIC0w LDAgKzEsODgzIEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5DQo+ICsvKg0KPiArICogQ29weXJpZ2h0IMKpIDIwMjAtMjAyMiBJbnRlbCBDb3Jwb3Jh dGlvbg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4NCj4gKw0KPiArI2luY2x1ZGUgIml2cHVfZHJ2 LmgiDQo+ICsjaW5jbHVkZSAiaXZwdV9od19tdGxfcmVnLmgiDQo+ICsjaW5jbHVkZSAiaXZw dV9od19yZWdfaW8uaCINCj4gKyNpbmNsdWRlICJpdnB1X21tdS5oIg0KPiArI2luY2x1ZGUg Iml2cHVfbW11X2NvbnRleHQuaCINCj4gKw0KPiArI2RlZmluZSBJVlBVX01NVV9JRFIwX1JF RgkJMHgwODBmM2UwZg0KPiArI2RlZmluZSBJVlBVX01NVV9JRFIwX1JFRl9TSU1JQ1MJMHgw ODBmM2UxZg0KPiArI2RlZmluZSBJVlBVX01NVV9JRFIxX1JFRgkJMHgwZTczOWQxOA0KPiAr I2RlZmluZSBJVlBVX01NVV9JRFIzX1JFRgkJMHgwMDAwMDAzYw0KPiArI2RlZmluZSBJVlBV X01NVV9JRFI1X1JFRgkJMHgwMDA0MDA3MA0KPiArI2RlZmluZSBJVlBVX01NVV9JRFI1X1JF Rl9TSU1JQ1MJMHgwMDAwMDA3NQ0KPiArI2RlZmluZSBJVlBVX01NVV9JRFI1X1JFRl9GUEdB CQkweDAwODAwMDc1DQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfQ0RUQUJfRU5UX1NJWkUJ CTY0DQo+ICsjZGVmaW5lIElWUFVfTU1VX0NEVEFCX0VOVF9DT1VOVF9MT0cyCTggLyogMjU2 IGVudHJpZXMgKi8NCj4gKyNkZWZpbmUgSVZQVV9NTVVfQ0RUQUJfRU5UX0NPVU5UCSgodTMy KTEgPDwgSVZQVV9NTVVfQ0RUQUJfRU5UX0NPVU5UX0xPRzIpDQo+ICsNCj4gKyNkZWZpbmUg SVZQVV9NTVVfU1RSRUFNX0lEMAkJMA0KPiArI2RlZmluZSBJVlBVX01NVV9TVFJFQU1fSUQz CQkzDQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RSVEFCX0VOVF9TSVpFCTY0DQo+ICsj ZGVmaW5lIElWUFVfTU1VX1NUUlRBQl9FTlRfQ09VTlQJNA0KPiArI2RlZmluZSBJVlBVX01N VV9TVFJUQUJfQ0ZHX0xPRzJTSVpFCTINCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RSVEFCX0NG RwkJSVZQVV9NTVVfU1RSVEFCX0NGR19MT0cyU0laRQ0KPiArDQo+ICsjZGVmaW5lIElWUFVf TU1VX1FfQ09VTlRfTE9HMgkJNCAvKiAxNiBlbnRyaWVzICovDQo+ICsjZGVmaW5lIElWUFVf TU1VX1FfQ09VTlQJCSgodTMyKTEgPDwgSVZQVV9NTVVfUV9DT1VOVF9MT0cyKQ0KPiArI2Rl ZmluZSBJVlBVX01NVV9RX1dSQVBfQklUCQkoSVZQVV9NTVVfUV9DT1VOVCA8PCAxKQ0KPiAr I2RlZmluZSBJVlBVX01NVV9RX1dSQVBfTUFTSwkJKElWUFVfTU1VX1FfV1JBUF9CSVQgLSAx KQ0KPiArI2RlZmluZSBJVlBVX01NVV9RX0lEWF9NQVNLCQkoSVZQVV9NTVVfUV9DT1VOVCAt IDEpDQo+ICsjZGVmaW5lIElWUFVfTU1VX1FfSURYKHZhbCkJCSgodmFsKSAmIElWUFVfTU1V X1FfSURYX01BU0spDQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfQ01EUV9DTURfU0laRQkJ MTYNCj4gKyNkZWZpbmUgSVZQVV9NTVVfQ01EUV9TSVpFCQkoSVZQVV9NTVVfUV9DT1VOVCAq IElWUFVfTU1VX0NNRFFfQ01EX1NJWkUpDQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZU UV9DTURfU0laRQkJMzINCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUUV9TSVpFCQkoSVZQVV9N TVVfUV9DT1VOVCAqIElWUFVfTU1VX0VWVFFfQ01EX1NJWkUpDQo+ICsNCj4gKyNkZWZpbmUg SVZQVV9NTVVfQ01EX09QQ09ERQkJR0VOTUFTSyg4LCAwKQ0KPiArDQo+ICsjZGVmaW5lIElW UFVfTU1VX0NNRF9TWU5DXzBfQ1MJCUdFTk1BU0soMTMsIDEyKQ0KPiArI2RlZmluZSBJVlBV X01NVV9DTURfU1lOQ18wX01TSAkJR0VOTUFTSygyMywgMjIpDQo+ICsjZGVmaW5lIElWUFVf TU1VX0NNRF9TWU5DXzBfTVNJX0FUVFIJR0VOTUFTSygyNywgMjQpDQo+ICsjZGVmaW5lIElW UFVfTU1VX0NNRF9TWU5DXzBfTVNJX0FUVFIJR0VOTUFTSygyNywgMjQpDQo+ICsjZGVmaW5l IElWUFVfTU1VX0NNRF9TWU5DXzBfTVNJX0RBVEEJR0VOTUFTSyg2MywgMzIpDQo+ICsNCj4g KyNkZWZpbmUgSVZQVV9NTVVfQ01EX0NGR0lfMF9TU0VDCUJJVCgxMCkNCj4gKyNkZWZpbmUg SVZQVV9NTVVfQ01EX0NGR0lfMF9TU1YJCUJJVCgxMSkNCj4gKyNkZWZpbmUgSVZQVV9NTVVf Q01EX0NGR0lfMF9TU0lECUdFTk1BU0soMzEsIDEyKQ0KPiArI2RlZmluZSBJVlBVX01NVV9D TURfQ0ZHSV8wX1NJRAkJR0VOTUFTSyg2MywgMzIpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NN RF9DRkdJXzFfUkFOR0UJR0VOTUFTSyg0LCAwKQ0KPiArDQo+ICsjZGVmaW5lIElWUFVfTU1V X0NNRF9UTEJJXzBfQVNJRAlHRU5NQVNLKDYzLCA0OCkNCj4gKyNkZWZpbmUgSVZQVV9NTVVf Q01EX1RMQklfMF9WTUlECUdFTk1BU0soNDcsIDMyKQ0KPiArDQo+ICsjZGVmaW5lIENNRF9Q UkVGRVRDSF9DRkcJCTB4MQ0KPiArI2RlZmluZSBDTURfQ0ZHSV9TVEUJCQkweDMNCj4gKyNk ZWZpbmUgQ01EX0NGR0lfQUxMCQkJMHg0DQo+ICsjZGVmaW5lIENNRF9DRkdJX0NECQkJMHg1 DQo+ICsjZGVmaW5lIENNRF9DRkdJX0NEX0FMTAkJCTB4Ng0KPiArI2RlZmluZSBDTURfVExC SV9OSF9BU0lECQkweDExDQo+ICsjZGVmaW5lIENNRF9UTEJJX0VMMl9BTEwJCTB4MjANCj4g KyNkZWZpbmUgQ01EX1RMQklfTlNOSF9BTEwJCTB4MzANCj4gKyNkZWZpbmUgQ01EX1NZTkMJ CQkweDQ2DQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfVVVUCQkweDAxDQo+ICsj ZGVmaW5lIElWUFVfTU1VX0VWVF9DX0JBRF9TVFJFQU1JRAkweDAyDQo+ICsjZGVmaW5lIElW UFVfTU1VX0VWVF9GX1NURV9GRVRDSAkweDAzDQo+ICsjZGVmaW5lIElWUFVfTU1VX0VWVF9D X0JBRF9TVEUJCTB4MDQNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfQkFEX0FUU19UUkVR CTB4MDUNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfU1RSRUFNX0RJU0FCTEVECTB4MDYN Cj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfVFJBTlNMX0ZPUkJJRERFTgkweDA3DQo+ICsj ZGVmaW5lIElWUFVfTU1VX0VWVF9DX0JBRF9TVUJTVFJFQU1JRAkweDA4DQo+ICsjZGVmaW5l IElWUFVfTU1VX0VWVF9GX0NEX0ZFVENICQkweDA5DQo+ICsjZGVmaW5lIElWUFVfTU1VX0VW VF9DX0JBRF9DRAkJMHgwYQ0KPiArI2RlZmluZSBJVlBVX01NVV9FVlRfRl9XQUxLX0VBQlQJ MHgwYg0KPiArI2RlZmluZSBJVlBVX01NVV9FVlRfRl9UUkFOU0xBVElPTgkweDEwDQo+ICsj ZGVmaW5lIElWUFVfTU1VX0VWVF9GX0FERFJfU0laRQkweDExDQo+ICsjZGVmaW5lIElWUFVf TU1VX0VWVF9GX0FDQ0VTUwkJMHgxMg0KPiArI2RlZmluZSBJVlBVX01NVV9FVlRfRl9QRVJN SVNTSU9OCTB4MTMNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfVExCX0NPTkZMSUNUCTB4 MjANCj4gKyNkZWZpbmUgSVZQVV9NTVVfRVZUX0ZfQ0ZHX0NPTkZMSUNUCTB4MjENCj4gKyNk ZWZpbmUgSVZQVV9NTVVfRVZUX0VfUEFHRV9SRVFVRVNUCTB4MjQNCj4gKyNkZWZpbmUgSVZQ VV9NTVVfRVZUX0ZfVk1TX0ZFVENICTB4MjUNCj4gKw0KPiArI2RlZmluZSBJVlBVX01NVV9F VlRTX01BWAkJOA0KPiArDQo+ICsjZGVmaW5lIElWUFVfTU1VX0VWVF9PUF9NQVNLCQlHRU5N QVNLX1VMTCg3LCAwKQ0KPiArI2RlZmluZSBJVlBVX01NVV9FVlRfU1NJRF9NQVNLCQlHRU5N QVNLX1VMTCgzMSwgMTIpDQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfUV9CQVNFX1JXQQkJ QklUKDYyKQ0KPiArI2RlZmluZSBJVlBVX01NVV9RX0JBU0VfQUREUl9NQVNLCUdFTk1BU0tf VUxMKDUxLCA1KQ0KPiArI2RlZmluZSBJVlBVX01NVV9TVFJUQUJfQkFTRV9SQQkJQklUKDYy KQ0KPiArI2RlZmluZSBJVlBVX01NVV9TVFJUQUJfQkFTRV9BRERSX01BU0sJR0VOTUFTS19V TEwoNTEsIDYpDQo+ICsNCj4gKyNkZWZpbmUgSVZQVV9NTVVfSVJRX0VWVFFfRU4JCUJJVCgy KQ0KPiArI2RlZmluZSBJVlBVX01NVV9JUlFfR0VSUk9SX0VOCQlCSVQoMCkNCj4gKw0KPiAr I2RlZmluZSBJVlBVX01NVV9DUjBfQVRTQ0hLCQlCSVQoNCkNCj4gKyNkZWZpbmUgSVZQVV9N TVVfQ1IwX0NNRFFFTgkJQklUKDMpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NSMF9FVlRRRU4J CUJJVCgyKQ0KPiArI2RlZmluZSBJVlBVX01NVV9DUjBfUFJJUUVOCQlCSVQoMSkNCj4gKyNk ZWZpbmUgSVZQVV9NTVVfQ1IwX1NNTVVFTgkJQklUKDApDQo+ICsNCj4gKyNkZWZpbmUgSVZQ VV9NTVVfQ1IxX1RBQkxFX1NICQlHRU5NQVNLKDExLCAxMCkNCj4gKyNkZWZpbmUgSVZQVV9N TVVfQ1IxX1RBQkxFX09DCQlHRU5NQVNLKDksIDgpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NS MV9UQUJMRV9JQwkJR0VOTUFTSyg3LCA2KQ0KPiArI2RlZmluZSBJVlBVX01NVV9DUjFfUVVF VUVfU0gJCUdFTk1BU0soNSwgNCkNCj4gKyNkZWZpbmUgSVZQVV9NTVVfQ1IxX1FVRVVFX09D CQlHRU5NQVNLKDMsIDIpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NSMV9RVUVVRV9JQwkJR0VO TUFTSygxLCAwKQ0KPiArI2RlZmluZSBJVlBVX01NVV9DQUNIRV9OQwkJMA0KPiArI2RlZmlu ZSBJVlBVX01NVV9DQUNIRV9XQgkJMQ0KPiArI2RlZmluZSBJVlBVX01NVV9DQUNIRV9XVAkJ Mg0KPiArI2RlZmluZSBJVlBVX01NVV9TSF9OU0gJCQkwDQo+ICsjZGVmaW5lIElWUFVfTU1V X1NIX09TSAkJCTINCj4gKyNkZWZpbmUgSVZQVV9NTVVfU0hfSVNICQkJMw0KPiArDQo+ICsj ZGVmaW5lIElWUFVfTU1VX0NNRFFfT1AJCUdFTk1BU0tfVUxMKDcsIDApDQo+ICsNCj4gKyNk ZWZpbmUgSVZQVV9NTVVfQ0RfMF9UQ1JfVDBTWgkJR0VOTUFTS19VTEwoNSwgMCkNCj4gKyNk ZWZpbmUgSVZQVV9NTVVfQ0RfMF9UQ1JfVEcwCQlHRU5NQVNLX1VMTCg3LCA2KQ0KPiArI2Rl ZmluZSBJVlBVX01NVV9DRF8wX1RDUl9JUkdOMAkJR0VOTUFTS19VTEwoOSwgOCkNCj4gKyNk ZWZpbmUgSVZQVV9NTVVfQ0RfMF9UQ1JfT1JHTjAJCUdFTk1BU0tfVUxMKDExLCAxMCkNCj4g KyNkZWZpbmUgSVZQVV9NTVVfQ0RfMF9UQ1JfU0gwCQlHRU5NQVNLX1VMTCgxMywgMTIpDQo+ ICsjZGVmaW5lIElWUFVfTU1VX0NEXzBfVENSX0VQRDAJCUJJVF9VTEwoMTQpDQo+ICsjZGVm aW5lIElWUFVfTU1VX0NEXzBfVENSX0VQRDEJCUJJVF9VTEwoMzApDQo+ICsjZGVmaW5lIElW UFVfTU1VX0NEXzBfRU5ESQkJQklUKDE1KQ0KPiArI2RlZmluZSBJVlBVX01NVV9DRF8wX1YJ CQlCSVQoMzEpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NEXzBfVENSX0lQUwkJR0VOTUFTS19V TEwoMzQsIDMyKQ0KPiArI2RlZmluZSBJVlBVX01NVV9DRF8wX1RDUl9UQkkwCQlCSVRfVUxM KDM4KQ0KPiArI2RlZmluZSBJVlBVX01NVV9DRF8wX0FBNjQJCUJJVCg0MSkNCj4gKyNkZWZp bmUgSVZQVV9NTVVfQ0RfMF9TCQkJQklUKDQ0KQ0KPiArI2RlZmluZSBJVlBVX01NVV9DRF8w X1IJCQlCSVQoNDUpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0NEXzBfQQkJCUJJVCg0NikNCj4g KyNkZWZpbmUgSVZQVV9NTVVfQ0RfMF9BU0VUCQlCSVQoNDcpDQo+ICsjZGVmaW5lIElWUFVf TU1VX0NEXzBfQVNJRAkJR0VOTUFTS19VTEwoNjMsIDQ4KQ0KPiArDQo+ICsjZGVmaW5lIElW UFVfTU1VX0NEXzFfVFRCMF9NQVNLCQlHRU5NQVNLX1VMTCg1MSwgNCkNCj4gKw0KPiArI2Rl ZmluZSBJVlBVX01NVV9TVEVfMF9TMUNETUFYCQlHRU5NQVNLX1VMTCg2MywgNTkpDQo+ICsj ZGVmaW5lIElWUFVfTU1VX1NURV8wX1MxRk1UCQlHRU5NQVNLX1VMTCg1LCA0KQ0KPiArI2Rl ZmluZSBJVlBVX01NVV9TVEVfMF9TMUZNVF9MSU5FQVIJMA0KPiArI2RlZmluZSBJVlBVX01N VV9TVEVfRFdPUkRTCQk4DQo+ICsjZGVmaW5lIElWUFVfTU1VX1NURV8wX0NGR19TMV9UUkFO Uwk1DQo+ICsjZGVmaW5lIElWUFVfTU1VX1NURV8wX0NGRwkJR0VOTUFTS19VTEwoMywgMSkN Cj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzBfUzFDVFhQVFJfTUFTSwlHRU5NQVNLX1VMTCg1 MSwgNikNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzBfVgkJCUJJVCgwKQ0KPiArDQo+ICsj ZGVmaW5lIElWUFVfTU1VX1NURV8xX1NUUldfTlNFTDEJMHVsDQo+ICsjZGVmaW5lIElWUFVf TU1VX1NURV8xX0NPTlQJCUdFTk1BU0tfVUxMKDE2LCAxMykNCj4gKyNkZWZpbmUgSVZQVV9N TVVfU1RFXzFfU1RSVwkJR0VOTUFTS19VTEwoMzEsIDMwKQ0KPiArI2RlZmluZSBJVlBVX01N VV9TVEVfMV9QUklWQ0ZHCQlHRU5NQVNLX1VMTCg0OSwgNDgpDQo+ICsjZGVmaW5lIElWUFVf TU1VX1NURV8xX1BSSVZDRkdfVU5QUklWCTJ1bA0KPiArI2RlZmluZSBJVlBVX01NVV9TVEVf MV9JTlNUQ0ZHCQlHRU5NQVNLX1VMTCg1MSwgNTApDQo+ICsjZGVmaW5lIElWUFVfTU1VX1NU RV8xX0lOU1RDRkdfREFUQQkydWwNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzFfTUVWCQlC SVQoMTkpDQo+ICsjZGVmaW5lIElWUFVfTU1VX1NURV8xX1MxU1RBTExECQlCSVQoMjcpDQo+ ICsjZGVmaW5lIElWUFVfTU1VX1NURV8xX1MxQ19DQUNIRV9OQwkwdWwNCj4gKyNkZWZpbmUg SVZQVV9NTVVfU1RFXzFfUzFDX0NBQ0hFX1dCUkEJMXVsDQo+ICsjZGVmaW5lIElWUFVfTU1V X1NURV8xX1MxQ19DQUNIRV9XVAkydWwNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzFfUzFD X0NBQ0hFX1dCCTN1bA0KPiArI2RlZmluZSBJVlBVX01NVV9TVEVfMV9TMUNJUgkJR0VOTUFT S19VTEwoMywgMikNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzFfUzFDT1IJCUdFTk1BU0tf VUxMKDUsIDQpDQo+ICsjZGVmaW5lIElWUFVfTU1VX1NURV8xX1MxQ1NICQlHRU5NQVNLX1VM TCg3LCA2KQ0KPiArI2RlZmluZSBJVlBVX01NVV9TVEVfMV9TMURTUwkJR0VOTUFTS19VTEwo MSwgMCkNCj4gKyNkZWZpbmUgSVZQVV9NTVVfU1RFXzFfUzFEU1NfVEVSTUlOQVRFCTB4MA0K PiArDQo+ICsjZGVmaW5lIElWUFVfTU1VX1JFR19USU1FT1VUX1VTCQkoMTAgKiBVU0VDX1BF Ul9NU0VDKQ0KPiArI2RlZmluZSBJVlBVX01NVV9RVUVVRV9USU1FT1VUX1VTCSgxMDAgKiBV U0VDX1BFUl9NU0VDKQ0KPiArDQo+ICsjZGVmaW5lIElWUFVfTU1VX0dFUlJPUl9FUlJfTUFT SyAoKFJFR19GTEQoTVRMX1ZQVV9IT1NUX01NVV9HRVJST1IsIENNRFEpKSB8IFwNCj4gKwkJ CQkgIChSRUdfRkxEKE1UTF9WUFVfSE9TVF9NTVVfR0VSUk9SLCBFVlRRX0FCVCkpIHwgXA0K PiArCQkJCSAgKFJFR19GTEQoTVRMX1ZQVV9IT1NUX01NVV9HRVJST1IsIFBSSVFfQUJUKSkg fCBcDQo+ICsJCQkJICAoUkVHX0ZMRChNVExfVlBVX0hPU1RfTU1VX0dFUlJPUiwgTVNJX0NN RFFfQUJUKSkgfCBcDQo+ICsJCQkJICAoUkVHX0ZMRChNVExfVlBVX0hPU1RfTU1VX0dFUlJP UiwgTVNJX0VWVFFfQUJUKSkgfCBcDQo+ICsJCQkJICAoUkVHX0ZMRChNVExfVlBVX0hPU1Rf TU1VX0dFUlJPUiwgTVNJX1BSSVFfQUJUKSkgfCBcDQo+ICsJCQkJICAoUkVHX0ZMRChNVExf VlBVX0hPU1RfTU1VX0dFUlJPUiwgTVNJX0FCVCkpIHwgXA0KPiArCQkJCSAgKFJFR19GTEQo TVRMX1ZQVV9IT1NUX01NVV9HRVJST1IsIFNGTSkpKQ0KPiArDQo+ICtzdGF0aWMgY2hhciAq aXZwdV9tbXVfZXZ0X3RvX3N0cih1MzIgY21kKQ0KPiArew0KPiArCXN3aXRjaCAoY21kKSB7 DQo+ICsJY2FzZSBJVlBVX01NVV9FVlRfRl9VVVQ6DQo+ICsJCXJldHVybiAiVW5zdXBwb3J0 ZWQgVXBzdHJlYW0gVHJhbnNhY3Rpb24iOw0KPiArCWNhc2UgSVZQVV9NTVVfRVZUX0NfQkFE X1NUUkVBTUlEOg0KPiArCQlyZXR1cm4gIlRyYW5zYWN0aW9uIFN0cmVhbUlEIG91dCBvZiBy YW5nZSI7DQo+ICsJY2FzZSBJVlBVX01NVV9FVlRfRl9TVEVfRkVUQ0g6DQo+ICsJCXJldHVy biAiRmV0Y2ggb2YgU1RFIGNhdXNlZCBleHRlcm5hbCBhYm9ydCI7DQo+ICsJY2FzZSBJVlBV X01NVV9FVlRfQ19CQURfU1RFOg0KPiArCQlyZXR1cm4gIlVzZWQgU1RFIGludmFsaWQiOw0K PiArCWNhc2UgSVZQVV9NTVVfRVZUX0ZfQkFEX0FUU19UUkVROg0KPiArCQlyZXR1cm4gIkFk ZHJlc3MgUmVxdWVzdCBkaXNhbGxvd2VkIGZvciBhIFN0cmVhbUlEIjsNCj4gKwljYXNlIElW UFVfTU1VX0VWVF9GX1NUUkVBTV9ESVNBQkxFRDoNCj4gKwkJcmV0dXJuICJUcmFuc2FjdGlv biBtYXJrcyBub24tc3Vic3RyZWFtIGRpc2FibGVkIjsNCj4gKwljYXNlIElWUFVfTU1VX0VW VF9GX1RSQU5TTF9GT1JCSURERU46DQo+ICsJCXJldHVybiAiTU1VIGJ5cGFzcyBpcyBkaXNh bGxvd2VkIGZvciB0aGlzIFN0cmVhbUlEIjsNCj4gKwljYXNlIElWUFVfTU1VX0VWVF9DX0JB RF9TVUJTVFJFQU1JRDoNCj4gKwkJcmV0dXJuICJJbnZhbGlkIFN0cmVhbUlEIjsNCj4gKwlj YXNlIElWUFVfTU1VX0VWVF9GX0NEX0ZFVENIOg0KPiArCQlyZXR1cm4gIkZldGNoIG9mIENE IGNhdXNlZCBleHRlcm5hbCBhYm9ydCI7DQo+ICsJY2FzZSBJVlBVX01NVV9FVlRfQ19CQURf Q0Q6DQo+ICsJCXJldHVybiAiRmV0Y2hlZCBDRCBpbnZhbGlkIjsNCj4gKwljYXNlIElWUFVf TU1VX0VWVF9GX1dBTEtfRUFCVDoNCj4gKwkJcmV0dXJuICIgQW4gZXh0ZXJuYWwgYWJvcnQg b2NjdXJyZWQgZmV0Y2hpbmcgYSBUTEIiOw0KPiArCWNhc2UgSVZQVV9NTVVfRVZUX0ZfVFJB TlNMQVRJT046DQo+ICsJCXJldHVybiAiVHJhbnNsYXRpb24gZmF1bHQiOw0KPiArCWNhc2Ug SVZQVV9NTVVfRVZUX0ZfQUREUl9TSVpFOg0KPiArCQlyZXR1cm4gIiBPdXRwdXQgYWRkcmVz cyBjYXVzZWQgYWRkcmVzcyBzaXplIGZhdWx0IjsNCj4gKwljYXNlIElWUFVfTU1VX0VWVF9G X0FDQ0VTUzoNCj4gKwkJcmV0dXJuICJBY2Nlc3MgZmxhZyBmYXVsdCI7DQo+ICsJY2FzZSBJ VlBVX01NVV9FVlRfRl9QRVJNSVNTSU9OOg0KPiArCQlyZXR1cm4gIlBlcm1pc3Npb24gZmF1 bHQgb2NjdXJyZWQgb24gcGFnZSBhY2Nlc3MiOw0KPiArCWNhc2UgSVZQVV9NTVVfRVZUX0Zf VExCX0NPTkZMSUNUOg0KPiArCQlyZXR1cm4gIkEgVExCIGNvbmZsaWN0IjsNCj4gKwljYXNl IElWUFVfTU1VX0VWVF9GX0NGR19DT05GTElDVDoNCj4gKwkJcmV0dXJuICJBIGNvbmZpZ3Vy YXRpb24gY2FjaGUgY29uZmxpY3QiOw0KPiArCWNhc2UgSVZQVV9NTVVfRVZUX0VfUEFHRV9S RVFVRVNUOg0KPiArCQlyZXR1cm4gIlBhZ2UgcmVxdWVzdCBoaW50IGZyb20gYSBjbGllbnQg ZGV2aWNlIjsNCj4gKwljYXNlIElWUFVfTU1VX0VWVF9GX1ZNU19GRVRDSDoNCj4gKwkJcmV0 dXJuICJGZXRjaCBvZiBWTVMgY2F1c2VkIGV4dGVybmFsIGFib3J0IjsNCj4gKwlkZWZhdWx0 Og0KPiArCQlyZXR1cm4gIlVua25vd24gQ01EUSBjb21tYW5kIjsNCj4gKwl9DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgaXZwdV9tbXVfY29uZmlnX2NoZWNrKHN0cnVjdCBpdnB1X2Rl dmljZSAqdmRldikNCj4gK3sNCj4gKwl1MzIgdmFsX3JlZjsNCj4gKwl1MzIgdmFsOw0KPiAr DQo+ICsJaWYgKGl2cHVfaXNfc2ltaWNzKHZkZXYpKQ0KPiArCQl2YWxfcmVmID0gSVZQVV9N TVVfSURSMF9SRUZfU0lNSUNTOw0KPiArCWVsc2UNCj4gKwkJdmFsX3JlZiA9IElWUFVfTU1V X0lEUjBfUkVGOw0KPiArDQo+ICsJdmFsID0gUkVHVl9SRDMyKE1UTF9WUFVfSE9TVF9NTVVf SURSMCk7DQo+ICsJaWYgKHZhbCAhPSB2YWxfcmVmKQ0KPiArCQlpdnB1X2Vycih2ZGV2LCAi SURSMCAweCV4ICE9IElEUjBfUkVGIDB4JXhcbiIsIHZhbCwgdmFsX3JlZik7DQo+ICsNCj4g Kwl2YWwgPSBSRUdWX1JEMzIoTVRMX1ZQVV9IT1NUX01NVV9JRFIxKTsNCj4gKwlpZiAodmFs ICE9IElWUFVfTU1VX0lEUjFfUkVGKQ0KPiArCQlpdnB1X3dhcm4odmRldiwgIklEUjEgMHgl eCAhPSBJRFIxX1JFRiAweCV4XG4iLCB2YWwsIElWUFVfTU1VX0lEUjFfUkVGKTsNCj4gKw0K PiArCXZhbCA9IFJFR1ZfUkQzMihNVExfVlBVX0hPU1RfTU1VX0lEUjMpOw0KPiArCWlmICh2 YWwgIT0gSVZQVV9NTVVfSURSM19SRUYpDQo+ICsJCWl2cHVfd2Fybih2ZGV2LCAiSURSMyAw eCV4ICE9IElEUjNfUkVGIDB4JXhcbiIsIHZhbCwgSVZQVV9NTVVfSURSM19SRUYpOw0KPiAr DQo+ICsJaWYgKGl2cHVfaXNfc2ltaWNzKHZkZXYpKQ0KPiArCQl2YWxfcmVmID0gSVZQVV9N TVVfSURSNV9SRUZfU0lNSUNTOw0KPiArCWVsc2UgaWYgKGl2cHVfaXNfZnBnYSh2ZGV2KSkN Cj4gKwkJdmFsX3JlZiA9IElWUFVfTU1VX0lEUjVfUkVGX0ZQR0E7DQo+ICsJZWxzZQ0KPiAr CQl2YWxfcmVmID0gSVZQVV9NTVVfSURSNV9SRUY7DQo+ICsNCj4gKwl2YWwgPSBSRUdWX1JE MzIoTVRMX1ZQVV9IT1NUX01NVV9JRFI1KTsNCj4gKwlpZiAodmFsICE9IHZhbF9yZWYpDQo+ ICsJCWl2cHVfd2Fybih2ZGV2LCAiSURSNSAweCV4ICE9IElEUjVfUkVGIDB4JXhcbiIsIHZh bCwgdmFsX3JlZik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBpdnB1X21tdV9jZHRhYl9hbGxvYyhzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ ICt7DQo+ICsJc3RydWN0IGl2cHVfbW11X2luZm8gKm1tdSA9IHZkZXYtPm1tdTsNCj4gKwlz dHJ1Y3QgaXZwdV9tbXVfY2R0YWIgKmNkdGFiID0gJm1tdS0+Y2R0YWI7DQo+ICsJc2l6ZV90 IHNpemUgPSBJVlBVX01NVV9DRFRBQl9FTlRfQ09VTlQgKiBJVlBVX01NVV9DRFRBQl9FTlRf U0laRTsNCj4gKw0KPiArCWNkdGFiLT5iYXNlID0gZG1hbV9hbGxvY19jb2hlcmVudCh2ZGV2 LT5kcm0uZGV2LCBzaXplLCAmY2R0YWItPmRtYSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFj ZHRhYi0+YmFzZSkNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlpdnB1X2RiZyhN TVUsICJDRFRBQiBhbGxvYzogZG1hPSVwYWQgc2l6ZT0lenVcbiIsICZjZHRhYi0+ZG1hLCBz aXplKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGl2 cHVfbW11X3N0cnRhYl9hbGxvYyhzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ ICsJc3RydWN0IGl2cHVfbW11X2luZm8gKm1tdSA9IHZkZXYtPm1tdTsNCj4gKwlzdHJ1Y3Qg aXZwdV9tbXVfc3RydGFiICpzdHJ0YWIgPSAmbW11LT5zdHJ0YWI7DQo+ICsJc2l6ZV90IHNp emUgPSBJVlBVX01NVV9TVFJUQUJfRU5UX0NPVU5UICogSVZQVV9NTVVfU1RSVEFCX0VOVF9T SVpFOw0KPiArDQo+ICsJc3RydGFiLT5iYXNlID0gZG1hbV9hbGxvY19jb2hlcmVudCh2ZGV2 LT5kcm0uZGV2LCBzaXplLCAmc3RydGFiLT5kbWEsIEdGUF9LRVJORUwpOw0KPiArCWlmICgh c3RydGFiLT5iYXNlKQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXN0cnRhYi0+ YmFzZV9jZmcgPSBJVlBVX01NVV9TVFJUQUJfQ0ZHOw0KPiArCXN0cnRhYi0+ZG1hX3EgPSBJ VlBVX01NVV9TVFJUQUJfQkFTRV9SQTsNCj4gKwlzdHJ0YWItPmRtYV9xIHw9IHN0cnRhYi0+ ZG1hICYgSVZQVV9NTVVfU1RSVEFCX0JBU0VfQUREUl9NQVNLOw0KPiArDQo+ICsJaXZwdV9k YmcoTU1VLCAiU1RSVEFCIGFsbG9jOiBkbWE9JXBhZCBkbWFfcT0lcGFkIHNpemU9JXp1XG4i LA0KPiArCQkgJnN0cnRhYi0+ZG1hLCAmc3RydGFiLT5kbWFfcSwgc2l6ZSk7DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpdnB1X21tdV9jbWRxX2Fs bG9jKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9t bXVfaW5mbyAqbW11ID0gdmRldi0+bW11Ow0KPiArCXN0cnVjdCBpdnB1X21tdV9xdWV1ZSAq cSA9ICZtbXUtPmNtZHE7DQo+ICsNCj4gKwlxLT5iYXNlID0gZG1hbV9hbGxvY19jb2hlcmVu dCh2ZGV2LT5kcm0uZGV2LCBJVlBVX01NVV9DTURRX1NJWkUsICZxLT5kbWEsIEdGUF9LRVJO RUwpOw0KPiArCWlmICghcS0+YmFzZSkNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4g KwlxLT5kbWFfcSA9IElWUFVfTU1VX1FfQkFTRV9SV0E7DQo+ICsJcS0+ZG1hX3EgfD0gcS0+ ZG1hICYgSVZQVV9NTVVfUV9CQVNFX0FERFJfTUFTSzsNCj4gKwlxLT5kbWFfcSB8PSBJVlBV X01NVV9RX0NPVU5UX0xPRzI7DQo+ICsNCj4gKwlpdnB1X2RiZyhNTVUsICJDTURRIGFsbG9j OiBkbWE9JXBhZCBkbWFfcT0lcGFkIHNpemU9JXVcbiIsDQo+ICsJCSAmcS0+ZG1hLCAmcS0+ ZG1hX3EsIElWUFVfTU1VX0NNRFFfU0laRSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBpdnB1X21tdV9ldnRxX2FsbG9jKHN0cnVjdCBpdnB1X2Rl dmljZSAqdmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfaW5mbyAqbW11ID0gdmRl di0+bW11Ow0KPiArCXN0cnVjdCBpdnB1X21tdV9xdWV1ZSAqcSA9ICZtbXUtPmV2dHE7DQo+ ICsNCj4gKwlxLT5iYXNlID0gZG1hbV9hbGxvY19jb2hlcmVudCh2ZGV2LT5kcm0uZGV2LCBJ VlBVX01NVV9FVlRRX1NJWkUsICZxLT5kbWEsIEdGUF9LRVJORUwpOw0KPiArCWlmICghcS0+ YmFzZSkNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlxLT5kbWFfcSA9IElWUFVf TU1VX1FfQkFTRV9SV0E7DQo+ICsJcS0+ZG1hX3EgfD0gcS0+ZG1hICYgSVZQVV9NTVVfUV9C QVNFX0FERFJfTUFTSzsNCj4gKwlxLT5kbWFfcSB8PSBJVlBVX01NVV9RX0NPVU5UX0xPRzI7 DQo+ICsNCj4gKwlpdnB1X2RiZyhNTVUsICJFVlRRIGFsbG9jOiBkbWE9JXBhZCBkbWFfcT0l cGFkIHNpemU9JXVcbiIsDQo+ICsJCSAmcS0+ZG1hLCAmcS0+ZG1hX3EsIElWUFVfTU1VX0VW VFFfU0laRSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBpdnB1X21tdV9zdHJ1Y3RzX2FsbG9jKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikNCj4g K3sNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfY2R0YWJfYWxsb2Mo dmRldik7DQo+ICsJaWYgKHJldCkgew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRv IGFsbG9jYXRlIGNkdGFiOiAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9 DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9zdHJ0YWJfYWxsb2ModmRldik7DQo+ICsJaWYg KHJldCkgew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIHN0cnRh YjogJWRcbiIsIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0 ID0gaXZwdV9tbXVfY21kcV9hbGxvYyh2ZGV2KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWl2 cHVfZXJyKHZkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgY21kcTogJWRcbiIsIHJldCk7DQo+ ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfZXZ0cV9h bGxvYyh2ZGV2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVk IHRvIGFsbG9jYXRlIGV2dHE6ICVkXG4iLCByZXQpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpdnB1X21tdV9yZWdfd3JpdGUoc3RydWN0IGl2 cHVfZGV2aWNlICp2ZGV2LCB1MzIgcmVnLCB1MzIgdmFsKQ0KPiArew0KPiArCXUzMiByZWdf YWNrID0gcmVnICsgNDsgLyogQUNLIHJlZ2lzdGVyIGlzIDRCIGFmdGVyIGJhc2UgcmVnaXN0 ZXIgKi8NCj4gKwl1MzIgdmFsX2FjazsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJUkVHVl9X UjMyKHJlZywgdmFsKTsNCj4gKw0KPiArCXJldCA9IFJFR1ZfUE9MTChyZWdfYWNrLCB2YWxf YWNrLCAodmFsID09IHZhbF9hY2spLCBJVlBVX01NVV9SRUdfVElNRU9VVF9VUyk7DQo+ICsJ aWYgKHJldCkNCj4gKwkJaXZwdV9lcnIodmRldiwgIkZhaWxlZCB0byB3cml0ZSByZWdpc3Rl ciAweCV4XG4iLCByZWcpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludCBpdnB1X21tdV9pcnFzX3NldHVwKHN0cnVjdCBpdnB1X2RldmljZSAqdmRl dikNCj4gK3sNCj4gKwl1MzIgaXJxX2N0cmwgPSBJVlBVX01NVV9JUlFfRVZUUV9FTiB8IElW UFVfTU1VX0lSUV9HRVJST1JfRU47DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IGl2 cHVfbW11X3JlZ193cml0ZSh2ZGV2LCBNVExfVlBVX0hPU1RfTU1VX0lSUV9DVFJMLCAwKTsN Cj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcmV0dXJuIGl2cHVf bW11X3JlZ193cml0ZSh2ZGV2LCBNVExfVlBVX0hPU1RfTU1VX0lSUV9DVFJMLCBpcnFfY3Ry bCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaXZwdV9tbXVfY21kcV93YWl0X2Zvcl9j b25zKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9t bXVfcXVldWUgKmNtZHEgPSAmdmRldi0+bW11LT5jbWRxOw0KPiArDQo+ICsJcmV0dXJuIFJF R1ZfUE9MTChNVExfVlBVX0hPU1RfTU1VX0NNRFFfQ09OUywgY21kcS0+Y29ucywgKGNtZHEt PnByb2QgPT0gY21kcS0+Y29ucyksDQo+ICsJCQkgSVZQVV9NTVVfUVVFVUVfVElNRU9VVF9V Uyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaXZwdV9tbXVfY21kcV9jbWRfd3JpdGUo c3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2LCBjb25zdCBjaGFyICpuYW1lLCB1NjQgZGF0YTAs IHU2NCBkYXRhMSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfcXVldWUgKnEgPSAmdmRl di0+bW11LT5jbWRxOw0KPiArCXU2NCAqcXVldWVfYnVmZmVyID0gcS0+YmFzZTsNCj4gKwlp bnQgaWR4ID0gSVZQVV9NTVVfUV9JRFgocS0+cHJvZCkgKiAoSVZQVV9NTVVfQ01EUV9DTURf U0laRSAvIHNpemVvZigqcXVldWVfYnVmZmVyKSk7DQo+ICsNCj4gKwlpZiAoIUNJUkNfU1BB Q0UoSVZQVV9NTVVfUV9JRFgocS0+cHJvZCksIElWUFVfTU1VX1FfSURYKHEtPmNvbnMpLCBJ VlBVX01NVV9RX0NPVU5UKSkgew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIHdy aXRlIE1NVSBDTUQgJXNcbiIsIG5hbWUpOw0KPiArCQlyZXR1cm4gLUVCVVNZOw0KPiArCX0N Cj4gKw0KPiArCXF1ZXVlX2J1ZmZlcltpZHhdID0gZGF0YTA7DQo+ICsJcXVldWVfYnVmZmVy W2lkeCArIDFdID0gZGF0YTE7DQo+ICsJcS0+cHJvZCA9IChxLT5wcm9kICsgMSkgJiBJVlBV X01NVV9RX1dSQVBfTUFTSzsNCj4gKw0KPiArCWl2cHVfZGJnKE1NVSwgIkNNRCB3cml0ZTog JXMgZGF0YTogMHglbGx4IDB4JWxseFxuIiwgbmFtZSwgZGF0YTAsIGRhdGExKTsNCj4gKw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGl2cHVfbW11X2NtZHFf c3luYyhzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGl2cHVf bW11X3F1ZXVlICpxID0gJnZkZXYtPm1tdS0+Y21kcTsNCj4gKwl1NjQgdmFsOw0KPiArCWlu dCByZXQ7DQo+ICsNCj4gKwl2YWwgPSBGSUVMRF9QUkVQKElWUFVfTU1VX0NNRF9PUENPREUs IENNRF9TWU5DKSB8DQo+ICsJICAgICAgRklFTERfUFJFUChJVlBVX01NVV9DTURfU1lOQ18w X0NTLCAweDIpIHwNCj4gKwkgICAgICBGSUVMRF9QUkVQKElWUFVfTU1VX0NNRF9TWU5DXzBf TVNILCAweDMpIHwNCj4gKwkgICAgICBGSUVMRF9QUkVQKElWUFVfTU1VX0NNRF9TWU5DXzBf TVNJX0FUVFIsIDB4Zik7DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9jbWRxX2NtZF93cml0 ZSh2ZGV2LCAiU1lOQyIsIHZhbCwgMCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJl dDsNCj4gKw0KPiArCWNsZmx1c2hfY2FjaGVfcmFuZ2UocS0+YmFzZSwgSVZQVV9NTVVfQ01E UV9TSVpFKTsNCj4gKwlSRUdWX1dSMzIoTVRMX1ZQVV9IT1NUX01NVV9DTURRX1BST0QsIHEt PnByb2QpOw0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfY21kcV93YWl0X2Zvcl9jb25zKHZk ZXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCWl2cHVfZXJyKHZkZXYsICJUaW1lZCBvdXQgd2Fp dGluZyBmb3IgY29uc3VtZXI6ICVkXG4iLCByZXQpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpdnB1X21tdV9jbWRxX3dyaXRlX2NmZ2lfYWxs KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikNCj4gK3sNCj4gKwl1NjQgZGF0YTAgPSBGSUVM RF9QUkVQKElWUFVfTU1VX0NNRF9PUENPREUsIENNRF9DRkdJX0FMTCk7DQo+ICsJdTY0IGRh dGExID0gRklFTERfUFJFUChJVlBVX01NVV9DTURfQ0ZHSV8xX1JBTkdFLCAweDFmKTsNCj4g Kw0KPiArCXJldHVybiBpdnB1X21tdV9jbWRxX2NtZF93cml0ZSh2ZGV2LCAiQ0ZHSV9BTEwi LCBkYXRhMCwgZGF0YTEpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGl2cHVfbW11X2Nt ZHFfd3JpdGVfdGxiaV9uaF9hc2lkKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgdTE2IHNz aWQpDQo+ICt7DQo+ICsJdTY0IHZhbCA9IEZJRUxEX1BSRVAoSVZQVV9NTVVfQ01EX09QQ09E RSwgQ01EX1RMQklfTkhfQVNJRCkgfA0KPiArCQkgIEZJRUxEX1BSRVAoSVZQVV9NTVVfQ01E X1RMQklfMF9BU0lELCBzc2lkKTsNCj4gKw0KPiArCXJldHVybiBpdnB1X21tdV9jbWRxX2Nt ZF93cml0ZSh2ZGV2LCAiVExCSV9OSF9BU0lEIiwgdmFsLCAwKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludCBpdnB1X21tdV9jbWRxX3dyaXRlX3RsYmlfbnNuaF9hbGwoc3RydWN0IGl2 cHVfZGV2aWNlICp2ZGV2KQ0KPiArew0KPiArCXU2NCB2YWwgPSBGSUVMRF9QUkVQKElWUFVf TU1VX0NNRF9PUENPREUsIENNRF9UTEJJX05TTkhfQUxMKTsNCj4gKw0KPiArCXJldHVybiBp dnB1X21tdV9jbWRxX2NtZF93cml0ZSh2ZGV2LCAiVExCSV9OU05IX0FMTCIsIHZhbCwgMCk7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaXZwdV9tbXVfcmVzZXQoc3RydWN0IGl2cHVf ZGV2aWNlICp2ZGV2KQ0KPiArew0KPiArCXN0cnVjdCBpdnB1X21tdV9pbmZvICptbXUgPSB2 ZGV2LT5tbXU7DQo+ICsJdTMyIHZhbDsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJbWVtc2V0 KG1tdS0+Y21kcS5iYXNlLCAwLCBJVlBVX01NVV9DTURRX1NJWkUpOw0KPiArCWNsZmx1c2hf Y2FjaGVfcmFuZ2UobW11LT5jbWRxLmJhc2UsIElWUFVfTU1VX0NNRFFfU0laRSk7DQo+ICsJ bW11LT5jbWRxLnByb2QgPSAwOw0KPiArCW1tdS0+Y21kcS5jb25zID0gMDsNCj4gKw0KPiAr CW1lbXNldChtbXUtPmV2dHEuYmFzZSwgMCwgSVZQVV9NTVVfRVZUUV9TSVpFKTsNCj4gKwlj bGZsdXNoX2NhY2hlX3JhbmdlKG1tdS0+ZXZ0cS5iYXNlLCBJVlBVX01NVV9FVlRRX1NJWkUp Ow0KPiArCW1tdS0+ZXZ0cS5wcm9kID0gMDsNCj4gKwltbXUtPmV2dHEuY29ucyA9IDA7DQo+ ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9yZWdfd3JpdGUodmRldiwgTVRMX1ZQVV9IT1NUX01N VV9DUjAsIDApOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwl2 YWwgPSBGSUVMRF9QUkVQKElWUFVfTU1VX0NSMV9UQUJMRV9TSCwgSVZQVV9NTVVfU0hfSVNI KSB8DQo+ICsJICAgICAgRklFTERfUFJFUChJVlBVX01NVV9DUjFfVEFCTEVfT0MsIElWUFVf TU1VX0NBQ0hFX1dCKSB8DQo+ICsJICAgICAgRklFTERfUFJFUChJVlBVX01NVV9DUjFfVEFC TEVfSUMsIElWUFVfTU1VX0NBQ0hFX1dCKSB8DQo+ICsJICAgICAgRklFTERfUFJFUChJVlBV X01NVV9DUjFfUVVFVUVfU0gsIElWUFVfTU1VX1NIX0lTSCkgfA0KPiArCSAgICAgIEZJRUxE X1BSRVAoSVZQVV9NTVVfQ1IxX1FVRVVFX09DLCBJVlBVX01NVV9DQUNIRV9XQikgfA0KPiAr CSAgICAgIEZJRUxEX1BSRVAoSVZQVV9NTVVfQ1IxX1FVRVVFX0lDLCBJVlBVX01NVV9DQUNI RV9XQik7DQo+ICsJUkVHVl9XUjMyKE1UTF9WUFVfSE9TVF9NTVVfQ1IxLCB2YWwpOw0KPiAr DQo+ICsJUkVHVl9XUjY0KE1UTF9WUFVfSE9TVF9NTVVfU1RSVEFCX0JBU0UsIG1tdS0+c3Ry dGFiLmRtYV9xKTsNCj4gKwlSRUdWX1dSMzIoTVRMX1ZQVV9IT1NUX01NVV9TVFJUQUJfQkFT RV9DRkcsIG1tdS0+c3RydGFiLmJhc2VfY2ZnKTsNCj4gKw0KPiArCVJFR1ZfV1I2NChNVExf VlBVX0hPU1RfTU1VX0NNRFFfQkFTRSwgbW11LT5jbWRxLmRtYV9xKTsNCj4gKwlSRUdWX1dS MzIoTVRMX1ZQVV9IT1NUX01NVV9DTURRX1BST0QsIDApOw0KPiArCVJFR1ZfV1IzMihNVExf VlBVX0hPU1RfTU1VX0NNRFFfQ09OUywgMCk7DQo+ICsNCj4gKwl2YWwgPSBJVlBVX01NVV9D UjBfQ01EUUVOOw0KPiArCXJldCA9IGl2cHVfbW11X3JlZ193cml0ZSh2ZGV2LCBNVExfVlBV X0hPU1RfTU1VX0NSMCwgdmFsKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0K PiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfY21kcV93cml0ZV9jZmdpX2FsbCh2ZGV2KTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVf Y21kcV93cml0ZV90bGJpX25zbmhfYWxsKHZkZXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJl dHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9jbWRxX3N5bmModmRldik7DQo+ ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCVJFR1ZfV1I2NChNVExf VlBVX0hPU1RfTU1VX0VWVFFfQkFTRSwgbW11LT5ldnRxLmRtYV9xKTsNCj4gKwlSRUdWX1dS MzIoTVRMX1ZQVV9IT1NUX01NVV9FVlRRX1BST0RfU0VDLCAwKTsNCj4gKwlSRUdWX1dSMzIo TVRMX1ZQVV9IT1NUX01NVV9FVlRRX0NPTlNfU0VDLCAwKTsNCj4gKw0KPiArCXZhbCB8PSBJ VlBVX01NVV9DUjBfRVZUUUVOOw0KPiArCXJldCA9IGl2cHVfbW11X3JlZ193cml0ZSh2ZGV2 LCBNVExfVlBVX0hPU1RfTU1VX0NSMCwgdmFsKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1 cm4gcmV0Ow0KPiArDQo+ICsJdmFsIHw9IElWUFVfTU1VX0NSMF9BVFNDSEs7DQo+ICsJcmV0 ID0gaXZwdV9tbXVfcmVnX3dyaXRlKHZkZXYsIE1UTF9WUFVfSE9TVF9NTVVfQ1IwLCB2YWwp Ow0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBpdnB1 X21tdV9pcnFzX3NldHVwKHZkZXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7 DQo+ICsNCj4gKwl2YWwgfD0gSVZQVV9NTVVfQ1IwX1NNTVVFTjsNCj4gKwlyZXR1cm4gaXZw dV9tbXVfcmVnX3dyaXRlKHZkZXYsIE1UTF9WUFVfSE9TVF9NTVVfQ1IwLCB2YWwpOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpdnB1X21tdV9zdHJ0YWJfbGlua19jZChzdHJ1Y3Qg aXZwdV9kZXZpY2UgKnZkZXYsIHUzMiBzaWQpDQo+ICt7DQo+ICsJc3RydWN0IGl2cHVfbW11 X2luZm8gKm1tdSA9IHZkZXYtPm1tdTsNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfc3RydGFiICpz dHJ0YWIgPSAmbW11LT5zdHJ0YWI7DQo+ICsJc3RydWN0IGl2cHVfbW11X2NkdGFiICpjZHRh YiA9ICZtbXUtPmNkdGFiOw0KPiArCXU2NCAqZW50cnkgPSBzdHJ0YWItPmJhc2UgKyAoc2lk ICogSVZQVV9NTVVfU1RSVEFCX0VOVF9TSVpFKTsNCj4gKwl1NjQgc3RyWzJdOw0KPiArDQo+ ICsJc3RyWzBdID0gRklFTERfUFJFUChJVlBVX01NVV9TVEVfMF9DRkcsIElWUFVfTU1VX1NU RV8wX0NGR19TMV9UUkFOUykgfA0KPiArCQkgRklFTERfUFJFUChJVlBVX01NVV9TVEVfMF9T MUNETUFYLCBJVlBVX01NVV9DRFRBQl9FTlRfQ09VTlRfTE9HMikgfA0KPiArCQkgRklFTERf UFJFUChJVlBVX01NVV9TVEVfMF9TMUZNVCwgSVZQVV9NTVVfU1RFXzBfUzFGTVRfTElORUFS KSB8DQo+ICsJCSBJVlBVX01NVV9TVEVfMF9WIHwNCj4gKwkJIChjZHRhYi0+ZG1hICYgSVZQ VV9NTVVfU1RFXzBfUzFDVFhQVFJfTUFTSyk7DQo+ICsNCj4gKwlzdHJbMV0gPSBGSUVMRF9Q UkVQKElWUFVfTU1VX1NURV8xX1MxRFNTLCBJVlBVX01NVV9TVEVfMV9TMURTU19URVJNSU5B VEUpIHwNCj4gKwkJIEZJRUxEX1BSRVAoSVZQVV9NTVVfU1RFXzFfUzFDSVIsIElWUFVfTU1V X1NURV8xX1MxQ19DQUNIRV9OQykgfA0KPiArCQkgRklFTERfUFJFUChJVlBVX01NVV9TVEVf MV9TMUNPUiwgSVZQVV9NTVVfU1RFXzFfUzFDX0NBQ0hFX05DKSB8DQo+ICsJCSBGSUVMRF9Q UkVQKElWUFVfTU1VX1NURV8xX1MxQ1NILCBJVlBVX01NVV9TSF9OU0gpIHwNCj4gKwkJIEZJ RUxEX1BSRVAoSVZQVV9NTVVfU1RFXzFfUFJJVkNGRywgSVZQVV9NTVVfU1RFXzFfUFJJVkNG R19VTlBSSVYpIHwNCj4gKwkJIEZJRUxEX1BSRVAoSVZQVV9NTVVfU1RFXzFfSU5TVENGRywg SVZQVV9NTVVfU1RFXzFfSU5TVENGR19EQVRBKSB8DQo+ICsJCSBGSUVMRF9QUkVQKElWUFVf TU1VX1NURV8xX1NUUlcsIElWUFVfTU1VX1NURV8xX1NUUldfTlNFTDEpIHwNCj4gKwkJIEZJ RUxEX1BSRVAoSVZQVV9NTVVfU1RFXzFfQ09OVCwgSVZQVV9NTVVfU1RSVEFCX0NGR19MT0cy U0laRSkgfA0KPiArCQkgSVZQVV9NTVVfU1RFXzFfTUVWIHwNCj4gKwkJIElWUFVfTU1VX1NU RV8xX1MxU1RBTExEOw0KPiArDQo+ICsJV1JJVEVfT05DRShlbnRyeVsxXSwgc3RyWzFdKTsN Cj4gKwlXUklURV9PTkNFKGVudHJ5WzBdLCBzdHJbMF0pOw0KPiArDQo+ICsJY2xmbHVzaF9j YWNoZV9yYW5nZShlbnRyeSwgSVZQVV9NTVVfU1RSVEFCX0VOVF9TSVpFKTsNCj4gKw0KPiAr CWl2cHVfZGJnKE1NVSwgIlNUUlRBQiB3cml0ZSBlbnRyeSAoU1NJRD0ldSk6IDB4JWxseCwg MHglbGx4XG4iLA0KPiArCQkgc2lkLCBzdHJbMF0sIHN0clsxXSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgaXZwdV9tbXVfc3RydGFiX2luaXQoc3RydWN0IGl2cHVfZGV2aWNlICp2 ZGV2KQ0KPiArew0KPiArCWl2cHVfbW11X3N0cnRhYl9saW5rX2NkKHZkZXYsIElWUFVfTU1V X1NUUkVBTV9JRDApOw0KPiArCWl2cHVfbW11X3N0cnRhYl9saW5rX2NkKHZkZXYsIElWUFVf TU1VX1NUUkVBTV9JRDMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK2lu dCBpdnB1X21tdV9pbnZhbGlkYXRlX3RsYihzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYsIHUx NiBzc2lkKQ0KPiArew0KPiArCXN0cnVjdCBpdnB1X21tdV9pbmZvICptbXUgPSB2ZGV2LT5t bXU7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmIChtdXRleF9sb2NrX2ludGVycnVwdGli bGUoJm1tdS0+bG9jaykpDQo+ICsJCXJldHVybiAtRUlOVFI7DQo+ICsNCj4gKwlpZiAoIW1t dS0+b24pIHsNCj4gKwkJcmV0ID0gMDsNCj4gKwkJZ290byB1bmxvY2s7DQo+ICsJfQ0KPiAr DQo+ICsJcmV0ID0gaXZwdV9tbXVfY21kcV93cml0ZV90bGJpX25oX2FzaWQodmRldiwgc3Np ZCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byB1bmxvY2s7DQo+ICsNCj4gKwlyZXQgPSBp dnB1X21tdV9jbWRxX3N5bmModmRldik7DQo+ICt1bmxvY2s6DQo+ICsJbXV0ZXhfdW5sb2Nr KCZtbXUtPmxvY2spOw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgaXZwdV9tbXVfY2RfYWRkKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgdTMyIHNzaWQs IHU2NCBjZF9kbWEpDQo+ICt7DQo+ICsJc3RydWN0IGl2cHVfbW11X2luZm8gKm1tdSA9IHZk ZXYtPm1tdTsNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfY2R0YWIgKmNkdGFiID0gJm1tdS0+Y2R0 YWI7DQo+ICsJdTY0ICplbnRyeTsNCj4gKwl1NjQgY2RbNF07DQo+ICsJaW50IHJldDsNCj4g Kw0KPiArCWlmIChzc2lkID4gSVZQVV9NTVVfQ0RUQUJfRU5UX0NPVU5UKQ0KPiArCQlyZXR1 cm4gLUVJTlZBTDsNCj4gKw0KPiArCWlmIChtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJm1t dS0+bG9jaykpDQo+ICsJCXJldHVybiAtRUlOVFI7DQo+ICsNCj4gKwllbnRyeSA9IGNkdGFi LT5iYXNlICsgKHNzaWQgKiBJVlBVX01NVV9DRFRBQl9FTlRfU0laRSk7DQo+ICsNCj4gKwlp ZiAoY2RfZG1hICE9IDApIHsNCj4gKwkJY2RbMF0gPSBGSUVMRF9QUkVQKElWUFVfTU1VX0NE XzBfVENSX1QwU1osIDI2KSB8DQo+ICsJCQlGSUVMRF9QUkVQKElWUFVfTU1VX0NEXzBfVENS X1RHMCwgMCkgfA0KPiArCQkJRklFTERfUFJFUChJVlBVX01NVV9DRF8wX1RDUl9JUkdOMCwg MCkgfA0KPiArCQkJRklFTERfUFJFUChJVlBVX01NVV9DRF8wX1RDUl9PUkdOMCwgMCkgfA0K PiArCQkJRklFTERfUFJFUChJVlBVX01NVV9DRF8wX1RDUl9TSDAsIDApIHwNCj4gKwkJCUZJ RUxEX1BSRVAoSVZQVV9NTVVfQ0RfMF9UQ1JfSVBTLCAzKSB8DQo+ICsJCQlGSUVMRF9QUkVQ KElWUFVfTU1VX0NEXzBfQVNJRCwgc3NpZCkgfA0KPiArCQkJSVZQVV9NTVVfQ0RfMF9UQ1Jf RVBEMSB8DQo+ICsJCQlJVlBVX01NVV9DRF8wX0FBNjQgfA0KPiArCQkJSVZQVV9NTVVfQ0Rf MF9SIHwNCj4gKwkJCUlWUFVfTU1VX0NEXzBfQSB8DQo+ICsJCQlJVlBVX01NVV9DRF8wX0FT RVQgfA0KPiArCQkJSVZQVV9NTVVfQ0RfMF9WOw0KPiArCQljZFsxXSA9IGNkX2RtYSAmIElW UFVfTU1VX0NEXzFfVFRCMF9NQVNLOw0KPiArCQljZFsyXSA9IDA7DQo+ICsJCWNkWzNdID0g MHgwMDAwMDAwMDAwMDA3NDQ0Ow0KPiArCX0gZWxzZSB7DQo+ICsJCW1lbXNldChjZCwgMCwg c2l6ZW9mKGNkKSk7DQo+ICsJfQ0KPiArDQo+ICsJV1JJVEVfT05DRShlbnRyeVsxXSwgY2Rb MV0pOw0KPiArCVdSSVRFX09OQ0UoZW50cnlbMl0sIGNkWzJdKTsNCj4gKwlXUklURV9PTkNF KGVudHJ5WzNdLCBjZFszXSk7DQo+ICsJV1JJVEVfT05DRShlbnRyeVswXSwgY2RbMF0pOw0K PiArDQo+ICsJY2xmbHVzaF9jYWNoZV9yYW5nZShlbnRyeSwgSVZQVV9NTVVfQ0RUQUJfRU5U X1NJWkUpOw0KPiArDQo+ICsJaXZwdV9kYmcoTU1VLCAiQ0RUQUIgJXMgZW50cnkgKFNTSUQ9 JXUsIGRtYT0lcGFkKTogMHglbGx4LCAweCVsbHgsIDB4JWxseCwgMHglbGx4XG4iLA0KPiAr CQkgY2RfZG1hID8gIndyaXRlIiA6ICJjbGVhciIsIHNzaWQsICZjZF9kbWEsIGNkWzBdLCBj ZFsxXSwgY2RbMl0sIGNkWzNdKTsNCj4gKw0KPiArCWlmICghbW11LT5vbikgew0KPiArCQly ZXQgPSAwOw0KPiArCQlnb3RvIHVubG9jazsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBpdnB1 X21tdV9jbWRxX3dyaXRlX2NmZ2lfYWxsKHZkZXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCWdv dG8gdW5sb2NrOw0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfY21kcV9zeW5jKHZkZXYpOw0K PiArdW5sb2NrOg0KPiArCW11dGV4X3VubG9jaygmbW11LT5sb2NrKTsNCj4gKwlyZXR1cm4g cmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGl2cHVfbW11X2NkX2FkZF9nYmwoc3Ry dWN0IGl2cHVfZGV2aWNlICp2ZGV2KQ0KPiArew0KPiArCWludCByZXQ7DQo+ICsNCj4gKwly ZXQgPSBpdnB1X21tdV9jZF9hZGQodmRldiwgMCwgdmRldi0+Z2N0eC5wZ3RhYmxlLnBnZF9k bWEpOw0KPiArCWlmIChyZXQpDQo+ICsJCWl2cHVfZXJyKHZkZXYsICJGYWlsZWQgdG8gYWRk IGdsb2JhbCBDRCBlbnRyeTogJWRcbiIsIHJldCk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGl2cHVfbW11X2NkX2FkZF91c2VyKHN0cnVjdCBp dnB1X2RldmljZSAqdmRldiwgdTMyIHNzaWQsIGRtYV9hZGRyX3QgY2RfZG1hKQ0KPiArew0K PiArCWludCByZXQ7DQo+ICsNCj4gKwlpZiAoc3NpZCA9PSAwKSB7DQo+ICsJCWl2cHVfZXJy KHZkZXYsICJJbnZhbGlkIFNTSUQ6ICV1XG4iLCBzc2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfY2RfYWRkKHZkZXYsIHNzaWQs IGNkX2RtYSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJaXZwdV9lcnIodmRldiwgIkZhaWxlZCB0 byBhZGQgQ0QgZW50cnkgU1NJRD0ldTogJWRcbiIsIHNzaWQsIHJldCk7DQo+ICsNCj4gKwly ZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICt2b2lkIGl2cHVfbW11X2Zpbmkoc3RydWN0IGl2 cHVfZGV2aWNlICp2ZGV2KQ0KPiArew0KPiArCW11dGV4X2Rlc3Ryb3koJnZkZXYtPm1tdS0+ bG9jayk7DQo+ICt9DQo+ICsNCj4gK2ludCBpdnB1X21tdV9pbml0KHN0cnVjdCBpdnB1X2Rl dmljZSAqdmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfaW5mbyAqbW11ID0gdmRl di0+bW11Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlpdnB1X2RiZyhNTVUsICJJbml0Li5c biIpOw0KPiArDQo+ICsJbXV0ZXhfaW5pdCgmbW11LT5sb2NrKTsNCj4gKw0KPiArCXJldCA9 IGl2cHVfbW11X2NvbmZpZ19jaGVjayh2ZGV2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlnb3Rv IGVycjsNCj4gKw0KPiArCXJldCA9IGl2cHVfbW11X3N0cnVjdHNfYWxsb2ModmRldik7DQo+ ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnI7DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9z dHJ0YWJfaW5pdCh2ZGV2KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWl2cHVfZXJyKHZkZXYs ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzdHJ0YWI6ICVkXG4iLCByZXQpOw0KPiArCQlnb3Rv IGVycjsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9jZF9hZGRfZ2JsKHZkZXYp Ow0KPiArCWlmIChyZXQpIHsNCj4gKwkJaXZwdV9lcnIodmRldiwgIkZhaWxlZCB0byBpbml0 aWFsaXplIHN0cnRhYjogJWRcbiIsIHJldCk7DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0NCj4g Kw0KPiArCXJldCA9IGl2cHVfbW11X2VuYWJsZSh2ZGV2KTsNCj4gKwlpZiAocmV0KSB7DQo+ ICsJCWl2cHVfZXJyKHZkZXYsICJGYWlsZWQgdG8gcmVzdW1lIE1NVTogJWRcbiIsIHJldCk7 DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0NCj4gKw0KPiArCWl2cHVfZGJnKE1NVSwgIkluaXQg ZG9uZVxuIik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiArZXJyOg0KPiArCWl2cHVf bW11X2ZpbmkodmRldik7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiAraW50IGl2 cHVfbW11X2VuYWJsZShzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJc3Ry dWN0IGl2cHVfbW11X2luZm8gKm1tdSA9IHZkZXYtPm1tdTsNCj4gKwlpbnQgcmV0Ow0KPiAr DQo+ICsJbXV0ZXhfbG9jaygmbW11LT5sb2NrKTsNCj4gKw0KPiArCW1tdS0+b24gPSB0cnVl Ow0KPiArDQo+ICsJcmV0ID0gaXZwdV9tbXVfcmVzZXQodmRldik7DQo+ICsJaWYgKHJldCkg ew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIHJlc2V0IE1NVTogJWRcbiIsIHJl dCk7DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0NCj4gKw0KPiArCXJldCA9IGl2cHVfbW11X2Nt ZHFfd3JpdGVfY2ZnaV9hbGwodmRldik7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnI7 DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9jbWRxX3dyaXRlX3RsYmlfbnNuaF9hbGwodmRl dik7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnI7DQo+ICsNCj4gKwlyZXQgPSBpdnB1 X21tdV9jbWRxX3N5bmModmRldik7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnI7DQo+ ICsNCj4gKwltdXRleF91bmxvY2soJm1tdS0+bG9jayk7DQo+ICsNCj4gKwlyZXR1cm4gMDsN Cj4gK2VycjoNCj4gKwltbXUtPm9uID0gZmFsc2U7DQo+ICsJbXV0ZXhfdW5sb2NrKCZtbXUt PmxvY2spOw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgaXZwdV9tbXVf ZGlzYWJsZShzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGl2 cHVfbW11X2luZm8gKm1tdSA9IHZkZXYtPm1tdTsNCj4gKw0KPiArCW11dGV4X2xvY2soJm1t dS0+bG9jayk7DQo+ICsJbW11LT5vbiA9IGZhbHNlOw0KPiArCW11dGV4X3VubG9jaygmbW11 LT5sb2NrKTsNCj4gK30NCj4gKw0KPiAraXJxcmV0dXJuX3QgaXZwdV9tbXVfaXJxX2V2dHFf aGFuZGxlcihzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGl2 cHVfbW11X3F1ZXVlICpldnRxID0gJnZkZXYtPm1tdS0+ZXZ0cTsNCj4gKwl1NjQgaW5fYWRk ciwgZmV0Y2hfYWRkcjsNCj4gKwl1MzIgKmV2dCwgb3AsIHNzaWQsIHNpZCwgY291bnRlciA9 IDA7DQo+ICsNCj4gKwlpdnB1X2RiZyhJUlEsICJNTVUgZXZlbnQgcXVldWVcbiIpOw0KPiAr DQo+ICsJZG8gew0KPiArCQlldnQgPSAoZXZ0cS0+YmFzZSArIChJVlBVX01NVV9RX0lEWChl dnRxLT5jb25zKSAqIElWUFVfTU1VX0VWVFFfQ01EX1NJWkUpKTsNCj4gKwkJY2xmbHVzaF9j YWNoZV9yYW5nZShldnQsIElWUFVfTU1VX0VWVFFfQ01EX1NJWkUpOw0KPiArDQo+ICsJCW9w ID0gRklFTERfR0VUKElWUFVfTU1VX0VWVF9PUF9NQVNLLCBldnRbMF0pOw0KPiArCQlzc2lk ID0gRklFTERfR0VUKElWUFVfTU1VX0VWVF9TU0lEX01BU0ssIGV2dFswXSk7DQo+ICsJCXNp ZCA9IGV2dFsxXTsNCj4gKwkJaW5fYWRkciA9ICgodTY0KWV2dFs1XSkgPDwgMzIgfCBldnRb NF07DQo+ICsJCWZldGNoX2FkZHIgPSAoKHU2NClldnRbN10pIDw8IDMyIHwgZXZ0WzZdOw0K PiArDQo+ICsJCWl2cHVfZXJyKHZkZXYsICJNTVUgRVZUUTogMHgleCAoJXMpIFNTSUQ6ICVk IFNJRDogJWQsIGVbMl0gJTA4eCwgZVszXSAlMDh4LCBpbiBhZGRyOiAweCVsbHgsIGZldGNo IGFkZHI6IDB4JWxseFxuIiwNCj4gKwkJCSBvcCwgaXZwdV9tbXVfZXZ0X3RvX3N0cihvcCks IHNzaWQsIHNpZCwgZXZ0WzJdLCBldnRbM10sDQo+ICsJCQkgaW5fYWRkciwgZmV0Y2hfYWRk cik7DQo+ICsJCWV2dHEtPmNvbnMgPSAoZXZ0cS0+Y29ucyArIDEpICYgSVZQVV9NTVVfUV9X UkFQX01BU0s7DQo+ICsNCj4gKwkJUkVHVl9XUjMyKE1UTF9WUFVfSE9TVF9NTVVfRVZUUV9D T05TX1NFQywgZXZ0cS0+Y29ucyk7DQo+ICsNCj4gKwkJZXZ0cS0+cHJvZCA9IFJFR1ZfUkQz MihNVExfVlBVX0hPU1RfTU1VX0VWVFFfUFJPRF9TRUMpOw0KPiArDQo+ICsJCWlmIChjb3Vu dGVyKysgPj0gSVZQVV9NTVVfRVZUU19NQVgpDQo+ICsJCQlicmVhazsNCj4gKw0KPiArCX0g d2hpbGUgKGV2dHEtPnByb2QgIT0gZXZ0cS0+Y29ucyk7DQo+ICsNCj4gKwlyZXR1cm4gSVJR X0hBTkRMRUQ7DQo+ICt9DQo+ICsNCj4gK2lycXJldHVybl90IGl2cHVfbW11X2lycV9nZXJy X2hhbmRsZXIoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2KQ0KPiArew0KPiArCXUzMiBnZXJy b3JfdmFsLCBnZXJyb3JuX3ZhbCwgYWN0aXZlOw0KPiArDQo+ICsJaXZwdV9kYmcoSVJRLCAi TU1VIGVycm9yXG4iKTsNCj4gKw0KPiArCWdlcnJvcl92YWwgPSBSRUdWX1JEMzIoTVRMX1ZQ VV9IT1NUX01NVV9HRVJST1IpOw0KPiArCWdlcnJvcm5fdmFsID0gUkVHVl9SRDMyKE1UTF9W UFVfSE9TVF9NTVVfR0VSUk9STik7DQo+ICsNCj4gKwlhY3RpdmUgPSBnZXJyb3JfdmFsIF4g Z2Vycm9ybl92YWw7DQo+ICsJaWYgKCEoYWN0aXZlICYgSVZQVV9NTVVfR0VSUk9SX0VSUl9N QVNLKSkNCj4gKwkJcmV0dXJuIElSUV9OT05FOw0KPiArDQo+ICsJaWYgKFJFR19URVNUX0ZM RChNVExfVlBVX0hPU1RfTU1VX0dFUlJPUiwgU0ZNLCBhY3RpdmUpKQ0KPiArCQlpdnB1X2Vy cl9yYXRlbGltaXRlZCh2ZGV2LCAiTU1VIGhhcyBlbnRlcmVkIHNlcnZpY2UgZmFpbHVyZSBt b2RlXG4iKTsNCj4gKw0KPiArCWlmIChSRUdfVEVTVF9GTEQoTVRMX1ZQVV9IT1NUX01NVV9H RVJST1IsIE1TSV9BQlQsIGFjdGl2ZSkpDQo+ICsJCWl2cHVfd2Fybl9yYXRlbGltaXRlZCh2 ZGV2LCAiTU1VIE1TSSBBQlQgd3JpdGUgYWJvcnRlZFxuIik7DQo+ICsNCj4gKwlpZiAoUkVH X1RFU1RfRkxEKE1UTF9WUFVfSE9TVF9NTVVfR0VSUk9SLCBNU0lfUFJJUV9BQlQsIGFjdGl2 ZSkpDQo+ICsJCWl2cHVfd2Fybl9yYXRlbGltaXRlZCh2ZGV2LCAiTU1VIFBSSVEgTVNJIEFC VCB3cml0ZSBhYm9ydGVkXG4iKTsNCj4gKw0KPiArCWlmIChSRUdfVEVTVF9GTEQoTVRMX1ZQ VV9IT1NUX01NVV9HRVJST1IsIE1TSV9FVlRRX0FCVCwgYWN0aXZlKSkNCj4gKwkJaXZwdV93 YXJuX3JhdGVsaW1pdGVkKHZkZXYsICJNTVUgRVZUUSBNU0kgQUJUIHdyaXRlIGFib3J0ZWRc biIpOw0KPiArDQo+ICsJaWYgKFJFR19URVNUX0ZMRChNVExfVlBVX0hPU1RfTU1VX0dFUlJP UiwgTVNJX0NNRFFfQUJULCBhY3RpdmUpKQ0KPiArCQlpdnB1X3dhcm5fcmF0ZWxpbWl0ZWQo dmRldiwgIk1NVSBDTURRIE1TSSBBQlQgd3JpdGUgYWJvcnRlZFxuIik7DQo+ICsNCj4gKwlp ZiAoUkVHX1RFU1RfRkxEKE1UTF9WUFVfSE9TVF9NTVVfR0VSUk9SLCBQUklRX0FCVCwgYWN0 aXZlKSkNCj4gKwkJaXZwdV9lcnJfcmF0ZWxpbWl0ZWQodmRldiwgIk1NVSBQUklRIHdyaXRl IGFib3J0ZWRcbiIpOw0KPiArDQo+ICsJaWYgKFJFR19URVNUX0ZMRChNVExfVlBVX0hPU1Rf TU1VX0dFUlJPUiwgRVZUUV9BQlQsIGFjdGl2ZSkpDQo+ICsJCWl2cHVfZXJyX3JhdGVsaW1p dGVkKHZkZXYsICJNTVUgRVZUUSB3cml0ZSBhYm9ydGVkXG4iKTsNCj4gKw0KPiArCWlmIChS RUdfVEVTVF9GTEQoTVRMX1ZQVV9IT1NUX01NVV9HRVJST1IsIENNRFEsIGFjdGl2ZSkpDQo+ ICsJCWl2cHVfZXJyX3JhdGVsaW1pdGVkKHZkZXYsICJNTVUgQ01EUSB3cml0ZSBhYm9ydGVk XG4iKTsNCj4gKw0KPiArCVJFR1ZfV1IzMihNVExfVlBVX0hPU1RfTU1VX0dFUlJPUk4sIGdl cnJvcl92YWwpOw0KPiArDQo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiArfQ0KPiArDQo+ ICtpbnQgaXZwdV9tbXVfc2V0X3BndGFibGUoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2LCBp bnQgc3NpZCwgc3RydWN0IGl2cHVfbW11X3BndGFibGUgKnBndGFibGUpDQo+ICt7DQo+ICsJ cmV0dXJuIGl2cHVfbW11X2NkX2FkZF91c2VyKHZkZXYsIHNzaWQsIHBndGFibGUtPnBnZF9k bWEpOw0KPiArfQ0KPiArDQo+ICt2b2lkIGl2cHVfbW11X2NsZWFyX3BndGFibGUoc3RydWN0 IGl2cHVfZGV2aWNlICp2ZGV2LCBpbnQgc3NpZCkNCj4gK3sNCj4gKwlpdnB1X21tdV9jZF9h ZGRfdXNlcih2ZGV2LCBzc2lkLCAwKTsgLyogMCB3aWxsIGNsZWFyIENEIGVudHJ5ICovDQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZwdS9pdnB1X21tdS5oIGIv ZHJpdmVycy9ncHUvZHJtL2l2cHUvaXZwdV9tbXUuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmFmNjcxYzMxMmU2Mw0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdnB1L2l2cHVfbW11LmgNCj4gQEAgLTAsMCAr MSw1MyBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAq Lw0KPiArLyoNCj4gKyAqIENvcHlyaWdodCDCqSAyMDIwLTIwMjIgSW50ZWwgQ29ycG9yYXRp b24NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fSVZQVV9NTVVfSF9fDQo+ICsjZGVmaW5l IF9fSVZQVV9NTVVfSF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9pcnFyZXR1cm4uaD4N Cj4gKw0KPiArc3RydWN0IGl2cHVfZGV2aWNlOw0KPiArDQo+ICtzdHJ1Y3QgaXZwdV9tbXVf Y2R0YWIgew0KPiArCXZvaWQgKmJhc2U7DQo+ICsJZG1hX2FkZHJfdCBkbWE7DQo+ICt9Ow0K PiArDQo+ICtzdHJ1Y3QgaXZwdV9tbXVfc3RydGFiIHsNCj4gKwl2b2lkICpiYXNlOw0KPiAr CWRtYV9hZGRyX3QgZG1hOw0KPiArCXU2NCBkbWFfcTsNCj4gKwl1MzIgYmFzZV9jZmc7DQo+ ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgaXZwdV9tbXVfcXVldWUgew0KPiArCXZvaWQgKmJhc2U7 DQo+ICsJZG1hX2FkZHJfdCBkbWE7DQo+ICsJdTY0IGRtYV9xOw0KPiArCXUzMiBwcm9kOw0K PiArCXUzMiBjb25zOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IGl2cHVfbW11X2luZm8gew0K PiArCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBQcm90ZWN0cyBjZHRhYiwgc3RydGFiLCBjbWRx LCBvbiAqLw0KPiArCXN0cnVjdCBpdnB1X21tdV9jZHRhYiBjZHRhYjsNCj4gKwlzdHJ1Y3Qg aXZwdV9tbXVfc3RydGFiIHN0cnRhYjsNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfcXVldWUgY21k cTsNCj4gKwlzdHJ1Y3QgaXZwdV9tbXVfcXVldWUgZXZ0cTsNCj4gKwlib29sIG9uOw0KPiAr fTsNCj4gKw0KPiAraW50IGl2cHVfbW11X2luaXQoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2 KTsNCj4gK3ZvaWQgaXZwdV9tbXVfZmluaShzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYpOw0K PiArdm9pZCBpdnB1X21tdV9kaXNhYmxlKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldik7DQo+ ICtpbnQgaXZwdV9tbXVfZW5hYmxlKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldik7DQo+ICtp bnQgaXZwdV9tbXVfc2V0X3BndGFibGUoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2LCBpbnQg c3NpZCwgc3RydWN0IGl2cHVfbW11X3BndGFibGUgKnBndGFibGUpOw0KPiArdm9pZCBpdnB1 X21tdV9jbGVhcl9wZ3RhYmxlKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgaW50IHNzaWQp Ow0KPiAraW50IGl2cHVfbW11X2ludmFsaWRhdGVfdGxiKHN0cnVjdCBpdnB1X2RldmljZSAq dmRldiwgdTE2IHNzaWQpOw0KPiArDQo+ICtpcnFyZXR1cm5fdCBpdnB1X21tdV9pcnFfZXZ0 cV9oYW5kbGVyKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldik7DQo+ICtpcnFyZXR1cm5fdCBp dnB1X21tdV9pcnFfZ2Vycl9oYW5kbGVyKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldik7DQo+ ICsNCj4gKyNlbmRpZiAvKiBfX0lWUFVfTU1VX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2l2cHUvaXZwdV9tbXVfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2l2cHUvaXZwdV9tbXVfY29udGV4dC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMzg0OWZmMjAwNDUwDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2l2cHUvaXZwdV9tbXVfY29udGV4dC5jDQo+IEBAIC0wLDAg KzEsNDE5IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 DQo+ICsvKg0KPiArICogQ29weXJpZ2h0IMKpIDIwMjAtMjAyMiBJbnRlbCBDb3Jwb3JhdGlv bg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4NCj4gKw0KPiArI2luY2x1ZGUgIml2cHVfZHJ2Lmgi DQo+ICsjaW5jbHVkZSAiaXZwdV9ody5oIg0KPiArI2luY2x1ZGUgIml2cHVfbW11LmgiDQo+ ICsjaW5jbHVkZSAiaXZwdV9tbXVfY29udGV4dC5oIg0KPiArDQo+ICsjZGVmaW5lIElWUFVf TU1VX1BHRF9JTkRFWF9NQVNLICAgICAgICAgIEdFTk1BU0soMzgsIDMwKQ0KPiArI2RlZmlu ZSBJVlBVX01NVV9QTURfSU5ERVhfTUFTSyAgICAgICAgICBHRU5NQVNLKDI5LCAyMSkNCj4g KyNkZWZpbmUgSVZQVV9NTVVfUFRFX0lOREVYX01BU0sgICAgICAgICAgR0VOTUFTSygyMCwg MTIpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0VOVFJZX0ZMQUdTX01BU0sgICAgICAgIEdFTk1B U0soMTEsIDApDQo+ICsjZGVmaW5lIElWUFVfTU1VX0VOVFJZX0ZMQUdfTkcgICAgICAgICAg IEJJVCgxMSkNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRU5UUllfRkxBR19BRiAgICAgICAgICAg QklUKDEwKQ0KPiArI2RlZmluZSBJVlBVX01NVV9FTlRSWV9GTEFHX1VTRVIgICAgICAgICBC SVQoNikNCj4gKyNkZWZpbmUgSVZQVV9NTVVfRU5UUllfRkxBR19MTENfQ09IRVJFTlQgQklU KDIpDQo+ICsjZGVmaW5lIElWUFVfTU1VX0VOVFJZX0ZMQUdfVFlQRV9QQUdFICAgIEJJVCgx KQ0KPiArI2RlZmluZSBJVlBVX01NVV9FTlRSWV9GTEFHX1ZBTElEICAgICAgICBCSVQoMCkN Cj4gKw0KPiArI2RlZmluZSBJVlBVX01NVV9QQUdFX1NJWkUgICAgU1pfNEsNCj4gKyNkZWZp bmUgSVZQVV9NTVVfUFRFX01BUF9TSVpFIChJVlBVX01NVV9QR1RBQkxFX0VOVFJJRVMgKiBJ VlBVX01NVV9QQUdFX1NJWkUpDQo+ICsjZGVmaW5lIElWUFVfTU1VX1BNRF9NQVBfU0laRSAo SVZQVV9NTVVfUEdUQUJMRV9FTlRSSUVTICogSVZQVV9NTVVfUFRFX01BUF9TSVpFKQ0KPiAr I2RlZmluZSBJVlBVX01NVV9QR1RBQkxFX1NJWkUgKElWUFVfTU1VX1BHVEFCTEVfRU5UUklF UyAqIHNpemVvZih1NjQpKQ0KPiArDQo+ICsjZGVmaW5lIElWUFVfTU1VX0RVTU1ZX0FERFJF U1MgMHhkZWFkYjAwMA0KPiArI2RlZmluZSBJVlBVX01NVV9FTlRSWV9WQUxJRCAgIChJVlBV X01NVV9FTlRSWV9GTEFHX1RZUEVfUEFHRSB8IElWUFVfTU1VX0VOVFJZX0ZMQUdfVkFMSUQp DQo+ICsjZGVmaW5lIElWUFVfTU1VX0VOVFJZX0lOVkFMSUQgKElWUFVfTU1VX0RVTU1ZX0FE RFJFU1MgJiB+SVZQVV9NTVVfRU5UUllfRkxBR1NfTUFTSykNCj4gKyNkZWZpbmUgSVZQVV9N TVVfRU5UUllfTUFQUEVEICAoSVZQVV9NTVVfRU5UUllfRkxBR19BRiB8IElWUFVfTU1VX0VO VFJZX0ZMQUdfVVNFUiB8IFwNCj4gKwkJCQlJVlBVX01NVV9FTlRSWV9GTEFHX05HIHwgSVZQ VV9NTVVfRU5UUllfVkFMSUQpDQo+ICsNCj4gK3N0YXRpYyBpbnQgaXZwdV9tbXVfcGd0YWJs ZV9pbml0KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X3BndGFi bGUgKnBndGFibGUpDQo+ICt7DQo+ICsJZG1hX2FkZHJfdCBwZ2RfZG1hOw0KPiArCXU2NCAq cGdkOw0KPiArDQo+ICsJcGdkID0gZG1hX2FsbG9jX3djKHZkZXYtPmRybS5kZXYsIElWUFVf TU1VX1BHVEFCTEVfU0laRSwgJnBnZF9kbWEsIEdGUF9LRVJORUwpOw0KPiArCWlmICghcGdk KQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXBndGFibGUtPnBnZCA9IHBnZDsN Cj4gKwlwZ3RhYmxlLT5wZ2RfZG1hID0gcGdkX2RtYTsNCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpdnB1X21tdV9wZ3RhYmxlX2ZyZWUoc3RydWN0 IGl2cHVfZGV2aWNlICp2ZGV2LCBzdHJ1Y3QgaXZwdV9tbXVfcGd0YWJsZSAqcGd0YWJsZSkN Cj4gK3sNCj4gKwlpbnQgcGdkX2luZGV4LCBwbWRfaW5kZXg7DQo+ICsNCj4gKwlmb3IgKHBn ZF9pbmRleCA9IDA7IHBnZF9pbmRleCA8IElWUFVfTU1VX1BHVEFCTEVfRU5UUklFUzsgKytw Z2RfaW5kZXgpIHsNCj4gKwkJdTY0ICoqcG1kX2VudHJpZXMgPSBwZ3RhYmxlLT5wZ2RfY3B1 X2VudHJpZXNbcGdkX2luZGV4XTsNCj4gKwkJdTY0ICpwbWQgPSBwZ3RhYmxlLT5wZ2RfZW50 cmllc1twZ2RfaW5kZXhdOw0KPiArDQo+ICsJCWlmICghcG1kX2VudHJpZXMpDQo+ICsJCQlj b250aW51ZTsNCj4gKw0KPiArCQlmb3IgKHBtZF9pbmRleCA9IDA7IHBtZF9pbmRleCA8IElW UFVfTU1VX1BHVEFCTEVfRU5UUklFUzsgKytwbWRfaW5kZXgpIHsNCj4gKwkJCWlmIChwbWRf ZW50cmllc1twbWRfaW5kZXhdKQ0KPiArCQkJCWRtYV9mcmVlX3djKHZkZXYtPmRybS5kZXYs IElWUFVfTU1VX1BHVEFCTEVfU0laRSwNCj4gKwkJCQkJICAgIHBtZF9lbnRyaWVzW3BtZF9p bmRleF0sDQo+ICsJCQkJCSAgICBwbWRbcG1kX2luZGV4XSAmIH5JVlBVX01NVV9FTlRSWV9G TEFHU19NQVNLKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWtmcmVlKHBtZF9lbnRyaWVzKTsNCj4g KwkJZG1hX2ZyZWVfd2ModmRldi0+ZHJtLmRldiwgSVZQVV9NTVVfUEdUQUJMRV9TSVpFLCBw Z3RhYmxlLT5wZ2RfZW50cmllc1twZ2RfaW5kZXhdLA0KPiArCQkJICAgIHBndGFibGUtPnBn ZFtwZ2RfaW5kZXhdICYgfklWUFVfTU1VX0VOVFJZX0ZMQUdTX01BU0spOw0KPiArCX0NCj4g Kw0KPiArCWRtYV9mcmVlX3djKHZkZXYtPmRybS5kZXYsIElWUFVfTU1VX1BHVEFCTEVfU0la RSwgcGd0YWJsZS0+cGdkLA0KPiArCQkgICAgcGd0YWJsZS0+cGdkX2RtYSAmIH5JVlBVX01N VV9FTlRSWV9GTEFHU19NQVNLKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHU2NCoNCj4gK2l2 cHVfbW11X2Vuc3VyZV9wbWQoc3RydWN0IGl2cHVfZGV2aWNlICp2ZGV2LCBzdHJ1Y3QgaXZw dV9tbXVfcGd0YWJsZSAqcGd0YWJsZSwgdTY0IHBnZF9pbmRleCkNCj4gK3sNCj4gKwl1NjQg KipwbWRfZW50cmllczsNCj4gKwlkbWFfYWRkcl90IHBtZF9kbWE7DQo+ICsJdTY0ICpwbWQ7 DQo+ICsNCj4gKwlpZiAocGd0YWJsZS0+cGdkX2VudHJpZXNbcGdkX2luZGV4XSkNCj4gKwkJ cmV0dXJuIHBndGFibGUtPnBnZF9lbnRyaWVzW3BnZF9pbmRleF07DQo+ICsNCj4gKwlwbWQg PSBkbWFfYWxsb2Nfd2ModmRldi0+ZHJtLmRldiwgSVZQVV9NTVVfUEdUQUJMRV9TSVpFLCAm cG1kX2RtYSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwbWQpDQo+ICsJCXJldHVybiBOVUxM Ow0KPiArDQo+ICsJcG1kX2VudHJpZXMgPSBremFsbG9jKElWUFVfTU1VX1BHVEFCTEVfU0la RSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwbWRfZW50cmllcykNCj4gKwkJZ290byBlcnJf ZnJlZV9wZ2Q7DQo+ICsNCj4gKwlwZ3RhYmxlLT5wZ2RfZW50cmllc1twZ2RfaW5kZXhdID0g cG1kOw0KPiArCXBndGFibGUtPnBnZF9jcHVfZW50cmllc1twZ2RfaW5kZXhdID0gcG1kX2Vu dHJpZXM7DQo+ICsJcGd0YWJsZS0+cGdkW3BnZF9pbmRleF0gPSBwbWRfZG1hIHwgSVZQVV9N TVVfRU5UUllfVkFMSUQ7DQo+ICsNCj4gKwlyZXR1cm4gcG1kOw0KPiArDQo+ICtlcnJfZnJl ZV9wZ2Q6DQo+ICsJZG1hX2ZyZWVfd2ModmRldi0+ZHJtLmRldiwgSVZQVV9NTVVfUEdUQUJM RV9TSVpFLCBwbWQsIHBtZF9kbWEpOw0KPiArCXJldHVybiBOVUxMOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgdTY0Kg0KPiAraXZwdV9tbXVfZW5zdXJlX3B0ZShzdHJ1Y3QgaXZwdV9kZXZp Y2UgKnZkZXYsIHN0cnVjdCBpdnB1X21tdV9wZ3RhYmxlICpwZ3RhYmxlLA0KPiArCQkgICAg aW50IHBnZF9pbmRleCwgaW50IHBtZF9pbmRleCkNCj4gK3sNCj4gKwlkbWFfYWRkcl90IHB0 ZV9kbWE7DQo+ICsJdTY0ICpwdGU7DQo+ICsNCj4gKwlpZiAocGd0YWJsZS0+cGdkX2NwdV9l bnRyaWVzW3BnZF9pbmRleF1bcG1kX2luZGV4XSkNCj4gKwkJcmV0dXJuIHBndGFibGUtPnBn ZF9jcHVfZW50cmllc1twZ2RfaW5kZXhdW3BtZF9pbmRleF07DQo+ICsNCj4gKwlwdGUgPSBk bWFfYWxsb2Nfd2ModmRldi0+ZHJtLmRldiwgSVZQVV9NTVVfUEdUQUJMRV9TSVpFLCAmcHRl X2RtYSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwdGUpDQo+ICsJCXJldHVybiBOVUxMOw0K PiArDQo+ICsJcGd0YWJsZS0+cGdkX2NwdV9lbnRyaWVzW3BnZF9pbmRleF1bcG1kX2luZGV4 XSA9IHB0ZTsNCj4gKwlwZ3RhYmxlLT5wZ2RfZW50cmllc1twZ2RfaW5kZXhdW3BtZF9pbmRl eF0gPSBwdGVfZG1hIHwgSVZQVV9NTVVfRU5UUllfVkFMSUQ7DQo+ICsNCj4gKwlyZXR1cm4g cHRlOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtpdnB1X21tdV9jb250ZXh0X21h cF9wYWdlKHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X2NvbnRl eHQgKmN0eCwNCj4gKwkJCSAgdTY0IHZwdV9hZGRyLCBkbWFfYWRkcl90IGRtYV9hZGRyLCBp bnQgcHJvdCkNCj4gK3sNCj4gKwl1NjQgKnB0ZTsNCj4gKwlpbnQgcGdkX2luZGV4ID0gRklF TERfR0VUKElWUFVfTU1VX1BHRF9JTkRFWF9NQVNLLCB2cHVfYWRkcik7DQo+ICsJaW50IHBt ZF9pbmRleCA9IEZJRUxEX0dFVChJVlBVX01NVV9QTURfSU5ERVhfTUFTSywgdnB1X2FkZHIp Ow0KPiArCWludCBwdGVfaW5kZXggPSBGSUVMRF9HRVQoSVZQVV9NTVVfUFRFX0lOREVYX01B U0ssIHZwdV9hZGRyKTsNCj4gKw0KPiArCS8qIEFsbG9jYXRlIFBNRCAtIHNlY29uZCBsZXZl bCBwYWdlIHRhYmxlIGlmIG5lZWRlZCAqLw0KPiArCWlmICghaXZwdV9tbXVfZW5zdXJlX3Bt ZCh2ZGV2LCAmY3R4LT5wZ3RhYmxlLCBwZ2RfaW5kZXgpKQ0KPiArCQlyZXR1cm4gLUVOT01F TTsNCj4gKw0KPiArCS8qIEFsbG9jYXRlIFBURSAtIHRoaXJkIGxldmVsIHBhZ2UgdGFibGUg aWYgbmVlZGVkICovDQo+ICsJcHRlID0gaXZwdV9tbXVfZW5zdXJlX3B0ZSh2ZGV2LCAmY3R4 LT5wZ3RhYmxlLCBwZ2RfaW5kZXgsIHBtZF9pbmRleCk7DQo+ICsJaWYgKCFwdGUpDQo+ICsJ CXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJLyogVXBkYXRlIFBURSAtIHRoaXJkIGxldmVs IHBhZ2UgdGFibGUgd2l0aCBETUEgYWRkcmVzcyAqLw0KPiArCXB0ZVtwdGVfaW5kZXhdID0g ZG1hX2FkZHIgfCBwcm90Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIGl2cHVfbW11X2NvbnRleHRfdW5tYXBfcGFnZShzdHJ1Y3QgaXZwdV9tbXVf Y29udGV4dCAqY3R4LCB1NjQgdnB1X2FkZHIpDQo+ICt7DQo+ICsJaW50IHBnZF9pbmRleCA9 IEZJRUxEX0dFVChJVlBVX01NVV9QR0RfSU5ERVhfTUFTSywgdnB1X2FkZHIpOw0KPiArCWlu dCBwbWRfaW5kZXggPSBGSUVMRF9HRVQoSVZQVV9NTVVfUE1EX0lOREVYX01BU0ssIHZwdV9h ZGRyKTsNCj4gKwlpbnQgcHRlX2luZGV4ID0gRklFTERfR0VUKElWUFVfTU1VX1BURV9JTkRF WF9NQVNLLCB2cHVfYWRkcik7DQo+ICsNCj4gKwkvKiBVcGRhdGUgUFRFIHdpdGggZHVtbXkg cGh5c2ljYWwgYWRkcmVzcyBhbmQgY2xlYXIgZmxhZ3MgKi8NCj4gKwljdHgtPnBndGFibGUu cGdkX2NwdV9lbnRyaWVzW3BnZF9pbmRleF1bcG1kX2luZGV4XVtwdGVfaW5kZXhdID0gSVZQ VV9NTVVfRU5UUllfSU5WQUxJRDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2l2 cHVfbW11X2NvbnRleHRfZmx1c2hfcGFnZV90YWJsZXMoc3RydWN0IGl2cHVfbW11X2NvbnRl eHQgKmN0eCwgdTY0IHZwdV9hZGRyLCBzaXplX3Qgc2l6ZSkNCj4gK3sNCj4gKwl1NjQgZW5k X2FkZHIgPSB2cHVfYWRkciArIHNpemU7DQo+ICsJdTY0ICpwZ2QgPSBjdHgtPnBndGFibGUu cGdkOw0KPiArDQo+ICsJLyogQWxpZ24gdG8gUE1EIGVudHJ5ICgyIE1CKSAqLw0KPiArCXZw dV9hZGRyICY9IH4oSVZQVV9NTVVfUFRFX01BUF9TSVpFIC0gMSk7DQo+ICsNCj4gKwl3aGls ZSAodnB1X2FkZHIgPCBlbmRfYWRkcikgew0KPiArCQlpbnQgcGdkX2luZGV4ID0gRklFTERf R0VUKElWUFVfTU1VX1BHRF9JTkRFWF9NQVNLLCB2cHVfYWRkcik7DQo+ICsJCXU2NCBwbWRf ZW5kID0gKHBnZF9pbmRleCArIDEpICogKHU2NClJVlBVX01NVV9QTURfTUFQX1NJWkU7DQo+ ICsJCXU2NCAqcG1kID0gY3R4LT5wZ3RhYmxlLnBnZF9lbnRyaWVzW3BnZF9pbmRleF07DQo+ ICsNCj4gKwkJd2hpbGUgKHZwdV9hZGRyIDwgZW5kX2FkZHIgJiYgdnB1X2FkZHIgPCBwbWRf ZW5kKSB7DQo+ICsJCQlpbnQgcG1kX2luZGV4ID0gRklFTERfR0VUKElWUFVfTU1VX1BNRF9J TkRFWF9NQVNLLCB2cHVfYWRkcik7DQo+ICsJCQl1NjQgKnB0ZSA9IGN0eC0+cGd0YWJsZS5w Z2RfY3B1X2VudHJpZXNbcGdkX2luZGV4XVtwbWRfaW5kZXhdOw0KPiArDQo+ICsJCQljbGZs dXNoX2NhY2hlX3JhbmdlKHB0ZSwgSVZQVV9NTVVfUEdUQUJMRV9TSVpFKTsNCj4gKwkJCXZw dV9hZGRyICs9IElWUFVfTU1VX1BURV9NQVBfU0laRTsNCj4gKwkJfQ0KPiArCQljbGZsdXNo X2NhY2hlX3JhbmdlKHBtZCwgSVZQVV9NTVVfUEdUQUJMRV9TSVpFKTsNCj4gKwl9DQo+ICsJ Y2xmbHVzaF9jYWNoZV9yYW5nZShwZ2QsIElWUFVfTU1VX1BHVEFCTEVfU0laRSk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2l2cHVfbW11X2NvbnRleHRfbWFwX3BhZ2VzKHN0 cnVjdCBpdnB1X2RldmljZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X2NvbnRleHQgKmN0eCwN Cj4gKwkJCSAgIHU2NCB2cHVfYWRkciwgZG1hX2FkZHJfdCBkbWFfYWRkciwgc2l6ZV90IHNp emUsIGludCBwcm90KQ0KPiArew0KPiArCXdoaWxlIChzaXplKSB7DQo+ICsJCWludCByZXQg PSBpdnB1X21tdV9jb250ZXh0X21hcF9wYWdlKHZkZXYsIGN0eCwgdnB1X2FkZHIsIGRtYV9h ZGRyLCBwcm90KTsNCj4gKw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIHJldDsNCj4g Kw0KPiArCQl2cHVfYWRkciArPSBJVlBVX01NVV9QQUdFX1NJWkU7DQo+ICsJCWRtYV9hZGRy ICs9IElWUFVfTU1VX1BBR0VfU0laRTsNCj4gKwkJc2l6ZSAtPSBJVlBVX01NVV9QQUdFX1NJ WkU7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGl2cHVfbW11X2NvbnRleHRfdW5tYXBfcGFnZXMoc3RydWN0IGl2cHVfbW11X2NvbnRl eHQgKmN0eCwgdTY0IHZwdV9hZGRyLCBzaXplX3Qgc2l6ZSkNCj4gK3sNCj4gKwl3aGlsZSAo c2l6ZSkgew0KPiArCQlpdnB1X21tdV9jb250ZXh0X3VubWFwX3BhZ2UoY3R4LCB2cHVfYWRk cik7DQo+ICsJCXZwdV9hZGRyICs9IElWUFVfTU1VX1BBR0VfU0laRTsNCj4gKwkJc2l6ZSAt PSBJVlBVX01NVV9QQUdFX1NJWkU7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK2l2 cHVfbW11X2NvbnRleHRfbWFwX3NndChzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYsIHN0cnVj dCBpdnB1X21tdV9jb250ZXh0ICpjdHgsDQo+ICsJCQkgdTY0IHZwdV9hZGRyLCBzdHJ1Y3Qg c2dfdGFibGUgKnNndCwgIGJvb2wgbGxjX2NvaGVyZW50KQ0KPiArew0KPiArCXN0cnVjdCBz Y2F0dGVybGlzdCAqc2c7DQo+ICsJaW50IHByb3Q7DQo+ICsJaW50IHJldDsNCj4gKwl1NjQg aTsNCj4gKw0KPiArCWlmICghSVNfQUxJR05FRCh2cHVfYWRkciwgSVZQVV9NTVVfUEFHRV9T SVpFKSkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJLyoNCj4gKwkgKiBWUFUgaXMgb25s eSAzMiBiaXQsIGJ1dCBETUEgZW5naW5lIGlzIDM4IGJpdA0KPiArCSAqIFJhbmdlcyA8IDIg R0IgYXJlIHJlc2VydmVkIGZvciBWUFUgaW50ZXJuYWwgcmVnaXN0ZXJzDQo+ICsJICogTGlt aXQgcmFuZ2UgdG8gOCBHQg0KPiArCSAqLw0KPiArCWlmICh2cHVfYWRkciA8IFNaXzJHIHx8 IHZwdV9hZGRyID4gU1pfOEcpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcHJv dCA9IElWUFVfTU1VX0VOVFJZX01BUFBFRDsNCj4gKwlpZiAobGxjX2NvaGVyZW50KQ0KPiAr CQlwcm90IHw9IElWUFVfTU1VX0VOVFJZX0ZMQUdfTExDX0NPSEVSRU5UOw0KPiArDQo+ICsJ bXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsNCj4gKw0KPiArCWZvcl9lYWNoX3NndGFibGVfZG1h X3NnKHNndCwgc2csIGkpIHsNCj4gKwkJdTY0IGRtYV9hZGRyID0gc2dfZG1hX2FkZHJlc3Mo c2cpIC0gc2ctPm9mZnNldDsNCj4gKwkJc2l6ZV90IHNpemUgPSBzZ19kbWFfbGVuKHNnKSAr IHNnLT5vZmZzZXQ7DQo+ICsNCj4gKwkJcmV0ID0gaXZwdV9tbXVfY29udGV4dF9tYXBfcGFn ZXModmRldiwgY3R4LCB2cHVfYWRkciwgZG1hX2FkZHIsIHNpemUsIHByb3QpOw0KPiArCQlp ZiAocmV0KSB7DQo+ICsJCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIG1hcCBjb250ZXh0 IHBhZ2VzXG4iKTsNCj4gKwkJCW11dGV4X3VubG9jaygmY3R4LT5sb2NrKTsNCj4gKwkJCXJl dHVybiByZXQ7DQo+ICsJCX0NCj4gKwkJaXZwdV9tbXVfY29udGV4dF9mbHVzaF9wYWdlX3Rh YmxlcyhjdHgsIHZwdV9hZGRyLCBzaXplKTsNCj4gKwkJdnB1X2FkZHIgKz0gc2l6ZTsNCj4g Kwl9DQo+ICsNCj4gKwltdXRleF91bmxvY2soJmN0eC0+bG9jayk7DQo+ICsNCj4gKwlyZXQg PSBpdnB1X21tdV9pbnZhbGlkYXRlX3RsYih2ZGV2LCBjdHgtPmlkKTsNCj4gKwlpZiAocmV0 KQ0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIGludmFsaWRhdGUgVExCIGZvciBj dHggJXU6ICVkXG4iLCBjdHgtPmlkLCByZXQpOw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ ICsNCj4gK3ZvaWQNCj4gK2l2cHVfbW11X2NvbnRleHRfdW5tYXBfc2d0KHN0cnVjdCBpdnB1 X2RldmljZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X2NvbnRleHQgKmN0eCwNCj4gKwkJCSAg IHU2NCB2cHVfYWRkciwgc3RydWN0IHNnX3RhYmxlICpzZ3QpDQo+ICt7DQo+ICsJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsNCj4gKwlpbnQgcmV0Ow0KPiArCXU2NCBpOw0KPiArDQo+ICsJ aWYgKCFJU19BTElHTkVEKHZwdV9hZGRyLCBJVlBVX01NVV9QQUdFX1NJWkUpKQ0KPiArCQlp dnB1X3dhcm4odmRldiwgIlVuYWxpZ25lZCB2cHVfYWRkcjogMHglbGx4XG4iLCB2cHVfYWRk cik7DQo+ICsNCj4gKwltdXRleF9sb2NrKCZjdHgtPmxvY2spOw0KPiArDQo+ICsJZm9yX2Vh Y2hfc2d0YWJsZV9kbWFfc2coc2d0LCBzZywgaSkgew0KPiArCQlzaXplX3Qgc2l6ZSA9IHNn X2RtYV9sZW4oc2cpICsgc2ctPm9mZnNldDsNCj4gKw0KPiArCQlpdnB1X21tdV9jb250ZXh0 X3VubWFwX3BhZ2VzKGN0eCwgdnB1X2FkZHIsIHNpemUpOw0KPiArCQlpdnB1X21tdV9jb250 ZXh0X2ZsdXNoX3BhZ2VfdGFibGVzKGN0eCwgdnB1X2FkZHIsIHNpemUpOw0KPiArCQl2cHVf YWRkciArPSBzaXplOw0KPiArCX0NCj4gKw0KPiArCW11dGV4X3VubG9jaygmY3R4LT5sb2Nr KTsNCj4gKw0KPiArCXJldCA9IGl2cHVfbW11X2ludmFsaWRhdGVfdGxiKHZkZXYsIGN0eC0+ aWQpOw0KPiArCWlmIChyZXQpDQo+ICsJCWl2cHVfd2Fybih2ZGV2LCAiRmFpbGVkIHRvIGlu dmFsaWRhdGUgVExCIGZvciBjdHggJXU6ICVkXG4iLCBjdHgtPmlkLCByZXQpOw0KPiArfQ0K PiArDQo+ICtpbnQNCj4gK2l2cHVfbW11X2NvbnRleHRfaW5zZXJ0X25vZGVfbG9ja2VkKHN0 cnVjdCBpdnB1X21tdV9jb250ZXh0ICpjdHgsDQo+ICsJCQkJICAgIGNvbnN0IHN0cnVjdCBp dnB1X2FkZHJfcmFuZ2UgKnJhbmdlLA0KPiArCQkJCSAgICB1NjQgc2l6ZSwgc3RydWN0IGRy bV9tbV9ub2RlICpub2RlKQ0KPiArew0KPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+ bG9jayk7DQo+ICsNCj4gKwlyZXR1cm4gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlKCZj dHgtPm1tLCBub2RlLCBzaXplLCBJVlBVX01NVV9QQUdFX1NJWkUsDQo+ICsJCQkJCSAgMCwg cmFuZ2UtPnN0YXJ0LCByYW5nZS0+ZW5kLCBEUk1fTU1fSU5TRVJUX0JFU1QpOw0KPiArfQ0K PiArDQo+ICt2b2lkDQo+ICtpdnB1X21tdV9jb250ZXh0X3JlbW92ZV9ub2RlX2xvY2tlZChz dHJ1Y3QgaXZwdV9tbXVfY29udGV4dCAqY3R4LCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUp DQo+ICt7DQo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT5sb2NrKTsNCj4gKw0KPiAr CWRybV9tbV9yZW1vdmVfbm9kZShub2RlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0K PiAraXZwdV9tbXVfY29udGV4dF9pbml0KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgc3Ry dWN0IGl2cHVfbW11X2NvbnRleHQgKmN0eCwgdTMyIGNvbnRleHRfaWQpDQo+ICt7DQo+ICsJ dTY0IHN0YXJ0LCBlbmQ7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCW11dGV4X2luaXQoJmN0 eC0+bG9jayk7DQo+ICsJSU5JVF9MSVNUX0hFQUQoJmN0eC0+Ym9fbGlzdCk7DQo+ICsNCj4g KwlyZXQgPSBpdnB1X21tdV9wZ3RhYmxlX2luaXQodmRldiwgJmN0eC0+cGd0YWJsZSk7DQo+ ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCWlmICghY29udGV4dF9p ZCkgew0KPiArCQlzdGFydCA9IHZkZXYtPmh3LT5yYW5nZXMuZ2xvYmFsX2xvdy5zdGFydDsN Cj4gKwkJZW5kID0gdmRldi0+aHctPnJhbmdlcy5nbG9iYWxfaGlnaC5lbmQ7DQo+ICsJfSBl bHNlIHsNCj4gKwkJc3RhcnQgPSB2ZGV2LT5ody0+cmFuZ2VzLnVzZXJfbG93LnN0YXJ0Ow0K PiArCQllbmQgPSB2ZGV2LT5ody0+cmFuZ2VzLnVzZXJfaGlnaC5lbmQ7DQo+ICsJfQ0KPiAr DQo+ICsJZHJtX21tX2luaXQoJmN0eC0+bW0sIHN0YXJ0LCBlbmQgLSBzdGFydCk7DQo+ICsJ Y3R4LT5pZCA9IGNvbnRleHRfaWQ7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0K PiArc3RhdGljIHZvaWQgaXZwdV9tbXVfY29udGV4dF9maW5pKHN0cnVjdCBpdnB1X2Rldmlj ZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X2NvbnRleHQgKmN0eCkNCj4gK3sNCj4gKwlXQVJO X09OKCFjdHgtPnBndGFibGUucGdkKTsNCj4gKw0KPiArCW11dGV4X2Rlc3Ryb3koJmN0eC0+ bG9jayk7DQo+ICsJaXZwdV9tbXVfcGd0YWJsZV9mcmVlKHZkZXYsICZjdHgtPnBndGFibGUp Ow0KPiArCWRybV9tbV90YWtlZG93bigmY3R4LT5tbSk7DQo+ICt9DQo+ICsNCj4gK2ludCBp dnB1X21tdV9nbG9iYWxfY29udGV4dF9pbml0KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldikN Cj4gK3sNCj4gKwlyZXR1cm4gaXZwdV9tbXVfY29udGV4dF9pbml0KHZkZXYsICZ2ZGV2LT5n Y3R4LCBJVlBVX0dMT0JBTF9DT05URVhUX01NVV9TU0lEKTsNCj4gK30NCj4gKw0KPiArdm9p ZCBpdnB1X21tdV9nbG9iYWxfY29udGV4dF9maW5pKHN0cnVjdCBpdnB1X2RldmljZSAqdmRl dikNCj4gK3sNCj4gKwlyZXR1cm4gaXZwdV9tbXVfY29udGV4dF9maW5pKHZkZXYsICZ2ZGV2 LT5nY3R4KTsNCj4gK30NCj4gKw0KPiAraW50IGl2cHVfbW11X3VzZXJfY29udGV4dF9pbml0 KHN0cnVjdCBpdnB1X2ZpbGVfcHJpdiAqZmlsZV9wcml2KQ0KPiArew0KPiArCXN0cnVjdCBp dnB1X2RldmljZSAqdmRldiA9IGZpbGVfcHJpdi0+dmRldjsNCj4gKwl1MzIgY29udGV4dF9p ZDsNCj4gKwl2b2lkICpvbGQ7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCW11dGV4X2xvY2so JmZpbGVfcHJpdi0+bG9jayk7DQo+ICsNCj4gKwlpZiAoZmlsZV9wcml2LT5jdHguaWQpDQo+ ICsJCWdvdG8gdW5sb2NrOw0KPiArDQo+ICsJcmV0ID0geGFfYWxsb2MoJnZkZXYtPmNvbnRl eHRfeGEsICZjb250ZXh0X2lkLCBOVUxMLCB2ZGV2LT5jb250ZXh0X3hhX2xpbWl0LCBHRlBf S0VSTkVMKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWl2cHVfZXJyKHZkZXYsICJGYWlsZWQg dG8gYWxsb2NhdGUgY29udGV4dF9pZFxuIik7DQo+ICsJCWdvdG8gZXJyX3VubG9jazsNCj4g Kwl9DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9jb250ZXh0X2luaXQodmRldiwgJmZpbGVf cHJpdi0+Y3R4LCBjb250ZXh0X2lkKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWl2cHVfZXJy KHZkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb250ZXh0XG4iKTsNCj4gKwkJZ290byBl cnJfZXJhc2VfY29udGV4dF9pZDsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBpdnB1X21tdV9z ZXRfcGd0YWJsZSh2ZGV2LCBjb250ZXh0X2lkLCAmZmlsZV9wcml2LT5jdHgucGd0YWJsZSk7 DQo+ICsJaWYgKHJldCkgew0KPiArCQlpdnB1X2Vycih2ZGV2LCAiRmFpbGVkIHRvIHNldCBw YWdlIHRhYmxlXG4iKTsNCj4gKwkJZ290byBlcnJfY29udGV4dF9maW5pOw0KPiArCX0NCj4g Kw0KPiArCW9sZCA9IHhhX3N0b3JlKCZ2ZGV2LT5jb250ZXh0X3hhLCBjb250ZXh0X2lkLCBm aWxlX3ByaXYsIEdGUF9LRVJORUwpOw0KPiArCWlmICh4YV9pc19lcnIob2xkKSkgew0KPiAr CQlyZXQgPSB4YV9lcnIob2xkKTsNCj4gKwkJaXZwdV9lcnIodmRldiwgIkZhaWxlZCB0byBz dG9yZSBjb250ZXh0ICV1OiAlZFxuIiwgY29udGV4dF9pZCwgcmV0KTsNCj4gKwkJZ290byBl cnJfY2xlYXJfcGd0YWJsZTsNCj4gKwl9DQo+ICsNCj4gKwlpdnB1X2RiZyhGSUxFLCAiZmls ZV9wcml2IGNvbnRleHQgaW5pdDogaWQgJXUgcHJvY2VzcyAlcyBwaWQgJWRcbiIsDQo+ICsJ CSBjb250ZXh0X2lkLCBjdXJyZW50LT5jb21tLCB0YXNrX3BpZF9ucihjdXJyZW50KSk7DQo+ ICsNCj4gK3VubG9jazoNCj4gKwltdXRleF91bmxvY2soJmZpbGVfcHJpdi0+bG9jayk7DQo+ ICsJcmV0dXJuIDA7DQo+ICsNCj4gK2Vycl9jbGVhcl9wZ3RhYmxlOg0KPiArCWl2cHVfbW11 X2NsZWFyX3BndGFibGUodmRldiwgY29udGV4dF9pZCk7DQo+ICtlcnJfY29udGV4dF9maW5p Og0KPiArCWl2cHVfbW11X2NvbnRleHRfZmluaSh2ZGV2LCAmZmlsZV9wcml2LT5jdHgpOw0K PiArZXJyX2VyYXNlX2NvbnRleHRfaWQ6DQo+ICsJeGFfZXJhc2UoJnZkZXYtPmNvbnRleHRf eGEsIGNvbnRleHRfaWQpOw0KPiArZXJyX3VubG9jazoNCj4gKwltdXRleF91bmxvY2soJmZp bGVfcHJpdi0+bG9jayk7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArdm9pZCBp dnB1X21tdV91c2VyX2NvbnRleHRfZmluaShzdHJ1Y3QgaXZwdV9maWxlX3ByaXYgKmZpbGVf cHJpdikNCj4gK3sNCj4gKwlzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYgPSBmaWxlX3ByaXYt PnZkZXY7DQo+ICsNCj4gKwlXQVJOX09OKCFmaWxlX3ByaXYtPmN0eC5pZCk7DQo+ICsNCj4g Kwl4YV9zdG9yZSgmdmRldi0+Y29udGV4dF94YSwgZmlsZV9wcml2LT5jdHguaWQsICBOVUxM LCBHRlBfS0VSTkVMKTsNCj4gKwlpdnB1X21tdV9jbGVhcl9wZ3RhYmxlKHZkZXYsIGZpbGVf cHJpdi0+Y3R4LmlkKTsNCj4gKwlpdnB1X21tdV9jb250ZXh0X2ZpbmkodmRldiwgJmZpbGVf cHJpdi0+Y3R4KTsNCj4gKwl4YV9lcmFzZSgmdmRldi0+Y29udGV4dF94YSwgZmlsZV9wcml2 LT5jdHguaWQpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2cHUv aXZwdV9tbXVfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2l2cHUvaXZwdV9tbXVfY29u dGV4dC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4u YWYxNjNkZmIwZTA0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2l2cHUvaXZwdV9tbXVfY29udGV4dC5oDQo+IEBAIC0wLDAgKzEsNDkgQEANCj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4gKy8qDQo+ICsgKiBD b3B5cmlnaHQgwqkgMjAyMC0yMDIyIEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0K PiArI2lmbmRlZiBfX0lWUFVfTU1VX0NPTlRFWFRfSF9fDQo+ICsjZGVmaW5lIF9fSVZQVV9N TVVfQ09OVEVYVF9IX18NCj4gKw0KPiArI2luY2x1ZGUgPGRybS9kcm1fbW0uaD4NCj4gKw0K PiArc3RydWN0IGl2cHVfZGV2aWNlOw0KPiArc3RydWN0IGl2cHVfZmlsZV9wcml2Ow0KPiAr c3RydWN0IGl2cHVfYWRkcl9yYW5nZTsNCj4gKw0KPiArI2RlZmluZSBJVlBVX01NVV9QR1RB QkxFX0VOVFJJRVMJNTEyDQo+ICsNCj4gK3N0cnVjdCBpdnB1X21tdV9wZ3RhYmxlIHsNCj4g Kwl1NjQgICAgICAgICAgICAgKipwZ2RfY3B1X2VudHJpZXNbSVZQVV9NTVVfUEdUQUJMRV9F TlRSSUVTXTsNCj4gKwl1NjQJCSpwZ2RfZW50cmllc1tJVlBVX01NVV9QR1RBQkxFX0VOVFJJ RVNdOw0KPiArCXU2NAkJKnBnZDsNCj4gKwlkbWFfYWRkcl90CXBnZF9kbWE7DQo+ICt9Ow0K PiArDQo+ICtzdHJ1Y3QgaXZwdV9tbXVfY29udGV4dCB7DQo+ICsJc3RydWN0IG11dGV4IGxv Y2s7IC8qIHByb3RlY3RzOiBtbSwgcGd0YWJsZSwgYm9fbGlzdCAqLw0KPiArCXN0cnVjdCBk cm1fbW0gbW07DQo+ICsJc3RydWN0IGl2cHVfbW11X3BndGFibGUgcGd0YWJsZTsNCj4gKwlz dHJ1Y3QgbGlzdF9oZWFkIGJvX2xpc3Q7DQo+ICsJdTMyIGlkOw0KPiArfTsNCj4gKw0KPiAr aW50IGl2cHVfbW11X2dsb2JhbF9jb250ZXh0X2luaXQoc3RydWN0IGl2cHVfZGV2aWNlICp2 ZGV2KTsNCj4gK3ZvaWQgaXZwdV9tbXVfZ2xvYmFsX2NvbnRleHRfZmluaShzdHJ1Y3QgaXZw dV9kZXZpY2UgKnZkZXYpOw0KPiArDQo+ICtpbnQgaXZwdV9tbXVfdXNlcl9jb250ZXh0X2lu aXQoc3RydWN0IGl2cHVfZmlsZV9wcml2ICpmaWxlX3ByaXYpOw0KPiArdm9pZCBpdnB1X21t dV91c2VyX2NvbnRleHRfZmluaShzdHJ1Y3QgaXZwdV9maWxlX3ByaXYgKmZpbGVfcHJpdik7 DQo+ICsNCj4gK2ludCBpdnB1X21tdV9jb250ZXh0X2luc2VydF9ub2RlX2xvY2tlZChzdHJ1 Y3QgaXZwdV9tbXVfY29udGV4dCAqY3R4LA0KPiArCQkJCQljb25zdCBzdHJ1Y3QgaXZwdV9h ZGRyX3JhbmdlICpyYW5nZSwNCj4gKwkJCQkgICAgICAgdTY0IHNpemUsIHN0cnVjdCBkcm1f bW1fbm9kZSAqbm9kZSk7DQo+ICt2b2lkIGl2cHVfbW11X2NvbnRleHRfcmVtb3ZlX25vZGVf bG9ja2VkKHN0cnVjdCBpdnB1X21tdV9jb250ZXh0ICpjdHgsDQo+ICsJCQkJCSBzdHJ1Y3Qg ZHJtX21tX25vZGUgKm5vZGUpOw0KPiArDQo+ICtpbnQgaXZwdV9tbXVfY29udGV4dF9tYXBf c2d0KHN0cnVjdCBpdnB1X2RldmljZSAqdmRldiwgc3RydWN0IGl2cHVfbW11X2NvbnRleHQg KmN0eCwNCj4gKwkJCSAgICAgdTY0IHZwdV9hZGRyLCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwg Ym9vbCBsbGNfY29oZXJlbnQpOw0KPiArdm9pZCBpdnB1X21tdV9jb250ZXh0X3VubWFwX3Nn dChzdHJ1Y3QgaXZwdV9kZXZpY2UgKnZkZXYsIHN0cnVjdCBpdnB1X21tdV9jb250ZXh0ICpj dHgsDQo+ICsJCQkJdTY0IHZwdV9hZGRyLCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7DQo+ICsN Cj4gKyNlbmRpZiAvKiBfX0lWUFVfTU1VX0NPTlRFWFRfSF9fICovDQo+IGRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvZHJtL2l2cHVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2l2cHVf ZHJtLmgNCj4gaW5kZXggN2E3ZGJlMmY1MjFiLi5jYjQ4ZDYxMTg0MTIgMTAwNjQ0DQo+IC0t LSBhL2luY2x1ZGUvdWFwaS9kcm0vaXZwdV9kcm0uaA0KPiArKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2l2cHVfZHJtLmgNCj4gQEAgLTM4LDYgKzM4LDcgQEAgZXh0ZXJuICJDIiB7DQo+ICAg I2RlZmluZSBEUk1fSVZQVV9QQVJBTV9OVU1fQ09OVEVYVFMJICAgIDQNCj4gICAjZGVmaW5l IERSTV9JVlBVX1BBUkFNX0NPTlRFWFRfQkFTRV9BRERSRVNTIDUNCj4gICAjZGVmaW5lIERS TV9JVlBVX1BBUkFNX0NPTlRFWFRfUFJJT1JJVFkJICAgIDYNCj4gKyNkZWZpbmUgRFJNX0lW UFVfUEFSQU1fQ09OVEVYVF9JRAkgICAgNw0KPiAgIA0KPiAgICNkZWZpbmUgRFJNX0lWUFVf UExBVEZPUk1fVFlQRV9TSUxJQ09OCSAgICAwDQo+ICAgDQo+IEBAIC03OCw2ICs3OSw5IEBA IHN0cnVjdCBkcm1faXZwdV9wYXJhbSB7DQo+ICAgCSAqIFZhbHVlIG9mIGN1cnJlbnQgY29u dGV4dCBzY2hlZHVsaW5nIHByaW9yaXR5IChyZWFkLXdyaXRlKS4NCj4gICAJICogU2VlIERS TV9JVlBVX0NPTlRFWFRfUFJJT1JJVFlfKiBmb3IgcG9zc2libGUgdmFsdWVzLg0KPiAgIAkg Kg0KPiArCSAqICVEUk1fSVZQVV9QQVJBTV9DT05URVhUX0lEOg0KPiArCSAqIEN1cnJlbnQg Y29udGV4dCBJRCwgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwIChyZWFkLW9ubHkpDQo+ICsJICoN Cj4gICAJICovDQo+ICAgCV9fdTMyIHBhcmFtOw0KPiAgIA0KDQotLSANClRob21hcyBaaW1t ZXJtYW5uDQpHcmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0 aW9ucyBHZXJtYW55IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2Vy bWFueQ0KKEhSQiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2 byBUb3Rldg0K --------------02k8CJF4Udx0Fj0KVlds5iz7-- --------------B7LiFqnpq2v1CBTLulqw7h0Y Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmNg4BkFAwAAAAAACgkQlh/E3EQov+BN IRAAg9YVehPd5tR8igAPmpyYg8OqZnyJtXlntaWnGcPTpfpvYRVEtcGTz8K9lfFjdQX4rGl13N3f NPiVposr/utaBGFyS7uU5XvYW7qLaKQEwxC3MYJwWzd6KGCFgJLJdJK0oDFNpYKVVOPUqAlduaIP NwcHEnqEl926CzM6UlmwKOgfJ4gQU8Lq1Nd5TeAlLWJbueTt2ae/30wEysOTDSjPZUyxd/VHauCs /cGShPgJsSxvVc1Cz+Kkhc5LKSaIUbk2N4DUXqECb0Jojrk5cZ1dApv1/1vfWHHWoGXNBYv0JLhd kOGSxidTD0v1MCiOx2xps3ai0LCHfEK9iGXMogxxBsufbAk82ccO27+IHcA2Y+58+Uq4Wy169w7l g/R+PouMEVdRYQ+29IeW9TZSh1LYj4CGidgr8TNGMdhUGswjwYaV0TiRf2+Hvwjha+Zso8Qy6pba WoOZv2R+VSRTDYkyDd4PPgqbtril1suEdVyAEylLqdz6EIokA7zHVyJJhqsgrfNJkrTbvh4RDSAE tjhtqp9qxZJ+Z2jSpICCJi1FQMts1SIfJ+NDAdG0mQ/0lDZoubAqil2FcZzLohofcGBnbtRqF9If ld9m5Dkp6ydfRqBX5d36izPmZH0CUE+JHtnRftGlAuZtYKwt9rmMpI7dpks/qtjC3Vu0vVgY/L5X Uvs= =d1Ko -----END PGP SIGNATURE----- --------------B7LiFqnpq2v1CBTLulqw7h0Y--