Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 44EECC433FE for ; Wed, 12 Jan 2022 15:04:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347999AbiALPEf (ORCPT ); Wed, 12 Jan 2022 10:04:35 -0500 Received: from smtp-out2.suse.de ([195.135.220.29]:60918 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347893AbiALPEd (ORCPT ); Wed, 12 Jan 2022 10:04:33 -0500 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 E79B91F39B; Wed, 12 Jan 2022 15:04:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1641999868; 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=h+BnaltZ2XkzDBjaU0qH92ewsD7+QEvtuoiIyrEWzpk=; b=a7VwJmXFKnJYKJsBAHY03VKx6ilhVgOl13S7ws9ohogdHn27rnBscfnzaUjq0kKg0HM3EH /L+omcznYUZHcibz3Ioxxb/geNNGHhaSvbBb8Fq38sfeIXXB+lYoF431rvaiNqPiJir6P6 Pr7qUA/fVkSxcp9h9uGrBEEoJx/Diio= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1641999868; 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=h+BnaltZ2XkzDBjaU0qH92ewsD7+QEvtuoiIyrEWzpk=; b=+VLByUvBs4jCyQ3CdQJcZOnkti3x1z3qtxyLO+wwHCyc2tA66cG0i3QR6MaYHPOKExhQf1 xONobKvI1hNOX9AA== 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 A5F0313B70; Wed, 12 Jan 2022 15:04:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id Rr5lJ/zt3mHyFAAAMHmgww (envelope-from ); Wed, 12 Jan 2022 15:04:28 +0000 Message-ID: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> Date: Wed, 12 Jan 2022 16:04:28 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH v3] drm/ast: Create the driver for ASPEED proprietory Display-Port Content-Language: en-US To: KuoHsiang Chou , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: kernel test robot , hungju_huang@aspeedtech.com, airlied@linux.ie, brandon_chen@aspeedtech.com, tommy_huang@aspeedtech.com, airlied@redhat.com, arc_sung@aspeedtech.com, luke_chen@aspeedtech.com References: <202201020329.lEcno4eh-lkp@intel.com> <20220104085002.17211-1-kuohsiang_chou@aspeedtech.com> From: Thomas Zimmermann In-Reply-To: <20220104085002.17211-1-kuohsiang_chou@aspeedtech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------Z7WIt4j3mRoA2EeO3C0E6Ufz" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------Z7WIt4j3mRoA2EeO3C0E6Ufz Content-Type: multipart/mixed; boundary="------------ChmUMFzFUw8zx8ID6B4CDzzi"; protected-headers="v1" From: Thomas Zimmermann To: KuoHsiang Chou , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: kernel test robot , hungju_huang@aspeedtech.com, airlied@linux.ie, brandon_chen@aspeedtech.com, tommy_huang@aspeedtech.com, airlied@redhat.com, arc_sung@aspeedtech.com, luke_chen@aspeedtech.com Message-ID: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> Subject: Re: [PATCH v3] drm/ast: Create the driver for ASPEED proprietory Display-Port References: <202201020329.lEcno4eh-lkp@intel.com> <20220104085002.17211-1-kuohsiang_chou@aspeedtech.com> In-Reply-To: <20220104085002.17211-1-kuohsiang_chou@aspeedtech.com> --------------ChmUMFzFUw8zx8ID6B4CDzzi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDQuMDEuMjIgdW0gMDk6NTAgc2NocmllYiBLdW9Ic2lhbmcgQ2hvdToNCj4g VjE6DQo+IDEuIFRoZSBNQ1UgRlcgY29udHJvbGluZyBBU1BFRUQgRFAgaXMgbG9hZGVkIGJ5 IEJNQyBib290IGxvYWRlci4NCj4gMi4gRHJpdmVyIHN0YXJ0cyBhZnRlciBDUlszOjFdID09 IDExMWIgdGhhdCBpbmRpY2F0ZXMgVHggaXMgQVNURFAsDQo+ICAgICBhbmQgQ1JEMVs1XSBo YXMgYmVlbiBhc3NlcnRlZCBieSBCTVZDIGJvb3QgbG9hZGVyLg0KPiAzLiBFRElEIGlzIHBy aW9yaXRpemVkIGJ5IERQIG1vbml0b3IuDQo+IDQuIERQJ3MgRURJRCBoYXMgaGlnaCBwcmlv cml0eSB0byBkZWNpZGUgcmVzb2x1dGlvbiBzdXBwb3J0aW5nLg0KPiANCj4gVjI6DQo+IE1v ZHVsZXMgZGVzY3JpcHRpb246DQo+IDEuIEFTVERQIChBU1BFRUQgRGlzcGxheVBvcnQpIGlz IGNvbnRyb2xsZWQgYnkgZGVkaWNhdGVkDQo+ICAgICBBU1QtTUNVIChBU1BFRUQgcHJvcHJp YXRhcnkgTUNVKS4NCj4gMi4gTUNVIGlzIGxvb3BpbmcgaW4gY2hhcmdlZCBvZiBIUEQsIFJl YWQgRURJRCwgTGluayBUcmFpbmluZyB3aXRoDQo+ICAgICBEUCBzaW5rLg0KPiAzLiBBU1RE UCBhbmQgQVNULU1VQyByZXNpZGUgaW4gQk1DIChCYXNlYm9hcmQgTWFuYWdlbWVudCBjb250 cm9sbGVyKQ0KPiAgICAgYWRkcmVzc2luZy1zcGFjZS4NCj4gNC4gQVNQRUVEIERSTSBkcml2 ZXIgcmVxdWVzdHMgTUNVIHRvIGdldCBIUEQgYW5kIEVESUQgYnkgQ1Itc2NyYXRjaGVkDQo+ ICAgICByZWdpc3Rlci4NCj4gDQo+IEJvb3Rpbmcgc2VxdWVuY2U6DQo+IDEuIENoZWNrIGlm IFRYIGlzIEFTVERQCQkJCQkvLyBhc3RfZHBfbGF1bmNoKCkNCj4gMi4gQ2hlY2sgaWYgRFAt TUNVIEZXIGhhcyBsb2FkZWQJCQkJCS8vIGFzdF9kcF9sYXVuY2goKQ0KPiAzLiBSZWFkIEVE SUQJCQkJCS8vIGFzdF9kcF9yZWFkX2VkaWQoKQ0KPiA0LiBSZXNvbHV0aW9uIHN3aXRjaAkJ CQkJLy8gYXN0X2RwX1NldE91dHB1dCgpDQo+IA0KPiBWMzoNCj4gMS4gUmVtb3ZlIHVubmVl ZGVkIHNlbWljb2xvbi4NCj4gMi4gQXBwbHkgdG8gZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3Rv cC5vcmcvZHJtL2RybSwgaW5zdGVhZCBvZg0KPiAgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVz a3RvcC5vcmcvZHJtL2RybS1taXNjDQo+IDMuIFJlc29sdmUgYXV0byBidWlsZCB0ZXN0IFdB Uk5JTkdzIG9uIFYxIHBhdGNoLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogS3VvSHNpYW5nIENo b3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPg0KPiBSZXBvcnRlZC1ieToga2Vy bmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hc3QvTWFrZWZpbGUgICB8ICAgMiArLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X2RwLmMgICB8IDI5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g ICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgfCAxMjcgKysrKysrKysrKysrKysN Cj4gICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMgfCAgIDUgKy0NCj4gICBkcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgfCAgNDYgKysrKystDQo+ICAgZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfcG9zdC5jIHwgICA0ICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA0 NjggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPiANCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L01ha2Vm aWxlDQo+IGluZGV4IDIxZjcxMTYwYi4uNWE1M2NlNTFmIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv TWFrZWZpbGUNCj4gQEAgLTMsNiArMyw2IEBADQo+ICAgIyBNYWtlZmlsZSBmb3IgdGhlIGRy bSBkZXZpY2UgZHJpdmVyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhl DQo+ICAgIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChEUkkpIGluIFhGcmVl ODYgNC4xLjAgYW5kIGhpZ2hlci4NCj4gDQo+IC1hc3QteSA6PSBhc3RfZHJ2Lm8gYXN0X2ky Yy5vIGFzdF9tYWluLm8gYXN0X21tLm8gYXN0X21vZGUubyBhc3RfcG9zdC5vIGFzdF9kcDUw MS5vDQo+ICthc3QteSA6PSBhc3RfZHJ2Lm8gYXN0X2kyYy5vIGFzdF9tYWluLm8gYXN0X21t Lm8gYXN0X21vZGUubyBhc3RfcG9zdC5vIGFzdF9kcDUwMS5vIGFzdF9kcC5vDQo+IA0KPiAg IG9iai0kKENPTkZJR19EUk1fQVNUKSA6PSBhc3Qubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwLi4xZGFhMjVkOTIN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5j DQo+IEBAIC0wLDAgKzEsMjkyIEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMA0KPiArLy8gQ29weXJpZ2h0IChjKSAyMDIxLCBBU1BFRUQgVGVjaG5vbG9neSBJ bmMuDQo+ICsvLyBBdXRob3JzOiBLdW9Ic2lhbmcgQ2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNw ZWVkdGVjaC5jb20+DQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5o Pg0KPiArI2luY2x1ZGUgImFzdF9kcnYuaCINCj4gKw0KPiArYm9vbCBhc3RfZHBfcmVhZF9l ZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlkZGF0YSkNCj4gK3sNCj4gKwlz dHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+ICsJdTgg aSA9IDAsIGogPSAwOw0KPiArDQo+ICsjaWZkZWYgRFBDb250cm9sUG93ZXINCg0KVGhpcyBk ZWZpbmUgbmVlZHMgdG8gZ28gYXdheS4gSGVyZSBhbmQgaW4gYWxsIG90aGVyIHBsYWNlcy4g SXQncyBhbHdheXMgDQplbmFibGVkIGFueXdheS4gRWl0aGVyIGtlZXAgdGhlIGVuY2xvc2Vk IGNvZGUgb3IgcmVtb3ZlIGl0Lg0KDQpBRkFJVSwgdGhlIERQIGNoaXBzIG5lZWRzIHRvIGJl IHB3ZXJlZCBvbiB0byBiZSB1c2VkLiBTbyB3aGF0IGV4YWN0bHkgDQpkb2VzIHRoaXMgI2lm ZGVmIHByb3RlY3Q/DQoNCg0KPiArCXU4IGJEUFN0YXRlX0NoYW5nZSA9IGZhbHNlOw0KPiAr DQo+ICsJLy8gQ2hlY2sgRFAgcG93ZXIgb2ZmIG9yIG5vdC4NCj4gKwlpZiAoYXN0LT5BU1RE UF9TdGF0ZSAmIEFTVF9EUF9QSFlfU0xFRVApIHsNCj4gKwkJLy8gRFAgcG93ZXIgb24NCj4g KwkJYXN0X2RwX1Bvd2VyT25PZmYoZGV2LCBBU1RfRFBfUE9XRVJfT04pOw0KPiArCQliRFBT dGF0ZV9DaGFuZ2UgPSB0cnVlOw0KPiArCX0NCj4gKyNlbmRpZg0KDQpUaGUgVFggY2hpcCBz aG91bGQgYWxyZWFkeSBiZSBydW5uaW5nIHdoZW4gYXN0X2RwX3JlYWRfZWRpZCgpIHJ1bnMu IEF0IA0KbGVhc3QgcHV0IGl0IGludG8gdGhlIGNhbGxlci4gIE1vcmUgZ2VuZXJhbGx5IHNw ZWFraW5nLCB0aGUgbW9kZXNldHRpbmcgDQpjYWxsYmFja3Mgc2hvdWxkIGhhbmRsZSB0aGlz IHNvbWV3aGVyZS4NCg0KDQo+ICsNCj4gKwkvKg0KPiArCSAqIENSRDFbYjVdOiBEUCBNQ1Ug RlcgaXMgZXhlY3V0aW5nDQo+ICsJICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiAr CSAqIENSREZbYjBdOiBEUCBIUEQNCj4gKwkgKiBDUkU1W2IwXTogSG9zdCByZWFkaW5nIEVE SUQgcHJvY2VzcyBpcyBkb25lDQo+ICsJICovDQo+ICsJaWYgKCEoYXN0X2dldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsIEFTVERQX01DVV9GV19FWEVD VVRJTkcpICYmDQo+ICsJCWFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweERDLCBBU1REUF9MSU5LX1NVQ0NFU1MpICYmDQo+ICsJCWFzdF9nZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLCBBU1REUF9IUEQpICYm DQo+ICsJCWFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAw eEU1LA0KPiArCQkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0spKSkgew0K PiArI2lmZGVmIERQQ29udHJvbFBvd2VyDQo+ICsJCS8vIFNldCBiYWNrIHBvd2VyIG9mZg0K PiArCQlpZiAoYkRQU3RhdGVfQ2hhbmdlKQ0KPiArCQkJYXN0X2RwX1Bvd2VyT25PZmYoZGV2 LCBBU1RfRFBfUE9XRVJfT0ZGKTsNCj4gKyNlbmRpZg0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ ICsJfQ0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsIDB4RTUsICh1OCkgfkFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSywNCj4g KwkJCQkJCQkweDAwKTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7DQo+ ICsJCS8qDQo+ICsJCSAqIENSRTRbNzowXTogUmVhZC1Qb2ludGVyIGZvciBFRElEIChVbml0 OiA0Ynl0ZXMpOyB2YWxpZCByYW5nZTogMH42NA0KPiArCQkgKi8NCj4gKwkJYXN0X3NldF9p bmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+ICsJCQkJCSh1 OCkgfkFTVERQX0VESURfUkVBRF9QT0lOVEVSX01BU0ssICh1OCkgaSk7DQo+ICsJCWogPSAw Ow0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIENSRDdbYjBdOiB2YWxpZCBmbGFnIGZvciBFRElE DQo+ICsJCSAqIENSRDZbYjBdOiBtaXJyb3IgcmVhZCBwb2ludGVyIGZvciBFRElEDQo+ICsJ CSAqLw0KPiArCQl3aGlsZSAoKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweEQ3LA0KPiArCQkJCUFTVERQX0VESURfVkFMSURfRkxBR19NQVNLKSAh PSAweDAxKSB8fA0KPiArCQkJKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweEQ2LA0KPiArCQkJCQkJQVNURFBfRURJRF9SRUFEX1BPSU5URVJfTUFT SykgIT0gaSkpIHsNCj4gKwkJCW1kZWxheShqKzEpOw0KDQpJIGRvbid0IHVuZGVyc3RhbmQg J21kZWxheShqICsgMSknLiBEZWxheXMgYXJlIGdldHRpbmcgbG9uZ2VyIHdpdGggZWFjaCAN CnJldHJ5Pw0KDQo+ICsNCj4gKwkJCWlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCAweEQxLA0KPiArCQkJCQkJCUFTVERQX01DVV9GV19FWEVD VVRJTkcpICYmDQo+ICsJCQkJYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4REMsDQo+ICsJCQkJCQkJQVNURFBfTElOS19TVUNDRVNTKSAmJg0KPiAr CQkJCWFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERG LCBBU1REUF9IUEQpKSkgew0KPiArCQkJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPiArCQkJCQkJCSh1OCkgfkFTVERQX0hPU1RfRURJ RF9SRUFEX0RPTkVfTUFTSywNCj4gKwkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05F KTsNCj4gKwkJCQlyZXR1cm4gZmFsc2U7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCWorKzsNCj4g KwkJCWlmIChqID4gMjAwKSB7DQo+ICsJCQkJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsDQo+ICsJCQkJCQkJKHU4KSB+QVNURFBfSE9TVF9F RElEX1JFQURfRE9ORV9NQVNLLA0KPiArCQkJCQkJCUFTVERQX0hPU1RfRURJRF9SRUFEX0RP TkUpOw0KPiArCQkJCXJldHVybiBmYWxzZTsNCg0KUmF0aGVyIHRoYW4gZG9pbmcgYSBjbGVh bnVwIGhlcmUsIGp1bXAgb3V0IG9mIHRoZSBmb3IgbG9vcCAoZ290byBvdXQ7KSANCmFuZCB1 c2UgdGhlIHJlZ3VsYXIgY2xlYW4tdXAgY29kZS4gVGhpcyB3b3VsZCBhbHNvIHJlc2V0IHRo ZSBjaGlwJ3MgDQpwb3dlciBzdGF0ZSBvbiBlcnJvcnMuIFRoZSByZXR1cm4gdmFsdWUgb2Yg dGhpcyBmdW5jdGlvbiB3b3VsZCBkZXBlbmQgb24gDQp0aGUgc3VjY2VzcyBvciBmYWlsdXJl Lg0KDQo+ICsJCQl9DQo+ICsJCX0NCj4gKw0KPiArCQkqKGVkaWRkYXRhKSA9IGFzdF9nZXRf aW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULA0KPiArCQkJCQkJCTB4RDgs IEFTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0KPiArCQkqKGVkaWRkYXRhICsgMSkgPSBh c3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEOSwNCj4g KwkJCQkJCQkJQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+ICsJCSooZWRpZGRhdGEg KyAyKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAw eERBLA0KPiArCQkJCQkJCQlBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4gKwkJKihl ZGlkZGF0YSArIDMpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsIDB4REIsDQo+ICsJCQkJCQkJCUFTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0K PiArDQo+ICsJCWlmIChpID09IDMxKSB7DQo+ICsJCQkvKg0KPiArCQkJICogRm9yIDEyOC1i eXRlcyBFRElEXzEuMywNCj4gKwkJCSAqIDEuIEFkZCB0aGUgdmFsdWUgb2YgQnl0ZXMtMTI2 IHRvIEJ5dGVzLTEyNy4NCj4gKwkJCSAqCQlUaGUgQnl0ZXMtMTI3IGlzIENoZWNrc3VtLiBT dW0gb2YgYWxsIDEyOGJ5dGVzIHNob3VsZA0KPiArCQkJICoJCWVxdWFsIDAJKG1vZCAyNTYp Lg0KPiArCQkJICogMi4gTW9kaWZ5IEJ5dGVzLTEyNiB0byBiZSAwLg0KPiArCQkJICoJCVRo ZSBCeXRlcy0xMjYgaW5kaWNhdGVzIHRoZSBOdW1iZXIgb2YgZXh0ZW5zaW9ucyB0bw0KPiAr CQkJICoJCWZvbGxvdy4gMCByZXByZXNlbnRzIG5vZXh0ZW5zaW9ucy4NCj4gKwkJCSAqLw0K PiArCQkJKihlZGlkZGF0YSArIDMpID0gKihlZGlkZGF0YSArIDMpICsgKihlZGlkZGF0YSAr IDIpOw0KPiArCQkJKihlZGlkZGF0YSArIDIpID0gMDsNCj4gKwkJfQ0KPiArDQo+ICsJCWVk aWRkYXRhICs9IDQ7DQo+ICsJfQ0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsICh1OCkgfkFTVERQX0hPU1RfRURJRF9SRUFE X0RPTkVfTUFTSywNCj4gKwkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4g Kw0KPiArI2lmZGVmIERQQ29udHJvbFBvd2VyDQo+ICsJLy8gU2V0IGJhY2sgcG93ZXIgb2Zm DQo+ICsJaWYgKGJEUFN0YXRlX0NoYW5nZSkNCj4gKwkJYXN0X2RwX1Bvd2VyT25PZmYoZGV2 LCBBU1RfRFBfUE9XRVJfT0ZGKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsJcmV0dXJuIHRydWU7 DQoNClJhdGhlciB0aGFuIHJldHVybmluZyBhIGJvb2xlYW4gdmFsdWUsIGl0J3MgYmV0dGVy IHN0eWxlIHRvIHJldHVybiAwIG9uIA0Kc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vIGNv ZGUgb24gZmFpbHVyZS4gSWYgdGhlIHJlZ2lzdGVyIG9wZXJhdGlvbnMgDQpmYWlsLCByZXR1 cm5pbmcgLUVJTyBtaWdodCBiZSBhcHByb3ByaWF0ZS4NCg0KPiArfQ0KPiArDQo+ICsvKg0K PiArICogTGF1bmNoIEFzcGVlZCBEUA0KPiArICovDQo+ICtib29sIGFzdF9kcF9sYXVuY2go c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggYlBvd2VyKQ0KPiArew0KPiArCXUzMiBpID0g MCwgaiA9IDAsIFdhaXRDb3VudCA9IDE7DQo+ICsJdTggYkRQVFggPSAwOw0KPiArCXU4IGJE UEV4ZWN1dGUgPSAxOw0KPiArDQo+ICsJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19h c3RfcHJpdmF0ZShkZXYpOw0KPiArCS8vIFMzIGNvbWUgYmFjaywgbmVlZCBtb3JlIHRpbWUg dG8gd2FpdCBCTUMgcmVhZHkuDQo+ICsJaWYgKGJQb3dlcikNCj4gKwkJV2FpdENvdW50ID0g MzAwOw0KPiArDQo+ICsJLy8gRmlsbA0KPiArCWFzdC0+dHhfY2hpcF90eXBlID0gQVNUX1RY X05PTkU7DQoNClRoaXMgbmVlZHMgdG8gYmUgY2xlYXJlZCBlbHNld2hlcmUuIFJpZ2h0IG5v dyBpdCBqdXN0IGludGVyZmVyZXMgd2l0aCANCm90aGVyIHBsYWNlcyB0aGF0IHNldCB0aGlz IGZpZWxkLg0KDQpJZGVhbGx5LCB5b3UnZCBoYXZlIGEgdGVzdCBmdW5jdGlvbiB0aGF0IGRl dGVjdHMgdGhlIFRYIGNoaXAgYW5kIGxhdW5jaCANCmZ1bmN0aW9ucyB0aGF0IHN0YXJ0cyB0 aGUgZGV0ZWN0ZWQgY2hpcC4NCg0KPiArDQo+ICsJLy8gV2FpdCB0b3RhbCBjb3VudCBieSBk aWZmZXJlbnQgY29uZGl0aW9uLg0KPiArCS8vIFRoaXMgaXMgYSB0ZW1wIHNvbHV0aW9uIGZv ciBEUCBjaGVjaw0KPiArCWZvciAoaiA9IDA7IGogPCBXYWl0Q291bnQ7IGorKykgew0KPiAr CQliRFBUWCA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweEQxLCBUWF9UWVBFX01BU0spOw0KPiArDQo+ICsJCWlmIChiRFBUWCkNCj4gKwkJCWJy ZWFrOw0KPiArDQo+ICsJCW1zbGVlcCgxMDApOw0KPiArCX0NCj4gKw0KPiArCS8vIDB4RSA6 IEFTVERQIHdpdGggRFBNQ1UgRlcgaGFuZGxpbmcNCj4gKwlpZiAoYkRQVFggPT0gQVNURFBf RFBNQ1VfVFgpIHsNCj4gKwkJLy8gV2FpdCBvbmUgc2Vjb25kIHRoZW4gdGltZW91dC4NCj4g KwkJaSA9IDA7DQo+ICsNCj4gKwkJd2hpbGUgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCAweEQxLCBDT1BST0NFU1NPUl9MQVVOQ0gpICE9DQo+ICsJ CQlDT1BST0NFU1NPUl9MQVVOQ0gpIHsNCj4gKwkJCWkrKzsNCj4gKwkJCS8vIHdhaXQgMTAw IG1zDQo+ICsJCQltc2xlZXAoMTAwKTsNCj4gKw0KPiArCQkJaWYgKGkgPj0gMTApIHsNCj4g KwkJCQkvLyBEUCB3b3VsZCBub3QgYmUgcmVhZHkuDQo+ICsJCQkJYkRQRXhlY3V0ZSA9IDA7 DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAoYkRQRXhl Y3V0ZSkNCj4gKwkJCWFzdC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX0FTVERQOw0KPiArCX0N Cj4gKw0KPiArCXJldHVybiB0cnVlOw0KDQpUaGVyZSdzIG5vIHdheSB0aGlzIGZ1bmN0aW9u IGZhaWxzLCBzbyBubyBuZWVkIGZvciBhIHJldHVybiB2YWx1ZS4gSWYgDQp0aGVyZSBpcyBh IHBvc3NpYmxlIGVycm9yLCBpdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgbmVnYXRpdmUgZXJy bm8gY29kZS4NCg0KPiArfQ0KPiArDQo+ICsjaWZkZWYgRFBDb250cm9sUG93ZXINCj4gKw0K PiArdm9pZCBhc3RfZHBfUG93ZXJPbk9mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBN b2RlKQ0KDQpXZSBkb24ndCB1c2UgQ2FtZWxDYXNlIHN0eWxlLiBSYXRoZXIgY2FsbCB0aHMg ZnVuY3Rpb24gDQphc3RfZHBfcG93ZXJfb25fb2ZmKCkuIFNhbWUgYXBwbGllcyB0byBhbGwg ZnVuY3Rpb25zIHdpdGggQ2FtZWxDYXNlLg0KDQpJbnN0ZWFkIG9mICd1OCBNb2RlJywgJ2Jv b2wgb24nIHNlZW1zIGFwcHJvcHJpYXRlLg0KDQo+ICt7DQo+ICsJc3RydWN0IGFzdF9wcml2 YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiArCS8vIFJlYWQgYW5kIFR1cm4g b2ZmIERQIFBIWSBzbGVlcA0KPiArCXU4IGJFMyA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUzLCBBU1RfRFBfVklERU9fRU5BQkxFKTsNCj4g Kw0KPiArCS8vIFR1cm4gb24gRFAgUEhZIHNsZWVwDQo+ICsJaWYgKCFNb2RlKQ0KPiArCQli RTMgfD0gQVNUX0RQX1BIWV9TTEVFUDsNCj4gKw0KPiArCS8vIERQIFBvd2VyIG9uL29mZg0K PiArCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUz LCAodTgpIH5BU1RfRFBfUEhZX1NMRUVQLCBiRTMpOw0KPiArDQo+ICsJLy8gU2F2ZSBBU1RE UCBwb3dlciBzdGF0ZQ0KPiArCWFzdC0+QVNURFBfU3RhdGUgPSBiRTM7DQoNCk5ldmVyIGhv bGQgZnVsbCByZWdpc3RlcnMgaW4gdGhlIGRyaXZlcidzIHN0YXRlLiBFaXRoZXIgcmVhZCB0 aGUgDQpyZWdpc3RlcidzIHZhbHVlIHdoZW4geW91IG5lZWQgaXQsIG9yIHN0b3JlIHNvbWUg bG9naWNhbCBzdGF0ZSANCihvbi9vZmYvc2xlZXAsIGV0YykuDQoNCkNoYW5jZXMgYXJlIHRo YXQgQVNURFBfU3RhdGUgYmVsb25ncyBpbnRvIGNvbm5lY3RvciBzdGF0ZSBhbnl3YXk7IA0K aW5zdGVhZCBvZiB0aGUgc3RydWN0IGFzdF9wcml2YXRlLg0KDQo+ICt9DQo+ICsNCj4gKyNl bmRpZg0KPiArDQo+ICt2b2lkIGFzdF9kcF9TZXRPbk9mZihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1OCBNb2RlKQ0KDQpBcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCBhc3RfZHBfUG93ZXJP bk9mZigpIGlzIGZvciB0aGUgY2hpcCBhcyBhIHdob2xlIA0KYW5kIHRoaXMgZnVuY3Rpb24g b25seSBlbmFibGVzL2Rpc2FibGVzIHRoZSB2aWRlbyBzaWduYWw/DQoNCkFnYWluLCBpbnN0 ZWFkIG9mICd1OCBNb2RlJyBhICdib29sIG9uJyBzZWVtcyBhcHByb3ByaWF0ZS4NCg0KQ2Ft ZWxDYXNlDQoNCj4gK3sNCj4gKwlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9w cml2YXRlKGRldik7DQo+ICsNCj4gKwkvLyBWaWRlbyBPbi9PZmYNCj4gKwlhc3Rfc2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMywgKHU4KSB+QVNUX0RQ X1ZJREVPX0VOQUJMRSwgTW9kZSk7DQo+ICsNCj4gKwkvLyBTYXZlIEFTVERQIHBvd2VyIHN0 YXRlDQo+ICsJYXN0LT5BU1REUF9TdGF0ZSA9IE1vZGU7DQo+ICsNCj4gKwkvLyBJZiBEUCBw bHVnIGluIGFuZCBsaW5rIHN1Y2Nlc3NmdWwgdGhlbiBjaGVjayB2aWRlbyBvbiAvIG9mZiBz dGF0dXMNCj4gKwlpZiAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsIDB4REMsIEFTVERQX0xJTktfU1VDQ0VTUykgJiYNCj4gKwkJYXN0X2dldF9pbmRl eF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REYsIEFTVERQX0hQRCkpIHsN Cj4gKwkJTW9kZSA8PD0gNDsNCj4gKwkJd2hpbGUgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLA0KPiArCQkJCQkJQVNURFBfTUlSUk9SX1ZJ REVPX0VOQUJMRSkgIT0gTW9kZSkgew0KPiArCQkJLy8gd2FpdCAxIG1zDQo+ICsJCQltZGVs YXkoMSk7DQo+ICsJCX0NCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQgYXN0X2RwX1NldE91 dHB1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBhc3RfdmJpb3NfbW9kZV9pbmZv ICp2Ymlvc19tb2RlKQ0KDQpDYW1lbENhc2UNCg0KTWF5YmUgcmF0ZXIgY2FsbCBpdCBhc3Rf ZHBfc2V0X21vZGUoKTsNCg0KPiArew0KPiArCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0g dG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4gKw0KPiArCXUzMiB1bFJlZnJlc2hSYXRl SW5kZXg7DQo+ICsJdTggTW9kZUlkeDsNCj4gKw0KPiArCXVsUmVmcmVzaFJhdGVJbmRleCA9 IHZiaW9zX21vZGUtPmVuaF90YWJsZS0+cmVmcmVzaF9yYXRlX2luZGV4IC0gMTsNCj4gKw0K PiArCXN3aXRjaCAoY3J0Yy0+bW9kZS5jcnRjX2hkaXNwbGF5KSB7DQo+ICsJY2FzZSAzMjA6 DQo+ICsJCU1vZGVJZHggPSBBU1REUF8zMjB4MjQwXzYwOw0KPiArCQlicmVhazsNCj4gKwlj YXNlIDQwMDoNCj4gKwkJTW9kZUlkeCA9IEFTVERQXzQwMHgzMDBfNjA7DQo+ICsJCWJyZWFr Ow0KPiArCWNhc2UgNTEyOg0KPiArCQlNb2RlSWR4ID0gQVNURFBfNTEyeDM4NF82MDsNCj4g KwkJYnJlYWs7DQo+ICsJY2FzZSA2NDA6DQo+ICsJCU1vZGVJZHggPSAoQVNURFBfNjQweDQ4 MF82MCArICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gKwkJYnJlYWs7DQo+ICsJY2Fz ZSA4MDA6DQo+ICsJCU1vZGVJZHggPSAoQVNURFBfODAweDYwMF81NiArICh1OCkgdWxSZWZy ZXNoUmF0ZUluZGV4KTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxMDI0Og0KPiArCQlNb2Rl SWR4ID0gKEFTVERQXzEwMjR4NzY4XzYwICsgKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0K PiArCQlicmVhazsNCj4gKwljYXNlIDExNTI6DQo+ICsJCU1vZGVJZHggPSBBU1REUF8xMTUy eDg2NF83NTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxMjgwOg0KPiArCQlpZiAoY3J0Yy0+ bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDgwMCkNCj4gKwkJCU1vZGVJZHggPSAoQVNURFBfMTI4 MHg4MDBfNjBfUkIgLSAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+ICsJCWVsc2UJCS8v IDEwMjQNCj4gKwkJCU1vZGVJZHggPSAoQVNURFBfMTI4MHgxMDI0XzYwICsgKHU4KSB1bFJl ZnJlc2hSYXRlSW5kZXgpOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDEzNjA6DQo+ICsJY2Fz ZSAxMzY2Og0KPiArCQlNb2RlSWR4ID0gQVNURFBfMTM2Nng3NjhfNjA7DQo+ICsJCWJyZWFr Ow0KPiArCWNhc2UgMTQ0MDoNCj4gKwkJTW9kZUlkeCA9IChBU1REUF8xNDQweDkwMF82MF9S QiAtICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAx NjAwOg0KPiArCQlpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDkwMCkNCj4gKwkJ CU1vZGVJZHggPSAoQVNURFBfMTYwMHg5MDBfNjBfUkIgLSAodTgpIHVsUmVmcmVzaFJhdGVJ bmRleCk7DQo+ICsJCWVsc2UJCS8vMTIwMA0KPiArCQkJTW9kZUlkeCA9IEFTVERQXzE2MDB4 MTIwMF82MDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxNjgwOg0KPiArCQlNb2RlSWR4ID0g KEFTVERQXzE2ODB4MTA1MF82MF9SQiAtICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4g KwkJYnJlYWs7DQo+ICsJY2FzZSAxOTIwOg0KPiArCQlpZiAoY3J0Yy0+bW9kZS5jcnRjX3Zk aXNwbGF5ID09IDEwODApDQo+ICsJCQlNb2RlSWR4ID0gQVNURFBfMTkyMHgxMDgwXzYwOw0K PiArCQllbHNlCQkvLzEyMDANCj4gKwkJCU1vZGVJZHggPSBBU1REUF8xOTIweDEyMDBfNjA7 DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsN Cj4gKwkvKg0KPiArCSAqIENSRTBbNzowXTogTUlTQzAgKCgweDAwOiAxOC1icHApIG9yICgw eDIwOiAyNC1icHApDQo+ICsJICogQ1JFMVs3OjBdOiBNSVNDMSAoZGVmYXVsdDogMHgwMCkN Cj4gKwkgKiBDUkUyWzc6MF06IHZpZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4MjAgb3Ig MHg0MCB+IDB4NTApDQo+ICsJICovDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RTAsICh1OCkgfkFTVERQX0NMRUFSX01BU0ssDQo+ICsJ CQkJQVNURFBfTUlTQzBfMjRicHApOw0KPiArCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUxLCAodTgpIH5BU1REUF9DTEVBUl9NQVNLLCBBU1RE UF9NSVNDMSk7DQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsIDB4RTIsICh1OCkgfkFTVERQX0NMRUFSX01BU0ssIE1vZGVJZHgpOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcnYuaA0KPiBpbmRleCAwMGJmYTQxZmYuLjc5OTgyODUwMyAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4gQEAgLTcxLDYgKzcxLDcgQEAgZW51 bSBhc3RfdHhfY2hpcCB7DQo+ICAgCUFTVF9UWF9TSUwxNjQsDQo+ICAgCUFTVF9UWF9JVEU2 NjEyMSwNCj4gICAJQVNUX1RYX0RQNTAxLA0KPiArCUFTVF9UWF9BU1REUCwNCj4gICB9Ow0K PiANCj4gICAjZGVmaW5lIEFTVF9EUkFNXzUxMk14MTYgMA0KPiBAQCAtMTc1LDYgKzE3Niw5 IEBAIHN0cnVjdCBhc3RfcHJpdmF0ZSB7DQo+ICAgCXU4IGRwNTAxX21heGNsazsNCj4gICAJ dTggKmRwNTAxX2Z3X2FkZHI7DQo+ICAgCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZHA1MDFf Znc7CS8qIGRwNTAxIGZ3ICovDQo+ICsNCj4gKyAgICAvLyBBU1REUA0KPiArCXU4IEFTVERQ X1N0YXRlOw0KPiAgIH07DQo+IA0KPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFzdF9wcml2 YXRlICp0b19hc3RfcHJpdmF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiBAQCAtMzM2 LDEwICszNDAsMTIzIEBAIGludCBhc3RfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgYXN0X3By aXZhdGUgKmFzdCk7DQo+ICAgI2RlZmluZSBBU1RfRFA1MDFfRURJRF9EQVRBCTB4ZjAyMA0K PiANCj4gICAvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQgcmVnICovDQo+ICsjZGVmaW5l IENPUFJPQ0VTU09SX0xBVU5DSAkJCUJJVCg1KQ0KPiArDQo+ICsjZGVmaW5lIFRYX1RZUEVf TUFTSwkJCQlHRU5NQVNLKDMsIDEpDQo+ICsjZGVmaW5lIE5PX1RYCQkJCQkJKDAgPDwgMSkN Cj4gKyNkZWZpbmUgSVRFNjYxMjFfVkJJT1NfVFgJCQkoMSA8PCAxKQ0KPiArI2RlZmluZSBT STE2NF9WQklPU19UWAkJCQkoMiA8PCAxKQ0KPiArI2RlZmluZSBDSDcwMDNfVkJJT1NfVFgJ CQkoMyA8PCAxKQ0KPiArI2RlZmluZSBEUDUwMV9WQklPU19UWAkJCQkoNCA8PCAxKQ0KPiAr I2RlZmluZSBBTlg5ODA3X1ZCSU9TX1RYCQkJKDUgPDwgMSkNCj4gKyNkZWZpbmUgVFhfRldf RU1CRURERURfRldfVFgJCSg2IDw8IDEpDQo+ICsjZGVmaW5lIEFTVERQX0RQTUNVX1RYCQkJ CSg3IDw8IDEpDQo+ICsNCj4gICAjZGVmaW5lIEFTVF9WUkFNX0lOSVRfU1RBVFVTX01BU0sJ R0VOTUFTSyg3LCA2KQ0KPiAgIC8vI2RlZmluZSBBU1RfVlJBTV9JTklUX0JZX0JNQwkJQklU KDcpDQo+ICAgLy8jZGVmaW5lIEFTVF9WUkFNX0lOSVRfUkVBRFkJCUJJVCg2KQ0KPiANCj4g Ky8qIERlZmluZSBmb3IgU29jIHNjcmF0Y2hlZCByZWcgdXNlZCBvbiBBU1REUCAqLw0KPiAr I2RlZmluZSBBU1RfRFBfUEhZX1NMRUVQCQkJQklUKDQpDQo+ICsjZGVmaW5lIEFTVF9EUF9W SURFT19FTkFCTEUJCUJJVCgwKQ0KPiArDQo+ICsjZGVmaW5lIEFTVF9EUF9QT1dFUl9PTgkJ CXRydWUNCj4gKyNkZWZpbmUgQVNUX0RQX1BPV0VSX09GRgkJCWZhbHNlDQo+ICsNCj4gKy8q DQo+ICsgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0KPiArICogQ1JEQ1ti MF06IERQIGxpbmsgc3VjY2Vzcw0KPiArICogQ1JERltiMF06IERQIEhQRA0KPiArICogQ1JF NVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nlc3MgaXMgZG9uZQ0KPiArICovDQo+ICsj ZGVmaW5lIEFTVERQX01DVV9GV19FWEVDVVRJTkcJCQlCSVQoNSkNCj4gKyNkZWZpbmUgQVNU RFBfTElOS19TVUNDRVNTCQkJCUJJVCgwKQ0KPiArI2RlZmluZSBBU1REUF9IUEQJCQkJCQlC SVQoMCkNCj4gKyNkZWZpbmUgQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORQkJQklUKDApDQo+ ICsjZGVmaW5lIEFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSwlHRU5NQVNLKDAsIDAp DQo+ICsNCj4gKy8qDQo+ICsgKiBDUkI4W2IxXTogRW5hYmxlIFZTWU5DIG9mZg0KPiArICog Q1JCOFtiMF06IEVuYWJsZSBIU1lOQyBvZmYNCj4gKyAqLw0KPiArI2RlZmluZSBBU1RfRFBN U19WU1lOQ19PRkYJCQkJQklUKDEpDQo+ICsjZGVmaW5lIEFTVF9EUE1TX0hTWU5DX09GRgkJ CQlCSVQoMCkNCj4gKw0KPiArLyoNCj4gKyAqIENSREZbYjRdOiBNaXJyb3Igb2YgQVNUX0RQ X1ZJREVPX0VOQUJMRQ0KPiArICogUHJlY29uZGl0aW9uOglBLiB+QVNUX0RQX1BIWV9TTEVF UCAgJiYNCj4gKyAqCQkJQi4gRFBfSFBEICYmDQo+ICsgKgkJCUMuIERQX0xJTktfU1VDQ0VT Uw0KPiArICovDQo+ICsjZGVmaW5lIEFTVERQX01JUlJPUl9WSURFT19FTkFCTEUJCUJJVCg0 KQ0KPiArDQo+ICsjZGVmaW5lIEFTVERQX0VESURfUkVBRF9QT0lOVEVSX01BU0sJR0VOTUFT Syg3LCAwKQ0KPiArI2RlZmluZSBBU1REUF9FRElEX1ZBTElEX0ZMQUdfTUFTSwkJR0VOTUFT SygwLCAwKQ0KPiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfREFUQV9NQVNLCQlHRU5NQVNL KDcsIDApDQo+ICsNCj4gKy8qDQo+ICsgKiBEaXNwbGF5IFRyYW5zbWl0dG9yIFR5cGU6DQoN CidUcmFuc21pdHRlcicNCg0KPiArICovDQo+ICsjZGVmaW5lIFRYX1RZUEVfTUFTSwkJCQlH RU5NQVNLKDMsIDEpDQo+ICsjZGVmaW5lIE5PX1RYCQkJCQkJKDAgPDwgMSkNCj4gKyNkZWZp bmUgSVRFNjYxMjFfVkJJT1NfVFgJCQkoMSA8PCAxKQ0KPiArI2RlZmluZSBTSTE2NF9WQklP U19UWAkJCQkoMiA8PCAxKQ0KPiArI2RlZmluZSBDSDcwMDNfVkJJT1NfVFgJCQkoMyA8PCAx KQ0KPiArI2RlZmluZSBEUDUwMV9WQklPU19UWAkJCQkoNCA8PCAxKQ0KPiArI2RlZmluZSBB Tlg5ODA3X1ZCSU9TX1RYCQkJKDUgPDwgMSkNCj4gKyNkZWZpbmUgVFhfRldfRU1CRURERURf RldfVFgJCSg2IDw8IDEpDQo+ICsjZGVmaW5lIEFTVERQX0RQTUNVX1RYCQkJCSg3IDw8IDEp DQoNClRoaXMgZHVwbGljYXRlcyB0aGUgZGVmaW5lcyBmcm9tIGp1c3QgYSBmZXcgbGluZXMg YWJvdmUuDQoNCj4gKw0KPiArLyoNCj4gKyAqIEFTVERQIHNldG1vZGUgcmVnaXN0ZXJzOg0K PiArICogQ1JFMFs3OjBdOiBNSVNDMCAoKDB4MDA6IDE4LWJwcCkgb3IgKDB4MjA6IDI0LWJw cCkNCj4gKyAqIENSRTFbNzowXTogTUlTQzEgKGRlZmF1bHQ6IDB4MDApDQo+ICsgKiBDUkUy Wzc6MF06IHZpZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4MjAgb3IgMHg0MCB+IDB4NTAp DQo+ICsgKi8NCj4gKyNkZWZpbmUgQVNURFBfTUlTQzBfMjRicHAJCQlCSVQoNSkNCj4gKyNk ZWZpbmUgQVNURFBfTUlTQzEJCQkJMA0KPiArI2RlZmluZSBBU1REUF9DTEVBUl9NQVNLCQkJ R0VOTUFTSyg3LCAwKQ0KPiArDQo+ICsvKg0KPiArICogQVNURFAgcmVzb3VsdGlvbiB0YWJs ZToNCj4gKyAqIEVYOglBU1REUF9BX0JfQzoNCj4gKyAqCQlBOiBSZXNvbHV0aW9uDQo+ICsg KgkJQjogUmVmcmVzaCBSYXRlDQo+ICsgKgkJQzogTWlzYyBpbmZvcm1hdGlvbiwgc3VjaCBh cyBDVlQsIFJlZHVjZSBCbGFua2VkDQo+ICsgKi8NCj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4 MF82MAkJMHgwMA0KPiArI2RlZmluZSBBU1REUF82NDB4NDgwXzcyCQkweDAxDQo+ICsjZGVm aW5lIEFTVERQXzY0MHg0ODBfNzUJCTB4MDINCj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF84 NQkJMHgwMw0KPiArI2RlZmluZSBBU1REUF84MDB4NjAwXzU2CQkweDA0DQo+ICsjZGVmaW5l IEFTVERQXzgwMHg2MDBfNjAJCTB4MDUNCj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF83MgkJ MHgwNg0KPiArI2RlZmluZSBBU1REUF84MDB4NjAwXzc1CQkweDA3DQo+ICsjZGVmaW5lIEFT VERQXzgwMHg2MDBfODUJCTB4MDgNCj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3NjhfNjAJCTB4 MDkNCj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3NjhfNzAJCTB4MEENCj4gKyNkZWZpbmUgQVNU RFBfMTAyNHg3NjhfNzUJCTB4MEINCj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3NjhfODUJCTB4 MEMNCj4gKyNkZWZpbmUgQVNURFBfMTI4MHgxMDI0XzYwCQkweDBEDQo+ICsjZGVmaW5lIEFT VERQXzEyODB4MTAyNF83NQkJMHgwRQ0KPiArI2RlZmluZSBBU1REUF8xMjgweDEwMjRfODUJ CTB4MEYNCj4gKyNkZWZpbmUgQVNURFBfMTYwMHgxMjAwXzYwCQkweDEwDQo+ICsjZGVmaW5l IEFTVERQXzMyMHgyNDBfNjAJCTB4MTENCj4gKyNkZWZpbmUgQVNURFBfNDAweDMwMF82MAkJ MHgxMg0KPiArI2RlZmluZSBBU1REUF81MTJ4Mzg0XzYwCQkweDEzDQo+ICsjZGVmaW5lIEFT VERQXzE5MjB4MTIwMF82MAkJMHgxNA0KPiArI2RlZmluZSBBU1REUF8xOTIweDEwODBfNjAJ CTB4MTUNCj4gKyNkZWZpbmUgQVNURFBfMTI4MHg4MDBfNjAJCTB4MTYNCj4gKyNkZWZpbmUg QVNURFBfMTI4MHg4MDBfNjBfUkIJMHgxNw0KPiArI2RlZmluZSBBU1REUF8xNDQweDkwMF82 MAkJMHgxOA0KPiArI2RlZmluZSBBU1REUF8xNDQweDkwMF82MF9SQgkweDE5DQo+ICsjZGVm aW5lIEFTVERQXzE2ODB4MTA1MF82MAkJMHgxQQ0KPiArI2RlZmluZSBBU1REUF8xNjgweDEw NTBfNjBfUkIJMHgxQg0KPiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MAkJMHgxQw0KPiAr I2RlZmluZSBBU1REUF8xNjAweDkwMF82MF9SQgkweDFEDQo+ICsjZGVmaW5lIEFTVERQXzEz NjZ4NzY4XzYwCQkweDFFDQo+ICsjZGVmaW5lIEFTVERQXzExNTJ4ODY0Xzc1CQkweDFGDQo+ ICsNCj4gICBpbnQgYXN0X21tX2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpOw0KPiAN Cj4gICAvKiBhc3QgcG9zdCAqLw0KPiBAQCAtMzYwLDQgKzQ3NywxNCBAQCB2b2lkIGFzdF9p bml0XzNyZHR4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPiAgIC8qIGFzdF9pMmMuYyAq Lw0KPiAgIHN0cnVjdCBhc3RfaTJjX2NoYW4gKmFzdF9pMmNfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOw0KPiANCj4gKy8qIGFzcGVlZCBEUCAqLw0KPiArI2RlZmluZSBEUENv bnRyb2xQb3dlcg0KPiArYm9vbCBhc3RfZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHU4ICplZGlkZGF0YSk7DQo+ICtib29sIGFzdF9kcF9sYXVuY2goc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTggYlBvd2VyKTsNCj4gKyNpZmRlZiBEUENvbnRyb2xQb3dlcg0K PiArdm9pZCBhc3RfZHBfUG93ZXJPbk9mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBN b2RlKTsNCj4gKyNlbmRpZg0KPiArdm9pZCBhc3RfZHBfU2V0T25PZmYoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdTggTW9kZSk7DQo+ICt2b2lkIGFzdF9kcF9TZXRPdXRwdXQoc3RydWN0 IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgYXN0X3ZiaW9zX21vZGVfaW5mbyAqdmJpb3NfbW9k ZSk7DQo+ICsNCj4gICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPiBpbmRl eCA3OWEzNjE4NjcuLjlmMjVmYTJjOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbWFpbi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4u Yw0KPiBAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkNCj4gICAJCQlhc3QtPnR4 X2NoaXBfdHlwZSA9IEFTVF9UWF9TSUwxNjQ7DQo+ICAgCX0NCj4gDQo+IC0JaWYgKChhc3Qt PmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSkgew0KPiArCWlm ICgoYXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwg KGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSkgew0KPiAgIAkJLyoNCj4gICAJCSAqIE9uIEFTVDIz MDAgYW5kIDI0MDAsIGxvb2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0IGJ5IHRoZSBTb0MgaW4N Cj4gICAJCSAqIHRoZSBTT0Mgc2NyYXRjaCByZWdpc3RlciAjMSBiaXRzIDExOjggKGludGVy ZXN0aW5nbHkgbWFya2VkDQo+IEBAIC0yNTQsNyArMjU0LDggQEAgc3RhdGljIGludCBhc3Rf ZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQ0K PiAgIAkJY2FzZSAweDBjOg0KPiAgIAkJCWFzdC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX0RQ NTAxOw0KPiAgIAkJfQ0KPiAtCX0NCj4gKwl9IGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1Qy NjAwKQ0KPiArCQlhc3RfZHBfbGF1bmNoKCZhc3QtPmJhc2UsIDApOw0KPiANCj4gICAJLyog UHJpbnQgc3R1ZmYgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMgKi8NCj4gICAJc3dpdGNoKGFz dC0+dHhfY2hpcF90eXBlKSB7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9tb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4gaW5kZXgg NDRjMmFhZmNiLi4xYzdhNTdhMDMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X21vZGUuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMN Cg0KRXZlcnl0aGluZyBpbiB0aGlzIGZpbGUgbmVlZHMgYW4gb3ZlcmhhdWwuIEFsbCB0aGUg Q1JUQyBhbmQgY29ubmVjdG9yIA0KZnVuY3Rpb25zIGhhbmRsZSBhbGwgVFggY2hpcHMuIEEg YmV0dGVyIGRlc2lnbiB3b3VsZCBwcm92aWRlIENSVEMgYW5kIA0KY29uZW5jdG9yIGZvciBl YWNoIFRYIGNoaXAuDQoNCkkgYmVnYW4gdG8gcmV3b3JrIHRoZSBtb2Rlc2V0dGluZyBtb2Rl IGluIHRoZSBwYXRjaHNldCBhdA0KDQogDQpodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmkt ZGV2ZWwvMjAyMjAxMTExMjAwNTguMTA1MTAtMS10emltbWVybWFubkBzdXNlLmRlL1QvI205 MjAzNTUyZjdmODdmMThkZjUzMGNiNGE2NzljYTIxODhmY2U4NWE5DQoNCllvdSdyZSB3ZWxj b21lIHRvIGNvbW1lbnQgYW5kIHRlc3QuDQoNCkJ1dCBJIGRvbid0IGhhdmUgYXN0IGhhcmR3 YXJlIHdpdGggdGhlIGRlZGljYXRlZCBUWCBjaGlwcywgc28gDQpyZWZhY3RvcmluZyBnb2Vz IHNsb3dseS4NCg0KPiBAQCAtOTg0LDIxICs5ODQsNDUgQEAgc3RhdGljIGludCBhc3RfY3Vy c29yX3BsYW5lX2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpDQo+ICAgc3RhdGljIHZv aWQgYXN0X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQ0KPiAg IHsNCj4gICAJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShjcnRj LT5kZXYpOw0KPiArCXU4IGNoID0gQVNUX0RQTVNfVlNZTkNfT0ZGIHwgQVNUX0RQTVNfSFNZ TkNfT0ZGOw0KPiANCj4gICAJLyogVE9ETzogTWF5YmUgY29udHJvbCBkaXNwbGF5IHNpZ25h bCBnZW5lcmF0aW9uIHdpdGgNCj4gICAJICogICAgICAgU3luYyBFbmFibGUgKGJpdCBDUjE3 LjcpLg0KPiAgIAkgKi8NCj4gICAJc3dpdGNoIChtb2RlKSB7DQo+ICAgCWNhc2UgRFJNX01P REVfRFBNU19PTjoNCj4gLQljYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToNCj4gLQljYXNl IERSTV9NT0RFX0RQTVNfU1VTUEVORDoNCj4gKwkJYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19TRVFfUE9SVCwgIDB4MDEsIDB4ZGYsIDApOw0KPiArCQlhc3Rfc2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhiNiwgMHhmYywgMCk7DQo+ ICAgCQlpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0RQNTAxKQ0KPiAgIAkJCWFz dF9zZXRfZHA1MDFfdmlkZW9fb3V0cHV0KGNydGMtPmRldiwgMSk7DQo+ICsNCj4gKwkJaWYg KGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkgew0KPiArI2lmZGVmIERQQ29u dHJvbFBvd2VyDQo+ICsJCQlhc3RfZHBfUG93ZXJPbk9mZihjcnRjLT5kZXYsIEFTVF9EUF9Q T1dFUl9PTik7DQo+ICsjZW5kaWYNCg0KSnVzdCBhIGdlbmVyYWwgY29tbWVudDogRFBNUyBp cyBmb3Igc2lnbmFsIGdlbmVyYXRpb24uIEl0IHNlZW1zIGxpa2UgDQp5b3UnZCB3YW50IHRv IHBvd2VyIHVwIHRoZSBUWCBjaGlwIGVsc2V3aGVyZSBpbiB0aGUgY29kZS4gQnV0IEkgY2Fu bm90IA0KcmVhbGx5IHBvaW50IHRvIGEgZ29vZCBsb2NhdGlvbi4NCg0KPiArCQkJYXN0X3dh aXRfZm9yX3ZyZXRyYWNlKGFzdCk7DQo+ICsJCQlhc3RfZHBfU2V0T25PZmYoY3J0Yy0+ZGV2 LCAxKTsNCj4gKwkJfQ0KPiArDQo+ICsJCWFzdF9jcnRjX2xvYWRfbHV0KGFzdCwgY3J0Yyk7 DQo+ICAgCQlicmVhazsNCj4gKwljYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToNCj4gKwlj YXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoNCj4gICAJY2FzZSBEUk1fTU9ERV9EUE1TX09G RjoNCj4gKwkJY2ggPSBtb2RlOw0KPiAgIAkJaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFT VF9UWF9EUDUwMSkNCj4gICAJCQlhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChjcnRjLT5k ZXYsIDApOw0KPiAgIAkJYnJlYWs7DQo+ICsNCj4gKwkJaWYgKGFzdC0+dHhfY2hpcF90eXBl ID09IEFTVF9UWF9BU1REUCkgew0KPiArCQkJYXN0X2RwX1NldE9uT2ZmKGNydGMtPmRldiwg MCk7DQo+ICsjaWZkZWYgRFBDb250cm9sUG93ZXINCj4gKwkJCWFzdF9kcF9Qb3dlck9uT2Zm KGNydGMtPmRldiwgQVNUX0RQX1BPV0VSX09GRik7DQo+ICsjZW5kaWYNCj4gKwkJfQ0KPiAr DQo+ICsJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fU0VRX1BPUlQsICAw eDAxLCAweGRmLCAweDIwKTsNCj4gKwkJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4YjYsIDB4ZmMsIGNoKTsNCj4gICAJfQ0KPiAgIH0NCj4gDQo+ IEBAIC0xMDQxLDYgKzEwNjUsNyBAQCBhc3RfY3J0Y19oZWxwZXJfYXRvbWljX2ZsdXNoKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gICAJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0 b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0KPiAgIAlzdHJ1Y3QgYXN0X2NydGNfc3RhdGUg KmFzdF9jcnRjX3N0YXRlID0gdG9fYXN0X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7DQo+ICAg CXN0cnVjdCBhc3RfY3J0Y19zdGF0ZSAqb2xkX2FzdF9jcnRjX3N0YXRlID0gdG9fYXN0X2Ny dGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOw0KPiArCXN0cnVjdCBhc3RfdmJpb3NfbW9kZV9p bmZvICp2Ymlvc19tb2RlX2luZm8gPSAmYXN0X2NydGNfc3RhdGUtPnZiaW9zX21vZGVfaW5m bzsNCj4gDQo+ICAgCS8qDQo+ICAgCSAqIFRoZSBnYW1tYSBMVVQgaGFzIHRvIGJlIHJlbG9h ZGVkIGFmdGVyIGNoYW5naW5nIHRoZSBwcmltYXJ5DQo+IEBAIC0xMDQ4LDYgKzEwNzMsMTAg QEAgYXN0X2NydGNfaGVscGVyX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs DQo+ICAgCSAqLw0KPiAgIAlpZiAob2xkX2FzdF9jcnRjX3N0YXRlLT5mb3JtYXQgIT0gYXN0 X2NydGNfc3RhdGUtPmZvcm1hdCkNCj4gICAJCWFzdF9jcnRjX2xvYWRfbHV0KGFzdCwgY3J0 Yyk7DQo+ICsNCj4gKwkvL1NldCBBc3BlZWQgRGlzcGxheS1Qb3J0DQo+ICsJaWYgKGFzdC0+ dHhfY2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkNCj4gKwkJYXN0X2RwX1NldE91dHB1dChj cnRjLCB2Ymlvc19tb2RlX2luZm8pOw0KPiAgIH0NCj4gDQo+ICAgc3RhdGljIHZvaWQNCj4g QEAgLTEyMjIsNiArMTI1MSwxNCBAQCBzdGF0aWMgaW50IGFzdF9nZXRfbW9kZXMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gICAJCQlhc3QtPmRwNTAxX21heGNsayA9 IGFzdF9nZXRfZHA1MDFfbWF4X2Nsayhjb25uZWN0b3ItPmRldik7DQo+ICAgCQllbHNlDQo+ ICAgCQkJa2ZyZWUoZWRpZCk7DQo+ICsJfSBlbHNlIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9 PSBBU1RfVFhfQVNURFApIHsNCj4gKwkJZWRpZCA9IGttYWxsb2MoMTI4LCBHRlBfS0VSTkVM KTsNCg0KVGhlcmUncyBFRElEX0xFTkdUSCBmb3IgdGhlIGNvbnN0YW50IG9mIDEyOC4NCg0K DQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+ICsJCWlmICghZWRpZCkNCj4gKwkJCXJldHVy biAtRU5PTUVNOw0KPiArDQo+ICsJCWZsYWdzID0gYXN0X2RwX3JlYWRfZWRpZChjb25uZWN0 b3ItPmRldiwgKHU4ICopZWRpZCk7DQo+ICsJCWlmICghZmxhZ3MpDQo+ICsJCQlrZnJlZShl ZGlkKTsNCj4gICAJfQ0KPiAgIAlpZiAoIWZsYWdzICYmIGFzdF9jb25uZWN0b3ItPmkyYykN Cj4gICAJCWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCAmYXN0X2Nvbm5lY3Rvci0+ aTJjLT5hZGFwdGVyKTsNCj4gQEAgLTEyNTYsNyArMTI5Myw3IEBAIHN0YXRpYyBlbnVtIGRy bV9tb2RlX3N0YXR1cyBhc3RfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLA0KPiANCj4gICAJCWlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3Qt PmNoaXAgPT0gQVNUMjIwMCkgfHwNCj4gICAJCSAgICAoYXN0LT5jaGlwID09IEFTVDIzMDAp IHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwNCj4gLQkJICAgIChhc3QtPmNoaXAgPT0g QVNUMjUwMCkpIHsNCj4gKwkJICAgIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+ Y2hpcCA9PSBBU1QyNjAwKSkgew0KPiAgIAkJCWlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTky MCkgJiYgKG1vZGUtPnZkaXNwbGF5ID09IDEwODApKQ0KPiAgIAkJCQlyZXR1cm4gTU9ERV9P SzsNCj4gDQo+IEBAIC0xMzc4LDcgKzE0MTUsOCBAQCBpbnQgYXN0X21vZGVfY29uZmlnX2lu aXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpDQo+ICAgCSAgICBhc3QtPmNoaXAgPT0gQVNU MjIwMCB8fA0KPiAgIAkgICAgYXN0LT5jaGlwID09IEFTVDIzMDAgfHwNCj4gICAJICAgIGFz dC0+Y2hpcCA9PSBBU1QyNDAwIHx8DQo+IC0JICAgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB7 DQo+ICsJICAgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwIHx8DQo+ICsJICAgIGFzdC0+Y2hpcCA9 PSBBU1QyNjAwKSB7DQo+ICAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7 DQo+ICAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSAyMDQ4Ow0KPiAgIAl9IGVs c2Ugew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IGluZGV4IGI1ZDkyZjY1Mi4uMGFh OWNmMGZiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IEBAIC0zNzksNyAr Mzc5LDkgQEAgdm9pZCBhc3RfcG9zdF9ncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4g ICAJYXN0X2VuYWJsZV9tbWlvKGRldik7DQo+ICAgCWFzdF9zZXRfZGVmX2V4dF9yZWcoZGV2 KTsNCj4gDQo+IC0JaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4g KwlpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApIHsNCj4gKwkJYXN0X2RwX2xhdW5jaChkZXYs IDEpOw0KPiArCX0gZWxzZSBpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkg ew0KPiAgIAkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKQ0KPiAgIAkJCWFzdF9wb3N0X2No aXBfMjUwMChkZXYpOw0KPiAgIAkJZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwg YXN0LT5jaGlwID09IEFTVDI0MDApDQo+IA0KPiBiYXNlLWNvbW1pdDogY2I2ODQ2ZmJiODNi NTc0Yzg1YzJhODAyMTFiNDAyYTYzNDdiNjBiMQ0KPiAtLQ0KPiAyLjI3LjANCj4gDQoNCi0t IA0KVGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNVU0Ug U29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KTWF4ZmVsZHN0ci4gNSwgOTA0MDkg TsO8cm5iZXJnLCBHZXJtYW55DQooSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQpHZXNjaMOk ZnRzZsO8aHJlcjogSXZvIFRvdGV2DQo= --------------ChmUMFzFUw8zx8ID6B4CDzzi-- --------------Z7WIt4j3mRoA2EeO3C0E6Ufz 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+AFAmHe7fwFAwAAAAAACgkQlh/E3EQov+D5 /BAAxTgugXBQQRtGJeE9G0w6AjRXqhMDx/jHWMZQgkwL+GkAHkn7E9K0s7KCD5cc2vmJFhbxhNkn J8zewbSq7IrS/yX39DKNQaNb+x6wfadKFv/t+FwGGIummJh4kuV/ko+c10eoYcF4uYt74K1PY7CN NTGMTqT1XweXRg4w4Hs3hzKu0gz4354z8c7otyRiRAJ+W2xm0+Tb37x9YnTBRd0AcYxndjpDRazK Q0Zid5h3aU/7M1BBAjK3o9C29EtyyaHYpLrTDjU8GosTO2TF/JyCtIZuAK4tkKxPIUDQSz5DBFxn L1LhcnDpGKzH1TSf3YP9T7MHeQ2DHDfgjyJE106QyTqEAr6Wi52GLm38VJw2xTny4uKuX72O7Oz7 /H3hhs1GBAAUsd7DBYZRXVvVQ9bx1I6GFQYTf2109rZrSc/g9ZZQ/4cKDpnL8T9hQoaKxRyykyZh Ep2OVIUexyG5Ivy5DxxPEQSCXeTKDvHB512GnR+tjkPhuorNSzAEJzxIMpTAtFfTeIMCkswojemS a3FAry75LvJzaukq6BAYyJfDL4Sh5RkQgXd4hmZ7T1KRsb4UQLvRAEvA/fM7LvHEoi2soznPjUW9 DtAg/FxW14TCM/p1u5nxvWRnMn+v3fQ/xVnWXaTFx6RP4TEOyktKiIjSBSlDM+5p3ffngG7KdnjS Z0k= =t06h -----END PGP SIGNATURE----- --------------Z7WIt4j3mRoA2EeO3C0E6Ufz--