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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7435CC433F5 for ; Fri, 3 Dec 2021 08:54:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379372AbhLCI6U (ORCPT ); Fri, 3 Dec 2021 03:58:20 -0500 Received: from smtp-out2.suse.de ([195.135.220.29]:46874 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379360AbhLCI6T (ORCPT ); Fri, 3 Dec 2021 03:58:19 -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 A47FE1FD3F; Fri, 3 Dec 2021 08:54:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1638521694; 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=XadmR0WYSRaicK/iAirtyvrwlIzqv1hcbttSwSX7p4I=; b=tjiEqCiXJk40/d1sJXsE/TVxB9a1uyZd03XxjiDI+Ff1lGNpKmrlhjbHgrrzgHNJmz6IDx oq7IFlYt+yNVCsmdrjLa8xhSxryl6CJhmrOmdV8Yyx3M17GsYKalJxp12MGJjrItxvPpHC dc6pNNRcNVd94aJdjsYLNY1eQuB9Mgg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1638521694; 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=XadmR0WYSRaicK/iAirtyvrwlIzqv1hcbttSwSX7p4I=; b=kOBdrjK/dW0UwqjBRHDjxj6WFB/BZAff4mtrahbiq5uUaYtIWuIVnwE4Zb9MEOvZcai5kM qRH8MiV2j3VzezBA== 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 63D6F13CF5; Fri, 3 Dec 2021 08:54:54 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id WWtTF17bqWGWZQAAMHmgww (envelope-from ); Fri, 03 Dec 2021 08:54:54 +0000 Message-ID: Date: Fri, 3 Dec 2021 09:54:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH] drm/ast: Create the driver for ASPEED proprietory Display-Port Content-Language: en-US To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Brandon Chen , Tommy Huang , Jenmin Yuan , "airlied@redhat.com" , Arc Sung , Luke Chen References: <20211122103617.3496-1-kuohsiang_chou@aspeedtech.com> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------vT0oqUran5UB5qEf0VvdakH2" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------vT0oqUran5UB5qEf0VvdakH2 Content-Type: multipart/mixed; boundary="------------f0YWMPtB88JVr01lq0btftmL"; protected-headers="v1" From: Thomas Zimmermann To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Brandon Chen , Tommy Huang , Jenmin Yuan , "airlied@redhat.com" , Arc Sung , Luke Chen Message-ID: Subject: Re: [PATCH] drm/ast: Create the driver for ASPEED proprietory Display-Port References: <20211122103617.3496-1-kuohsiang_chou@aspeedtech.com> In-Reply-To: --------------f0YWMPtB88JVr01lq0btftmL Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDMuMTIuMjEgdW0gMDc6MzEgc2NocmllYiBLdW8tSHNpYW5nIENob3U6DQo+ IEhpIFRob21hcywNCj4gDQo+IEhpIFRvbWFzLA0KPiBHb29kIGRheSENCj4gTWF5IEkgZ2V0 IHRoZSByZXZpZXcgc3RhdHVzLCBvciBpcyB0aGVyZSBhbnl0aGluZyBJIGNhbiBkbyB0byBp bXByb3ZlIGl0PyBUaGFua3MhDQo+IA0KPiBCZXN0IFJlZ2FyZHMsDQo+IAlLdW8tSHNpYW5n IENob3UNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEt1by1I c2lhbmcgQ2hvdQ0KPiBTZW50OiBNb25kYXksIE5vdmVtYmVyIDIyLCAyMDIxIDY6MzYgUE0N Cj4gVG86IHR6aW1tZXJtYW5uQHN1c2UuZGU7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogW1BBVENI XSBkcm0vYXN0OiBDcmVhdGUgdGhlIGRyaXZlciBmb3IgQVNQRUVEIHByb3ByaWV0b3J5IERp c3BsYXktUG9ydA0KPiANCj4gMS4gVGhlIE1DVSBGVyBjb250cm9saW5nIEFTUEVFRCBEUCBp cyBsb2FkZWQgYnkgQk1DIGJvb3QgbG9hZGVyLg0KPiAyLiBEcml2ZXIgc3RhcnRzIGFmdGVy IENSWzM6MV0gPT0gMTExYiB0aGF0IGluZGljYXRlcyBUeCBpcyBBU1REUCwNCj4gICAgIGFu ZCBDUkQxWzVdIGhhcyBiZWVuIGFzc2VydGVkIGJ5IEJNVkMgYm9vdCBsb2FkZXIuDQo+IDMu IEVESUQgaXMgcHJpb3JpdGl6ZWQgYnkgRFAgbW9uaXRvci4NCj4gNC4gRFAncyBFRElEIGhh cyBoaWdoIHByaW9yaXR5IHRvIGRlY2lkZSByZXNvbHV0aW9uIHN1cHBvcnRpbmcuDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBLdW9Ic2lhbmcgQ2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVk dGVjaC5jb20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUgICB8 ICAgMiArLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMgICB8IDI4NiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9kcnYuaCAgfCAgMTMgKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWlu LmMgfCAgIDcgKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgfCAgNTAg KysrKystDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIHwgICA0ICstDQo+ ICAgNiBmaWxlcyBjaGFuZ2VkLCAzNTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hc3QvTWFrZWZpbGUgaW5kZXggNDM4YTJkMDViLi45YmQwNzU2ZTAgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiBAQCAtMyw2ICszLDYgQEANCj4gICAjIE1ha2Vm aWxlIGZvciB0aGUgZHJtIGRldmljZSBkcml2ZXIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBz dXBwb3J0IGZvciB0aGUgICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJ KSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuDQo+ICAgDQo+IC1hc3QteSA6PSBhc3Rf ZHJ2Lm8gYXN0X21haW4ubyBhc3RfbW0ubyBhc3RfbW9kZS5vIGFzdF9wb3N0Lm8gYXN0X2Rw NTAxLm8NCj4gK2FzdC15IDo9IGFzdF9kcnYubyBhc3RfbWFpbi5vIGFzdF9tbS5vIGFzdF9t b2RlLm8gYXN0X3Bvc3Qubw0KPiArYXN0X2RwNTAxLm8gYXN0X2RwLm8NCj4gICANCj4gICBv YmotJChDT05GSUdfRFJNX0FTVCkgOj0gYXN0Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jIG5l dyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAwMDAwMC4uNTM3ZWFmNGZhDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPiBAQCAt MCwwICsxLDI4NiBAQA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAyMDEyIFJlZCBIYXQgSW5j Lg0KDQpZb3UgZGlkbid0IGV2ZW4gcHV0IGluIHlvdXIgY29tcGFueSdzIGNvcHlyaWdodC4g U28gd2hhdCBhbSBJIHN1cHBvc2VkIA0KdG8gZG8gYWJvdXQgdGhpcyBwYXRjaD8NCg0KRm9y IHRoZSByZXN0IG9mIHRoZSBjb2RlLCBpdCdzIGp1c3QgYm9sdGVkIG9udG8gdGhlIGV4aXN0 aW5nIGNvbm5lY3Rvci4gDQpXaGljaCBhbHJlYWR5IGhhcyBiZWVuIGhhY2tlZCB0byBzdXBw b3J0IGFuIERQIHBvcnQuIEkgYmVnYW4gcmVkZXNpZ25pbmcgDQp0aGUgd2hvbGUgdGhpbmcg dG8gc3VwcG9ydCBlYWNoIGNvbm5lY3RvciBpbmRpdmlkdWFsbHkuIEknbSBub3QgZ29pbmcg dG8gDQphZGQgbW9yZSBoYWNrcyB0byBpdC4NCg0KQmVzdCByZWdhcmRzDQpUaG9tYXMNCg0K PiArICoNCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uDQo+ICtvYnRhaW5pbmcgYQ0KPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KPiAr ICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZw0KPiArICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KPiArICogZGlzdHJpYnV0 ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0bw0KPiArICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0DQo+ICt0bw0KPiArICogdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KPiArRVhQUkVTUyBPUg0KPiAr ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRg0KPiArTUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UDQo+ICtTSEFM TA0KPiArICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQ UExJRVJTIEJFIExJQUJMRSBGT1INCj4gK0FOWSBDTEFJTSwNCj4gKyAqIERBTUFHRVMgT1Ig T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VA0KPiArT1INCj4gKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRQ0KPiArT1IgVEhFDQo+ICsgKiBVU0UgT1Ig T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICoNCj4gKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlDQo+ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbA0KPiArcG9ydGlvbnMNCj4gKyAqIG9mIHRoZSBTb2Z0 d2FyZS4NCj4gKyAqDQo+ICsgKi8NCj4gKy8qDQo+ICsgKiBBdXRob3JzOiBLdW9Ic2lhbmcg Q2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20+ICAqLw0KPiArDQo+ICsjaW5j bHVkZSA8bGludXgvZmlybXdhcmUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0K PiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4NCj4gKyNpbmNsdWRlICJhc3RfZHJ2Lmgi DQo+ICsNCj4gK2Jvb2wgYXN0X2RwX3JlYWRfZWRpZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1OCAqZWRpZGRhdGEpIHsNCj4gKwlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2Fz dF9wcml2YXRlKGRldik7DQo+ICsJdTggaSA9IDAsIGogPSAwOw0KPiArDQo+ICsjaWZkZWYg RFBDb250cm9sUG93ZXINCj4gKwl1OCBiRFBTdGF0ZV9DaGFuZ2UgPSBmYWxzZTsNCj4gKw0K PiArCS8vIENoZWNrIERQIHBvd2VyIG9mZiBvciBub3QuDQo+ICsJaWYgKGFzdC0+QVNURFBf U3RhdGUgJiAweDEwKSB7DQo+ICsJCS8vIERQIHBvd2VyIG9uDQo+ICsJCWFzdF9kcF9Qb3dl ck9uT2ZmKGRldiwgMSk7DQo+ICsJCWJEUFN0YXRlX0NoYW5nZSA9IHRydWU7DQo+ICsJfQ0K PiArI2VuZGlmDQo+ICsNCj4gKwkvKg0KPiArCSAqIENSRDFbYjVdOiBEUCBNQ1UgRlcgaXMg ZXhlY3V0aW5nDQo+ICsJICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiArCSAqIENS REZbYjBdOiBEUCBIUEQNCj4gKwkgKiBDUkU1W2IwXTogSG9zdCByZWFkaW5nIEVESUQgcHJv Y2VzcyBpcyBkb25lDQo+ICsJICovDQo+ICsJaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsIDB4MjApICYmDQo+ICsJCWFzdF9nZXRf aW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERDLCAweDAxKSAmJg0K PiArCQlhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhE RiwgMHgwMSkgJiYNCj4gKwkJYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4RTUsIDB4MDEpKSkgeyAjaWZkZWYNCj4gK0RQQ29udHJvbFBvd2VyDQo+ ICsJCS8vIFNldCBiYWNrIHBvd2VyIG9mZg0KPiArCQlpZiAoYkRQU3RhdGVfQ2hhbmdlKQ0K PiArCQkJYXN0X2RwX1Bvd2VyT25PZmYoZGV2LCAwKTsNCj4gKyNlbmRpZg0KPiArCQlyZXR1 cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsIDB4MDAsIDB4MDApOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IDMyOyBpKyspIHsNCj4gKwkJLyoNCj4gKwkJICogQ1JFNFs3OjBdOiBSZWFk LVBvaW50ZXIgZm9yIEVESUQgKFVuaXQ6IDRieXRlcyk7IHZhbGlkIHJhbmdlOiAwfjY0DQo+ ICsJCSAqLw0KPiArCQlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhFNCwgMHgwMCwgKHU4KSBpKTsNCj4gKwkJaiA9IDA7DQo+ICsNCj4gKwkJLyoN Cj4gKwkJICogQ1JEN1tiMF06IHZhbGlkIGZsYWcgZm9yIEVESUQNCj4gKwkJICogQ1JENlti MF06IG1pcnJvciByZWFkIHBvaW50ZXIgZm9yIEVESUQNCj4gKwkJICovDQo+ICsJCXdoaWxl ICgoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDcs IDB4MDEpICE9IDB4MDEpIHx8DQo+ICsJCQkoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RDYsIDB4RkYpICE9IGkpKSB7DQo+ICsJCQltZGVsYXko aisxKTsNCj4gKw0KPiArCQkJaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4RDEsIDB4MjApICYmDQo+ICsJCQkJYXN0X2dldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REMsIDB4MDEpICYmDQo+ICsJCQkJ YXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REYsIDB4 MDEpKSkgew0KPiArCQkJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEU1LCAweDAwLCAweDAxKTsNCj4gKwkJCQlyZXR1cm4gZmFsc2U7DQo+ICsJ CQl9DQo+ICsNCj4gKwkJCWorKzsNCj4gKwkJCWlmIChqID4gMjAwKSB7DQo+ICsJCQkJYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsIDB4MDAs IDB4MDEpOw0KPiArCQkJCXJldHVybiBmYWxzZTsNCj4gKwkJCX0NCj4gKwkJfQ0KPiArDQo+ ICsJCSooZWRpZGRhdGEpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4RDgsIDB4RkYpOw0KPiArCQkqKGVkaWRkYXRhICsgMSkgPSBhc3RfZ2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEOSwgMHhGRik7DQo+ ICsJCSooZWRpZGRhdGEgKyAyKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1Rf SU9fQ1JUQ19QT1JULCAweERBLCAweEZGKTsNCj4gKwkJKihlZGlkZGF0YSArIDMpID0gYXN0 X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REIsDQo+ICsw eEZGKTsNCj4gKw0KPiArCQlpZiAoaSA9PSAzMSkgew0KPiArCQkJKihlZGlkZGF0YSArIDMp ID0gKihlZGlkZGF0YSArIDMpICsgKihlZGlkZGF0YSArIDIpOw0KPiArCQkJKihlZGlkZGF0 YSArIDIpID0gMDsNCj4gKwkJfQ0KPiArDQo+ICsJCWVkaWRkYXRhICs9IDQ7DQo+ICsJfQ0K PiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQs IDB4RTUsIDB4MDAsIDB4MDEpOw0KPiArDQo+ICsjaWZkZWYgRFBDb250cm9sUG93ZXINCj4g KwkvLyBTZXQgYmFjayBwb3dlciBvZmYNCj4gKwlpZiAoYkRQU3RhdGVfQ2hhbmdlKQ0KPiAr CQlhc3RfZHBfUG93ZXJPbk9mZihkZXYsIDApOw0KPiArI2VuZGlmDQo+ICsNCj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIExhdW5jaCBBc3BlZWQgRFANCj4g KyAqLw0KPiArYm9vbCBhc3RfZHBfbGF1bmNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4 IGJQb3dlcikgew0KPiArCXUzMiBpID0gMCwgaiA9IDAsIFdhaXRDb3VudCA9IDE7DQo+ICsJ dTggYkRQVFggPSAwOw0KPiArCXU4IGJEUEV4ZWN1dGUgPSAxOw0KPiArDQo+ICsJc3RydWN0 IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiArCS8vIFMzIGNv bWUgYmFjaywgbmVlZCBtb3JlIHRpbWUgdG8gd2FpdCBCTUMgcmVhZHkuDQo+ICsJaWYgKGJQ b3dlcikNCj4gKwkJV2FpdENvdW50ID0gMzAwOw0KPiArDQo+ICsJLy8gRmlsbA0KPiArCWFz dC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX05PTkU7DQo+ICsNCj4gKwkvLyBXYWl0IHRvdGFs IGNvdW50IGJ5IGRpZmZlcmVudCBjb25kaXRpb24uDQo+ICsJLy8gVGhpcyBpcyBhIHRlbXAg c29sdXRpb24gZm9yIERQIGNoZWNrDQo+ICsJZm9yIChqID0gMDsgaiA8IFdhaXRDb3VudDsg aisrKSB7DQo+ICsJCWJEUFRYID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4RDEsIDB4MEUpOw0KPiArDQo+ICsJCWlmIChiRFBUWCkNCj4gKwkJ CWJyZWFrOw0KPiArDQo+ICsJCW1zbGVlcCgxMDApOw0KPiArCX0NCj4gKw0KPiArCS8vIDB4 RSA6IEFTVERQIHdpdGggRFBNQ1UgRlcgaGFuZGxpbmcNCj4gKwlpZiAoYkRQVFggPT0gMHgw RSkgew0KPiArCQkvLyBXYWl0IG9uZSBzZWNvbmQgdGhlbiB0aW1lb3V0Lg0KPiArCQlpID0g MDsNCj4gKw0KPiArCQl3aGlsZSAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4RDEsIDB4MjApICE9IDB4MjApIHsNCj4gKwkJCWkrKzsNCj4gKwkJ CS8vIHdhaXQgMTAwIG1zDQo+ICsJCQltc2xlZXAoMTAwKTsNCj4gKw0KPiArCQkJaWYgKGkg Pj0gMTApIHsNCj4gKwkJCQkvLyBEUCB3b3VsZCBub3QgYmUgcmVhZHkuDQo+ICsJCQkJYkRQ RXhlY3V0ZSA9IDA7DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCX07DQo+ICsNCj4g KwkJaWYgKGJEUEV4ZWN1dGUpDQo+ICsJCQlhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9B U1REUDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArI2lm ZGVmIERQQ29udHJvbFBvd2VyDQo+ICsNCj4gK3ZvaWQgYXN0X2RwX1Bvd2VyT25PZmYoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTggTW9kZSkgew0KPiArCXN0cnVjdCBhc3RfcHJpdmF0 ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4gKwkvLyBSZWFkIGFuZCBUdXJuIG9m ZiBEUCBQSFkgc2xlZXANCj4gKwl1OCBiRTMgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMywgMHgwRik7DQo+ICsNCj4gKwkvLyBUdXJuIG9u IERQIFBIWSBzbGVlcA0KPiArCWlmICghTW9kZSkNCj4gKwkJYkUzIHw9IDB4MTA7DQo+ICsN Cj4gKwlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhF MywgMHgwMCwgYkUzKTsgLy8gRFANCj4gK1Bvd2VyIG9uL29mZg0KPiArDQo+ICsJLy8gU2F2 ZSBBU1REUCBwb3dlciBzdGF0ZQ0KPiArCWFzdC0+QVNURFBfU3RhdGUgPSBiRTM7DQo+ICt9 DQo+ICsNCj4gKyNlbmRpZg0KPiArDQo+ICt2b2lkIGFzdF9kcF9TZXRPbk9mZihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1OCBNb2RlKSB7DQo+ICsJc3RydWN0IGFzdF9wcml2YXRlICph c3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTMsIDB4MDAsIE1vZGUpOyAvLw0KPiAr dmlkZW8gb24vb2ZmDQo+ICsNCj4gKwkvLyBTYXZlIEFTVERQIHBvd2VyIHN0YXRlDQo+ICsJ YXN0LT5BU1REUF9TdGF0ZSA9IE1vZGU7DQo+ICsNCj4gKyAgICAvLyBJZiBEUCBwbHVnIGlu IGFuZCBsaW5rIHN1Y2Nlc3NmdWwgdGhlbiBjaGVjayB2aWRlbyBvbiAvIG9mZiBzdGF0dXMN Cj4gKwlpZiAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQs IDB4REMsIDB4MDEpICYmDQo+ICsJCWFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1Rf SU9fQ1JUQ19QT1JULCAweERGLCAweDAxKSkgew0KPiArCQlNb2RlIDw8PSA0Ow0KPiArCQl3 aGlsZSAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 REYsIDB4MTApICE9IE1vZGUpIHsNCj4gKwkJCS8vIHdhaXQgMSBtcw0KPiArCQkJbWRlbGF5 KDEpOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICt2b2lkIGFzdF9kcF9TZXRPdXRw dXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgYXN0X3ZiaW9zX21vZGVfaW5mbw0K PiArKnZiaW9zX21vZGUpIHsNCj4gKwlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2Fz dF9wcml2YXRlKGNydGMtPmRldik7DQo+ICsNCj4gKwl1MzIgdWxSZWZyZXNoUmF0ZUluZGV4 Ow0KPiArCXU4IE1vZGVJZHg7DQo+ICsNCj4gKwl1bFJlZnJlc2hSYXRlSW5kZXggPSB2Ymlv c19tb2RlLT5lbmhfdGFibGUtPnJlZnJlc2hfcmF0ZV9pbmRleCAtIDE7DQo+ICsNCj4gKwlz d2l0Y2ggKGNydGMtPm1vZGUuY3J0Y19oZGlzcGxheSkgew0KPiArCWNhc2UgMzIwOg0KPiAr CQlNb2RlSWR4ID0gMHgxMTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSA0MDA6DQo+ICsJCU1v ZGVJZHggPSAweDEyOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDUxMjoNCj4gKwkJTW9kZUlk eCA9IDB4MTM7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgNjQwOg0KPiArCQlNb2RlSWR4ID0g KDB4MDAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgODAwOg0KPiArCQlNb2RlSWR4ID0gKDB4MDQgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRl eCk7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMTAyNDoNCj4gKwkJTW9kZUlkeCA9ICgweDA5 ICsgKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDEx NTI6DQo+ICsJCU1vZGVJZHggPSAweDFGOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDEyODA6 DQo+ICsJCWlmIChjcnRjLT5tb2RlLmNydGNfdmRpc3BsYXkgPT0gODAwKQ0KPiArCQkJTW9k ZUlkeCA9ICgweDE3IC0gKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOwkvLyBGb3IgUkIvTm9u LVJCDQo+ICsJCWVsc2UJCS8vIDEwMjQNCj4gKwkJCU1vZGVJZHggPSAoMHgwRCArICh1OCkg dWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxMzYwOg0KPiAr CWNhc2UgMTM2NjoNCj4gKwkJTW9kZUlkeCA9IDB4MUU7DQo+ICsJCWJyZWFrOw0KPiArCWNh c2UgMTQ0MDoNCj4gKwkJTW9kZUlkeCA9ICgweDE5IC0gKHU4KSB1bFJlZnJlc2hSYXRlSW5k ZXgpOwkvLyBGb3IgUkIvTm9uLVJCDQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMTYwMDoNCj4g KwkJaWYgKGNydGMtPm1vZGUuY3J0Y192ZGlzcGxheSA9PSA5MDApDQo+ICsJCQlNb2RlSWR4 ID0gKDB4MUQgLSAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7CS8vIEZvciBSQi9Ob24tUkIN Cj4gKwkJZWxzZQkJLy8xMjAwDQo+ICsJCQlNb2RlSWR4ID0gMHgxMDsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSAxNjgwOg0KPiArCQlNb2RlSWR4ID0gKDB4MUIgLSAodTgpIHVsUmVmcmVz aFJhdGVJbmRleCk7CS8vIEZvciBSQi9Ob24tUkINCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAx OTIwOg0KPiArCQlpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDEwODApDQo+ICsJ CQlNb2RlSWR4ID0gMHgxNTsNCj4gKwkJZWxzZQkJLy8xMjAwDQo+ICsJCQlNb2RlSWR4ID0g MHgxNDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJcmV0dXJuOw0KPiArCX0N Cj4gKw0KPiArCS8qDQo+ICsJICogQ1JFMFs3OjBdOiBNSVNDMCAoKDB4MDA6IDE4LWJwcCkg b3IgKDB4MjA6IDI0LWJwcCkNCj4gKwkgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAw eDAwKQ0KPiArCSAqIENSRTJbNzowXTogdmlkZW8gZm9ybWF0IGluZGV4ICgweDAwIH4gMHgy MCBvciAweDQwIH4gMHg1MCkNCj4gKwkgKi8NCj4gKwlhc3Rfc2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMCwgMHgwMCwgMHgyMCk7DQo+ICsJYXN0X3Nl dF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTEsIDB4MDAsIDB4 MDApOw0KPiArCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweEUyLCAweDAwLCBNb2RlSWR4KTsgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBpbmRl eCAyY2ZjZTdkYzkuLmU1NmQ1ZDU3YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJ2LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgN Cj4gQEAgLTcxLDYgKzcxLDcgQEAgZW51bSBhc3RfdHhfY2hpcCB7DQo+ICAgCUFTVF9UWF9T SUwxNjQsDQo+ICAgCUFTVF9UWF9JVEU2NjEyMSwNCj4gICAJQVNUX1RYX0RQNTAxLA0KPiAr CUFTVF9UWF9BU1REUCwNCj4gICB9Ow0KPiAgIA0KPiAgICNkZWZpbmUgQVNUX0RSQU1fNTEy TXgxNiAwDQo+IEBAIC0xNzUsNiArMTc2LDkgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsNCj4g ICAJdTggZHA1MDFfbWF4Y2xrOw0KPiAgIAl1OCAqZHA1MDFfZndfYWRkcjsNCj4gICAJY29u c3Qgc3RydWN0IGZpcm13YXJlICpkcDUwMV9mdzsJLyogZHA1MDEgZncgKi8NCj4gKw0KPiAr ICAgIC8vIEFTVERQDQo+ICsJdTggQVNURFBfU3RhdGU7DQo+ICAgfTsNCj4gICANCj4gICBz dGF0aWMgaW5saW5lIHN0cnVjdCBhc3RfcHJpdmF0ZSAqdG9fYXN0X3ByaXZhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikgQEAgLTM1Niw1ICszNjAsMTQgQEAgYm9vbCBhc3RfYmFja3Vw X2Z3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICphZGRyLCB1MzIgc2l6ZSk7ICBib29s IGFzdF9kcDUwMV9yZWFkX2VkaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggKmVkaWRk YXRhKTsNCj4gICB1OCBhc3RfZ2V0X2RwNTAxX21heF9jbGsoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7ICB2b2lkIGFzdF9pbml0XzNyZHR4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0K PiArLyogYXNwZWVkIERQICovDQo+ICsjZGVmaW5lIERQQ29udHJvbFBvd2VyDQo+ICtib29s IGFzdF9kcF9yZWFkX2VkaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggKmVkaWRkYXRh KTsgYm9vbA0KPiArYXN0X2RwX2xhdW5jaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBi UG93ZXIpOyAjaWZkZWYgRFBDb250cm9sUG93ZXINCj4gK3ZvaWQgYXN0X2RwX1Bvd2VyT25P ZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggTW9kZSk7ICNlbmRpZiB2b2lkDQo+ICth c3RfZHBfU2V0T25PZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggTW9kZSk7IHZvaWQN Cj4gK2FzdF9kcF9TZXRPdXRwdXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgYXN0 X3ZiaW9zX21vZGVfaW5mbw0KPiArKnZiaW9zX21vZGUpOw0KPiAgIA0KPiAgICNlbmRpZg0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIGluZGV4IDc5YTM2MTg2Ny4uZGU1ZDY5ODg4IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IEBAIC0yMTIsNyArMjEyLDcgQEAg c3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9v bCAqbmVlZF9wb3N0KQ0KPiAgIAkJfQ0KPiAgIAkJYnJlYWs7DQo+ICAgCX0NCj4gLQ0KPiAr CWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7DQo+ICAgCS8qIENoZWNrIDNyZCBU eCBvcHRpb24gKGRpZ2l0YWwgb3V0cHV0IGFmYWlrKSAqLw0KPiAgIAlhc3QtPnR4X2NoaXBf dHlwZSA9IEFTVF9UWF9OT05FOw0KPiAgIA0KPiBAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRp YyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKm5l ZWRfcG9zdCkNCj4gICAJCQlhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9TSUwxNjQ7DQo+ ICAgCX0NCj4gICANCj4gLQlpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5j aGlwID09IEFTVDI0MDApKSB7DQo+ICsJaWYgKChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwg KGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8fCAoYXN0LT5jaGlwID09DQo+ICtBU1QyNTAwKSkg ew0KPiAgIAkJLyoNCj4gICAJCSAqIE9uIEFTVDIzMDAgYW5kIDI0MDAsIGxvb2sgdGhlIGNv bmZpZ3VyYXRpb24gc2V0IGJ5IHRoZSBTb0MgaW4NCj4gICAJCSAqIHRoZSBTT0Mgc2NyYXRj aCByZWdpc3RlciAjMSBiaXRzIDExOjggKGludGVyZXN0aW5nbHkgbWFya2VkIEBAIC0yNTQs NyArMjU0LDggQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQ0KPiAgIAkJY2FzZSAweDBjOg0KPiAgIAkJCWFz dC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX0RQNTAxOw0KPiAgIAkJfQ0KPiAtCX0NCj4gKwl9 IGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKQ0KPiArCQlhc3RfZHBfbGF1bmNoKCZh c3QtPmJhc2UsIDApOw0KPiAgIA0KPiAgIAkvKiBQcmludCBzdHVmZiBmb3IgZGlhZ25vc3Rp YyBwdXJwb3NlcyAqLw0KPiAgIAlzd2l0Y2goYXN0LT50eF9jaGlwX3R5cGUpIHsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X21vZGUuYyBpbmRleCA2YmZhZWZhMDEuLmQ3MzQ3ZDUxMCAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPiBAQCAtOTg3LDIwICs5ODcsNDQgQEAgc3Rh dGljIGludCBhc3RfY3Vyc29yX3BsYW5lX2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3Qp ICBzdGF0aWMgdm9pZCBhc3RfY3J0Y19kcG1zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50 IG1vZGUpICB7DQo+ICAgCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZh dGUoY3J0Yy0+ZGV2KTsNCj4gKwl1OCBjaCA9IDB4MDM7DQo+ICAgDQo+ICAgCS8qIFRPRE86 IE1heWJlIGNvbnRyb2wgZGlzcGxheSBzaWduYWwgZ2VuZXJhdGlvbiB3aXRoDQo+ICAgCSAq ICAgICAgIFN5bmMgRW5hYmxlIChiaXQgQ1IxNy43KS4NCj4gICAJICovDQo+ICAgCXN3aXRj aCAobW9kZSkgew0KPiAgIAljYXNlIERSTV9NT0RFX0RQTVNfT046DQo+IC0JY2FzZSBEUk1f TU9ERV9EUE1TX1NUQU5EQlk6DQo+IC0JY2FzZSBEUk1fTU9ERV9EUE1TX1NVU1BFTkQ6DQo+ ICsJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fU0VRX1BPUlQsICAweDAx LCAweGRmLCAwKTsNCj4gKwkJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4YjYsIDB4ZmMsIDApOw0KPiAgIAkJaWYgKGFzdC0+dHhfY2hpcF90eXBl ID09IEFTVF9UWF9EUDUwMSkNCj4gICAJCQlhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChj cnRjLT5kZXYsIDEpOw0KPiArDQo+ICsJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1Rf VFhfQVNURFApIHsgI2lmZGVmIERQQ29udHJvbFBvd2VyDQo+ICsJCQlhc3RfZHBfUG93ZXJP bk9mZihjcnRjLT5kZXYsIDEpOw0KPiArI2VuZGlmDQo+ICsJCQlhc3Rfd2FpdF9mb3JfdnJl dHJhY2UoYXN0KTsNCj4gKwkJCWFzdF9kcF9TZXRPbk9mZihjcnRjLT5kZXYsIDEpOw0KPiAr CQl9DQo+ICsNCj4gKwkJYXN0X2NydGNfbG9hZF9sdXQoYXN0LCBjcnRjKTsNCj4gICAJCWJy ZWFrOw0KPiArCWNhc2UgRFJNX01PREVfRFBNU19TVEFOREJZOg0KPiArCWNhc2UgRFJNX01P REVfRFBNU19TVVNQRU5EOg0KPiAgIAljYXNlIERSTV9NT0RFX0RQTVNfT0ZGOg0KPiArCQlj aCA9IG1vZGU7DQo+ICAgCQlpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0RQNTAx KQ0KPiAgIAkJCWFzdF9zZXRfZHA1MDFfdmlkZW9fb3V0cHV0KGNydGMtPmRldiwgMCk7DQo+ ICsNCj4gKwkJaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkgew0KPiAr CQkJYXN0X2RwX1NldE9uT2ZmKGNydGMtPmRldiwgMCk7DQo+ICsjaWZkZWYgRFBDb250cm9s UG93ZXINCj4gKwkJCWFzdF9kcF9Qb3dlck9uT2ZmKGNydGMtPmRldiwgMCk7DQo+ICsjZW5k aWYNCj4gKwkJfQ0KPiArDQo+ICsJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1Rf SU9fU0VRX1BPUlQsICAweDAxLCAweGRmLCAweDIwKTsNCj4gKwkJYXN0X3NldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YjYsIDB4ZmMsIGNoKTsNCj4gICAJ CWJyZWFrOw0KPiAgIAl9DQo+ICAgfQ0KPiBAQCAtMTA0NCw2ICsxMDY4LDggQEAgYXN0X2Ny dGNfaGVscGVyX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQo+ICAgCXN0 cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4g ICAJc3RydWN0IGFzdF9jcnRjX3N0YXRlICphc3RfY3J0Y19zdGF0ZSA9IHRvX2FzdF9jcnRj X3N0YXRlKGNydGNfc3RhdGUpOw0KPiAgIAlzdHJ1Y3QgYXN0X2NydGNfc3RhdGUgKm9sZF9h c3RfY3J0Y19zdGF0ZSA9IHRvX2FzdF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsNCj4g K3N0cnVjdCBhc3RfdmJpb3NfbW9kZV9pbmZvICp2Ymlvc19tb2RlX2luZm8gPQ0KPiArCQkm YXN0X2NydGNfc3RhdGUtPnZiaW9zX21vZGVfaW5mbzsNCj4gICANCj4gICAJLyoNCj4gICAJ ICogVGhlIGdhbW1hIExVVCBoYXMgdG8gYmUgcmVsb2FkZWQgYWZ0ZXIgY2hhbmdpbmcgdGhl IHByaW1hcnkgQEAgLTEwNTEsNiArMTA3NywxMCBAQCBhc3RfY3J0Y19oZWxwZXJfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gICAJICovDQo+ICAgCWlmIChvbGRf YXN0X2NydGNfc3RhdGUtPmZvcm1hdCAhPSBhc3RfY3J0Y19zdGF0ZS0+Zm9ybWF0KQ0KPiAg IAkJYXN0X2NydGNfbG9hZF9sdXQoYXN0LCBjcnRjKTsNCj4gKw0KPiArCS8vU2V0IEFzcGVl ZCBEaXNwbGF5LVBvcnQNCj4gKwlpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0FT VERQKQ0KPiArCQlhc3RfZHBfU2V0T3V0cHV0KGNydGMsIHZiaW9zX21vZGVfaW5mbyk7DQo+ ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkDQo+IEBAIC0xMjI1LDcgKzEyNTUsMTYgQEAg c3RhdGljIGludCBhc3RfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpDQo+ICAgCQkJYXN0LT5kcDUwMV9tYXhjbGsgPSBhc3RfZ2V0X2RwNTAxX21heF9jbGso Y29ubmVjdG9yLT5kZXYpOw0KPiAgIAkJZWxzZQ0KPiAgIAkJCWtmcmVlKGVkaWQpOw0KPiAr CX0gZWxzZSBpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0FTVERQKSB7DQo+ICsJ CWVkaWQgPSBrbWFsbG9jKDEyOCwgR0ZQX0tFUk5FTCk7DQo+ICsJCWlmICghZWRpZCkNCj4g KwkJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJCWZsYWdzID0gYXN0X2RwX3JlYWRfZWRp ZChjb25uZWN0b3ItPmRldiwgKHU4ICopZWRpZCk7DQo+ICsJCWlmICghZmxhZ3MpDQo+ICsJ CQlrZnJlZShlZGlkKTsNCj4gICAJfQ0KPiArDQo+ICAgCWlmICghZmxhZ3MpDQo+ICAgCQll ZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgJmFzdF9jb25uZWN0b3ItPmkyYy0+YWRh cHRlcik7DQo+ICAgCWlmIChlZGlkKSB7DQo+IEBAIC0xMjU2LDEwICsxMjk1LDEyIEBAIHN0 YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBhc3RfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLA0KPiAgIAkJCXJldHVybiBNT0RFX09LOw0KPiAgIAkJaWYg KChtb2RlLT5oZGlzcGxheSA9PSAxNjAwKSAmJiAobW9kZS0+dmRpc3BsYXkgPT0gOTAwKSkN Cj4gICAJCQlyZXR1cm4gTU9ERV9PSzsNCj4gKwkJaWYgKChtb2RlLT5oZGlzcGxheSA9PSAx MTUyKSAmJiAobW9kZS0+dmRpc3BsYXkgPT0gODY0KSkNCj4gKwkJCXJldHVybiBNT0RFX09L Ow0KPiAgIA0KPiAgIAkJaWYgKChhc3QtPmNoaXAgPT0gQVNUMjEwMCkgfHwgKGFzdC0+Y2hp cCA9PSBBU1QyMjAwKSB8fA0KPiAgIAkJICAgIChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwg KGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8fA0KPiAtCQkgICAgKGFzdC0+Y2hpcCA9PSBBU1Qy NTAwKSkgew0KPiArCQkgICAgKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlw ID09IEFTVDI2MDApKSB7DQo+ICAgCQkJaWYgKChtb2RlLT5oZGlzcGxheSA9PSAxOTIwKSAm JiAobW9kZS0+dmRpc3BsYXkgPT0gMTA4MCkpDQo+ICAgCQkJCXJldHVybiBNT0RFX09LOw0K PiAgIA0KPiBAQCAtMTQwMCw3ICsxNDQxLDggQEAgaW50IGFzdF9tb2RlX2NvbmZpZ19pbml0 KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQ0KPiAgIAkgICAgYXN0LT5jaGlwID09IEFTVDIy MDAgfHwNCj4gICAJICAgIGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8DQo+ICAgCSAgICBhc3Qt PmNoaXAgPT0gQVNUMjQwMCB8fA0KPiAtCSAgICBhc3QtPmNoaXAgPT0gQVNUMjUwMCkgew0K PiArCSAgICBhc3QtPmNoaXAgPT0gQVNUMjUwMCB8fA0KPiArCSAgICBhc3QtPmNoaXAgPT0g QVNUMjYwMCkgew0KPiAgIAkJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAxOTIwOw0K PiAgIAkJZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0ODsNCj4gICAJfSBlbHNl IHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyBpbmRleCBiNWQ5MmY2NTIuLjBhYTljZjBm YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPiBAQCAtMzc5LDcgKzM3OSw5 IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ICAgCWFz dF9lbmFibGVfbW1pbyhkZXYpOw0KPiAgIAlhc3Rfc2V0X2RlZl9leHRfcmVnKGRldik7DQo+ ICAgDQo+IC0JaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4gKwlp ZiAoYXN0LT5jaGlwID09IEFTVDI2MDApIHsNCj4gKwkJYXN0X2RwX2xhdW5jaChkZXYsIDEp Ow0KPiArCX0gZWxzZSBpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgew0K PiAgIAkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKQ0KPiAgIAkJCWFzdF9wb3N0X2NoaXBf MjUwMChkZXYpOw0KPiAgIAkJZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0 LT5jaGlwID09IEFTVDI0MDApDQo+IC0tDQo+IDIuMjcuMA0KPiANCg0KLS0gDQpUaG9tYXMg WmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0d2FyZSBT b2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcs IEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCkdlc2Now6RmdHNmw7xocmVy OiBJdm8gVG90ZXYNCg== --------------f0YWMPtB88JVr01lq0btftmL-- --------------vT0oqUran5UB5qEf0VvdakH2 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+AFAmGp210FAwAAAAAACgkQlh/E3EQov+Bj mRAAu2JDa85FiAeW8EguoUW+GF82vaqhg8ZURu7W9EOqcHRgeVGyMtAXKNBpc7ZAaL9Lv2VIYOW7 YTZ8JwiNSgnkbfv5x1IEr/PZQ1UPEa2QadvXs5wOn5N3EFiHC7JMxbRcX5q9l8HMcaH2t8zbLB7B wR/E1tVoRl9XMgIXcCkAWBstENklkJnlRulvsZzKPC8thINz5/LUHJnPchNrERJaDqfU5zhnes82 0XVhCQtJ/gmpEOPHEmrdSHntyj4QE0MdPYLODua/GSMPVm2fvObB+S/NXfrmTmUtVeOUfsW/YLe1 zTNU22sm7ImnW+dlvkPK6zlujQY3HEs5GKVusLMr1xb+9l1U0MZ1gPGjPEuz60IE+IjkmTjrNvUD V1563vw9URmUK6X3T5sCMGILAzHoc0xGalV4O6losBfnWvJvJwTeoCy20MlYSPfK4E89cHjW7ier R7au7zsr+t5SA6iyA4FpLwKHtkd4GqgngziYs9M26GqubqJ+PVStA15Qf+QsSM8AdvOpnN+jchGh vubheUqrBSp8xpsqtndHN8Y0/tqgnHrm6Ynfw90XIoTTsiAnI02eckdxVN3AmUIgvYNorTN9MAqS d5vEu+A25CRfbGOwr9S3/yMqXPiKXPVS3JIHTPMKMwqZgL++rBOY8IVVo5sM3b05iohIYhefTSPQ PDw= =66LJ -----END PGP SIGNATURE----- --------------vT0oqUran5UB5qEf0VvdakH2--