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 D8530ECAAD5 for ; Mon, 5 Sep 2022 10:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237350AbiIEKlw (ORCPT ); Mon, 5 Sep 2022 06:41:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237395AbiIEKlo (ORCPT ); Mon, 5 Sep 2022 06:41:44 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB6324CA11 for ; Mon, 5 Sep 2022 03:41:41 -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-out2.suse.de (Postfix) with ESMTPS id 642C25FC6D; Mon, 5 Sep 2022 10:41:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1662374499; 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=k/QjixxW3G9qqYCQ2OahbO7pD0kIkf74JOxmZKkMIc8=; b=ISr2E0+HjGnnKUyYmOG6/O37ZMa74JyQ4HDN83mUA0ZfSYicPKiCEvet6Cr1lbtg+gLvwG YZivENG1MR7SixF/rfVUr9l35blBUHClaM6AKFheKzi0BD2u0k4HqK4hNPPgFX2Z/MocHd mMdgqZYa4o0vgQX8Mlif/+6YhptirGg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1662374499; 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=k/QjixxW3G9qqYCQ2OahbO7pD0kIkf74JOxmZKkMIc8=; b=Sd9s2gje7E9fYjP6cR87VYNl/WOzVLrkaDYFZZumJxKH+TI9ekKMPf6dzIHJDXfEKZYbKw jt6bIH/wnNKjjoDw== 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 45A7D13A66; Mon, 5 Sep 2022 10:41:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id NV0hEGPSFWMeTQAAMHmgww (envelope-from ); Mon, 05 Sep 2022 10:41:39 +0000 Message-ID: <6f499b1e-daa4-7de1-6ffc-151663807910@suse.de> Date: Mon, 5 Sep 2022 12:41:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH] drm/ssd130x: Replace simple display helpers with the atomic helpers Content-Language: en-US To: Javier Martinez Canillas , linux-kernel@vger.kernel.org Cc: David Airlie , dri-devel@lists.freedesktop.org References: <20220828151114.1141510-1-javierm@redhat.com> From: Thomas Zimmermann In-Reply-To: <20220828151114.1141510-1-javierm@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------YhN1TAXWq5CUmiEEOclsoSAC" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------YhN1TAXWq5CUmiEEOclsoSAC Content-Type: multipart/mixed; boundary="------------K0Pb2vyVN2YS3XsqBjhixoEF"; protected-headers="v1" From: Thomas Zimmermann To: Javier Martinez Canillas , linux-kernel@vger.kernel.org Cc: David Airlie , dri-devel@lists.freedesktop.org Message-ID: <6f499b1e-daa4-7de1-6ffc-151663807910@suse.de> Subject: Re: [PATCH] drm/ssd130x: Replace simple display helpers with the atomic helpers References: <20220828151114.1141510-1-javierm@redhat.com> In-Reply-To: <20220828151114.1141510-1-javierm@redhat.com> --------------K0Pb2vyVN2YS3XsqBjhixoEF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgSmF2aWVyDQoNCkFtIDI4LjA4LjIyIHVtIDE3OjExIHNjaHJpZWIgSmF2aWVyIE1hcnRp bmV6IENhbmlsbGFzOg0KPiBUaGUgc2ltcGxlIGRpc3BsYXkgcGlwZWxpbmUgaXMgYSBzZXQg b2YgaGVscGVycyB0aGF0IGNhbiBiZSB1c2VkIGJ5IERSTQ0KPiBkcml2ZXJzIHRvIGF2b2lk IGRlYWxpbmcgd2l0aCBhbGwgdGhlIG5lZWRlZCBjb21wb25lbnRzIGFuZCBqdXN0IGRlZmlu ZQ0KPiBhIGZldyBmdW5jdGlvbnMgdG8gb3BlcmF0ZSBhIHNpbXBsZSBkaXNwbGF5IGRldmlj ZSB3aXRoIG9uZSBmdWxsLXNjcmVlbg0KPiBzY2Fub3V0IGJ1ZmZlciBmZWVkaW5nIGEgc2lu Z2xlIG91dHB1dC4NCj4gDQo+IEJ1dCBpdCBpcyBhcmd1YWJsZSB0aGF0IHRoaXMgcHJvdmlk ZXMgdGhlIGNvcnJlY3QgbGV2ZWwgb2YgYWJzdHJhY3Rpb24NCj4gZm9yIHNpbXBsZSBkcml2 ZXJzLCBhbmQgcmVjZW50bHkgc29tZSBoYXZlIGJlZW4gcG9ydGVkIGZyb20gdXNpbmcgdGhl c2UNCj4gc2ltcGxlIGRpc3BsYXkgaGVscGVycyB0byB1c2UgdGhlIHJlZ3VsYXIgYXRvbWlj IGhlbHBlcnMgaW5zdGVhZC4NCj4gDQo+IFRoZSByYXRpb25hbGUgZm9yIHRoaXMgaXMgdGhh dCB0aGUgc2ltcGxlIGRpc3BsYXkgcGlwZWxpbmUgaGVscGVycyBkb24ndA0KPiBoaWRlIHRo YXQgbXVjaCBvZiB0aGUgRFJNIGNvbXBsZXhpdHksIHdoaWxlIGFkZGluZyBhbiBpbmRpcmVj dGlvbiBsYXllcg0KPiB0aGF0IGNvbmZsYXRlcyB0aGUgY29uY2VwdHMgb2YgQ1JUQ3MgYW5k IHBsYW5lcy4gVGhpcyBtYWtlcyB0aGUgaGVscGVycw0KPiBsZXNzIGZsZXhpYmxlIGFuZCBo YXJkZXIgdG8gYmUgcmV1c2VkIGFtb25nIGRpZmZlcmVudCBncmFwaGljcyBkcml2ZXJzLg0K PiANCj4gQWxzbywgZm9yIHNpbXBsZSBkcml2ZXJzLCB1c2luZyB0aGUgZnVsbCBhdG9taWMg aGVscGVycyBkb2Vzbid0IHJlcXVpcmUNCj4gYSBsb3Qgb2YgYWRkaXRpb25hbCBjb2RlLiBT byBhZGRpbmcgYSBzaW1wbGUgZGlzcGxheSBwaXBlbGluZSBsYXllciBtYXkNCj4gbm90IGJl IHdvcnRoIGl0Lg0KPiANCj4gRm9yIHRoZXNlIHJlYXNvbnMsIGxldCdzIGZvbGxvdyB0aGF0 IHRyZW5kIGFuZCBtYWtlIHNzZDEzMHggYSBwbGFpbiBEUk0NCj4gZHJpdmVyIHRoYXQgY3Jl YXRlcyBpdHMgb3duIHByaW1hcnkgcGxhbmUsIENSVEMsIGVuY29uZGVyIGFuZCBjb25uZWN0 b3IuDQoNClRoYW5rcyBmb3IgY29uc2lkZXJpbmcgdGhpcyBjaGFuZ2UuDQoNCj4gDQo+IFN1 Z2dlc3RlZC1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+DQo+ IFNpZ25lZC1vZmYtYnk6IEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRo YXQuY29tPg0KDQpBY2tlZC1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1 c2UuZGU+DQoNClRoZXJlIGFyZSBhIGZldyBxdWVzdGlvbnMgYmVsb3cuDQoNCj4gLS0tDQo+ IA0KPiAgIGRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL3NzZDEzMHguYyB8IDI1OCArKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vc29sb21vbi9z c2QxMzB4LmggfCAgIDkgKy0NCj4gICAyIGZpbGVzIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25z KCspLCA4MCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vc29sb21vbi9zc2QxMzB4LmMgYi9kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4 LmMNCj4gaW5kZXggZjg3ZjU0NDNlNzE0Li4wYWUxN2ZjY2ViN2MgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL3NzZDEzMHguYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vc29sb21vbi9zc2QxMzB4LmMNCj4gQEAgLTE4LDYgKzE4LDcgQEANCj4gICAjaW5j bHVkZSA8bGludXgvcHdtLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25z dW1lci5oPg0KPiAgIA0KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiAgICNpbmNsdWRlIDxkcm0vZHJt X2RhbWFnZV9oZWxwZXIuaD4NCj4gICAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+DQo+IEBA IC01NjQsNjEgKzU2NSw1NiBAQCBzdGF0aWMgaW50IHNzZDEzMHhfZmJfYmxpdF9yZWN0KHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBjb25zdCBzdHJ1Y3QgaW9zeXNfbQ0KPiAgIAly ZXR1cm4gcmV0Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgc3NkMTMweF9kaXNwbGF5 X3BpcGVfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUs DQo+IC0JCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQ0KPiAr c3RhdGljIGludCBzc2QxMzB4X3ByaW1hcnlfcGxhbmVfaGVscGVyX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4gKwkJCQkJCSAgICAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKm5ld19zdGF0ZSkNCj4gICB7DQo+IC0Jc3RydWN0IHNzZDEzMHhfZGV2aWNl ICpzc2QxMzB4ID0gZHJtX3RvX3NzZDEzMHgocGlwZS0+Y3J0Yy5kZXYpOw0KPiArCXN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25l d19wbGFuZV9zdGF0ZShuZXdfc3RhdGUsIHBsYW5lKTsNCj4gKwlzdHJ1Y3QgZHJtX2NydGMg Km5ld19jcnRjID0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjOw0KPiArCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSBOVUxMOw0KPiAgIA0KPiAtCWlmIChtb2RlLT5o ZGlzcGxheSAhPSBzc2QxMzB4LT5tb2RlLmhkaXNwbGF5ICYmDQo+IC0JICAgIG1vZGUtPnZk aXNwbGF5ICE9IHNzZDEzMHgtPm1vZGUudmRpc3BsYXkpDQo+IC0JCXJldHVybiBNT0RFX09O RV9TSVpFOw0KPiAtDQo+IC0JaWYgKG1vZGUtPmhkaXNwbGF5ICE9IHNzZDEzMHgtPm1vZGUu aGRpc3BsYXkpDQo+IC0JCXJldHVybiBNT0RFX09ORV9XSURUSDsNCj4gLQ0KPiAtCWlmICht b2RlLT52ZGlzcGxheSAhPSBzc2QxMzB4LT5tb2RlLnZkaXNwbGF5KQ0KPiAtCQlyZXR1cm4g TU9ERV9PTkVfSEVJR0hUOw0KPiArCWlmIChuZXdfY3J0YykNCj4gKwkJbmV3X2NydGNfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShuZXdfc3RhdGUsIG5ld19jcnRj KTsNCj4gICANCj4gLQlyZXR1cm4gTU9ERV9PSzsNCj4gKwlyZXR1cm4gZHJtX2F0b21pY19o ZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUobmV3X3BsYW5lX3N0YXRlLCBuZXdfY3J0Y19zdGF0 ZSwNCj4gKwkJCQkJCSAgIERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPiArCQkJCQkJICAgRFJN X1BMQU5FX05PX1NDQUxJTkcsDQo+ICsJCQkJCQkgICBmYWxzZSwgZmFsc2UpOw0KPiAgIH0N Cj4gICANCj4gLXN0YXRpYyB2b2lkIHNzZDEzMHhfZGlzcGxheV9waXBlX2VuYWJsZShzdHJ1 Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsDQo+IC0JCQkJCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gLQkJCQkJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpDQo+ICtzdGF0aWMgdm9pZCBzc2QxMzB4X3ByaW1hcnlfcGxhbmVf aGVscGVyX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICsJCQkJ CQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkNCj4gICB7DQo+ IC0Jc3RydWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4ID0gZHJtX3RvX3NzZDEzMHgocGlw ZS0+Y3J0Yy5kZXYpOw0KPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl ID0gcGxhbmUtPnN0YXRlOw0KPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFu ZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHBs YW5lKTsNCj4gICAJc3RydWN0IGRybV9zaGFkb3dfcGxhbmVfc3RhdGUgKnNoYWRvd19wbGFu ZV9zdGF0ZSA9IHRvX2RybV9zaGFkb3dfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUpOw0KPiAt CXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmc3NkMTMweC0+ZHJtOw0KPiAtCWludCBpZHgs IHJldDsNCj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5m YjsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcGxhbmUtPmRldjsNCj4gKwlzdHJ1 Y3QgZHJtX3JlY3Qgc3JjX2NsaXAsIGRzdF9jbGlwOw0KPiArCWludCBpZHg7DQo+ICAgDQo+ IC0JcmV0ID0gc3NkMTMweF9wb3dlcl9vbihzc2QxMzB4KTsNCj4gLQlpZiAocmV0KQ0KPiAr CWlmICghZmIpDQoNCkkga25vdyB0aGF0IHNvbWUgb3RoZXIgZHJpdmVycyBkbyB0aGlzIGNo ZWNrLiBCdXQgZnJvbSByZWFkaW5nIA0KZHJtX2F0b21pY19oZWxwZXIuYywgaXQgc2hvdWxk bid0IGJlIG5lY2VzYXJ5LiBJZiAhZmIsIHRoZSBwbGFuZSBoYXMgDQpiZWVuIGRpc2FibGVk LiBBbmQgYmVjYXVzZSB0aGVyZSdzIGFuIGltcGxlbWVudGF0aW9uIG9mIGF0b21pY19kaXNh YmxlLCANCnRoZSBoZWxwZXJzIHNob3VsZCBuZXZlciBjYWxsIGF0b21pY191cGRhdGUgb24g ZGlzYWJsZWQgcGxhbmVzLiBJIHRoaW5rIA0KdGhlIHRlc3QgY2FuIGJlIHJlbW92ZWQuDQoN Cj4gICAJCXJldHVybjsNCj4gICANCj4gLQlyZXQgPSBzc2QxMzB4X2luaXQoc3NkMTMweCk7 DQo+IC0JaWYgKHJldCkNCj4gLQkJZ290byBvdXRfcG93ZXJfb2ZmOw0KPiAtDQo+IC0JaWYg KCFkcm1fZGV2X2VudGVyKGRybSwgJmlkeCkpDQo+IC0JCWdvdG8gb3V0X3Bvd2VyX29mZjsN Cj4gKwlpZiAoIWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9tZXJnZWQob2xkX3BsYW5lX3N0 YXRlLCBwbGFuZV9zdGF0ZSwgJnNyY19jbGlwKSkNCj4gKwkJcmV0dXJuOw0KPiAgIA0KPiAt CXNzZDEzMHhfZmJfYmxpdF9yZWN0KHBsYW5lX3N0YXRlLT5mYiwgJnNoYWRvd19wbGFuZV9z dGF0ZS0+ZGF0YVswXSwgJnBsYW5lX3N0YXRlLT5kc3QpOw0KPiArCWRzdF9jbGlwID0gcGxh bmVfc3RhdGUtPmRzdDsNCj4gKwlpZiAoIWRybV9yZWN0X2ludGVyc2VjdCgmZHN0X2NsaXAs ICZzcmNfY2xpcCkpDQo+ICsJCXJldHVybjsNCj4gICANCj4gLQlzc2QxMzB4X3dyaXRlX2Nt ZChzc2QxMzB4LCAxLCBTU0QxMzBYX0RJU1BMQVlfT04pOw0KPiArCWlmICghZHJtX2Rldl9l bnRlcihkcm0sICZpZHgpKQ0KPiArCQlyZXR1cm47DQo+ICAgDQo+IC0JYmFja2xpZ2h0X2Vu YWJsZShzc2QxMzB4LT5ibF9kZXYpOw0KPiArCXNzZDEzMHhfZmJfYmxpdF9yZWN0KHBsYW5l X3N0YXRlLT5mYiwgJnNoYWRvd19wbGFuZV9zdGF0ZS0+ZGF0YVswXSwgJmRzdF9jbGlwKTsN Cj4gICANCj4gICAJZHJtX2Rldl9leGl0KGlkeCk7DQo+IC0NCj4gLQlyZXR1cm47DQo+IC1v dXRfcG93ZXJfb2ZmOg0KPiAtCXNzZDEzMHhfcG93ZXJfb2ZmKHNzZDEzMHgpOw0KPiAgIH0N Cj4gICANCj4gLXN0YXRpYyB2b2lkIHNzZDEzMHhfZGlzcGxheV9waXBlX2Rpc2FibGUoc3Ry dWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQ0KPiArc3RhdGljIHZvaWQgc3Nk MTMweF9wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwNCj4gKwkJCQkJCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlKQ0KPiAgIHsNCj4gLQlzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBkcm1f dG9fc3NkMTMweChwaXBlLT5jcnRjLmRldik7DQo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRy bSA9ICZzc2QxMzB4LT5kcm07DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IHBsYW5l LT5kZXY7DQo+ICsJc3RydWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4ID0gZHJtX3RvX3Nz ZDEzMHgoZHJtKTsNCj4gICAJaW50IGlkeDsNCj4gICANCj4gICAJaWYgKCFkcm1fZGV2X2Vu dGVyKGRybSwgJmlkeCkpDQo+IEBAIC02MjYsNTYgKzYyMiwxMTQgQEAgc3RhdGljIHZvaWQg c3NkMTMweF9kaXNwbGF5X3BpcGVfZGlzYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5 X3BpcGUgKnBpcGUpDQo+ICAgDQo+ICAgCXNzZDEzMHhfY2xlYXJfc2NyZWVuKHNzZDEzMHgp Ow0KPiAgIA0KPiAtCWJhY2tsaWdodF9kaXNhYmxlKHNzZDEzMHgtPmJsX2Rldik7DQo+ICsJ ZHJtX2Rldl9leGl0KGlkeCk7DQo+ICt9DQo+ICAgDQo+IC0Jc3NkMTMweF93cml0ZV9jbWQo c3NkMTMweCwgMSwgU1NEMTMwWF9ESVNQTEFZX09GRik7DQo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mgc3NkMTMweF9wcmltYXJ5X3BsYW5lX2hlbHBl cl9mdW5jcyA9IHsNCj4gKwlEUk1fR0VNX1NIQURPV19QTEFORV9IRUxQRVJfRlVOQ1MsDQo+ ICsJLmF0b21pY19jaGVjayA9IHNzZDEzMHhfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWlj X2NoZWNrLA0KPiArCS5hdG9taWNfdXBkYXRlID0gc3NkMTMweF9wcmltYXJ5X3BsYW5lX2hl bHBlcl9hdG9taWNfdXBkYXRlLA0KPiArCS5hdG9taWNfZGlzYWJsZSA9IHNzZDEzMHhfcHJp bWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX2Rpc2FibGUsDQo+ICt9Ow0KPiAgIA0KPiAtCXNz ZDEzMHhfcG93ZXJfb2ZmKHNzZDEzMHgpOw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f cGxhbmVfZnVuY3Mgc3NkMTMweF9wcmltYXJ5X3BsYW5lX2Z1bmNzID0gew0KPiArCS51cGRh dGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsDQo+ICsJLmRpc2Fi bGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLA0KPiArCS5kZXN0 cm95ID0gZHJtX3BsYW5lX2NsZWFudXAsDQo+ICsJRFJNX0dFTV9TSEFET1dfUExBTkVfRlVO Q1MsDQo+ICt9Ow0KPiAgIA0KPiAtCWRybV9kZXZfZXhpdChpZHgpOw0KPiArc3RhdGljIGVu dW0gZHJtX21vZGVfc3RhdHVzIHNzZDEzMHhfY3J0Y19oZWxwZXJfbW9kZV92YWxpZChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsDQo+ICsJCQkJCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpDQo+ICt7DQo+ICsJc3RydWN0IHNzZDEzMHhfZGV2aWNlICpzc2Qx MzB4ID0gZHJtX3RvX3NzZDEzMHgoY3J0Yy0+ZGV2KTsNCj4gKw0KPiArCWlmIChtb2RlLT5o ZGlzcGxheSAhPSBzc2QxMzB4LT5tb2RlLmhkaXNwbGF5ICYmDQo+ICsJICAgIG1vZGUtPnZk aXNwbGF5ICE9IHNzZDEzMHgtPm1vZGUudmRpc3BsYXkpDQo+ICsJCXJldHVybiBNT0RFX09O RV9TSVpFOw0KPiArCWVsc2UgaWYgKG1vZGUtPmhkaXNwbGF5ICE9IHNzZDEzMHgtPm1vZGUu aGRpc3BsYXkpDQo+ICsJCXJldHVybiBNT0RFX09ORV9XSURUSDsNCj4gKwllbHNlIGlmICht b2RlLT52ZGlzcGxheSAhPSBzc2QxMzB4LT5tb2RlLnZkaXNwbGF5KQ0KPiArCQlyZXR1cm4g TU9ERV9PTkVfSEVJR0hUOw0KPiArDQo+ICsJcmV0dXJuIE1PREVfT0s7DQo+ICAgfQ0KPiAg IA0KPiAtc3RhdGljIHZvaWQgc3NkMTMweF9kaXNwbGF5X3BpcGVfdXBkYXRlKHN0cnVjdCBk cm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwNCj4gLQkJCQkJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlKQ0KPiArc3RhdGljIGludCBzc2QxMzB4X2NydGNf aGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQo+ICsJCQkJCSAg ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqbmV3X3N0YXRlKQ0KPiAgIHsNCj4gLQlzdHJ1 Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBkcm1fdG9fc3NkMTMweChwaXBlLT5jcnRj LmRldik7DQo+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSBwaXBl LT5wbGFuZS5zdGF0ZTsNCj4gLQlzdHJ1Y3QgZHJtX3NoYWRvd19wbGFuZV9zdGF0ZSAqc2hh ZG93X3BsYW5lX3N0YXRlID0gdG9fZHJtX3NoYWRvd19wbGFuZV9zdGF0ZShwbGFuZV9zdGF0 ZSk7DQo+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ZmI7 DQo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRybSA9ICZzc2QxMzB4LT5kcm07DQo+IC0Jc3Ry dWN0IGRybV9yZWN0IHNyY19jbGlwLCBkc3RfY2xpcDsNCj4gLQlpbnQgaWR4Ow0KPiArCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShuZXdfc3RhdGUsIGNydGMpOw0KPiArCWludCByZXQ7DQo+ICAgDQo+ IC0JaWYgKCFmYikNCj4gLQkJcmV0dXJuOw0KPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUsIGZhbHNlKTsNCj4gKwlpZiAocmV0 KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiAgIA0KPiAtCWlmICghcGlwZS0+Y3J0Yy5zdGF0ZS0+ YWN0aXZlKQ0KPiAtCQlyZXR1cm47DQo+ICsJcmV0dXJuIGRybV9hdG9taWNfYWRkX2FmZmVj dGVkX3BsYW5lcyhuZXdfc3RhdGUsIGNydGMpOw0KPiArfQ0KPiAgIA0KPiAtCWlmICghZHJt X2F0b21pY19oZWxwZXJfZGFtYWdlX21lcmdlZChvbGRfcGxhbmVfc3RhdGUsIHBsYW5lX3N0 YXRlLCAmc3JjX2NsaXApKQ0KPiAtCQlyZXR1cm47DQo+ICsvKg0KPiArICogVGhlIENSVEMg aXMgYWx3YXlzIGVuYWJsZWQuIFNjcmVlbiB1cGRhdGVzIGFyZSBwZXJmb3JtZWQgYnkNCj4g KyAqIHRoZSBwcmltYXJ5IHBsYW5lJ3MgYXRvbWljX3VwZGF0ZSBmdW5jdGlvbi4gRGlzYWJs aW5nIGNsZWFycw0KPiArICogdGhlIHNjcmVlbiBpbiB0aGUgcHJpbWFyeSBwbGFuZSdzIGF0 b21pY19kaXNhYmxlIGZ1bmN0aW9uLg0KPiArICovDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBzc2QxMzB4X2NydGNfaGVscGVyX2Z1bmNzID0gew0K PiArCS5tb2RlX3ZhbGlkID0gc3NkMTMweF9jcnRjX2hlbHBlcl9tb2RlX3ZhbGlkLA0KPiAr CS5hdG9taWNfY2hlY2sgPSBzc2QxMzB4X2NydGNfaGVscGVyX2F0b21pY19jaGVjaywNCj4g K307DQo+ICAgDQo+IC0JZHN0X2NsaXAgPSBwbGFuZV9zdGF0ZS0+ZHN0Ow0KPiAtCWlmICgh ZHJtX3JlY3RfaW50ZXJzZWN0KCZkc3RfY2xpcCwgJnNyY19jbGlwKSkNCj4gLQkJcmV0dXJu Ow0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBzc2QxMzB4X2NydGNf ZnVuY3MgPSB7DQo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwN Cj4gKwkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsDQo+ICsJLnNldF9jb25maWcgPSBk cm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLA0KPiArCS5wYWdlX2ZsaXAgPSBkcm1fYXRv bWljX2hlbHBlcl9wYWdlX2ZsaXAsDQo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gKwkuYXRvbWljX2Rl c3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUsDQo+ ICt9Ow0KPiAgIA0KPiAtCWlmICghZHJtX2Rldl9lbnRlcihkcm0sICZpZHgpKQ0KPiArc3Rh dGljIHZvaWQgc3NkMTMweF9lbmNvZGVyX2hlbHBlcl9hdG9taWNfZW5hYmxlKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwNCj4gKwkJCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGVuY29kZXIt PmRldjsNCj4gKwlzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBkcm1fdG9fc3Nk MTMweChkcm0pOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3Bvd2Vy X29uKHNzZDEzMHgpOw0KPiArCWlmIChyZXQpDQo+ICAgCQlyZXR1cm47DQo+ICAgDQo+IC0J c3NkMTMweF9mYl9ibGl0X3JlY3QocGxhbmVfc3RhdGUtPmZiLCAmc2hhZG93X3BsYW5lX3N0 YXRlLT5kYXRhWzBdLCAmZHN0X2NsaXApOw0KPiArCXJldCA9IHNzZDEzMHhfaW5pdChzc2Qx MzB4KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gc3NkMTMweF9wb3dlcl9vZmYoc3Nk MTMweCk7DQoNCkl0IHJldHVybnMgYSB2YWx1ZSBmcm9tIGEgZnVuY3Rpb24gcmV0dXJuaW5n ICd2b2lkJz8NCg0KSXMgdGhpcyBmdW5jdGlvbiB0aGUgY29ycmVjdCBwbGFjZSBmb3Igc3Nk MTMweF9pbml0KCkgPyBJdCBsb29rcyBhIGJpdCANCmhlYXZ5IGZvciBhIHNpbXBsZSBlbmFi bGUgb3BlcmF0aW9uLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+ICAgDQo+IC0JZHJt X2Rldl9leGl0KGlkeCk7DQo+ICsJc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweCwgMSwgU1NE MTMwWF9ESVNQTEFZX09OKTsNCj4gKw0KPiArCWJhY2tsaWdodF9lbmFibGUoc3NkMTMweC0+ YmxfZGV2KTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9zaW1w bGVfZGlzcGxheV9waXBlX2Z1bmNzIHNzZDEzMHhfcGlwZV9mdW5jcyA9IHsNCj4gLQkubW9k ZV92YWxpZCA9IHNzZDEzMHhfZGlzcGxheV9waXBlX21vZGVfdmFsaWQsDQo+IC0JLmVuYWJs ZSA9IHNzZDEzMHhfZGlzcGxheV9waXBlX2VuYWJsZSwNCj4gLQkuZGlzYWJsZSA9IHNzZDEz MHhfZGlzcGxheV9waXBlX2Rpc2FibGUsDQo+IC0JLnVwZGF0ZSA9IHNzZDEzMHhfZGlzcGxh eV9waXBlX3VwZGF0ZSwNCj4gLQlEUk1fR0VNX1NJTVBMRV9ESVNQTEFZX1BJUEVfU0hBRE9X X1BMQU5FX0ZVTkNTLA0KPiArc3RhdGljIHZvaWQgc3NkMTMweF9lbmNvZGVyX2hlbHBlcl9h dG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICsJCQkJCQkg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtID0gZW5jb2Rlci0+ZGV2Ow0KPiArCXN0cnVjdCBzc2QxMzB4X2Rldmlj ZSAqc3NkMTMweCA9IGRybV90b19zc2QxMzB4KGRybSk7DQo+ICsNCj4gKwliYWNrbGlnaHRf ZGlzYWJsZShzc2QxMzB4LT5ibF9kZXYpOw0KPiArDQo+ICsJc3NkMTMweF93cml0ZV9jbWQo c3NkMTMweCwgMSwgU1NEMTMwWF9ESVNQTEFZX09GRik7DQo+ICsNCj4gKwlzc2QxMzB4X3Bv d2VyX29mZihzc2QxMzB4KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mgc3NkMTMweF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9 IHsNCj4gKwkuYXRvbWljX2VuYWJsZSA9IHNzZDEzMHhfZW5jb2Rlcl9oZWxwZXJfYXRvbWlj X2VuYWJsZSwNCj4gKwkuYXRvbWljX2Rpc2FibGUgPSBzc2QxMzB4X2VuY29kZXJfaGVscGVy X2F0b21pY19kaXNhYmxlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9mdW5jcyBzc2QxMzB4X2VuY29kZXJfZnVuY3MgPSB7DQo+ICsJLmRlc3Ry b3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLA0KPiAgIH07DQo+ICAgDQo+IC1zdGF0aWMgaW50 IHNzZDEzMHhfY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQ0KPiArc3RhdGljIGludCBzc2QxMzB4X2Nvbm5lY3Rvcl9oZWxwZXJfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ICAgew0KPiAgIAlzdHJ1 Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBkcm1fdG9fc3NkMTMweChjb25uZWN0b3It PmRldik7DQo+ICAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOw0KPiBAQCAtNjk1 LDcgKzc0OSw3IEBAIHN0YXRpYyBpbnQgc3NkMTMweF9jb25uZWN0b3JfZ2V0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgc3NkMTMweF9jb25u ZWN0b3JfaGVscGVyX2Z1bmNzID0gew0KPiAtCS5nZXRfbW9kZXMgPSBzc2QxMzB4X2Nvbm5l Y3Rvcl9nZXRfbW9kZXMsDQo+ICsJLmdldF9tb2RlcyA9IHNzZDEzMHhfY29ubmVjdG9yX2hl bHBlcl9nZXRfbW9kZXMsDQo+ICAgfTsNCj4gICANCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jb25uZWN0b3JfZnVuY3Mgc3NkMTMweF9jb25uZWN0b3JfZnVuY3MgPSB7DQo+IEBA IC04MDYsOCArODYwLDE2IEBAIHN0YXRpYyBpbnQgc3NkMTMweF9pbml0X21vZGVzZXQoc3Ry dWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4KQ0KPiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBzc2QxMzB4LT5kZXY7DQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmc3NkMTMw eC0+ZHJtOw0KPiAgIAl1bnNpZ25lZCBsb25nIG1heF93aWR0aCwgbWF4X2hlaWdodDsNCj4g KwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5X3BsYW5lOw0KPiArCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsNCj4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ICsJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gICAJaW50IHJldDsNCj4gICANCj4gKwkv Kg0KPiArCSAqIE1vZGVzZXR0aW5nDQo+ICsJICovDQo+ICsNCj4gICAJcmV0ID0gZHJtbV9t b2RlX2NvbmZpZ19pbml0KGRybSk7DQo+ICAgCWlmIChyZXQpIHsNCj4gICAJCWRldl9lcnIo ZGV2LCAiRFJNIG1vZGUgY29uZmlnIGluaXQgZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4gQEAg LTgzMywyNSArODk1LDY1IEBAIHN0YXRpYyBpbnQgc3NkMTMweF9pbml0X21vZGVzZXQoc3Ry dWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4KQ0KPiAgIAlkcm0tPm1vZGVfY29uZmlnLnBy ZWZlcnJlZF9kZXB0aCA9IDMyOw0KPiAgIAlkcm0tPm1vZGVfY29uZmlnLmZ1bmNzID0gJnNz ZDEzMHhfbW9kZV9jb25maWdfZnVuY3M7DQo+ICAgDQo+IC0JcmV0ID0gZHJtX2Nvbm5lY3Rv cl9pbml0KGRybSwgJnNzZDEzMHgtPmNvbm5lY3RvciwgJnNzZDEzMHhfY29ubmVjdG9yX2Z1 bmNzLA0KPiArCS8qIFByaW1hcnkgcGxhbmUgKi8NCj4gKw0KPiArCXByaW1hcnlfcGxhbmUg PSAmc3NkMTMweC0+cHJpbWFyeV9wbGFuZTsNCj4gKwlyZXQgPSBkcm1fdW5pdmVyc2FsX3Bs YW5lX2luaXQoZHJtLCBwcmltYXJ5X3BsYW5lLCAwLCAmc3NkMTMweF9wcmltYXJ5X3BsYW5l X2Z1bmNzLA0KPiArCQkJCSAgICAgICBzc2QxMzB4X2Zvcm1hdHMsIEFSUkFZX1NJWkUoc3Nk MTMweF9mb3JtYXRzKSwNCj4gKwkJCQkgICAgICAgTlVMTCwgRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSwgTlVMTCk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRldiwgIkRSTSBw cmltYXJ5IHBsYW5lIGluaXQgZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJl dDsNCj4gKwl9DQo+ICsNCj4gKwlkcm1fcGxhbmVfaGVscGVyX2FkZChwcmltYXJ5X3BsYW5l LCAmc3NkMTMweF9wcmltYXJ5X3BsYW5lX2hlbHBlcl9mdW5jcyk7DQo+ICsNCj4gKwlkcm1f cGxhbmVfZW5hYmxlX2ZiX2RhbWFnZV9jbGlwcyhwcmltYXJ5X3BsYW5lKTsNCj4gKw0KPiAr CS8qIENSVEMgKi8NCj4gKw0KPiArCWNydGMgPSAmc3NkMTMweC0+Y3J0YzsNCj4gKwlyZXQg PSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRybSwgY3J0YywgcHJpbWFyeV9wbGFuZSwg TlVMTCwNCj4gKwkJCQkJJnNzZDEzMHhfY3J0Y19mdW5jcywgTlVMTCk7DQo+ICsJaWYgKHJl dCkgew0KPiArCQlkZXZfZXJyKGRldiwgIkRSTSBjcnRjIGluaXQgZmFpbGVkOiAlZFxuIiwg cmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlkcm1fY3J0Y19oZWxw ZXJfYWRkKGNydGMsICZzc2QxMzB4X2NydGNfaGVscGVyX2Z1bmNzKTsNCj4gKw0KPiArCS8q IEVuY29kZXIgKi8NCj4gKw0KPiArCWVuY29kZXIgPSAmc3NkMTMweC0+ZW5jb2RlcjsNCj4g KwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRybSwgZW5jb2RlciwgJnNzZDEzMHhfZW5jb2Rl cl9mdW5jcywNCj4gKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX05PTkUsIE5VTEwpOw0K PiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJEUk0gZW5jb2RlciBpbml0IGZh aWxlZDogJWRcbiIsIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJ ZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmc3NkMTMweF9lbmNvZGVyX2hlbHBl cl9mdW5jcyk7DQo+ICsNCj4gKwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IGRybV9jcnRj X21hc2soY3J0Yyk7DQo+ICsNCj4gKwkvKiBDb25uZWN0b3IgKi8NCj4gKw0KPiArCWNvbm5l Y3RvciA9ICZzc2QxMzB4LT5jb25uZWN0b3I7DQo+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9p bml0KGRybSwgY29ubmVjdG9yLCAmc3NkMTMweF9jb25uZWN0b3JfZnVuY3MsDQo+ICAgCQkJ CSBEUk1fTU9ERV9DT05ORUNUT1JfVW5rbm93bik7DQo+ICAgCWlmIChyZXQpIHsNCj4gICAJ CWRldl9lcnIoZGV2LCAiRFJNIGNvbm5lY3RvciBpbml0IGZhaWxlZDogJWRcbiIsIHJldCk7 DQo+ICAgCQlyZXR1cm4gcmV0Ow0KPiAgIAl9DQo+ICAgDQo+IC0JZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfYWRkKCZzc2QxMzB4LT5jb25uZWN0b3IsICZzc2QxMzB4X2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MpOw0KPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZz c2QxMzB4X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOw0KPiAgIA0KPiAtCXJldCA9IGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2luaXQoZHJtLCAmc3NkMTMweC0+cGlwZSwgJnNzZDEzMHhf cGlwZV9mdW5jcywNCj4gLQkJCQkJICAgc3NkMTMweF9mb3JtYXRzLCBBUlJBWV9TSVpFKHNz ZDEzMHhfZm9ybWF0cyksDQo+IC0JCQkJCSAgIE5VTEwsICZzc2QxMzB4LT5jb25uZWN0b3Ip Ow0KPiArCXJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyKTsNCj4gICAJaWYgKHJldCkgew0KPiAtCQlkZXZfZXJyKGRldiwgIkRSTSBzaW1w bGUgZGlzcGxheSBwaXBlbGluZSBpbml0IGZhaWxlZDogJWRcbiIsIHJldCk7DQo+ICsJCWRl dl9lcnIoZGV2LCAiRFJNIGF0dGFjaCBjb25uZWN0b3IgdG8gZW5jb2RlciBmYWlsZWQ6ICVk XG4iLCByZXQpOw0KPiAgIAkJcmV0dXJuIHJldDsNCj4gICAJfQ0KPiAgIA0KPiAtCWRybV9w bGFuZV9lbmFibGVfZmJfZGFtYWdlX2NsaXBzKCZzc2QxMzB4LT5waXBlLnBsYW5lKTsNCj4g LQ0KPiAgIAlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsNCj4gICANCj4gICAJcmV0dXJu IDA7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4LmgNCj4gaW5kZXggNGM0YTg0ZTk2 MmU3Li4wMzAzOGMxYjY0NzYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zb2xv bW9uL3NzZDEzMHguaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4 LmgNCj4gQEAgLTEzLDggKzEzLDExIEBADQo+ICAgI2lmbmRlZiBfX1NTRDEzMDdYX0hfXw0K PiAgICNkZWZpbmUgX19TU0QxMzA3WF9IX18NCj4gICANCj4gKyNpbmNsdWRlIDxkcm0vZHJt X2Nvbm5lY3Rvci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPg0KPiAgICNpbmNs dWRlIDxkcm0vZHJtX2Rydi5oPg0KPiAtI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19o ZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4NCj4gKyNpbmNsdWRl IDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPg0KPiAgIA0KPiAgICNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4NCj4gICANCj4gQEAgLTQyLDggKzQ1LDEwIEBAIHN0cnVjdCBzc2QxMzB4X2Rl dmljZWluZm8gew0KPiAgIHN0cnVjdCBzc2QxMzB4X2RldmljZSB7DQo+ICAgCXN0cnVjdCBk cm1fZGV2aWNlIGRybTsNCj4gICAJc3RydWN0IGRldmljZSAqZGV2Ow0KPiAtCXN0cnVjdCBk cm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSBwaXBlOw0KPiAgIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSBtb2RlOw0KPiArCXN0cnVjdCBkcm1fcGxhbmUgcHJpbWFyeV9wbGFuZTsNCj4gKwlz dHJ1Y3QgZHJtX2NydGMgY3J0YzsNCj4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsN Cj4gICAJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOw0KPiAgIAlzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50Ow0KPiAgIA0KDQotLSANClRob21hcyBaaW1tZXJtYW5uDQpHcmFw aGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55 IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhSQiAz NjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2byBUb3Rldg0K --------------K0Pb2vyVN2YS3XsqBjhixoEF-- --------------YhN1TAXWq5CUmiEEOclsoSAC 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+AFAmMV0mIFAwAAAAAACgkQlh/E3EQov+BH LA/+OQFi2A59Hagn88lFNKRa0B2wklwUy7IaxZkuY2nnhkpmTRdXX8HIxYvQHOtx667hZC4uxpbM hzxlM3IoPa6A+D6K4Z2vepLovFu7kNKmopvqkS7UndAr1FHk6L1ifVeXIrITxFXdUDAKFyTuVKAf cX7pWvl05WO+6LErfv7+USdhqWjo2BSS+wQYq9EChGZpl8/Fqpr3Ff3fLdHIm50UpxvBRe6becRF INkzm8EhSRtXYRd+q9em8oUBbedgLjx3STpW0MfoGHUW3hP+vJw8uMHm6R7SKEd+t+byUHdkvJ3U atq7VPmJTIMXHcg+dVgEd8Kb0ZoXnnWqTPjn+oSBvLQUTAWrrHrH70XRhzywKJ/CcRMIECUyWutu WBbbt6OZglpfd7d52CZFU0eilWBJ2+vLPBLH8X1MtTEXHM4RgKf8cYpya52+6wo6g1v/vg8JWkPE +DmXbJnYCmLzB9tdPXZq8g5nqBf9Gkaplmgf2GyyHJj93Hq8iajVgIZdLphyhpZ9c4TX6fhg+rlc /TwZHbXqacHjBCd9swyqj6zoRkHeSD0p3WCNZL42uh/oTymoAo1jxRjQLLhqZNgZmlPF5wIj5uL5 kQGrEi1K1776HHTQJ5EU+Abkwy0tBrovHWZibGgx6U+mp/nAANfti0gaplMN+9jSv69XwXdKV8od WW8= =ckQa -----END PGP SIGNATURE----- --------------YhN1TAXWq5CUmiEEOclsoSAC--