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 X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1969C433F5 for ; Mon, 20 Sep 2021 08:40:02 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7729C60F12 for ; Mon, 20 Sep 2021 08:40:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7729C60F12 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 216E96E41D; Mon, 20 Sep 2021 08:40:02 +0000 (UTC) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by gabe.freedesktop.org (Postfix) with ESMTPS id 002236E41D for ; Mon, 20 Sep 2021 08:40:00 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 8472020042; Mon, 20 Sep 2021 08:39:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1632127199; 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=SywbdPxKj1A3I7XzzrjZaWmgokPqI25rTqJEl9btsWs=; b=oeLtKmD3+BUSRL2rXi2T2y0NSLcpccY3CkZq85da6icHNJ9aRYNZqQnCo6bNm058RD2v4D /pgWDmWEMYrD71QjdEokNUGQiY95jjMOCShpotGHxYFHCWlzpeq17AeLnZ0UHlcoD6cRxX hKRxY4CwPr1E9ZIz3idMMY7fm04KjmI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1632127199; 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=SywbdPxKj1A3I7XzzrjZaWmgokPqI25rTqJEl9btsWs=; b=ITL0CLeL8ecW8gypJ+cqZyST5xrPkkVs2C3OaR5BAEECbOHGHwOPLNvm1wotvHN1+w86QP GrNKxzR/E+Gk05DA== 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 5D74013A81; Mon, 20 Sep 2021 08:39:59 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 8Y+9Fd9ISGGRIwAAMHmgww (envelope-from ); Mon, 20 Sep 2021 08:39:59 +0000 Message-ID: <6c588fab-00c0-dc89-ab4a-b18be5b5e28c@suse.de> Date: Mon, 20 Sep 2021 10:39:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.0.3 Subject: Re: [PATCH] drm/amdgpu: use generic fb helpers instead of setting up AMD own's. Content-Language: en-US To: Alex Deucher , Evan Quan Cc: amd-gfx list , "Deucher, Alexander" , =?UTF-8?Q?Christian_K=c3=b6nig?= References: <20210910032530.725067-1-evan.quan@amd.com> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------skCUp50ElBDKrlrxjE2Gohe2" X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------skCUp50ElBDKrlrxjE2Gohe2 Content-Type: multipart/mixed; boundary="------------L57YMlznuPECAEP0F9Y7BtvK"; protected-headers="v1" From: Thomas Zimmermann To: Alex Deucher , Evan Quan Cc: amd-gfx list , "Deucher, Alexander" , =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <6c588fab-00c0-dc89-ab4a-b18be5b5e28c@suse.de> Subject: Re: [PATCH] drm/amdgpu: use generic fb helpers instead of setting up AMD own's. References: <20210910032530.725067-1-evan.quan@amd.com> In-Reply-To: --------------L57YMlznuPECAEP0F9Y7BtvK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMTMuMDkuMjEgdW0gMTY6MzYgc2NocmllYiBBbGV4IERldWNoZXI6DQo+IE9u IFRodSwgU2VwIDksIDIwMjEgYXQgMTE6MjUgUE0gRXZhbiBRdWFuIDxldmFuLnF1YW5AYW1k LmNvbT4gd3JvdGU6DQo+Pg0KPj4gV2l0aCB0aGUgc2hhZG93IGJ1ZmZlciBzdXBwb3J0IGZy b20gZ2VuZXJpYyBmcmFtZWJ1ZmZlciBlbXVsYXRpb24sIGl0J3MNCj4+IHBvc3NpYmxlIG5v dyB0byBoYXZlIHJ1bnBtIGtpY2tlZCB3aGVuIG5vIHVwZGF0ZSBmb3IgY29uc29sZS4NCj4+ DQo+PiBDaGFuZ2UtSWQ6IEkyODU0NzJjOTEwMGVlNmY2NDlkM2YzZjM1NDhmNDAyYjljZDM0 ZWFmDQo+PiBTaWduZWQtb2ZmLWJ5OiBFdmFuIFF1YW4gPGV2YW4ucXVhbkBhbWQuY29tPg0K Pj4gQWNrZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNv bT4NCj4gDQo+IFJldmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVy QGFtZC5jb20+DQoNClRoZXJlIHdhcyBhIGxvbmcgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGNo YW5nZSB3aXRoaW4gcmFkZW9uIGFuZCB0aGUgDQpyZXN1bHQgd2FzIHRoYXQgaXQgY2Fubm90 IGJlIGRvbmUuIFsxXSBJIGRvbid0IHJlbWVtYmVyIHRoZSBmdWxsIA0KZGV0YWlscywgYnV0 IHNlbWFudGljcyBvZiB0aGUgdm1hcC92dW5tYXAgZm9yIGRtYS1idWZzIHdlcmUgbm90IA0K Y29tcGF0aWJsZSBJSVJDLiBBbmQgdGhlIHJlc29sdXRpb24gd2FzIGEgcmVkZXNpZ24gb2Yg dGhlIEFQSS4NCg0KSWYgdGhhdCBoYXMgY2hhbmdlZCwgSSdkIGJlIGhhcHB5IHRvIHNlZSB0 aGlzIHBhdGhjIG1lcmdlZC4gT3RoZXJ3aXNlLCANCml0IHNob3VsZCBiZXR0ZXIgbm90IGJl IHRha2VuLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQpbMV0gaHR0cHM6Ly9wYXRjaHdv cmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzQwMDA1NC8/c2VyaWVzPTgzNzY1JnJldj0xDQoN Cj4gDQo+PiAtLQ0KPj4gdjEtPnYyOg0KPj4gICAgLSByZW5hbWUgYW1kZ3B1X2FsaWduX3Bp dGNoIGFzIGFtZGdwdV9nZW1fYWxpZ25fcGl0Y2ggdG8gYWxpZ24gd2l0aA0KPj4gICAgICBv dGhlciBBUElzIGZyb20gdGhlIHNhbWUgZmlsZSAoQWxleCkNCj4+IC0tLQ0KPj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSAgICAgICAgIHwgICAyICstDQo+PiAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAgfCAgMTIgKy0N Cj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYyB8ICAx MSArLQ0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMgICAg IHwgIDEzICsNCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMg ICAgICB8IDM4OCAtLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMgICAgIHwgIDMwICstDQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tb2RlLmggICAgfCAgMjAgLQ0KPj4gICA3IGZpbGVz IGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDQyNiBkZWxldGlvbnMoLSkNCj4+ICAgZGVs ZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9mYi5j DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCj4+IGluZGV4IDhk MDc0ODE4NGExNC4uNzNhMjE1MWVlNDNmIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L01ha2VmaWxlDQo+PiBAQCAtNDUsNyArNDUsNyBAQCBhbWRncHUteSArPSBhbWRn cHVfZGV2aWNlLm8gYW1kZ3B1X2ttcy5vIFwNCj4+ICAgICAgICAgIGFtZGdwdV9hdG9tYmlv cy5vIGF0b21iaW9zX2NydGMubyBhbWRncHVfY29ubmVjdG9ycy5vIFwNCj4+ICAgICAgICAg IGF0b20ubyBhbWRncHVfZmVuY2UubyBhbWRncHVfdHRtLm8gYW1kZ3B1X29iamVjdC5vIGFt ZGdwdV9nYXJ0Lm8gXA0KPj4gICAgICAgICAgYW1kZ3B1X2VuY29kZXJzLm8gYW1kZ3B1X2Rp c3BsYXkubyBhbWRncHVfaTJjLm8gXA0KPj4gLSAgICAgICBhbWRncHVfZmIubyBhbWRncHVf Z2VtLm8gYW1kZ3B1X3JpbmcubyBcDQo+PiArICAgICAgIGFtZGdwdV9nZW0ubyBhbWRncHVf cmluZy5vIFwNCj4+ICAgICAgICAgIGFtZGdwdV9jcy5vIGFtZGdwdV9iaW9zLm8gYW1kZ3B1 X2JlbmNobWFyay5vIGFtZGdwdV90ZXN0Lm8gXA0KPj4gICAgICAgICAgYXRvbWJpb3NfZHAu byBhbWRncHVfYWZtdC5vIGFtZGdwdV90cmFjZV9wb2ludHMubyBcDQo+PiAgICAgICAgICBh dG9tYmlvc19lbmNvZGVycy5vIGFtZGdwdV9zYS5vIGF0b21iaW9zX2kyYy5vIFwNCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+IGluZGV4 IDY4MmQ0NTllOTkyYS4uYmNjMzA4YjdmODI2IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+IEBAIC0zNjk1LDggKzM2OTUs NiBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LA0KPj4gICAgICAgICAgLyogR2V0IGEgbG9nMiBmb3IgZWFzeSBkaXZpc2lvbnMuICovDQo+ PiAgICAgICAgICBhZGV2LT5tbV9zdGF0cy5sb2cyX21heF9NQnBzID0gaWxvZzIobWF4KDF1 LCBtYXhfTUJwcykpOw0KPj4NCj4+IC0gICAgICAgYW1kZ3B1X2ZiZGV2X2luaXQoYWRldik7 DQo+PiAtDQo+PiAgICAgICAgICByID0gYW1kZ3B1X3BtX3N5c2ZzX2luaXQoYWRldik7DQo+ PiAgICAgICAgICBpZiAocikgew0KPj4gICAgICAgICAgICAgICAgICBhZGV2LT5wbV9zeXNm c19lbiA9IGZhbHNlOw0KPj4gQEAgLTM4NTQsOCArMzg1Miw2IEBAIHZvaWQgYW1kZ3B1X2Rl dmljZV9maW5pX2h3KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPj4gICAgICAgICAg ICAgICAgICBhbWRncHVfdWNvZGVfc3lzZnNfZmluaShhZGV2KTsNCj4+ICAgICAgICAgIHN5 c2ZzX3JlbW92ZV9maWxlcygmYWRldi0+ZGV2LT5rb2JqLCBhbWRncHVfZGV2X2F0dHJpYnV0 ZXMpOw0KPj4NCj4+IC0gICAgICAgYW1kZ3B1X2ZiZGV2X2ZpbmkoYWRldik7DQo+PiAtDQo+ PiAgICAgICAgICBhbWRncHVfaXJxX2ZpbmlfaHcoYWRldik7DQo+Pg0KPj4gICAgICAgICAg YW1kZ3B1X2RldmljZV9pcF9maW5pX2Vhcmx5KGFkZXYpOw0KPj4gQEAgLTM5MzEsNyArMzky Nyw3IEBAIGludCBhbWRncHVfZGV2aWNlX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgYm9vbCBmYmNvbikNCj4+ICAgICAgICAgIGRybV9rbXNfaGVscGVyX3BvbGxfZGlzYWJs ZShkZXYpOw0KPj4NCj4+ICAgICAgICAgIGlmIChmYmNvbikNCj4+IC0gICAgICAgICAgICAg ICBhbWRncHVfZmJkZXZfc2V0X3N1c3BlbmQoYWRldiwgMSk7DQo+PiArICAgICAgICAgICAg ICAgZHJtX2ZiX2hlbHBlcl9zZXRfc3VzcGVuZF91bmxvY2tlZChhZGV2X3RvX2RybShhZGV2 KS0+ZmJfaGVscGVyLCB0cnVlKTsNCj4+DQo+PiAgICAgICAgICBjYW5jZWxfZGVsYXllZF93 b3JrX3N5bmMoJmFkZXYtPmRlbGF5ZWRfaW5pdF93b3JrKTsNCj4+DQo+PiBAQCAtNDAwOSw3 ICs0MDA1LDcgQEAgaW50IGFtZGdwdV9kZXZpY2VfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGJvb2wgZmJjb24pDQo+PiAgICAgICAgICBmbHVzaF9kZWxheWVkX3dvcmsoJmFk ZXYtPmRlbGF5ZWRfaW5pdF93b3JrKTsNCj4+DQo+PiAgICAgICAgICBpZiAoZmJjb24pDQo+ PiAtICAgICAgICAgICAgICAgYW1kZ3B1X2ZiZGV2X3NldF9zdXNwZW5kKGFkZXYsIDApOw0K Pj4gKyAgICAgICAgICAgICAgIGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2NrZWQo YWRldl90b19kcm0oYWRldiktPmZiX2hlbHBlciwgZmFsc2UpOw0KPj4NCj4+ICAgICAgICAg IGRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKGRldik7DQo+Pg0KPj4gQEAgLTQ2MzgsNyAr NDYzNCw3IEBAIGludCBhbWRncHVfZG9fYXNpY19yZXNldChzdHJ1Y3QgbGlzdF9oZWFkICpk ZXZpY2VfbGlzdF9oYW5kbGUsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAocikNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z290byBvdXQ7DQo+Pg0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWRn cHVfZmJkZXZfc2V0X3N1c3BlbmQodG1wX2FkZXYsIDApOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkcm1fZmJfaGVscGVyX3NldF9zdXNwZW5kX3VubG9ja2VkKGFk ZXZfdG9fZHJtKHRtcF9hZGV2KS0+ZmJfaGVscGVyLCBmYWxzZSk7DQo+Pg0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqIFRoZSBHUFUgZW50ZXJzIGJhZCBzdGF0ZSBvbmNlIGZhdWx0eSBw YWdlcw0KPj4gQEAgLTUwMjUsNyArNTAyMSw3IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9y ZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAgICAgICAgICAgICAg ICAgKi8NCj4+ICAgICAgICAgICAgICAgICAgYW1kZ3B1X3VucmVnaXN0ZXJfZ3B1X2luc3Rh bmNlKHRtcF9hZGV2KTsNCj4+DQo+PiAtICAgICAgICAgICAgICAgYW1kZ3B1X2ZiZGV2X3Nl dF9zdXNwZW5kKHRtcF9hZGV2LCAxKTsNCj4+ICsgICAgICAgICAgICAgICBkcm1fZmJfaGVs cGVyX3NldF9zdXNwZW5kX3VubG9ja2VkKGFkZXZfdG9fZHJtKGFkZXYpLT5mYl9oZWxwZXIs IHRydWUpOw0KPj4NCj4+ICAgICAgICAgICAgICAgICAgLyogZGlzYWJsZSByYXMgb24gQUxM IElQcyAqLw0KPj4gICAgICAgICAgICAgICAgICBpZiAoIW5lZWRfZW1lcmdlbmN5X3Jlc3Rh cnQgJiYNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3Bs YXkuYw0KPj4gaW5kZXggN2E3MzE2NzMxOTExLi41OGJmYzdmMDBkNzYgMTAwNjQ0DQo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jDQo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jDQo+PiBA QCAtMTU3MiwxMyArMTU3MiwxMCBAQCBpbnQgYW1kZ3B1X2Rpc3BsYXlfc3VzcGVuZF9oZWxw ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7DQo+PiAgICAgICAgICAgICAgICAgIH0NCj4+ICAgICAgICAgICAg ICAgICAgcm9iaiA9IGdlbV90b19hbWRncHVfYm8oZmItPm9ialswXSk7DQo+PiAtICAgICAg ICAgICAgICAgLyogZG9uJ3QgdW5waW4ga2VybmVsIGZiIG9iamVjdHMgKi8NCj4+IC0gICAg ICAgICAgICAgICBpZiAoIWFtZGdwdV9mYmRldl9yb2JqX2lzX2ZiKGFkZXYsIHJvYmopKSB7 DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICByID0gYW1kZ3B1X2JvX3Jlc2VydmUocm9i aiwgdHJ1ZSk7DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAwKSB7DQo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9ib191bnBpbihyb2Jq KTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2JvX3VucmVz ZXJ2ZShyb2JqKTsNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAg ICAgICAgICByID0gYW1kZ3B1X2JvX3Jlc2VydmUocm9iaiwgdHJ1ZSk7DQo+PiArICAgICAg ICAgICAgICAgaWYgKHIgPT0gMCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYW1k Z3B1X2JvX3VucGluKHJvYmopOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1 X2JvX3VucmVzZXJ2ZShyb2JqKTsNCj4+ICAgICAgICAgICAgICAgICAgfQ0KPj4gICAgICAg ICAgfQ0KPj4gICAgICAgICAgcmV0dXJuIDA7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rydi5jDQo+PiBpbmRleCA5ODc0ODJjMjZiMWEuLmRiMjFhZjVlODRl ZCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k cnYuYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5j DQo+PiBAQCAtMTM0OCw2ICsxMzQ4LDE5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3BjaV9wcm9i ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4+ICAgICAgICAgICAgICAgICAgZ290byBlcnJf cGNpOw0KPj4gICAgICAgICAgfQ0KPj4NCj4+ICsgICAgICAgLyoNCj4+ICsgICAgICAgICog MS4gZG9uJ3QgaW5pdCBmYmRldiBvbiBodyB3aXRob3V0IERDRQ0KPj4gKyAgICAgICAgKiAy LiBkb24ndCBpbml0IGZiZGV2IGlmIHRoZXJlIGFyZSBubyBjb25uZWN0b3JzDQo+PiArICAg ICAgICAqLw0KPj4gKyAgICAgICBpZiAoYWRldi0+bW9kZV9pbmZvLm1vZGVfY29uZmlnX2lu aXRpYWxpemVkICYmDQo+PiArICAgICAgICAgICAhbGlzdF9lbXB0eSgmYWRldl90b19kcm0o YWRldiktPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0KSkgew0KPj4gKyAgICAgICAgICAg ICAgIC8qIHNlbGVjdCA4IGJwcCBjb25zb2xlIG9uIGxvdyB2cmFtIGNhcmRzICovDQo+PiAr ICAgICAgICAgICAgICAgaWYgKGFkZXYtPmdtYy5yZWFsX3ZyYW1fc2l6ZSA8PSAoMzIqMTAy NCoxMDI0KSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRybV9mYmRldl9nZW5lcmlj X3NldHVwKGFkZXZfdG9fZHJtKGFkZXYpLCA4KTsNCj4+ICsgICAgICAgICAgICAgICBlbHNl DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChh ZGV2X3RvX2RybShhZGV2KSwgMzIpOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiAgICAgICAg ICByZXQgPSBhbWRncHVfZGVidWdmc19pbml0KGFkZXYpOw0KPj4gICAgICAgICAgaWYgKHJl dCkNCj4+ICAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJDcmVhdGluZyBkZWJ1Z2ZzIGZp bGVzIGZhaWxlZCAoJWQpLlxuIiwgcmV0KTsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9mYi5jDQo+PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4 IGNkMGFjYmVhNzVkYS4uMDAwMDAwMDAwMDAwDQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZmIuYw0KPj4gKysrIC9kZXYvbnVsbA0KPj4gQEAgLTEsMzg4 ICswLDAgQEANCj4+IC0vKg0KPj4gLSAqIENvcHlyaWdodCDCqSAyMDA3IERhdmlkIEFpcmxp ZQ0KPj4gLSAqDQo+PiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4+IC0gKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLA0KPj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4+IC0gKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwNCj4+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCj4+IC0gKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOg0KPj4gLSAqDQo+PiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dA0KPj4gLSAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUNCj4+IC0gKiBTb2Z0d2FyZS4NCj4+IC0gKg0KPj4gLSAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SDQo+PiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+PiAtICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMDQo+PiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4+IC0gKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORw0KPj4gLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4+IC0gKiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuDQo+PiAtICoNCj4+IC0gKiBBdXRob3JzOg0KPj4gLSAqICAg ICBEYXZpZCBBaXJsaWUNCj4+IC0gKi8NCj4+IC0NCj4+IC0jaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+DQo+PiAtI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4+IC0jaW5jbHVk ZSA8bGludXgvc2xhYi5oPg0KPj4gLSNpbmNsdWRlIDxsaW51eC92Z2Ffc3dpdGNoZXJvby5o Pg0KPj4gLQ0KPj4gLSNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPg0KPj4gLSNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4NCj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pg0KPj4gLSNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPg0KPj4gLSNpbmNsdWRlIDxk cm0vZHJtX2ZvdXJjYy5oPg0KPj4gLQ0KPj4gLSNpbmNsdWRlICJhbWRncHUuaCINCj4+IC0j aW5jbHVkZSAiY2lrZC5oIg0KPj4gLSNpbmNsdWRlICJhbWRncHVfZ2VtLmgiDQo+PiAtDQo+ PiAtI2luY2x1ZGUgImFtZGdwdV9kaXNwbGF5LmgiDQo+PiAtDQo+PiAtLyogb2JqZWN0IGhp ZXJhcmNoeSAtDQo+PiAtICAgdGhpcyBjb250YWlucyBhIGhlbHBlciArIGEgYW1kZ3B1IGZi DQo+PiAtICAgdGhlIGhlbHBlciBjb250YWlucyBhIHBvaW50ZXIgdG8gYW1kZ3B1IGZyYW1l YnVmZmVyIGJhc2VjbGFzcy4NCj4+IC0qLw0KPj4gLQ0KPj4gLXN0YXRpYyBpbnQNCj4+IC1h bWRncHVmYl9vcGVuKHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgdXNlcikNCj4+IC17DQo+ PiAtICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7 DQo+PiAtICAgICAgIGludCByZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKGZiX2hlbHBlci0+ ZGV2LT5kZXYpOw0KPj4gLSAgICAgICBpZiAocmV0IDwgMCAmJiByZXQgIT0gLUVBQ0NFUykg ew0KPj4gLSAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koZmJfaGVs cGVyLT5kZXYtPmRldik7DQo+PiAtICAgICAgICAgICAgICAgcG1fcnVudGltZV9wdXRfYXV0 b3N1c3BlbmQoZmJfaGVscGVyLT5kZXYtPmRldik7DQo+PiAtICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsNCj4+IC0gICAgICAgfQ0KPj4gLSAgICAgICByZXR1cm4gMDsNCj4+IC19DQo+ PiAtDQo+PiAtc3RhdGljIGludA0KPj4gLWFtZGdwdWZiX3JlbGVhc2Uoc3RydWN0IGZiX2lu Zm8gKmluZm8sIGludCB1c2VyKQ0KPj4gLXsNCj4+IC0gICAgICAgc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsNCj4+IC0NCj4+IC0gICAgICAgcG1fcnVu dGltZV9tYXJrX2xhc3RfYnVzeShmYl9oZWxwZXItPmRldi0+ZGV2KTsNCj4+IC0gICAgICAg cG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZmJfaGVscGVyLT5kZXYtPmRldik7DQo+PiAt ICAgICAgIHJldHVybiAwOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IGZiX29wcyBhbWRncHVmYl9vcHMgPSB7DQo+PiAtICAgICAgIC5vd25lciA9IFRISVNfTU9E VUxFLA0KPj4gLSAgICAgICBEUk1fRkJfSEVMUEVSX0RFRkFVTFRfT1BTLA0KPj4gLSAgICAg ICAuZmJfb3BlbiA9IGFtZGdwdWZiX29wZW4sDQo+PiAtICAgICAgIC5mYl9yZWxlYXNlID0g YW1kZ3B1ZmJfcmVsZWFzZSwNCj4+IC0gICAgICAgLmZiX2ZpbGxyZWN0ID0gZHJtX2ZiX2hl bHBlcl9jZmJfZmlsbHJlY3QsDQo+PiAtICAgICAgIC5mYl9jb3B5YXJlYSA9IGRybV9mYl9o ZWxwZXJfY2ZiX2NvcHlhcmVhLA0KPj4gLSAgICAgICAuZmJfaW1hZ2VibGl0ID0gZHJtX2Zi X2hlbHBlcl9jZmJfaW1hZ2VibGl0LA0KPj4gLX07DQo+PiAtDQo+PiAtDQo+PiAtaW50IGFt ZGdwdV9hbGlnbl9waXRjaChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHdpZHRo LCBpbnQgY3BwLCBib29sIHRpbGVkKQ0KPj4gLXsNCj4+IC0gICAgICAgaW50IGFsaWduZWQg PSB3aWR0aDsNCj4+IC0gICAgICAgaW50IHBpdGNoX21hc2sgPSAwOw0KPj4gLQ0KPj4gLSAg ICAgICBzd2l0Y2ggKGNwcCkgew0KPj4gLSAgICAgICBjYXNlIDE6DQo+PiAtICAgICAgICAg ICAgICAgcGl0Y2hfbWFzayA9IDI1NTsNCj4+IC0gICAgICAgICAgICAgICBicmVhazsNCj4+ IC0gICAgICAgY2FzZSAyOg0KPj4gLSAgICAgICAgICAgICAgIHBpdGNoX21hc2sgPSAxMjc7 DQo+PiAtICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAtICAgICAgIGNhc2UgMzoNCj4+IC0g ICAgICAgY2FzZSA0Og0KPj4gLSAgICAgICAgICAgICAgIHBpdGNoX21hc2sgPSA2MzsNCj4+ IC0gICAgICAgICAgICAgICBicmVhazsNCj4+IC0gICAgICAgfQ0KPj4gLQ0KPj4gLSAgICAg ICBhbGlnbmVkICs9IHBpdGNoX21hc2s7DQo+PiAtICAgICAgIGFsaWduZWQgJj0gfnBpdGNo X21hc2s7DQo+PiAtICAgICAgIHJldHVybiBhbGlnbmVkICogY3BwOw0KPj4gLX0NCj4+IC0N Cj4+IC1zdGF0aWMgdm9pZCBhbWRncHVmYl9kZXN0cm95X3Bpbm5lZF9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnb2JqKQ0KPj4gLXsNCj4+IC0gICAgICAgc3RydWN0IGFtZGdw dV9ibyAqYWJvID0gZ2VtX3RvX2FtZGdwdV9ibyhnb2JqKTsNCj4+IC0gICAgICAgaW50IHJl dDsNCj4+IC0NCj4+IC0gICAgICAgcmV0ID0gYW1kZ3B1X2JvX3Jlc2VydmUoYWJvLCB0cnVl KTsNCj4+IC0gICAgICAgaWYgKGxpa2VseShyZXQgPT0gMCkpIHsNCj4+IC0gICAgICAgICAg ICAgICBhbWRncHVfYm9fa3VubWFwKGFibyk7DQo+PiAtICAgICAgICAgICAgICAgYW1kZ3B1 X2JvX3VucGluKGFibyk7DQo+PiAtICAgICAgICAgICAgICAgYW1kZ3B1X2JvX3VucmVzZXJ2 ZShhYm8pOw0KPj4gLSAgICAgICB9DQo+PiAtICAgICAgIGRybV9nZW1fb2JqZWN0X3B1dChn b2JqKTsNCj4+IC19DQo+PiAtDQo+PiAtc3RhdGljIGludCBhbWRncHVmYl9jcmVhdGVfcGlu bmVkX29iamVjdChzdHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJkZXYsDQo+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQy ICptb2RlX2NtZCwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqZ29ial9wKQ0KPj4gLXsNCj4+IC0gICAgICAg Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsNCj4+IC0gICAgICAgc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByZmJkZXYtPmFkZXY7DQo+PiAtICAgICAgIHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ29iaiA9IE5VTEw7DQo+PiAtICAgICAgIHN0cnVjdCBhbWRn cHVfYm8gKmFibyA9IE5VTEw7DQo+PiAtICAgICAgIGJvb2wgZmJfdGlsZWQgPSBmYWxzZTsg LyogdXNlZnVsIGZvciB0ZXN0aW5nICovDQo+PiAtICAgICAgIHUzMiB0aWxpbmdfZmxhZ3Mg PSAwLCBkb21haW47DQo+PiAtICAgICAgIGludCByZXQ7DQo+PiAtICAgICAgIGludCBhbGln bmVkX3NpemUsIHNpemU7DQo+PiAtICAgICAgIGludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVp Z2h0Ow0KPj4gLSAgICAgICB1MzIgY3BwOw0KPj4gLSAgICAgICB1NjQgZmxhZ3MgPSBBTURH UFVfR0VNX0NSRUFURV9DUFVfQUNDRVNTX1JFUVVJUkVEIHwNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMgICAg IHwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVfR0VNX0NSRUFU RV9WUkFNX0NMRUFSRUQ7DQo+PiAtDQo+PiAtICAgICAgIGluZm8gPSBkcm1fZ2V0X2Zvcm1h dF9pbmZvKGFkZXZfdG9fZHJtKGFkZXYpLCBtb2RlX2NtZCk7DQo+PiAtICAgICAgIGNwcCA9 IGluZm8tPmNwcFswXTsNCj4+IC0NCj4+IC0gICAgICAgLyogbmVlZCB0byBhbGlnbiBwaXRj aCB3aXRoIGNydGMgbGltaXRzICovDQo+PiAtICAgICAgIG1vZGVfY21kLT5waXRjaGVzWzBd ID0gYW1kZ3B1X2FsaWduX3BpdGNoKGFkZXYsIG1vZGVfY21kLT53aWR0aCwgY3BwLA0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYl90 aWxlZCk7DQo+PiAtICAgICAgIGRvbWFpbiA9IGFtZGdwdV9kaXNwbGF5X3N1cHBvcnRlZF9k b21haW5zKGFkZXYsIGZsYWdzKTsNCj4+IC0gICAgICAgaGVpZ2h0ID0gQUxJR04obW9kZV9j bWQtPmhlaWdodCwgOCk7DQo+PiAtICAgICAgIHNpemUgPSBtb2RlX2NtZC0+cGl0Y2hlc1sw XSAqIGhlaWdodDsNCj4+IC0gICAgICAgYWxpZ25lZF9zaXplID0gQUxJR04oc2l6ZSwgUEFH RV9TSVpFKTsNCj4+IC0gICAgICAgcmV0ID0gYW1kZ3B1X2dlbV9vYmplY3RfY3JlYXRlKGFk ZXYsIGFsaWduZWRfc2l6ZSwgMCwgZG9tYWluLCBmbGFncywNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHR0bV9ib190eXBlX2RldmljZSwgTlVMTCwgJmdv YmopOw0KPj4gLSAgICAgICBpZiAocmV0KSB7DQo+PiAtICAgICAgICAgICAgICAgcHJfZXJy KCJmYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWVidWZmZXIgKCVkKVxuIiwgYWxpZ25lZF9zaXpl KTsNCj4+IC0gICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+IC0gICAgICAgfQ0K Pj4gLSAgICAgICBhYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKGdvYmopOw0KPj4gLQ0KPj4gLSAg ICAgICBpZiAoZmJfdGlsZWQpDQo+PiAtICAgICAgICAgICAgICAgdGlsaW5nX2ZsYWdzID0g QU1ER1BVX1RJTElOR19TRVQoQVJSQVlfTU9ERSwgR1JQSF9BUlJBWV8yRF9USUxFRF9USElO MSk7DQo+PiAtDQo+PiAtICAgICAgIHJldCA9IGFtZGdwdV9ib19yZXNlcnZlKGFibywgZmFs c2UpOw0KPj4gLSAgICAgICBpZiAodW5saWtlbHkocmV0ICE9IDApKQ0KPj4gLSAgICAgICAg ICAgICAgIGdvdG8gb3V0X3VucmVmOw0KPj4gLQ0KPj4gLSAgICAgICBpZiAodGlsaW5nX2Zs YWdzKSB7DQo+PiAtICAgICAgICAgICAgICAgcmV0ID0gYW1kZ3B1X2JvX3NldF90aWxpbmdf ZmxhZ3MoYWJvLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRpbGluZ19mbGFncyk7DQo+PiAtICAgICAgICAgICAgICAgaWYgKHJldCkN Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoYWRldi0+ZGV2LCAiRkIgZmFp bGVkIHRvIHNldCB0aWxpbmcgZmxhZ3NcbiIpOw0KPj4gLSAgICAgICB9DQo+PiAtDQo+PiAt ICAgICAgIHJldCA9IGFtZGdwdV9ib19waW4oYWJvLCBkb21haW4pOw0KPj4gLSAgICAgICBp ZiAocmV0KSB7DQo+PiAtICAgICAgICAgICAgICAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShhYm8p Ow0KPj4gLSAgICAgICAgICAgICAgIGdvdG8gb3V0X3VucmVmOw0KPj4gLSAgICAgICB9DQo+ PiAtDQo+PiAtICAgICAgIHJldCA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmYWJvLT50Ym8p Ow0KPj4gLSAgICAgICBpZiAocmV0KSB7DQo+PiAtICAgICAgICAgICAgICAgYW1kZ3B1X2Jv X3VucmVzZXJ2ZShhYm8pOw0KPj4gLSAgICAgICAgICAgICAgIGRldl9lcnIoYWRldi0+ZGV2 LCAiJXAgYmluZCBmYWlsZWRcbiIsIGFibyk7DQo+PiAtICAgICAgICAgICAgICAgZ290byBv dXRfdW5yZWY7DQo+PiAtICAgICAgIH0NCj4+IC0NCj4+IC0gICAgICAgcmV0ID0gYW1kZ3B1 X2JvX2ttYXAoYWJvLCBOVUxMKTsNCj4+IC0gICAgICAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShh Ym8pOw0KPj4gLSAgICAgICBpZiAocmV0KSB7DQo+PiAtICAgICAgICAgICAgICAgZ290byBv dXRfdW5yZWY7DQo+PiAtICAgICAgIH0NCj4+IC0NCj4+IC0gICAgICAgKmdvYmpfcCA9IGdv Ymo7DQo+PiAtICAgICAgIHJldHVybiAwOw0KPj4gLW91dF91bnJlZjoNCj4+IC0gICAgICAg YW1kZ3B1ZmJfZGVzdHJveV9waW5uZWRfb2JqZWN0KGdvYmopOw0KPj4gLSAgICAgICAqZ29i al9wID0gTlVMTDsNCj4+IC0gICAgICAgcmV0dXJuIHJldDsNCj4+IC19DQo+PiAtDQo+PiAt c3RhdGljIGludCBhbWRncHVmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBl ciwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVy X3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpDQo+PiAtew0KPj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1 X2ZiZGV2ICpyZmJkZXYgPSAoc3RydWN0IGFtZGdwdV9mYmRldiAqKWhlbHBlcjsNCj4+IC0g ICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByZmJkZXYtPmFkZXY7DQo+PiAt ICAgICAgIHN0cnVjdCBmYl9pbmZvICppbmZvOw0KPj4gLSAgICAgICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IE5VTEw7DQo+PiAtICAgICAgIHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyIG1vZGVfY21kOw0KPj4gLSAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmog PSBOVUxMOw0KPj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICphYm8gPSBOVUxMOw0KPj4g LSAgICAgICBpbnQgcmV0Ow0KPj4gLQ0KPj4gLSAgICAgICBtZW1zZXQoJm1vZGVfY21kLCAw LCBzaXplb2YobW9kZV9jbWQpKTsNCj4+IC0gICAgICAgbW9kZV9jbWQud2lkdGggPSBzaXpl cy0+c3VyZmFjZV93aWR0aDsNCj4+IC0gICAgICAgbW9kZV9jbWQuaGVpZ2h0ID0gc2l6ZXMt PnN1cmZhY2VfaGVpZ2h0Ow0KPj4gLQ0KPj4gLSAgICAgICBpZiAoc2l6ZXMtPnN1cmZhY2Vf YnBwID09IDI0KQ0KPj4gLSAgICAgICAgICAgICAgIHNpemVzLT5zdXJmYWNlX2JwcCA9IDMy Ow0KPj4gLQ0KPj4gLSAgICAgICBtb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9s ZWdhY3lfZmJfZm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwNCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcy0+c3Vy ZmFjZV9kZXB0aCk7DQo+PiAtDQo+PiAtICAgICAgIHJldCA9IGFtZGdwdWZiX2NyZWF0ZV9w aW5uZWRfb2JqZWN0KHJmYmRldiwgJm1vZGVfY21kLCAmZ29iaik7DQo+PiAtICAgICAgIGlm IChyZXQpIHsNCj4+IC0gICAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBjcmVh dGUgZmJjb24gb2JqZWN0ICVkXG4iLCByZXQpOw0KPj4gLSAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+PiAtICAgICAgIH0NCj4+IC0NCj4+IC0gICAgICAgYWJvID0gZ2VtX3RvX2Ft ZGdwdV9ibyhnb2JqKTsNCj4+IC0NCj4+IC0gICAgICAgLyogb2theSB3ZSBoYXZlIGFuIG9i amVjdCBub3cgYWxsb2NhdGUgdGhlIGZyYW1lYnVmZmVyICovDQo+PiAtICAgICAgIGluZm8g PSBkcm1fZmJfaGVscGVyX2FsbG9jX2ZiaShoZWxwZXIpOw0KPj4gLSAgICAgICBpZiAoSVNf RVJSKGluZm8pKSB7DQo+PiAtICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihpbmZvKTsN Cj4+IC0gICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+IC0gICAgICAgfQ0KPj4gLQ0KPj4g LSAgICAgICByZXQgPSBhbWRncHVfZGlzcGxheV9nZW1fZmJfaW5pdChhZGV2X3RvX2RybShh ZGV2KSwgJnJmYmRldi0+cmZiLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbW9kZV9jbWQsIGdvYmopOw0KPj4gLSAgICAgICBpZiAocmV0KSB7DQo+ PiAtICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBmcmFt ZWJ1ZmZlciAlZFxuIiwgcmV0KTsNCj4+IC0gICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ IC0gICAgICAgfQ0KPj4gLQ0KPj4gLSAgICAgICBmYiA9ICZyZmJkZXYtPnJmYi5iYXNlOw0K Pj4gLQ0KPj4gLSAgICAgICAvKiBzZXR1cCBoZWxwZXIgKi8NCj4+IC0gICAgICAgcmZiZGV2 LT5oZWxwZXIuZmIgPSBmYjsNCj4+IC0NCj4+IC0gICAgICAgaW5mby0+ZmJvcHMgPSAmYW1k Z3B1ZmJfb3BzOw0KPj4gLQ0KPj4gLSAgICAgICBpbmZvLT5maXguc21lbV9zdGFydCA9IGFt ZGdwdV9nbWNfdnJhbV9jcHVfcGEoYWRldiwgYWJvKTsNCj4+IC0gICAgICAgaW5mby0+Zml4 LnNtZW1fbGVuID0gYW1kZ3B1X2JvX3NpemUoYWJvKTsNCj4+IC0gICAgICAgaW5mby0+c2Ny ZWVuX2Jhc2UgPSBhbWRncHVfYm9fa3B0cihhYm8pOw0KPj4gLSAgICAgICBpbmZvLT5zY3Jl ZW5fc2l6ZSA9IGFtZGdwdV9ib19zaXplKGFibyk7DQo+PiAtDQo+PiAtICAgICAgIGRybV9m Yl9oZWxwZXJfZmlsbF9pbmZvKGluZm8sICZyZmJkZXYtPmhlbHBlciwgc2l6ZXMpOw0KPj4g LQ0KPj4gLSAgICAgICAvKiBzZXR1cCBhcGVydHVyZSBiYXNlL3NpemUgZm9yIHZlc2FmYiB0 YWtlb3ZlciAqLw0KPj4gLSAgICAgICBpbmZvLT5hcGVydHVyZXMtPnJhbmdlc1swXS5iYXNl ID0gYWRldl90b19kcm0oYWRldiktPm1vZGVfY29uZmlnLmZiX2Jhc2U7DQo+PiAtICAgICAg IGluZm8tPmFwZXJ0dXJlcy0+cmFuZ2VzWzBdLnNpemUgPSBhZGV2LT5nbWMuYXBlcl9zaXpl Ow0KPj4gLQ0KPj4gLSAgICAgICAvKiBVc2UgZGVmYXVsdCBzY3JhdGNoIHBpeG1hcCAoaW5m by0+cGl4bWFwLmZsYWdzID0gRkJfUElYTUFQX1NZU1RFTSkgKi8NCj4+IC0NCj4+IC0gICAg ICAgaWYgKGluZm8tPnNjcmVlbl9iYXNlID09IE5VTEwpIHsNCj4+IC0gICAgICAgICAgICAg ICByZXQgPSAtRU5PU1BDOw0KPj4gLSAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPj4gLSAg ICAgICB9DQo+PiAtDQo+PiAtICAgICAgIERSTV9JTkZPKCJmYiBtYXBwYWJsZSBhdCAweCVs WFxuIiwgIGluZm8tPmZpeC5zbWVtX3N0YXJ0KTsNCj4+IC0gICAgICAgRFJNX0lORk8oInZy YW0gYXBwZXIgYXQgMHglbFhcbiIsICAodW5zaWduZWQgbG9uZylhZGV2LT5nbWMuYXBlcl9i YXNlKTsNCj4+IC0gICAgICAgRFJNX0lORk8oInNpemUgJWx1XG4iLCAodW5zaWduZWQgbG9u ZylhbWRncHVfYm9fc2l6ZShhYm8pKTsNCj4+IC0gICAgICAgRFJNX0lORk8oImZiIGRlcHRo IGlzICVkXG4iLCBmYi0+Zm9ybWF0LT5kZXB0aCk7DQo+PiAtICAgICAgIERSTV9JTkZPKCIg ICBwaXRjaCBpcyAlZFxuIiwgZmItPnBpdGNoZXNbMF0pOw0KPj4gLQ0KPj4gLSAgICAgICB2 Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KGFkZXYtPnBkZXYsIGluZm8pOw0KPj4gLSAg ICAgICByZXR1cm4gMDsNCj4+IC0NCj4+IC1vdXQ6DQo+PiAtICAgICAgIGlmIChmYiAmJiBy ZXQpIHsNCj4+IC0gICAgICAgICAgICAgICBkcm1fZ2VtX29iamVjdF9wdXQoZ29iaik7DQo+ PiAtICAgICAgICAgICAgICAgZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZShm Yik7DQo+PiAtICAgICAgICAgICAgICAgZHJtX2ZyYW1lYnVmZmVyX2NsZWFudXAoZmIpOw0K Pj4gLSAgICAgICAgICAgICAgIGtmcmVlKGZiKTsNCj4+IC0gICAgICAgfQ0KPj4gLSAgICAg ICByZXR1cm4gcmV0Ow0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0aWMgaW50IGFtZGdwdV9mYmRl dl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBhbWRncHVfZmJkZXYg KnJmYmRldikNCj4+IC17DQo+PiAtICAgICAgIHN0cnVjdCBhbWRncHVfZnJhbWVidWZmZXIg KnJmYiA9ICZyZmJkZXYtPnJmYjsNCj4+IC0gICAgICAgaW50IGk7DQo+PiAtDQo+PiAtICAg ICAgIGRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJnJmYmRldi0+aGVscGVyKTsNCj4+ IC0NCj4+IC0gICAgICAgaWYgKHJmYi0+YmFzZS5vYmpbMF0pIHsNCj4+IC0gICAgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgcmZiLT5iYXNlLmZvcm1hdC0+bnVtX3BsYW5lczsgaSsr KQ0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHJtX2dlbV9vYmplY3RfcHV0KHJmYi0+ YmFzZS5vYmpbMF0pOw0KPj4gLSAgICAgICAgICAgICAgIGFtZGdwdWZiX2Rlc3Ryb3lfcGlu bmVkX29iamVjdChyZmItPmJhc2Uub2JqWzBdKTsNCj4+IC0gICAgICAgICAgICAgICByZmIt PmJhc2Uub2JqWzBdID0gTlVMTDsNCj4+IC0gICAgICAgICAgICAgICBkcm1fZnJhbWVidWZm ZXJfdW5yZWdpc3Rlcl9wcml2YXRlKCZyZmItPmJhc2UpOw0KPj4gLSAgICAgICAgICAgICAg IGRybV9mcmFtZWJ1ZmZlcl9jbGVhbnVwKCZyZmItPmJhc2UpOw0KPj4gLSAgICAgICB9DQo+ PiAtICAgICAgIGRybV9mYl9oZWxwZXJfZmluaSgmcmZiZGV2LT5oZWxwZXIpOw0KPj4gLQ0K Pj4gLSAgICAgICByZXR1cm4gMDsNCj4+IC19DQo+PiAtDQo+PiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGFtZGdwdV9mYl9oZWxwZXJfZnVuY3MgPSB7DQo+ PiAtICAgICAgIC5mYl9wcm9iZSA9IGFtZGdwdWZiX2NyZWF0ZSwNCj4+IC19Ow0KPj4gLQ0K Pj4gLWludCBhbWRncHVfZmJkZXZfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikN Cj4+IC17DQo+PiAtICAgICAgIHN0cnVjdCBhbWRncHVfZmJkZXYgKnJmYmRldjsNCj4+IC0g ICAgICAgaW50IGJwcF9zZWwgPSAzMjsNCj4+IC0gICAgICAgaW50IHJldDsNCj4+IC0NCj4+ IC0gICAgICAgLyogZG9uJ3QgaW5pdCBmYmRldiBvbiBodyB3aXRob3V0IERDRSAqLw0KPj4g LSAgICAgICBpZiAoIWFkZXYtPm1vZGVfaW5mby5tb2RlX2NvbmZpZ19pbml0aWFsaXplZCkN Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+IC0NCj4+IC0gICAgICAgLyogZG9u J3QgaW5pdCBmYmRldiBpZiB0aGVyZSBhcmUgbm8gY29ubmVjdG9ycyAqLw0KPj4gLSAgICAg ICBpZiAobGlzdF9lbXB0eSgmYWRldl90b19kcm0oYWRldiktPm1vZGVfY29uZmlnLmNvbm5l Y3Rvcl9saXN0KSkNCj4+IC0gICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+IC0NCj4+IC0g ICAgICAgLyogc2VsZWN0IDggYnBwIGNvbnNvbGUgb24gbG93IHZyYW0gY2FyZHMgKi8NCj4+ IC0gICAgICAgaWYgKGFkZXYtPmdtYy5yZWFsX3ZyYW1fc2l6ZSA8PSAoMzIqMTAyNCoxMDI0 KSkNCj4+IC0gICAgICAgICAgICAgICBicHBfc2VsID0gODsNCj4+IC0NCj4+IC0gICAgICAg cmZiZGV2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGFtZGdwdV9mYmRldiksIEdGUF9LRVJO RUwpOw0KPj4gLSAgICAgICBpZiAoIXJmYmRldikNCj4+IC0gICAgICAgICAgICAgICByZXR1 cm4gLUVOT01FTTsNCj4+IC0NCj4+IC0gICAgICAgcmZiZGV2LT5hZGV2ID0gYWRldjsNCj4+ IC0gICAgICAgYWRldi0+bW9kZV9pbmZvLnJmYmRldiA9IHJmYmRldjsNCj4+IC0NCj4+IC0g ICAgICAgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKGFkZXZfdG9fZHJtKGFkZXYpLCAmcmZiZGV2 LT5oZWxwZXIsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYW1kZ3B1X2Zi X2hlbHBlcl9mdW5jcyk7DQo+PiAtDQo+PiAtICAgICAgIHJldCA9IGRybV9mYl9oZWxwZXJf aW5pdChhZGV2X3RvX2RybShhZGV2KSwgJnJmYmRldi0+aGVscGVyKTsNCj4+IC0gICAgICAg aWYgKHJldCkgew0KPj4gLSAgICAgICAgICAgICAgIGtmcmVlKHJmYmRldik7DQo+PiAtICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+IC0gICAgICAgfQ0KPj4gLQ0KPj4gLSAgICAg ICAvKiBkaXNhYmxlIGFsbCB0aGUgcG9zc2libGUgb3V0cHV0cy9jcnRjcyBiZWZvcmUgZW50 ZXJpbmcgS01TIG1vZGUgKi8NCj4+IC0gICAgICAgaWYgKCFhbWRncHVfZGV2aWNlX2hhc19k Y19zdXBwb3J0KGFkZXYpICYmICFhbWRncHVfdmlydHVhbF9kaXNwbGF5KQ0KPj4gLSAgICAg ICAgICAgICAgIGRybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKGFkZXZfdG9f ZHJtKGFkZXYpKTsNCj4+IC0NCj4+IC0gICAgICAgZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2Nv bmZpZygmcmZiZGV2LT5oZWxwZXIsIGJwcF9zZWwpOw0KPj4gLSAgICAgICByZXR1cm4gMDsN Cj4+IC19DQo+PiAtDQo+PiAtdm9pZCBhbWRncHVfZmJkZXZfZmluaShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikNCj4+IC17DQo+PiAtICAgICAgIGlmICghYWRldi0+bW9kZV9pbmZv LnJmYmRldikNCj4+IC0gICAgICAgICAgICAgICByZXR1cm47DQo+PiAtDQo+PiAtICAgICAg IGFtZGdwdV9mYmRldl9kZXN0cm95KGFkZXZfdG9fZHJtKGFkZXYpLCBhZGV2LT5tb2RlX2lu Zm8ucmZiZGV2KTsNCj4+IC0gICAgICAga2ZyZWUoYWRldi0+bW9kZV9pbmZvLnJmYmRldik7 DQo+PiAtICAgICAgIGFkZXYtPm1vZGVfaW5mby5yZmJkZXYgPSBOVUxMOw0KPj4gLX0NCj4+ IC0NCj4+IC12b2lkIGFtZGdwdV9mYmRldl9zZXRfc3VzcGVuZChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgaW50IHN0YXRlKQ0KPj4gLXsNCj4+IC0gICAgICAgaWYgKGFkZXYtPm1v ZGVfaW5mby5yZmJkZXYpDQo+PiAtICAgICAgICAgICAgICAgZHJtX2ZiX2hlbHBlcl9zZXRf c3VzcGVuZF91bmxvY2tlZCgmYWRldi0+bW9kZV9pbmZvLnJmYmRldi0+aGVscGVyLA0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dGUpOw0KPj4gLX0NCj4+IC0NCj4+IC1pbnQgYW1kZ3B1X2ZiZGV2X3RvdGFsX3NpemUoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAtew0KPj4gLSAgICAgICBzdHJ1Y3QgYW1k Z3B1X2JvICpyb2JqOw0KPj4gLSAgICAgICBpbnQgc2l6ZSA9IDA7DQo+PiAtDQo+PiAtICAg ICAgIGlmICghYWRldi0+bW9kZV9pbmZvLnJmYmRldikNCj4+IC0gICAgICAgICAgICAgICBy ZXR1cm4gMDsNCj4+IC0NCj4+IC0gICAgICAgcm9iaiA9IGdlbV90b19hbWRncHVfYm8oYWRl di0+bW9kZV9pbmZvLnJmYmRldi0+cmZiLmJhc2Uub2JqWzBdKTsNCj4+IC0gICAgICAgc2l6 ZSArPSBhbWRncHVfYm9fc2l6ZShyb2JqKTsNCj4+IC0gICAgICAgcmV0dXJuIHNpemU7DQo+ PiAtfQ0KPj4gLQ0KPj4gLWJvb2wgYW1kZ3B1X2ZiZGV2X3JvYmpfaXNfZmIoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfYm8gKnJvYmopDQo+PiAtew0KPj4g LSAgICAgICBpZiAoIWFkZXYtPm1vZGVfaW5mby5yZmJkZXYpDQo+PiAtICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOw0KPj4gLSAgICAgICBpZiAocm9iaiA9PSBnZW1fdG9fYW1kZ3B1 X2JvKGFkZXYtPm1vZGVfaW5mby5yZmJkZXYtPnJmYi5iYXNlLm9ialswXSkpDQo+PiAtICAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+PiAtICAgICAgIHJldHVybiBmYWxzZTsNCj4+ IC19DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jDQo+PiBp bmRleCA5ZTI1MjViOTZkMDQuLjM1NWRiODQzODUyMiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYw0KPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jDQo+PiBAQCAtODc2LDYgKzg3NiwzMiBA QCBpbnQgYW1kZ3B1X2dlbV9vcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLA0KPj4gICAgICAgICAgcmV0dXJuIHI7DQo+PiAgIH0NCj4+DQo+PiArc3RhdGlj IGludCBhbWRncHVfZ2VtX2FsaWduX3BpdGNoKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3BwLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdGlsZWQpDQo+PiArew0KPj4gKyAg ICAgICBpbnQgYWxpZ25lZCA9IHdpZHRoOw0KPj4gKyAgICAgICBpbnQgcGl0Y2hfbWFzayA9 IDA7DQo+PiArDQo+PiArICAgICAgIHN3aXRjaCAoY3BwKSB7DQo+PiArICAgICAgIGNhc2Ug MToNCj4+ICsgICAgICAgICAgICAgICBwaXRjaF9tYXNrID0gMjU1Ow0KPj4gKyAgICAgICAg ICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIDI6DQo+PiArICAgICAgICAgICAgICAg cGl0Y2hfbWFzayA9IDEyNzsNCj4+ICsgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAg ICAgY2FzZSAzOg0KPj4gKyAgICAgICBjYXNlIDQ6DQo+PiArICAgICAgICAgICAgICAgcGl0 Y2hfbWFzayA9IDYzOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICB9 DQo+PiArDQo+PiArICAgICAgIGFsaWduZWQgKz0gcGl0Y2hfbWFzazsNCj4+ICsgICAgICAg YWxpZ25lZCAmPSB+cGl0Y2hfbWFzazsNCj4+ICsgICAgICAgcmV0dXJuIGFsaWduZWQgKiBj cHA7DQo+PiArfQ0KPj4gKw0KPj4gICBpbnQgYW1kZ3B1X21vZGVfZHVtYl9jcmVhdGUoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykNCj4+IEBAIC04OTYs OCArOTIyLDggQEAgaW50IGFtZGdwdV9tb2RlX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2LA0KPj4gICAgICAgICAgaWYgKGFkZXYtPm1tYW4uYnVmZmVyX2Z1bmNz X2VuYWJsZWQpDQo+PiAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEFNREdQVV9HRU1fQ1JF QVRFX1ZSQU1fQ0xFQVJFRDsNCj4+DQo+PiAtICAgICAgIGFyZ3MtPnBpdGNoID0gYW1kZ3B1 X2FsaWduX3BpdGNoKGFkZXYsIGFyZ3MtPndpZHRoLA0KPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBESVZfUk9VTkRfVVAoYXJncy0+YnBwLCA4KSwgMCk7 DQo+PiArICAgICAgIGFyZ3MtPnBpdGNoID0gYW1kZ3B1X2dlbV9hbGlnbl9waXRjaChhZGV2 LCBhcmdzLT53aWR0aCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERJVl9ST1VORF9VUChhcmdzLT5icHAsIDgpLCAwKTsNCj4+ICAgICAgICAg IGFyZ3MtPnNpemUgPSAodTY0KWFyZ3MtPnBpdGNoICogYXJncy0+aGVpZ2h0Ow0KPj4gICAg ICAgICAgYXJncy0+c2l6ZSA9IEFMSUdOKGFyZ3MtPnNpemUsIFBBR0VfU0laRSk7DQo+PiAg ICAgICAgICBkb21haW4gPSBhbWRncHVfYm9fZ2V0X3ByZWZlcnJlZF9kb21haW4oYWRldiwN Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9k ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21vZGUuaA0KPj4gaW5k ZXggODlmYjM3MmVkNDljLi42MDQzYmY2ZmQ0MTQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oDQo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oDQo+PiBAQCAtMjMyLDggKzIzMiw2IEBA IHN0cnVjdCBhbWRncHVfaTJjX2NoYW4gew0KPj4gICAgICAgICAgc3RydWN0IG11dGV4IG11 dGV4Ow0KPj4gICB9Ow0KPj4NCj4+IC1zdHJ1Y3QgYW1kZ3B1X2ZiZGV2Ow0KPj4gLQ0KPj4g ICBzdHJ1Y3QgYW1kZ3B1X2FmbXQgew0KPj4gICAgICAgICAgYm9vbCBlbmFibGVkOw0KPj4g ICAgICAgICAgaW50IG9mZnNldDsNCj4+IEBAIC0zMDksMTMgKzMwNyw2IEBAIHN0cnVjdCBh bWRncHVfZnJhbWVidWZmZXIgew0KPj4gICAgICAgICAgdWludDY0X3QgYWRkcmVzczsNCj4+ ICAgfTsNCj4+DQo+PiAtc3RydWN0IGFtZGdwdV9mYmRldiB7DQo+PiAtICAgICAgIHN0cnVj dCBkcm1fZmJfaGVscGVyIGhlbHBlcjsNCj4+IC0gICAgICAgc3RydWN0IGFtZGdwdV9mcmFt ZWJ1ZmZlciByZmI7DQo+PiAtICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmJkZXZfbGlzdDsN Cj4+IC0gICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXY7DQo+PiAtfTsNCj4+IC0N Cj4+ICAgc3RydWN0IGFtZGdwdV9tb2RlX2luZm8gew0KPj4gICAgICAgICAgc3RydWN0IGF0 b21fY29udGV4dCAqYXRvbV9jb250ZXh0Ow0KPj4gICAgICAgICAgc3RydWN0IGNhcmRfaW5m byAqYXRvbV9jYXJkX2luZm87DQo+PiBAQCAtMzQxLDggKzMzMiw2IEBAIHN0cnVjdCBhbWRn cHVfbW9kZV9pbmZvIHsNCj4+ICAgICAgICAgIHN0cnVjdCBlZGlkICpiaW9zX2hhcmRjb2Rl ZF9lZGlkOw0KPj4gICAgICAgICAgaW50IGJpb3NfaGFyZGNvZGVkX2VkaWRfc2l6ZTsNCj4+ DQo+PiAtICAgICAgIC8qIHBvaW50ZXIgdG8gZmJkZXYgaW5mbyBzdHJ1Y3R1cmUgKi8NCj4+ IC0gICAgICAgc3RydWN0IGFtZGdwdV9mYmRldiAqcmZiZGV2Ow0KPj4gICAgICAgICAgLyog ZmlybXdhcmUgZmxhZ3MgKi8NCj4+ICAgICAgICAgIHUzMiBmaXJtd2FyZV9mbGFnczsNCj4+ ICAgICAgICAgIC8qIHBvaW50ZXIgdG8gYmFja2xpZ2h0IGVuY29kZXIgKi8NCj4+IEBAIC02 MzEsMTUgKzYyMCw2IEBAIGJvb2wgYW1kZ3B1X2NydGNfZ2V0X3NjYW5vdXRfcG9zaXRpb24o c3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqaHBvcywga3RpbWVfdCAqc3RpbWUsIGt0aW1lX3QgKmV0aW1lLA0KPj4gICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsN Cj4+DQo+PiAtLyogZmJkZXYgbGF5ZXIgKi8NCj4+IC1pbnQgYW1kZ3B1X2ZiZGV2X2luaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOw0KPj4gLXZvaWQgYW1kZ3B1X2ZiZGV2X2Zp bmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOw0KPj4gLXZvaWQgYW1kZ3B1X2ZiZGV2 X3NldF9zdXNwZW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgc3RhdGUpOw0K Pj4gLWludCBhbWRncHVfZmJkZXZfdG90YWxfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldik7DQo+PiAtYm9vbCBhbWRncHVfZmJkZXZfcm9ial9pc19mYihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV9ibyAqcm9iaik7DQo+PiAtDQo+PiAtaW50 IGFtZGdwdV9hbGlnbl9waXRjaChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHdp ZHRoLCBpbnQgYnBwLCBib29sIHRpbGVkKTsNCj4+IC0NCj4+ICAgLyogYW1kZ3B1X2Rpc3Bs YXkuYyAqLw0KPj4gICB2b2lkIGFtZGdwdV9kaXNwbGF5X3ByaW50X2Rpc3BsYXlfc2V0dXAo c3RydWN0IGRybV9kZXZpY2UgKmRldik7DQo+PiAgIGludCBhbWRncHVfZGlzcGxheV9tb2Rl c2V0X2NyZWF0ZV9wcm9wcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+PiAtLQ0K Pj4gMi4yOS4wDQo+Pg0KDQotLSANClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBEcml2 ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgNCk1h eGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhSQiAzNjgwOSwgQUcg TsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEZlbGl4IEltZW5kw7ZyZmZlcg0K --------------L57YMlznuPECAEP0F9Y7BtvK-- --------------skCUp50ElBDKrlrxjE2Gohe2 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+AFAmFISN4FAwAAAAAACgkQlh/E3EQov+C8 bA//XRsegRIVN/HKMPLvNUji/lrwYKjNtHGGVdiiFPslb7cHs6MhHqReaExJAVMe+Oide0cknQeN aFC0t3gFgMSPPg1/Df7ooyXMd97/2qzO0yyCCW65WUQrpNrqs+Edym5/0srQHqZ0rG1KLowXqj+e 39e6ux3eWoxTUZDrffJuyN5z2FU5zab/SCdAAfGd6yyb/IyRDNPgFFFNEaSlrEO79Gzw370GbgUT J4h7A1jC0ZRZbK4sxC3ML9v7izuguRD5RPF9cb9SwW/OOpSpPyVHVAx22SOuogoXfs4XTPe3781u v939za10cvb75n4PhtQxevZkvuo7I8EfrDu1kd6k2jFS2GCsM9pNXl/TVkS7le207ZpySJyciMOX 6hQR4T9UO0RcAprq1HRU/3clpuFCpVgfpTCvwEx9IsmhDSX87T+hJ62LQtqUaVYnCp68BF89mqLO FMyv3Bo6Ii9Y+5HrtbJNLBuje8pTlewUBQAyEFWQTk0fEMCAKB0l8ortaxORI/O0M2HflZ0a40LH Z01w9q8m7YrGQrossEHUQ/D4KzY06STaCeXoTBXPJRSptl3JUrgu8Q0kqXW/aLGo0vWVhUHIXZjh kMNcJ01X4dyJwywFDySi8pXEDNeF7wf9L9+GpnDNZkazYwS4nZjB0UFPql8hG8vNXap9GzkHh+AI 2Xc= =IvtP -----END PGP SIGNATURE----- --------------skCUp50ElBDKrlrxjE2Gohe2--