Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp929434iob; Wed, 4 May 2022 10:53:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwP5g4NEgJnAfe1RgOLwppy0wX8zriJin62WLUwN06yoTT3cWHcIxx0gb6Sp/iA+lC2XKcK X-Received: by 2002:a05:6a00:1695:b0:4f7:decc:506b with SMTP id k21-20020a056a00169500b004f7decc506bmr21878419pfc.7.1651686781108; Wed, 04 May 2022 10:53:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651686781; cv=none; d=google.com; s=arc-20160816; b=Wom0jo0ODRu1V7MCn20pF6DAlQKoTB2f71NUQ69aUUZuKncH+NrV99ALk0NV1Eunqg Du1jqjruVhXPJnjtIeDKUXelP+YS5UI5bPQmnfpSuAmW4RoEqiWhQ27I7AKXwaX/niFY qrg5HY9B8SavQuDAm69LJAGslm81O6T7nrqq1fZacZ5jLARplX4sDD9BLDnRPiVxQqvx HyZKBZmLvb+86gbIDPjQkHu+oRqAEmVtc4MXsJU/6DbRRyqNyJG6DRx2jodaTDanroop zsyFn2/bdGPY4Z/OBNhnjU/W9aJSy50tzwO4mc2t/AAw3ifL8vU8PBjN1JvyOcDvqrOo ljkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=oVRV2e9qAVPiWNMzea3YCWJeOzFKcr0sGUuXqFGgfGs=; b=RUBq8CGKaJudEolKXRyIDvRaXKNs6wTiTGsSZ62u/kXQ2FNiyO/Ldl6YONRs3nHVk4 GVdEzlxrcMWm2MUn6OyUahpeqkkAdSJ29DMWblfopf2/FvJ/6iSS/NYu6+VOG5aCsFY/ 1GEIxbs6u7TTty6GPwQ9SWcryXrisMtPZvfDCFqwXNv8gdgR+Rh4mhYfvcO8HKQoAwYa bhU3TOXSVI30BkxwRupN8i10IBeOnF23cb04UD0D3eF3A630fQqzACnYi429ZYYx+/0V 7z/7FJHJsGls/tfaM6+AUB50uhL8xEhIeUQXW2eScBh8WUN+Z2wzuxRpkONLagcS4mAW l4iA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=gxZCdPKE; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q5-20020a17090a430500b001dc47313186si4843092pjg.68.2022.05.04.10.52.45; Wed, 04 May 2022 10:53:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=gxZCdPKE; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345408AbiEDHbQ (ORCPT + 99 others); Wed, 4 May 2022 03:31:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229673AbiEDHbP (ORCPT ); Wed, 4 May 2022 03:31:15 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0012723156 for ; Wed, 4 May 2022 00:27:37 -0700 (PDT) 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-out1.suse.de (Postfix) with ESMTPS id AB987210C2; Wed, 4 May 2022 07:27:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1651649256; 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=oVRV2e9qAVPiWNMzea3YCWJeOzFKcr0sGUuXqFGgfGs=; b=gxZCdPKEwzcBNbd1fpkjXHrulht6ZRxgliCkhzgYj4InADiOh+nBUb+iNgYq3i8D5Hda08 uJ2Z653dusPCbJrrMKxngAJqCPLTznQAUMEAA4At8YhdU9BZPA4O1M1xwSMKbYpp1BaQa7 h0n67j7enGVn+LEgKVT02JsKxq1IA6w= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1651649256; 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=oVRV2e9qAVPiWNMzea3YCWJeOzFKcr0sGUuXqFGgfGs=; b=nmEsfvjD//pKHe6is8uHjAdPX69p36BoAxiIgJAxOt7yCDCYWLefXTViPzC8qs3HTqeAqt cgeQDWhflmVkJRBw== 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 72551131BD; Wed, 4 May 2022 07:27:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id bdrxGugqcmK2UgAAMHmgww (envelope-from ); Wed, 04 May 2022 07:27:36 +0000 Message-ID: Date: Wed, 4 May 2022 09:27:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [PATCH v4] 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: airlied@redhat.com, airlied@linux.ie, daniel@ffwll.ch, arc_sung@aspeedtech.com, tommy_huang@aspeedtech.com, hungju_huang@aspeedtech.com, luke_chen@aspeedtech.com References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> From: Thomas Zimmermann In-Reply-To: <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------8WGM3tXQ00hd5Zhq6ErhF3Wn" X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------8WGM3tXQ00hd5Zhq6ErhF3Wn Content-Type: multipart/mixed; boundary="------------X4725FSZ0YDffwJMrV060ko9"; protected-headers="v1" From: Thomas Zimmermann To: KuoHsiang Chou , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: airlied@redhat.com, airlied@linux.ie, daniel@ffwll.ch, arc_sung@aspeedtech.com, tommy_huang@aspeedtech.com, hungju_huang@aspeedtech.com, luke_chen@aspeedtech.com Message-ID: Subject: Re: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> In-Reply-To: <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> --------------X4725FSZ0YDffwJMrV060ko9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMjguMDQuMjIgdW0gMDk6NTYgc2NocmllYiBLdW9Ic2lhbmcgQ2hvdToNCj4g 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 Uk5JTkdzIG9uIFYxIHBhdGNoLg0KPiANCj4gVjQ6DQo+IDEuIFN5bmMgY29kZS1iYXNlIHdp dGgga2VybmVsIDUuMTdfcmM2DQo+IDIuIFJlbW92ZSB0aGUgZGVmaW5lIG9mIERQQ29udHJv bFBvd2VyLCBiZWNhdXNlIERQIGNoaXBzIG5lZWQgdG8gYmUNCj4gICAgIHBvd2VyZWQgb24g dG8gYmUgdXNlZC4NCj4gMy4gUmVtb3ZlIHRoZSBzd2l0Y2hlcyBvZiBQSFkgYW5kIERpc3Bs YXkgZnJvbSBFRElEIHByb2NlZHVyZS4NCj4gNC4gUmV2aXNlIGluY3JlYWluZyBkZWxheSB0 byBmaXhlZCBkZWxheSwgYmVjYXVzZSB0aGlzIHZlcnNpb24ga2VybmVsDQo+ICAgICBkb2Vz bid0IGRldGVjdCBtaW5pdG9yIGNvbnNpc3Rlbm50bHkuDQo+IDUuIENyZWF0ZSBjbGVhbi11 cCBjb2RlIHVzZWQgZm9yIHJlc2V0IG9mIHBvd2VyIHN0YXRlIG9uIGVycm9ycyB3aXRoDQo+ ICAgICAtRUlPIG1hbm5lci4NCj4gNi4gUmV2aXNlIHRoZSBEUCBkZXRlY3Rpb24gYnkgVFgg dHlwZSBhbmQgaXRzIERQLUZXIHN0YXR1cyBkdXJpbmcNCj4gICAgIGJvb3RpbmcgYW5kIHJl c3VtZS4NCj4gNy4gQ29ycmVjdCB0aGUgQ2FtZWxDYXNlIFN0eWxlLg0KPiA4LiBVc2UgcmVn aXN0ZXIgcmVhZGluZyB3aGlsZSBuZWVkaW5nLCBhbmQgcmVtb3ZlIHRvIGhvbGQgZnVsbA0K PiAgICAgcmVnaXN0ZXIuDQo+IDkuIEluc3RlYWQgb2YgJ3U4JywgcmV2aXNlIHRvICdib29s JyBvbiBzd3dpdGNoIG9mIFBIWSBhbmQgdmlkZW8uDQo+IDEwLkNvcnJlY3QgdHlwbw0KPiAx MS5SZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29weSBvZiBUWCBkZWZpbml0aW9uLg0KPiAxMi5V c2UgRURJRF9MRU5HVEggYXMgdGhlIGNvbnN0YW50IG9mIDEyOC4NCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IEt1b0hzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT4N Cg0KUmV2aWV3ZWQtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRl Pg0KDQpJJ3ZlIG1lYW53aGlsZSBhZGRlZCB5b3VyIHBhdGNoIHRvIGRybS1taXNjLW5leHQu IEl0IHNob3VsZCBzaG93IHVwIGluIA0Kb25lIG9mIHRoZSBuZXh0IGtlcm5lbCByZWxlYXNl cy4gIFRoYW5rcyBhIGxvdC4NCg0KQmVzdCByZWdhcmRzDQpUaG9tYXMNCg0KPiAtLS0NCj4g ICBkcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlICAgfCAgIDIgKy0NCj4gICBkcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcC5jICAgfCAyODIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggIHwgMTE1ICsr KysrKysrKysrKysrDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIHwgICA1 ICstDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jIHwgMTI0ICsrKysrKysr KysrKysrLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyB8ICAgNCArLQ0K PiAgIDYgZmlsZXMgY2hhbmdlZCwgNTI0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMN Cj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiBpbmRleCAyMWY3MTE2MGIuLjVhNTNjZTUx ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlDQo+IEBAIC0zLDYgKzMsNiBAQA0KPiAg ICMgTWFrZWZpbGUgZm9yIHRoZSBkcm0gZGV2aWNlIGRyaXZlci4gIFRoaXMgZHJpdmVyIHBy b3ZpZGVzIHN1cHBvcnQgZm9yIHRoZQ0KPiAgICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0 cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuDQo+IA0KPiAtYXN0 LXkgOj0gYXN0X2Rydi5vIGFzdF9pMmMubyBhc3RfbWFpbi5vIGFzdF9tbS5vIGFzdF9tb2Rl Lm8gYXN0X3Bvc3QubyBhc3RfZHA1MDEubw0KPiArYXN0LXkgOj0gYXN0X2Rydi5vIGFzdF9p MmMubyBhc3RfbWFpbi5vIGFzdF9tbS5vIGFzdF9tb2RlLm8gYXN0X3Bvc3QubyBhc3RfZHA1 MDEubyBhc3RfZHAubw0KPiANCj4gICBvYmotJChDT05GSUdfRFJNX0FTVCkgOj0gYXN0Lm8N Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMgYi9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMC4uNDU1MWJjOGEzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPiBAQCAtMCwwICsxLDI4MiBAQA0KPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8vIENvcHlyaWdodCAoYykgMjAy MSwgQVNQRUVEIFRlY2hub2xvZ3kgSW5jLg0KPiArLy8gQXV0aG9yczogS3VvSHNpYW5nIENo b3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPg0KPiArDQo+ICsjaW5jbHVkZSA8 bGludXgvZmlybXdhcmUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiArI2lu Y2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4NCj4gKyNpbmNsdWRlICJhc3RfZHJ2LmgiDQo+ICsN Cj4gK2ludCBhc3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4 ICplZGlkZGF0YSkNCj4gK3sNCj4gKwlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2Fz dF9wcml2YXRlKGRldik7DQo+ICsJdTggaSA9IDAsIGogPSAwOw0KPiArDQo+ICsJLyoNCj4g KwkgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0KPiArCSAqIENSRENbYjBd OiBEUCBsaW5rIHN1Y2Nlc3MNCj4gKwkgKiBDUkRGW2IwXTogRFAgSFBEDQo+ICsJICogQ1JF NVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nlc3MgaXMgZG9uZQ0KPiArCSAqLw0KPiAr CWlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAw eEQxLCBBU1REUF9NQ1VfRldfRVhFQ1VUSU5HKSAmJg0KPiArCQlhc3RfZ2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEQywgQVNURFBfTElOS19TVUNDRVNT KSAmJg0KPiArCQlhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9S VCwgMHhERiwgQVNURFBfSFBEKSAmJg0KPiArCQlhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwNCj4gKwkJCQkJCQkJQVNURFBfSE9TVF9FRElE X1JFQURfRE9ORV9NQVNLKSkpIHsNCj4gKwkJZ290byBlcnJfYXN0ZHBfZWRpZF9ub3RfcmVh ZHk7DQo+ICsJfQ0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4RTUsICh1OCkgfkFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFT SywNCj4gKwkJCQkJCQkweDAwKTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsr KSB7DQo+ICsJCS8qDQo+ICsJCSAqIENSRTRbNzowXTogUmVhZC1Qb2ludGVyIGZvciBFRElE IChVbml0OiA0Ynl0ZXMpOyB2YWxpZCByYW5nZTogMH42NA0KPiArCQkgKi8NCj4gKwkJYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+ICsJ CQkJCSh1OCkgfkFTVERQX0VESURfUkVBRF9QT0lOVEVSX01BU0ssICh1OCkgaSk7DQo+ICsJ CWogPSAwOw0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIENSRDdbYjBdOiB2YWxpZCBmbGFnIGZv ciBFRElEDQo+ICsJCSAqIENSRDZbYjBdOiBtaXJyb3IgcmVhZCBwb2ludGVyIGZvciBFRElE DQo+ICsJCSAqLw0KPiArCQl3aGlsZSAoKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEQ3LA0KPiArCQkJCUFTVERQX0VESURfVkFMSURfRkxBR19N QVNLKSAhPSAweDAxKSB8fA0KPiArCQkJKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEQ2LA0KPiArCQkJCQkJQVNURFBfRURJRF9SRUFEX1BPSU5U RVJfTUFTSykgIT0gaSkpIHsNCj4gKwkJCS8qDQo+ICsJCQkgKiBEZWxheSBhcmUgZ2V0dGlu ZyBsb25nZXIgd2l0aCBlYWNoIHJldHJ5Lg0KPiArCQkJICogMS4gVGhlIERlbGF5cyBhcmUg b2Z0ZW4gMiBsb29wcyB3aGVuIHVzZXJzIHJlcXVlc3QgIkRpc3BsYXkgU2V0dGluZ3MiDQo+ ICsJCQkgKgkgIG9mIHJpZ2h0LWNsaWNrIG9mIG1vdXNlLg0KPiArCQkJICogMi4gVGhlIERl bGF5cyBhcmUgb2Z0ZW4gbG9uZ2VyIGEgbG90IHdoZW4gc3lzdGVtIHJlc3VtZSBmcm9tIFMz L1M0Lg0KPiArCQkJICovDQo+ICsJCQltZGVsYXkoaisxKTsNCj4gKw0KPiArCQkJaWYgKCEo YXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsDQo+ ICsJCQkJCQkJQVNURFBfTUNVX0ZXX0VYRUNVVElORykgJiYNCj4gKwkJCQlhc3RfZ2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEQywNCj4gKwkJCQkJCQlB U1REUF9MSU5LX1NVQ0NFU1MpICYmDQo+ICsJCQkJYXN0X2dldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REYsIEFTVERQX0hQRCkpKSB7DQo+ICsJCQkJZ290 byBlcnJfYXN0ZHBfanVtcF9vdXRfbG9vcF9vZl9lZGlkOw0KPiArCQkJfQ0KPiArDQo+ICsJ CQlqKys7DQo+ICsJCQlpZiAoaiA+IDIwMCkNCj4gKwkJCQlnb3RvIGVycl9hc3RkcF9qdW1w X291dF9sb29wX29mX2VkaWQ7DQo+ICsJCX0NCj4gKw0KPiArCQkqKGVkaWRkYXRhKSA9IGFz dF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULA0KPiArCQkJCQkJ CTB4RDgsIEFTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0KPiArCQkqKGVkaWRkYXRhICsg MSkgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhE OSwNCj4gKwkJCQkJCQkJQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+ICsJCSooZWRp ZGRhdGEgKyAyKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweERBLA0KPiArCQkJCQkJCQlBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4g KwkJKihlZGlkZGF0YSArIDMpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4REIsDQo+ICsJCQkJCQkJCUFTVERQX0VESURfUkVBRF9EQVRBX01B U0spOw0KPiArDQo+ICsJCWlmIChpID09IDMxKSB7DQo+ICsJCQkvKg0KPiArCQkJICogRm9y IDEyOC1ieXRlcyBFRElEXzEuMywNCj4gKwkJCSAqIDEuIEFkZCB0aGUgdmFsdWUgb2YgQnl0 ZXMtMTI2IHRvIEJ5dGVzLTEyNy4NCj4gKwkJCSAqCQlUaGUgQnl0ZXMtMTI3IGlzIENoZWNr c3VtLiBTdW0gb2YgYWxsIDEyOGJ5dGVzIHNob3VsZA0KPiArCQkJICoJCWVxdWFsIDAJKG1v ZCAyNTYpLg0KPiArCQkJICogMi4gTW9kaWZ5IEJ5dGVzLTEyNiB0byBiZSAwLg0KPiArCQkJ ICoJCVRoZSBCeXRlcy0xMjYgaW5kaWNhdGVzIHRoZSBOdW1iZXIgb2YgZXh0ZW5zaW9ucyB0 bw0KPiArCQkJICoJCWZvbGxvdy4gMCByZXByZXNlbnRzIG5vZXh0ZW5zaW9ucy4NCj4gKwkJ CSAqLw0KPiArCQkJKihlZGlkZGF0YSArIDMpID0gKihlZGlkZGF0YSArIDMpICsgKihlZGlk ZGF0YSArIDIpOw0KPiArCQkJKihlZGlkZGF0YSArIDIpID0gMDsNCj4gKwkJfQ0KPiArDQo+ ICsJCWVkaWRkYXRhICs9IDQ7DQo+ICsJfQ0KPiArDQo+ICsJYXN0X3NldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsICh1OCkgfkFTVERQX0hPU1RfRURJ RF9SRUFEX0RPTkVfTUFTSywNCj4gKwkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05F KTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnJfYXN0ZHBfanVtcF9vdXRfbG9v cF9vZl9lZGlkOg0KPiArCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEU1LA0KPiArCQkJCQkJCSh1OCkgfkFTVERQX0hPU1RfRURJRF9SRUFEX0RP TkVfTUFTSywNCj4gKwkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4gKwly ZXR1cm4gKH4oaisyNTYpICsgMSk7DQo+ICsNCj4gK2Vycl9hc3RkcF9lZGlkX25vdF9yZWFk eToNCj4gKwlpZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhEMSwgQVNURFBfTUNVX0ZXX0VYRUNVVElORykpKQ0KPiArCQlyZXR1cm4gKH4w eEQxICsgMSk7DQo+ICsJaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4REMsIEFTVERQX0xJTktfU1VDQ0VTUykpKQ0KPiArCQlyZXR1cm4g KH4weERDICsgMSk7DQo+ICsJaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4REYsIEFTVERQX0hQRCkpKQ0KPiArCQlyZXR1cm4gKH4weERG ICsgMSk7DQo+ICsJaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4RTUsIEFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSykpKQ0KPiAr CQlyZXR1cm4gKH4weEU1ICsgMSk7DQo+ICsNCj4gKwlyZXR1cm4JMDsNCj4gK30NCj4gKw0K PiArLyoNCj4gKyAqIExhdW5jaCBBc3BlZWQgRFANCj4gKyAqLw0KPiArdm9pZCBhc3RfZHBf bGF1bmNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IGJQb3dlcikNCj4gK3sNCj4gKwl1 MzIgaSA9IDAsIGogPSAwLCBXYWl0Q291bnQgPSAxOw0KPiArCXU4IGJEUFRYID0gMDsNCj4g Kwl1OCBiRFBFeGVjdXRlID0gMTsNCj4gKw0KPiArCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0 ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4gKwkvLyBTMyBjb21lIGJhY2ssIG5lZWQgbW9y ZSB0aW1lIHRvIHdhaXQgQk1DIHJlYWR5Lg0KPiArCWlmIChiUG93ZXIpDQo+ICsJCVdhaXRD b3VudCA9IDMwMDsNCj4gKw0KPiArDQo+ICsJLy8gV2FpdCB0b3RhbCBjb3VudCBieSBkaWZm ZXJlbnQgY29uZGl0aW9uLg0KPiArCWZvciAoaiA9IDA7IGogPCBXYWl0Q291bnQ7IGorKykg ew0KPiArCQliRFBUWCA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEQxLCBUWF9UWVBFX01BU0spOw0KPiArDQo+ICsJCWlmIChiRFBUWCkNCj4g KwkJCWJyZWFrOw0KPiArDQo+ICsJCW1zbGVlcCgxMDApOw0KPiArCX0NCj4gKw0KPiArCS8v IDB4RSA6IEFTVERQIHdpdGggRFBNQ1UgRlcgaGFuZGxpbmcNCj4gKwlpZiAoYkRQVFggPT0g QVNURFBfRFBNQ1VfVFgpIHsNCj4gKwkJLy8gV2FpdCBvbmUgc2Vjb25kIHRoZW4gdGltZW91 dC4NCj4gKwkJaSA9IDA7DQo+ICsNCj4gKwkJd2hpbGUgKGFzdF9nZXRfaW5kZXhfcmVnX21h c2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEQxLCBDT1BST0NFU1NPUl9MQVVOQ0gpICE9 DQo+ICsJCQlDT1BST0NFU1NPUl9MQVVOQ0gpIHsNCj4gKwkJCWkrKzsNCj4gKwkJCS8vIHdh aXQgMTAwIG1zDQo+ICsJCQltc2xlZXAoMTAwKTsNCj4gKw0KPiArCQkJaWYgKGkgPj0gMTAp IHsNCj4gKwkJCQkvLyBEUCB3b3VsZCBub3QgYmUgcmVhZHkuDQo+ICsJCQkJYkRQRXhlY3V0 ZSA9IDA7DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAo YkRQRXhlY3V0ZSkNCj4gKwkJCWFzdC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX0FTVERQOw0K PiArDQo+ICsJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweEU1LA0KPiArCQkJCQkJCSh1OCkgfkFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFT SywNCj4gKwkJCQkJCQlBU1REUF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4gKwl9IGVsc2UN Cj4gKwkJYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfTk9ORTsNCj4gK30NCj4gKw0KPiAr DQo+ICsNCj4gK3ZvaWQgYXN0X2RwX3Bvd2VyX29uX29mZihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBib29sIG9uKQ0KPiArew0KPiArCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9f YXN0X3ByaXZhdGUoZGV2KTsNCj4gKwkvLyBSZWFkIGFuZCBUdXJuIG9mZiBEUCBQSFkgc2xl ZXANCj4gKwl1OCBiRTMgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NS VENfUE9SVCwgMHhFMywgQVNUX0RQX1ZJREVPX0VOQUJMRSk7DQo+ICsNCj4gKwkvLyBUdXJu IG9uIERQIFBIWSBzbGVlcA0KPiArCWlmICghb24pDQo+ICsJCWJFMyB8PSBBU1RfRFBfUEhZ X1NMRUVQOw0KPiArDQo+ICsJLy8gRFAgUG93ZXIgb24vb2ZmDQo+ICsJYXN0X3NldF9pbmRl eF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTMsICh1OCkgfkFTVF9EUF9Q SFlfU0xFRVAsIGJFMyk7DQo+ICt9DQo+ICsNCj4gKw0KPiArDQo+ICt2b2lkIGFzdF9kcF9z ZXRfb25fb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgb24pDQo+ICt7DQo+ICsJ c3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiArCXU4 IHZpZGVvX29uX29mZiA9IG9uOw0KPiArDQo+ICsJLy8gVmlkZW8gT24vT2ZmDQo+ICsJYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTMsICh1OCkg fkFTVF9EUF9WSURFT19FTkFCTEUsIG9uKTsNCj4gKw0KPiArCS8vIElmIERQIHBsdWcgaW4g YW5kIGxpbmsgc3VjY2Vzc2Z1bCB0aGVuIGNoZWNrIHZpZGVvIG9uIC8gb2ZmIHN0YXR1cw0K PiArCWlmIChhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhEQywgQVNURFBfTElOS19TVUNDRVNTKSAmJg0KPiArCQlhc3RfZ2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwgQVNURFBfSFBEKSkgew0KPiArCQl2 aWRlb19vbl9vZmYgPDw9IDQ7DQo+ICsJCXdoaWxlIChhc3RfZ2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwNCj4gKwkJCQkJCUFTVERQX01JUlJPUl9W SURFT19FTkFCTEUpICE9IHZpZGVvX29uX29mZikgew0KPiArCQkJLy8gd2FpdCAxIG1zDQo+ ICsJCQltZGVsYXkoMSk7DQo+ICsJCX0NCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQgYXN0 X2RwX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGFzdF92Ymlvc19t b2RlX2luZm8gKnZiaW9zX21vZGUpDQo+ICt7DQo+ICsJc3RydWN0IGFzdF9wcml2YXRlICph c3QgPSB0b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0KPiArDQo+ICsJdTMyIHVsUmVmcmVz aFJhdGVJbmRleDsNCj4gKwl1OCBNb2RlSWR4Ow0KPiArDQo+ICsJdWxSZWZyZXNoUmF0ZUlu ZGV4ID0gdmJpb3NfbW9kZS0+ZW5oX3RhYmxlLT5yZWZyZXNoX3JhdGVfaW5kZXggLSAxOw0K PiArDQo+ICsJc3dpdGNoIChjcnRjLT5tb2RlLmNydGNfaGRpc3BsYXkpIHsNCj4gKwljYXNl IDMyMDoNCj4gKwkJTW9kZUlkeCA9IEFTVERQXzMyMHgyNDBfNjA7DQo+ICsJCWJyZWFrOw0K PiArCWNhc2UgNDAwOg0KPiArCQlNb2RlSWR4ID0gQVNURFBfNDAweDMwMF82MDsNCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSA1MTI6DQo+ICsJCU1vZGVJZHggPSBBU1REUF81MTJ4Mzg0XzYw Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIDY0MDoNCj4gKwkJTW9kZUlkeCA9IChBU1REUF82 NDB4NDgwXzYwICsgKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiArCQlicmVhazsNCj4g KwljYXNlIDgwMDoNCj4gKwkJTW9kZUlkeCA9IChBU1REUF84MDB4NjAwXzU2ICsgKHU4KSB1 bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDEwMjQ6DQo+ICsJ CU1vZGVJZHggPSAoQVNURFBfMTAyNHg3NjhfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRl eCk7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMTE1MjoNCj4gKwkJTW9kZUlkeCA9IEFTVERQ XzExNTJ4ODY0Xzc1Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIDEyODA6DQo+ICsJCWlmIChj cnRjLT5tb2RlLmNydGNfdmRpc3BsYXkgPT0gODAwKQ0KPiArCQkJTW9kZUlkeCA9IChBU1RE UF8xMjgweDgwMF82MF9SQiAtICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gKwkJZWxz ZQkJLy8gMTAyNA0KPiArCQkJTW9kZUlkeCA9IChBU1REUF8xMjgweDEwMjRfNjAgKyAodTgp IHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMTM2MDoNCj4g KwljYXNlIDEzNjY6DQo+ICsJCU1vZGVJZHggPSBBU1REUF8xMzY2eDc2OF82MDsNCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSAxNDQwOg0KPiArCQlNb2RlSWR4ID0gKEFTVERQXzE0NDB4OTAw XzYwX1JCIC0gKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiArCQlicmVhazsNCj4gKwlj YXNlIDE2MDA6DQo+ICsJCWlmIChjcnRjLT5tb2RlLmNydGNfdmRpc3BsYXkgPT0gOTAwKQ0K PiArCQkJTW9kZUlkeCA9IChBU1REUF8xNjAweDkwMF82MF9SQiAtICh1OCkgdWxSZWZyZXNo UmF0ZUluZGV4KTsNCj4gKwkJZWxzZQkJLy8xMjAwDQo+ICsJCQlNb2RlSWR4ID0gQVNURFBf MTYwMHgxMjAwXzYwOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDE2ODA6DQo+ICsJCU1vZGVJ ZHggPSAoQVNURFBfMTY4MHgxMDUwXzYwX1JCIC0gKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgp Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIDE5MjA6DQo+ICsJCWlmIChjcnRjLT5tb2RlLmNy dGNfdmRpc3BsYXkgPT0gMTA4MCkNCj4gKwkJCU1vZGVJZHggPSBBU1REUF8xOTIweDEwODBf NjA7DQo+ICsJCWVsc2UJCS8vMTIwMA0KPiArCQkJTW9kZUlkeCA9IEFTVERQXzE5MjB4MTIw MF82MDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJcmV0dXJuOw0KPiArCX0N Cj4gKw0KPiArCS8qDQo+ICsJICogQ1JFMFs3OjBdOiBNSVNDMCAoKDB4MDA6IDE4LWJwcCkg b3IgKDB4MjA6IDI0LWJwcCkNCj4gKwkgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAw eDAwKQ0KPiArCSAqIENSRTJbNzowXTogdmlkZW8gZm9ybWF0IGluZGV4ICgweDAwIH4gMHgy MCBvciAweDQwIH4gMHg1MCkNCj4gKwkgKi8NCj4gKwlhc3Rfc2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMCwgKHU4KSB+QVNURFBfQ0xFQVJfTUFTSywN Cj4gKwkJCQlBU1REUF9NSVNDMF8yNGJwcCk7DQo+ICsJYXN0X3NldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTEsICh1OCkgfkFTVERQX0NMRUFSX01BU0ss IEFTVERQX01JU0MxKTsNCj4gKwlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhFMiwgKHU4KSB+QVNURFBfQ0xFQVJfTUFTSywgTW9kZUlkeCk7DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oDQo+IGluZGV4IGExOTMxNWIyZi4uZmYxYWUz MTRiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaA0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaA0KPiBAQCAtNzAsNiArNzAsNyBA QCBlbnVtIGFzdF90eF9jaGlwIHsNCj4gICAJQVNUX1RYX05PTkUsDQo+ICAgCUFTVF9UWF9T SUwxNjQsDQo+ICAgCUFTVF9UWF9EUDUwMSwNCj4gKwlBU1RfVFhfQVNURFAsDQo+ICAgfTsN Cj4gDQo+ICAgI2RlZmluZSBBU1RfRFJBTV81MTJNeDE2IDANCj4gQEAgLTE4NCw2ICsxODUs MTAgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsNCj4gICAJCQlzdHJ1Y3QgZHJtX2VuY29kZXIg ZW5jb2RlcjsNCj4gICAJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+ICAg CQl9IGRwNTAxOw0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJc3RydWN0IGRybV9lbmNvZGVyIGVu Y29kZXI7DQo+ICsJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+ICsJCX0g YXN0ZHA7DQo+ICAgCX0gb3V0cHV0Ow0KPiANCj4gICAJYm9vbCBzdXBwb3J0X3dpZGVfc2Ny ZWVuOw0KPiBAQCAtMzU3LDEwICszNjIsMTEzIEBAIGludCBhc3RfbW9kZV9jb25maWdfaW5p dChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCk7DQo+ICAgI2RlZmluZSBBU1RfRFA1MDFfRURJ RF9EQVRBCTB4ZjAyMA0KPiANCj4gICAvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQgcmVn ICovDQo+ICsjZGVmaW5lIENPUFJPQ0VTU09SX0xBVU5DSAkJCUJJVCg1KQ0KPiArDQo+ICsv Kg0KPiArICogRGlzcGxheSBUcmFuc21pdHRlciBUeXBlOg0KPiArICovDQo+ICsjZGVmaW5l IFRYX1RZUEVfTUFTSwkJCQlHRU5NQVNLKDMsIDEpDQo+ICsjZGVmaW5lIE5PX1RYCQkJCQkJ KDAgPDwgMSkNCj4gKyNkZWZpbmUgSVRFNjYxMjFfVkJJT1NfVFgJCQkoMSA8PCAxKQ0KPiAr I2RlZmluZSBTSTE2NF9WQklPU19UWAkJCQkoMiA8PCAxKQ0KPiArI2RlZmluZSBDSDcwMDNf VkJJT1NfVFgJCQkoMyA8PCAxKQ0KPiArI2RlZmluZSBEUDUwMV9WQklPU19UWAkJCQkoNCA8 PCAxKQ0KPiArI2RlZmluZSBBTlg5ODA3X1ZCSU9TX1RYCQkJKDUgPDwgMSkNCj4gKyNkZWZp bmUgVFhfRldfRU1CRURERURfRldfVFgJCSg2IDw8IDEpDQo+ICsjZGVmaW5lIEFTVERQX0RQ TUNVX1RYCQkJCSg3IDw8IDEpDQo+ICsNCj4gICAjZGVmaW5lIEFTVF9WUkFNX0lOSVRfU1RB VFVTX01BU0sJR0VOTUFTSyg3LCA2KQ0KPiAgIC8vI2RlZmluZSBBU1RfVlJBTV9JTklUX0JZ X0JNQwkJQklUKDcpDQo+ICAgLy8jZGVmaW5lIEFTVF9WUkFNX0lOSVRfUkVBRFkJCUJJVCg2 KQ0KPiANCj4gKy8qIERlZmluZSBmb3IgU29jIHNjcmF0Y2hlZCByZWcgdXNlZCBvbiBBU1RE UCAqLw0KPiArI2RlZmluZSBBU1RfRFBfUEhZX1NMRUVQCQkJQklUKDQpDQo+ICsjZGVmaW5l IEFTVF9EUF9WSURFT19FTkFCTEUJCUJJVCgwKQ0KPiArDQo+ICsjZGVmaW5lIEFTVF9EUF9Q T1dFUl9PTgkJCXRydWUNCj4gKyNkZWZpbmUgQVNUX0RQX1BPV0VSX09GRgkJCWZhbHNlDQo+ ICsNCj4gKy8qDQo+ICsgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0KPiAr ICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiArICogQ1JERltiMF06IERQIEhQRA0K PiArICogQ1JFNVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nlc3MgaXMgZG9uZQ0KPiAr ICovDQo+ICsjZGVmaW5lIEFTVERQX01DVV9GV19FWEVDVVRJTkcJCQlCSVQoNSkNCj4gKyNk ZWZpbmUgQVNURFBfTElOS19TVUNDRVNTCQkJCUJJVCgwKQ0KPiArI2RlZmluZSBBU1REUF9I UEQJCQkJCQlCSVQoMCkNCj4gKyNkZWZpbmUgQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORQkJ QklUKDApDQo+ICsjZGVmaW5lIEFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSwlHRU5N QVNLKDAsIDApDQo+ICsNCj4gKy8qDQo+ICsgKiBDUkI4W2IxXTogRW5hYmxlIFZTWU5DIG9m Zg0KPiArICogQ1JCOFtiMF06IEVuYWJsZSBIU1lOQyBvZmYNCj4gKyAqLw0KPiArI2RlZmlu ZSBBU1RfRFBNU19WU1lOQ19PRkYJCQkJQklUKDEpDQo+ICsjZGVmaW5lIEFTVF9EUE1TX0hT WU5DX09GRgkJCQlCSVQoMCkNCj4gKw0KPiArLyoNCj4gKyAqIENSREZbYjRdOiBNaXJyb3Ig b2YgQVNUX0RQX1ZJREVPX0VOQUJMRQ0KPiArICogUHJlY29uZGl0aW9uOglBLiB+QVNUX0RQ X1BIWV9TTEVFUCAgJiYNCj4gKyAqCQkJQi4gRFBfSFBEICYmDQo+ICsgKgkJCUMuIERQX0xJ TktfU1VDQ0VTUw0KPiArICovDQo+ICsjZGVmaW5lIEFTVERQX01JUlJPUl9WSURFT19FTkFC TEUJCUJJVCg0KQ0KPiArDQo+ICsjZGVmaW5lIEFTVERQX0VESURfUkVBRF9QT0lOVEVSX01B U0sJR0VOTUFTSyg3LCAwKQ0KPiArI2RlZmluZSBBU1REUF9FRElEX1ZBTElEX0ZMQUdfTUFT SwkJR0VOTUFTSygwLCAwKQ0KPiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfREFUQV9NQVNL CQlHRU5NQVNLKDcsIDApDQo+ICsNCj4gKy8qDQo+ICsgKiBBU1REUCBzZXRtb2RlIHJlZ2lz dGVyczoNCj4gKyAqIENSRTBbNzowXTogTUlTQzAgKCgweDAwOiAxOC1icHApIG9yICgweDIw OiAyNC1icHApDQo+ICsgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAweDAwKQ0KPiAr ICogQ1JFMls3OjBdOiB2aWRlbyBmb3JtYXQgaW5kZXggKDB4MDAgfiAweDIwIG9yIDB4NDAg fiAweDUwKQ0KPiArICovDQo+ICsjZGVmaW5lIEFTVERQX01JU0MwXzI0YnBwCQkJQklUKDUp DQo+ICsjZGVmaW5lIEFTVERQX01JU0MxCQkJCTANCj4gKyNkZWZpbmUgQVNURFBfQ0xFQVJf TUFTSwkJCUdFTk1BU0soNywgMCkNCj4gKw0KPiArLyoNCj4gKyAqIEFTVERQIHJlc291bHRp b24gdGFibGU6DQo+ICsgKiBFWDoJQVNURFBfQV9CX0M6DQo+ICsgKgkJQTogUmVzb2x1dGlv bg0KPiArICoJCUI6IFJlZnJlc2ggUmF0ZQ0KPiArICoJCUM6IE1pc2MgaW5mb3JtYXRpb24s IHN1Y2ggYXMgQ1ZULCBSZWR1Y2UgQmxhbmtlZA0KPiArICovDQo+ICsjZGVmaW5lIEFTVERQ XzY0MHg0ODBfNjAJCTB4MDANCj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF83MgkJMHgwMQ0K PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzc1CQkweDAyDQo+ICsjZGVmaW5lIEFTVERQXzY0 MHg0ODBfODUJCTB4MDMNCj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF81NgkJMHgwNA0KPiAr I2RlZmluZSBBU1REUF84MDB4NjAwXzYwCQkweDA1DQo+ICsjZGVmaW5lIEFTVERQXzgwMHg2 MDBfNzIJCTB4MDYNCj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF83NQkJMHgwNw0KPiArI2Rl ZmluZSBBU1REUF84MDB4NjAwXzg1CQkweDA4DQo+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4 XzYwCQkweDA5DQo+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4XzcwCQkweDBBDQo+ICsjZGVm aW5lIEFTVERQXzEwMjR4NzY4Xzc1CQkweDBCDQo+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4 Xzg1CQkweDBDDQo+ICsjZGVmaW5lIEFTVERQXzEyODB4MTAyNF82MAkJMHgwRA0KPiArI2Rl ZmluZSBBU1REUF8xMjgweDEwMjRfNzUJCTB4MEUNCj4gKyNkZWZpbmUgQVNURFBfMTI4MHgx MDI0Xzg1CQkweDBGDQo+ICsjZGVmaW5lIEFTVERQXzE2MDB4MTIwMF82MAkJMHgxMA0KPiAr I2RlZmluZSBBU1REUF8zMjB4MjQwXzYwCQkweDExDQo+ICsjZGVmaW5lIEFTVERQXzQwMHgz MDBfNjAJCTB4MTINCj4gKyNkZWZpbmUgQVNURFBfNTEyeDM4NF82MAkJMHgxMw0KPiArI2Rl ZmluZSBBU1REUF8xOTIweDEyMDBfNjAJCTB4MTQNCj4gKyNkZWZpbmUgQVNURFBfMTkyMHgx MDgwXzYwCQkweDE1DQo+ICsjZGVmaW5lIEFTVERQXzEyODB4ODAwXzYwCQkweDE2DQo+ICsj ZGVmaW5lIEFTVERQXzEyODB4ODAwXzYwX1JCCTB4MTcNCj4gKyNkZWZpbmUgQVNURFBfMTQ0 MHg5MDBfNjAJCTB4MTgNCj4gKyNkZWZpbmUgQVNURFBfMTQ0MHg5MDBfNjBfUkIJMHgxOQ0K PiArI2RlZmluZSBBU1REUF8xNjgweDEwNTBfNjAJCTB4MUENCj4gKyNkZWZpbmUgQVNURFBf MTY4MHgxMDUwXzYwX1JCCTB4MUINCj4gKyNkZWZpbmUgQVNURFBfMTYwMHg5MDBfNjAJCTB4 MUMNCj4gKyNkZWZpbmUgQVNURFBfMTYwMHg5MDBfNjBfUkIJMHgxRA0KPiArI2RlZmluZSBB U1REUF8xMzY2eDc2OF82MAkJMHgxRQ0KPiArI2RlZmluZSBBU1REUF8xMTUyeDg2NF83NQkJ MHgxRg0KPiArDQo+ICAgaW50IGFzdF9tbV9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0 KTsNCj4gDQo+ICAgLyogYXN0IHBvc3QgKi8NCj4gQEAgLTM4MSw0ICs0ODksMTEgQEAgdm9p ZCBhc3RfaW5pdF8zcmR0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4gICAvKiBhc3Rf aTJjLmMgKi8NCj4gICBzdHJ1Y3QgYXN0X2kyY19jaGFuICphc3RfaTJjX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4gDQo+ICsvKiBhc3BlZWQgRFAgKi8NCj4gK2ludCBh c3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlkZGF0 YSk7DQo+ICt2b2lkIGFzdF9kcF9sYXVuY2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTgg YlBvd2VyKTsNCj4gK3ZvaWQgYXN0X2RwX3Bvd2VyX29uX29mZihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBib29sIG5vKTsNCj4gK3ZvaWQgYXN0X2RwX3NldF9vbl9vZmYoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgYm9vbCBubyk7DQo+ICt2b2lkIGFzdF9kcF9zZXRfbW9kZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBhc3RfdmJpb3NfbW9kZV9pbmZvICp2Ymlvc19t b2RlKTsNCj4gKw0KPiAgICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IGlu ZGV4IDIyZTllMmQzYy4uMTExM2VlMWNiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9tYWluLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFp bi5jDQo+IEBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQ0KPiAgIAkJCWFzdC0+ dHhfY2hpcF90eXBlID0gQVNUX1RYX1NJTDE2NDsNCj4gICAJfQ0KPiANCj4gLQlpZiAoKGFz dC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDApKSB7DQo+ICsJ aWYgKChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8 fCAoYXN0LT5jaGlwID09IEFTVDI1MDApKSB7DQo+ICAgCQkvKg0KPiAgIAkJICogT24gQVNU MjMwMCBhbmQgMjQwMCwgbG9vayB0aGUgY29uZmlndXJhdGlvbiBzZXQgYnkgdGhlIFNvQyBp bg0KPiAgIAkJICogdGhlIFNPQyBzY3JhdGNoIHJlZ2lzdGVyICMxIGJpdHMgMTE6OCAoaW50 ZXJlc3RpbmdseSBtYXJrZWQNCj4gQEAgLTI1Niw3ICsyNTYsOCBAQCBzdGF0aWMgaW50IGFz dF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICpuZWVkX3Bvc3Qp DQo+ICAgCQljYXNlIDB4MGM6DQo+ICAgCQkJYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhf RFA1MDE7DQo+ICAgCQl9DQo+IC0JfQ0KPiArCX0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFT VDI2MDApDQo+ICsJCWFzdF9kcF9sYXVuY2goJmFzdC0+YmFzZSwgMCk7DQo+IA0KPiAgIAkv KiBQcmludCBzdHVmZiBmb3IgZGlhZ25vc3RpYyBwdXJwb3NlcyAqLw0KPiAgIAlzd2l0Y2go YXN0LT50eF9jaGlwX3R5cGUpIHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPiBpbmRl eCA0NWI1NmIzOWEuLjQ3Mjg4MjViNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbW9kZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUu Yw0KPiBAQCAtOTg4LDIxICs5ODgsNDEgQEAgc3RhdGljIGludCBhc3RfY3Vyc29yX3BsYW5l X2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpDQo+ICAgc3RhdGljIHZvaWQgYXN0X2Ny dGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQ0KPiAgIHsNCj4gICAJ c3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0K PiArCXU4IGNoID0gQVNUX0RQTVNfVlNZTkNfT0ZGIHwgQVNUX0RQTVNfSFNZTkNfT0ZGOw0K PiANCj4gICAJLyogVE9ETzogTWF5YmUgY29udHJvbCBkaXNwbGF5IHNpZ25hbCBnZW5lcmF0 aW9uIHdpdGgNCj4gICAJICogICAgICAgU3luYyBFbmFibGUgKGJpdCBDUjE3LjcpLg0KPiAg IAkgKi8NCj4gICAJc3dpdGNoIChtb2RlKSB7DQo+ICAgCWNhc2UgRFJNX01PREVfRFBNU19P TjoNCj4gLQljYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToNCj4gLQljYXNlIERSTV9NT0RF X0RQTVNfU1VTUEVORDoNCj4gKwkJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19TRVFfUE9SVCwgIDB4MDEsIDB4ZGYsIDApOw0KPiArCQlhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhiNiwgMHhmYywgMCk7DQo+ICAgCQlpZiAo YXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0RQNTAxKQ0KPiAgIAkJCWFzdF9zZXRfZHA1 MDFfdmlkZW9fb3V0cHV0KGNydGMtPmRldiwgMSk7DQo+ICsNCj4gKwkJaWYgKGFzdC0+dHhf Y2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkgew0KPiArCQkJYXN0X2RwX3Bvd2VyX29uX29m ZihjcnRjLT5kZXYsIEFTVF9EUF9QT1dFUl9PTik7DQo+ICsJCQlhc3Rfd2FpdF9mb3JfdnJl dHJhY2UoYXN0KTsNCj4gKwkJCWFzdF9kcF9zZXRfb25fb2ZmKGNydGMtPmRldiwgMSk7DQo+ ICsJCX0NCj4gKw0KPiArCQlhc3RfY3J0Y19sb2FkX2x1dChhc3QsIGNydGMpOw0KPiAgIAkJ YnJlYWs7DQo+ICsJY2FzZSBEUk1fTU9ERV9EUE1TX1NUQU5EQlk6DQo+ICsJY2FzZSBEUk1f TU9ERV9EUE1TX1NVU1BFTkQ6DQo+ICAgCWNhc2UgRFJNX01PREVfRFBNU19PRkY6DQo+ICsJ CWNoID0gbW9kZTsNCj4gICAJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfRFA1 MDEpDQo+ICAgCQkJYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0Yy0+ZGV2LCAwKTsN Cj4gICAJCWJyZWFrOw0KPiArDQo+ICsJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1Rf VFhfQVNURFApIHsNCj4gKwkJCWFzdF9kcF9zZXRfb25fb2ZmKGNydGMtPmRldiwgMCk7DQo+ ICsJCQlhc3RfZHBfcG93ZXJfb25fb2ZmKGNydGMtPmRldiwgQVNUX0RQX1BPV0VSX09GRik7 DQo+ICsJCX0NCj4gKw0KPiArCQlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X1NFUV9QT1JULCAgMHgwMSwgMHhkZiwgMHgyMCk7DQo+ICsJCWFzdF9zZXRfaW5kZXhfcmVn X21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LCAweGZjLCBjaCk7DQo+ICAgCX0N Cj4gICB9DQo+IA0KPiBAQCAtMTAyNyw3ICsxMDQ3LDcgQEAgYXN0X2NydGNfaGVscGVyX21v ZGVfdmFsaWQoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZQ0KPiANCj4gICAJCWlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3Qt PmNoaXAgPT0gQVNUMjIwMCkgfHwNCj4gICAJCSAgICAoYXN0LT5jaGlwID09IEFTVDIzMDAp IHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwNCj4gLQkJICAgIChhc3QtPmNoaXAgPT0g QVNUMjUwMCkpIHsNCj4gKwkJICAgIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+ Y2hpcCA9PSBBU1QyNjAwKSkgew0KPiAgIAkJCWlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTky MCkgJiYgKG1vZGUtPnZkaXNwbGF5ID09IDEwODApKQ0KPiAgIAkJCQlyZXR1cm4gTU9ERV9P SzsNCj4gDQo+IEBAIC0xMTEwLDYgKzExMzAsNyBAQCBhc3RfY3J0Y19oZWxwZXJfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4gICAJc3RydWN0IGFzdF9wcml2YXRl ICphc3QgPSB0b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0KPiAgIAlzdHJ1Y3QgYXN0X2Ny dGNfc3RhdGUgKmFzdF9jcnRjX3N0YXRlID0gdG9fYXN0X2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSk7DQo+ICAgCXN0cnVjdCBhc3RfY3J0Y19zdGF0ZSAqb2xkX2FzdF9jcnRjX3N0YXRlID0g dG9fYXN0X2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOw0KPiArCXN0cnVjdCBhc3RfdmJp b3NfbW9kZV9pbmZvICp2Ymlvc19tb2RlX2luZm8gPSAmYXN0X2NydGNfc3RhdGUtPnZiaW9z X21vZGVfaW5mbzsNCj4gDQo+ICAgCS8qDQo+ICAgCSAqIFRoZSBnYW1tYSBMVVQgaGFzIHRv IGJlIHJlbG9hZGVkIGFmdGVyIGNoYW5naW5nIHRoZSBwcmltYXJ5DQo+IEBAIC0xMTE3LDYg KzExMzgsMTAgQEAgYXN0X2NydGNfaGVscGVyX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsDQo+ICAgCSAqLw0KPiAgIAlpZiAob2xkX2FzdF9jcnRjX3N0YXRlLT5mb3Jt YXQgIT0gYXN0X2NydGNfc3RhdGUtPmZvcm1hdCkNCj4gICAJCWFzdF9jcnRjX2xvYWRfbHV0 KGFzdCwgY3J0Yyk7DQo+ICsNCj4gKwkvL1NldCBBc3BlZWQgRGlzcGxheS1Qb3J0DQo+ICsJ aWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkNCj4gKwkJYXN0X2RwX3Nl dF9tb2RlKGNydGMsIHZiaW9zX21vZGVfaW5mbyk7DQo+ICAgfQ0KPiANCj4gICBzdGF0aWMg dm9pZA0KPiBAQCAtMTUyNyw2ICsxNTUyLDkzIEBAIHN0YXRpYyBpbnQgYXN0X2RwNTAxX291 dHB1dF9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQ0KPiAgIAlyZXR1cm4gMDsNCj4g ICB9DQo+IA0KPiArLyoNCj4gKyAqIEFTUEVFRCBEaXNwbGF5LVBvcnQgQ29ubmVjdG9yDQo+ ICsgKi8NCj4gKw0KPiArc3RhdGljIGludCBhc3RfYXN0ZHBfY29ubmVjdG9yX2hlbHBlcl9n ZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gK3sNCj4gKwl2 b2lkICplZGlkOw0KPiArDQo+ICsJaW50IHN1Y2M7DQo+ICsJaW50IGNvdW50Ow0KPiArDQo+ ICsJZWRpZCA9IGttYWxsb2MoRURJRF9MRU5HVEgsIEdGUF9LRVJORUwpOw0KPiArCWlmICgh ZWRpZCkNCj4gKwkJZ290byBlcnJfZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0 eTsNCj4gKw0KPiArCXN1Y2MgPSBhc3RfYXN0ZHBfcmVhZF9lZGlkKGNvbm5lY3Rvci0+ZGV2 LCBlZGlkKTsNCj4gKwlpZiAoc3VjYyA8IDApDQo+ICsJCWdvdG8gZXJyX2tmcmVlOw0KPiAr DQo+ICsJZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVk aWQpOw0KPiArCWNvdW50ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7 DQo+ICsJa2ZyZWUoZWRpZCk7DQo+ICsNCj4gKwlyZXR1cm4gY291bnQ7DQo+ICsNCj4gK2Vy cl9rZnJlZToNCj4gKwlrZnJlZShlZGlkKTsNCj4gK2Vycl9kcm1fY29ubmVjdG9yX3VwZGF0 ZV9lZGlkX3Byb3BlcnR5Og0KPiArCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVy dHkoY29ubmVjdG9yLCBOVUxMKTsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBhc3RfYXN0ZHBf Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsNCj4gKwkuZ2V0X21vZGVzID0gYXN0X2FzdGRw X2Nvbm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFzdF9hc3RkcF9jb25uZWN0b3JfZnVu Y3MgPSB7DQo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0 LA0KPiArCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9y X21vZGVzLA0KPiArCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLA0KPiArCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1 cGxpY2F0ZV9zdGF0ZSwNCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4gK307DQo+ICsNCj4gK3N0YXRp YyBpbnQgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ICt7DQo+ICsJaW50IHJldDsN Cj4gKw0KPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwgJmFz dF9hc3RkcF9jb25uZWN0b3JfZnVuY3MsDQo+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9E aXNwbGF5UG9ydCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiAr CWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZhc3RfYXN0ZHBfY29ubmVj dG9yX2hlbHBlcl9mdW5jcyk7DQo+ICsNCj4gKwljb25uZWN0b3ItPmludGVybGFjZV9hbGxv d2VkID0gMDsNCj4gKwljb25uZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9IDA7DQo+ICsN Cj4gKwljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNUOw0K PiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgYXN0X2FzdGRw X291dHB1dF9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQ0KPiArew0KPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSAmYXN0LT5iYXNlOw0KPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9ICZhc3QtPmNydGM7DQo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0g JmFzdC0+b3V0cHV0LmFzdGRwLmVuY29kZXI7DQo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciA9ICZhc3QtPm91dHB1dC5hc3RkcC5jb25uZWN0b3I7DQo+ICsJaW50IHJl dDsNCj4gKw0KPiArCXJldCA9IGRybV9zaW1wbGVfZW5jb2Rlcl9pbml0KGRldiwgZW5jb2Rl ciwgRFJNX01PREVfRU5DT0RFUl9UTURTKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4g cmV0Ow0KPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gZHJtX2NydGNfbWFzayhjcnRj KTsNCj4gKw0KPiArCXJldCA9IGFzdF9hc3RkcF9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5l Y3Rvcik7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9 IGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gICAvKg0KPiAgICAqIE1vZGUgY29uZmlnDQo+ICAgICovDQo+IEBAIC0xNTYz LDcgKzE2NzUsOCBAQCBpbnQgYXN0X21vZGVfY29uZmlnX2luaXQoc3RydWN0IGFzdF9wcml2 YXRlICphc3QpDQo+ICAgCSAgICBhc3QtPmNoaXAgPT0gQVNUMjIwMCB8fA0KPiAgIAkgICAg YXN0LT5jaGlwID09IEFTVDIzMDAgfHwNCj4gICAJICAgIGFzdC0+Y2hpcCA9PSBBU1QyNDAw IHx8DQo+IC0JICAgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB7DQo+ICsJICAgIGFzdC0+Y2hp cCA9PSBBU1QyNTAwIHx8DQo+ICsJICAgIGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSB7DQo+ICAg CQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7DQo+ICAgCQlkZXYtPm1vZGVf Y29uZmlnLm1heF9oZWlnaHQgPSAyMDQ4Ow0KPiAgIAl9IGVsc2Ugew0KPiBAQCAtMTU5NCw2 ICsxNzA3LDkgQEAgaW50IGFzdF9tb2RlX2NvbmZpZ19pbml0KHN0cnVjdCBhc3RfcHJpdmF0 ZSAqYXN0KQ0KPiAgIAljYXNlIEFTVF9UWF9EUDUwMToNCj4gICAJCXJldCA9IGFzdF9kcDUw MV9vdXRwdXRfaW5pdChhc3QpOw0KPiAgIAkJYnJlYWs7DQo+ICsJY2FzZSBBU1RfVFhfQVNU RFA6DQo+ICsJCXJldCA9IGFzdF9hc3RkcF9vdXRwdXRfaW5pdChhc3QpOw0KPiArCQlicmVh azsNCj4gICAJfQ0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJuIHJldDsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X3Bvc3QuYw0KPiBpbmRleCBiNWQ5MmY2NTIuLjBhYTljZjBmYiAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPiBAQCAtMzc5LDcgKzM3OSw5IEBAIHZvaWQg YXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ICAgCWFzdF9lbmFibGVf bW1pbyhkZXYpOw0KPiAgIAlhc3Rfc2V0X2RlZl9leHRfcmVnKGRldik7DQo+IA0KPiAtCWlm IChhc3QtPmNvbmZpZ19tb2RlID09IGFzdF91c2VfcDJhKSB7DQo+ICsJaWYgKGFzdC0+Y2hp cCA9PSBBU1QyNjAwKSB7DQo+ICsJCWFzdF9kcF9sYXVuY2goZGV2LCAxKTsNCj4gKwl9IGVs c2UgaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4gICAJCWlmIChh c3QtPmNoaXAgPT0gQVNUMjUwMCkNCj4gICAJCQlhc3RfcG9zdF9jaGlwXzI1MDAoZGV2KTsN Cj4gICAJCWVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBB U1QyNDAwKQ0KPiANCj4gYmFzZS1jb21taXQ6IGM1NGIzOWE1NjUyMjc1MzhjNTJlYWQyMzQ5 ZWIxN2Q1NGFhZGQ2ZjcNCj4gLS0NCj4gMi4yNy4wDQo+IA0KDQotLSANClRob21hcyBaaW1t ZXJtYW5uDQpHcmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0 aW9ucyBHZXJtYW55IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2Vy bWFueQ0KKEhSQiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2 byBUb3Rldg0K --------------X4725FSZ0YDffwJMrV060ko9-- --------------8WGM3tXQ00hd5Zhq6ErhF3Wn 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+AFAmJyKugFAwAAAAAACgkQlh/E3EQov+At WBAApNleFLZ50bP+ALn7nRZQs2b5Wrpc7lBcjRd/AMG+El0pV0rsO5cM2Rjro5R7jmIGu723NUXA Nyf41sv9iRqxkHFRhIXCS+wxW3b5xTtktniX4U9y3f+jGYS/iopwWPUyR1Xw0yut4db8zINu5eYl OAUJ6DmocAAERZXmOlkKm43YjOYrTZV8x/mFIeMH/BzfEA9dSMGOzWLd5j2T7OL+p5miV5HULy17 ZC12u61Exp5Jv9Qt0opQsddNrakW7RFnt2saN6TVugJ+HwhX/GqTY2qBrl5uMazBo+tS5xkvFe7H JX5cV1ykWTGLGGfMpBdmNDfk8R0cLz4GOTT62wt5eebuC7FlnI9vxYgMKlq6KZPNY8iCeTY5EhgM Wv1wW6k3Q4iIA8TddKsn7QNPQXT2DoP7AcMa8/253MweYDAdejgFx0yhWzBVbQKrJnaP0/irH7k6 EGWDTOmWSTguIjsWw68NPrQ0B7ChLneQ1MxiNmdEGI73mhrcKXCx4YJ7Wud2OCLiPSWKeLiqCmT2 6RGtfdqEkT7VV0PthJftT5qn3u77+9P3k+cdaA9buZtqEg997+D5999u90NsJjRcb455qVSCLch7 WbKEtLEWE74CROeCb2bZCBDB5RdJWRXf2e+qPZhrjemkU6kPQWo0EFcxgYdv4TMausiiIoGhI2GA Vx4= =Z4s9 -----END PGP SIGNATURE----- --------------8WGM3tXQ00hd5Zhq6ErhF3Wn--