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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 1CA87C433DB for ; Thu, 4 Mar 2021 07:03:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E788F64F04 for ; Thu, 4 Mar 2021 07:03:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235850AbhCDHCX (ORCPT ); Thu, 4 Mar 2021 02:02:23 -0500 Received: from mga03.intel.com ([134.134.136.65]:50650 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235625AbhCDHCA (ORCPT ); Thu, 4 Mar 2021 02:02:00 -0500 IronPort-SDR: G3UtqCKRLuDRXD1V7IkHqrRLndRFPJEakoqmuFyd/OFltVM+MZD06jS3ztdu4kcxLsg2MSpn06 CWILilaTH9Cw== X-IronPort-AV: E=McAfee;i="6000,8403,9912"; a="187412595" X-IronPort-AV: E=Sophos;i="5.81,222,1610438400"; d="scan'208";a="187412595" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2021 23:01:19 -0800 IronPort-SDR: vcYDitpFPfrySIOM951Ku/aYxHJhjDrmym9Sikf52q6h4l3xzmGjJIQG6H5qZjDGgQt/Kcraeg 2tWuCB5AwoZQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,222,1610438400"; d="scan'208";a="445611349" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga001.jf.intel.com with ESMTP; 03 Mar 2021 23:01:18 -0800 Received: from lcsmsx602.ger.corp.intel.com (10.109.210.11) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 3 Mar 2021 23:01:17 -0800 Received: from hasmsx602.ger.corp.intel.com (10.184.107.142) by LCSMSX602.ger.corp.intel.com (10.109.210.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 4 Mar 2021 09:01:15 +0200 Received: from hasmsx602.ger.corp.intel.com ([10.184.107.142]) by HASMSX602.ger.corp.intel.com ([10.184.107.142]) with mapi id 15.01.2106.013; Thu, 4 Mar 2021 09:01:15 +0200 From: "Winkler, Tomas" To: =?utf-8?B?QWxleCBCZW5uw6ll?= , "linux-kernel@vger.kernel.org" CC: "maxim.uvarov@linaro.org" , "joakim.bech@linaro.org" , "ilias.apalodimas@linaro.org" , "arnd@linaro.org" , "ruchika.gupta@linaro.org" , "Huang, Yang" , "Zhu, Bing" , "Matti.Moell@opensynergy.com" , "hmo@opensynergy.com" , "linux-mmc@vger.kernel.org" , "linux-scsi@vger.kernel.org" , "linux-nvme@vger.kernel.org" , Ulf Hansson , Linus Walleij , "Arnd Bergmann" , "Usyskin, Alexander" , Avri Altman Subject: RE: [RFC PATCH 2/5] char: rpmb: provide a user space interface Thread-Topic: [RFC PATCH 2/5] char: rpmb: provide a user space interface Thread-Index: AQHXEDTT25yAi+/ZF0eKGUVirNKsxapzZSEQ Date: Thu, 4 Mar 2021 07:01:14 +0000 Message-ID: References: <20210303135500.24673-1-alex.bennee@linaro.org> <20210303135500.24673-3-alex.bennee@linaro.org> In-Reply-To: <20210303135500.24673-3-alex.bennee@linaro.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.184.70.1] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQo+IA0KPiBUaGUgdXNlciBzcGFjZSBBUEkgaXMgYWNoaWV2ZWQgdmlhIGEgbnVtYmVyIG9mIHN5 bmNocm9ub3VzIElPQ1RMcy4NCj4gDQo+ICAgKiBSUE1CX0lPQ19WRVJfQ01EIC0gc2ltcGxlIHZl cnNpb25pbmcgQVBJDQo+ICAgKiBSUE1CX0lPQ19DQVBfQ01EIC0gcXVlcnkgb2YgdW5kZXJseWlu ZyBjYXBhYmlsaXRpZXMNCj4gICAqIFJQTUJfSU9DX1BLRVlfQ01EIC0gb25lIHRpbWUgcHJvZ3Jh bW1pbmcgb2YgYWNjZXNzIGtleQ0KPiAgICogUlBNQl9JT0NfQ09VTlRFUl9DTUQgLSBxdWVyeSB0 aGUgd3JpdGUgY291bnRlcg0KPiAgICogUlBNQl9JT0NfV0JMT0NLU19DTUQgLSB3cml0ZSBibG9j a3MgdG8gZGV2aWNlDQo+ICAgKiBSUE1CX0lPQ19SQkxPQ0tTX0NNRCAtIHJlYWQgYmxvY2tzIGZy b20gZGV2aWNlDQo+IA0KPiBUaGUga2V5cyB1c2VkIGZvciBwcm9ncmFtbWluZyBhbmQgd3JpdGlu ZyBibG9ja3MgdG8gdGhlIGRldmljZSBhcmUNCj4ga2V5X3NlcmlhbF90IGhhbmRsZXMgYXMgcHJv dmlkZWQgYnkgdGhlIGtleWN0bCgpIGludGVyZmFjZS4NCj4gDQo+IFtBSkI6IGhlcmUgdGhlcmUg YXJlIHR3byBrZXkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCB0aGUgb3JpZ2luYWwNCj4g cHJvcG9zYWwuIFRoZSBmaXJzdCBpcyB0aGUgZHJvcHBpbmcgb2YgdGhlIHNlcXVlbmNlIG9mIHBy ZWZvcm1hdGVkIGZyYW1lcyBpbg0KPiBmYXZvdXIgb2YgZXhwbGljaXQgYWN0aW9ucy4gVGhlIHNl Y29uZCBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGtleV9zZXJpYWxfdCBhbmQNCj4gdGhlIGtleXJp bmcgQVBJIGZvciByZWZlcmVuY2luZyB0aGUga2V5IHRvIHVzZV0NCg0KUHV0dGluZyBpdCBnZW50 bHkgSSdtIG5vdCBzdXJlIHRoaXMgaXMgZ29vZCBpZGVhLCBmcm9tIHRoZSBzZWN1cml0eSBwb2lu dCBvZiB2aWV3Lg0KVGhlIGtleSBoYXMgdG8gYmUgcG9zc2Vzc2lvbiBvZiB0aGUgb25lIHRoYXQg c2lnbnMgdGhlIGZyYW1lcyBhcyB0aGV5IGFyZSwgaXQgZG9lc24ndCBtZWFuIGl0IGlzIGxpbnV4 IGtlcm5lbCBrZXlyaW5nLCBpdCBjYW4gYmUgb3RoZXIgcGFydHkgb24gZGlmZmVyZW50IHN5c3Rl bS4NCldpdGggdGhpcyBhcHByb2FjaCB5b3Ugd2lsbCBtYWtlIHRoZSBvdGhlciB1c2VjYXNlcyBu b3QgYXBwbGljYWJsZS4gSXQgaXMgbGVzcyB0aGVuIHRyaXZpYWwgdG8gbW92ZSBrZXkgc2VjdXJl bHkgZnJvbSBvbmUgc3lzdGVtIHRvIGFub3RoZXIuDQpXZSBhbGwgd2lzaGVkIGl0IGNhbiBiZSBh YnN0cmFjdGVkIG1vcmUgYnV0IHRoZSBmcmFtZXMgaGFzIHRvIGNvbWUgYWxyZWFkeSBzaWduZWQs IGFuZCB0aGUga2V5IG1hdGVyaWFsIGlzIGluc2lkZSB0aGUgZnJhbWUuIA0KVGhhbmtzDQpUb21h cw0KDQoNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGlu YXJvLm9yZz4NCj4gQ2M6IFVsZiBIYW5zc29uIDx1bGYuaGFuc3NvbkBsaW5hcm8ub3JnPg0KPiBD YzogTGludXMgIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4NCj4gQ2M6IEFybmQg QmVyZ21hbm4gPGFybmQuYmVyZ21hbm5AbGluYXJvLm9yZz4NCj4gQ2M6IElsaWFzIEFwYWxvZGlt YXMgPGlsaWFzLmFwYWxvZGltYXNAbGluYXJvLm9yZz4NCj4gQ2M6IFRvbWFzIFdpbmtsZXIgPHRv bWFzLndpbmtsZXJAaW50ZWwuY29tPg0KPiBDYzogQWxleGFuZGVyIFVzeXNraW4gPGFsZXhhbmRl ci51c3lza2luQGludGVsLmNvbT4NCj4gQ2M6IEF2cmkgQWx0bWFuIDxhdnJpLmFsdG1hbkBzYW5k aXNrLmNvbT4NCj4gLS0tDQo+ICAuLi4vdXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1udW1iZXIu cnN0ICAgICAgfCAgIDEgKw0KPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsNCj4gIGRyaXZlcnMvY2hhci9ycG1iL0tjb25maWcgICAgICAgICAg ICAgICAgICAgICB8ICAgNyArDQo+ICBkcml2ZXJzL2NoYXIvcnBtYi9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKw0KPiAgZHJpdmVycy9jaGFyL3JwbWIvY2Rldi5jICAgICAgICAg ICAgICAgICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysrKysrKw0KPiAgZHJpdmVycy9jaGFyL3Jw bWIvY29yZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstDQo+ICBkcml2ZXJzL2NoYXIv cnBtYi9ycG1iLWNkZXYuaCAgICAgICAgICAgICAgICAgfCAgMTcgKysNCj4gIGluY2x1ZGUvbGlu dXgvcnBtYi5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArDQo+ICBpbmNsdWRlL3Vh cGkvbGludXgvcnBtYi5oICAgICAgICAgICAgICAgICAgICAgfCAgNjggKysrKysNCj4gIDkgZmls ZXMgY2hhbmdlZCwgMzU3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gZHJpdmVycy9jaGFyL3JwbWIvY2Rldi5jICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9jaGFyL3JwbWIvcnBtYi0NCj4gY2Rldi5oICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS91YXBpL2xpbnV4L3JwbWIuaA0KPiANCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v dXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0DQo+IGIvRG9jdW1lbnRhdGlvbi91 c2Vyc3BhY2UtYXBpL2lvY3RsL2lvY3RsLW51bWJlci5yc3QNCj4gaW5kZXggYTRjNzVhMjhjODM5 Li4wZmYyZDRkODFiYjAgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFw aS9pb2N0bC9pb2N0bC1udW1iZXIucnN0DQo+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNl LWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0DQo+IEBAIC0zNDQsNiArMzQ0LDcgQEAgQ29kZSAg U2VxIyAgICBJbmNsdWRlIEZpbGUNCj4gQ29tbWVudHMNCj4gIDB4QjUgIDAwLTBGICB1YXBpL2xp bnV4L3JwbXNnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYWlsdG86 bGludXgtDQo+IHJlbW90ZXByb2NAdmdlci5rZXJuZWwub3JnPg0KPiAgMHhCNiAgYWxsICAgIGxp bnV4L2ZwZ2EtZGZsLmgNCj4gIDB4QjcgIGFsbCAgICB1YXBpL2xpbnV4L3JlbW90ZXByb2NfY2Rl di5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYWlsdG86bGludXgtDQo+IHJlbW90ZXBy b2NAdmdlci5rZXJuZWwub3JnPg0KPiArMHhCOCAgODAtOEYgIHVhcGkvbGludXgvcnBtYi5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1haWx0bzpsaW51eC0NCj4gbW1j QHZnZXIua2VybmVsLm9yZz4NCj4gIDB4QzAgIDAwLTBGICBsaW51eC91c2IvaW93YXJyaW9yLmgN Cj4gIDB4Q0EgIDAwLTBGICB1YXBpL21pc2MvY3hsLmgNCj4gIDB4Q0EgIDEwLTJGICB1YXBpL21p c2Mvb2N4bC5oDQo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+IGlu ZGV4IDA3NmYzOTgzNTI2Yy4uYzYwYjQxYjZlNmJkIDEwMDY0NA0KPiAtLS0gYS9NQUlOVEFJTkVS Uw0KPiArKysgYi9NQUlOVEFJTkVSUw0KPiBAQCAtMTUzNzQsNiArMTUzNzQsNyBAQCBNOgk/DQo+ ICBMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ICBTOglTdXBwb3J0ZWQNCj4gIEY6 CWRyaXZlcnMvY2hhci9ycG1iLyoNCj4gK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9ycG1iLmgNCj4g IEY6CWluY2x1ZGUvbGludXgvcnBtYi5oDQo+IA0KPiAgUlRMMjgzMCBNRURJQSBEUklWRVINCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9ycG1iL0tjb25maWcgYi9kcml2ZXJzL2NoYXIvcnBt Yi9LY29uZmlnIGluZGV4DQo+IDQzMWMyODIzY2Y3MC4uOTA2ODY2NGEzOTlhIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2NoYXIvcnBtYi9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvY2hhci9ycG1i L0tjb25maWcNCj4gQEAgLTksMyArOSwxMCBAQCBjb25maWcgUlBNQg0KPiAgCSAgYWNjZXNzIFJQ TUIgcGFydGl0aW9uLg0KPiANCj4gIAkgIElmIHVuc3VyZSwgc2VsZWN0IE4uDQo+ICsNCj4gK2Nv bmZpZyBSUE1CX0lOVEZfREVWDQo+ICsJYm9vbCAiUlBNQiBjaGFyYWN0ZXIgZGV2aWNlIGludGVy ZmFjZSAvZGV2L3JwbWJOIg0KPiArCWRlcGVuZHMgb24gUlBNQiAmJiBLRVlTDQo+ICsJaGVscA0K PiArCSAgU2F5IHllcyBoZXJlIGlmIHlvdSB3YW50IHRvIGFjY2VzcyBSUE1CIGZyb20gdXNlciBz cGFjZQ0KPiArCSAgdmlhIGNoYXJhY3RlciBkZXZpY2UgaW50ZXJmYWNlIC9kZXYvcnBtYiVkDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcnBtYi9NYWtlZmlsZSBiL2RyaXZlcnMvY2hhci9y cG1iL01ha2VmaWxlIGluZGV4DQo+IDI0ZDQ3NTJhOWE1My4uZjU0YjNmMzA1MTRiIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2NoYXIvcnBtYi9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2NoYXIv cnBtYi9NYWtlZmlsZQ0KPiBAQCAtMyw1ICszLDYgQEANCj4gDQo+ICBvYmotJChDT05GSUdfUlBN QikgKz0gcnBtYi5vDQo+ICBycG1iLW9ianMgKz0gY29yZS5vDQo+ICtycG1iLSQoQ09ORklHX1JQ TUJfSU5URl9ERVYpICs9IGNkZXYubw0KPiANCj4gIGNjZmxhZ3MteSArPSAtRF9fQ0hFQ0tfRU5E SUFOX18NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9ycG1iL2NkZXYuYyBiL2RyaXZlcnMv Y2hhci9ycG1iL2NkZXYuYyBuZXcgZmlsZQ0KPiBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAw MDAuLjU1ZjY2NzIwZmQwMw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvY2hhci9y cG1iL2NkZXYuYw0KPiBAQCAtMCwwICsxLDI0NiBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxNSAtIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24uDQo+ICsgKi8NCj4gKyNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01P RE5BTUUgIjogIiBmbXQNCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvdWFjY2Vzcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+DQo+ ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9ycG1iLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJycG1iLWNk ZXYuaCINCj4gKw0KPiArc3RhdGljIGRldl90IHJwbWJfZGV2dDsNCj4gKyNkZWZpbmUgUlBNQl9N QVhfREVWUyAgTUlOT1JNQVNLDQo+ICsNCj4gKyNkZWZpbmUgUlBNQl9ERVZfT1BFTiAgICAwICAv Kiogc2luZ2xlIG9wZW4gYml0IChwb3NpdGlvbikgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBycG1i X29wZW4gLSB0aGUgb3BlbiBmdW5jdGlvbg0KPiArICoNCj4gKyAqIEBpbm9kZTogcG9pbnRlciB0 byBpbm9kZSBzdHJ1Y3R1cmUNCj4gKyAqIEBmcDogcG9pbnRlciB0byBmaWxlIHN0cnVjdHVyZQ0K PiArICoNCj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCA8MCBvbiBlcnJvcg0KPiArICovDQo+ ICtzdGF0aWMgaW50IHJwbWJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAq ZnApIHsNCj4gKwlzdHJ1Y3QgcnBtYl9kZXYgKnJkZXY7DQo+ICsNCj4gKwlyZGV2ID0gY29udGFp bmVyX29mKGlub2RlLT5pX2NkZXYsIHN0cnVjdCBycG1iX2RldiwgY2Rldik7DQo+ICsJaWYgKCFy ZGV2KQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCS8qIHRoZSBycG1iIGlzIHNpbmds ZSBvcGVuISAqLw0KPiArCWlmICh0ZXN0X2FuZF9zZXRfYml0KFJQTUJfREVWX09QRU4sICZyZGV2 LT5zdGF0dXMpKQ0KPiArCQlyZXR1cm4gLUVCVVNZOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygmcmRl di0+bG9jayk7DQo+ICsNCj4gKwlmcC0+cHJpdmF0ZV9kYXRhID0gcmRldjsNCj4gKw0KPiArCW11 dGV4X3VubG9jaygmcmRldi0+bG9jayk7DQo+ICsNCj4gKwlyZXR1cm4gbm9uc2Vla2FibGVfb3Bl bihpbm9kZSwgZnApOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIHJwbWJfcmVsZWFzZSAtIHRo ZSBjZGV2IHJlbGVhc2UgZnVuY3Rpb24NCj4gKyAqDQo+ICsgKiBAaW5vZGU6IHBvaW50ZXIgdG8g aW5vZGUgc3RydWN0dXJlDQo+ICsgKiBAZnA6IHBvaW50ZXIgdG8gZmlsZSBzdHJ1Y3R1cmUNCj4g KyAqDQo+ICsgKiBSZXR1cm46IDAgYWx3YXlzLg0KPiArICovDQo+ICtzdGF0aWMgaW50IHJwbWJf cmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZnApIHsNCj4gKwlzdHJ1 Y3QgcnBtYl9kZXYgKnJkZXYgPSBmcC0+cHJpdmF0ZV9kYXRhOw0KPiArDQo+ICsJY2xlYXJfYml0 KFJQTUJfREVWX09QRU4sICZyZGV2LT5zdGF0dXMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBsb25nIHJwbWJfaW9jdGxfdmVyX2NtZChzdHJ1Y3QgcnBtYl9kZXYg KnJkZXYsDQo+ICsJCQkgICAgICAgc3RydWN0IHJwbWJfaW9jX3Zlcl9jbWQgX191c2VyICpwdHIp IHsNCj4gKwlzdHJ1Y3QgcnBtYl9pb2NfdmVyX2NtZCB2ZXIgPSB7DQo+ICsJCS5hcGlfdmVyc2lv biA9IFJQTUJfQVBJX1ZFUlNJT04sDQo+ICsJfTsNCj4gKw0KPiArCXJldHVybiBjb3B5X3RvX3Vz ZXIocHRyLCAmdmVyLCBzaXplb2YodmVyKSkgPyAtRUZBVUxUIDogMDsgfQ0KPiArDQo+ICtzdGF0 aWMgbG9uZyBycG1iX2lvY3RsX2NhcF9jbWQoc3RydWN0IHJwbWJfZGV2ICpyZGV2LA0KPiArCQkJ ICAgICAgIHN0cnVjdCBycG1iX2lvY19jYXBfY21kIF9fdXNlciAqcHRyKSB7DQo+ICsJc3RydWN0 IHJwbWJfaW9jX2NhcF9jbWQgY2FwOw0KPiArDQo+ICsJY2FwLnRhcmdldCAgICAgID0gcmRldi0+ dGFyZ2V0Ow0KPiArCWNhcC5ibG9ja19zaXplICA9IHJkZXYtPm9wcy0+YmxvY2tfc2l6ZTsNCj4g KwljYXAud3JfY250X21heCAgPSByZGV2LT5vcHMtPndyX2NudF9tYXg7DQo+ICsJY2FwLnJkX2Nu dF9tYXggID0gcmRldi0+b3BzLT5yZF9jbnRfbWF4Ow0KPiArCWNhcC5hdXRoX21ldGhvZCA9IHJk ZXYtPm9wcy0+YXV0aF9tZXRob2Q7DQo+ICsJY2FwLmNhcGFjaXR5ICAgID0gcnBtYl9nZXRfY2Fw YWNpdHkocmRldik7DQo+ICsJY2FwLnJlc2VydmVkICAgID0gMDsNCj4gKw0KPiArCXJldHVybiBj b3B5X3RvX3VzZXIocHRyLCAmY2FwLCBzaXplb2YoY2FwKSkgPyAtRUZBVUxUIDogMDsgfQ0KPiAr DQo+ICtzdGF0aWMgbG9uZyBycG1iX2lvY3RsX3BrZXlfY21kKHN0cnVjdCBycG1iX2RldiAqcmRl diwga2V5X3NlcmlhbF90DQo+ICtfX3VzZXIgKmspIHsNCj4gKwlrZXlfc2VyaWFsX3Qga2V5aWQ7 DQo+ICsNCj4gKwlpZiAoZ2V0X3VzZXIoa2V5aWQsIGspKQ0KPiArCQlyZXR1cm4gLUVGQVVMVDsN Cj4gKwllbHNlDQo+ICsJCXJldHVybiBycG1iX3Byb2dyYW1fa2V5KHJkZXYsIGtleWlkKTsgfQ0K PiArDQo+ICtzdGF0aWMgbG9uZyBycG1iX2lvY3RsX2NvdW50ZXJfY21kKHN0cnVjdCBycG1iX2Rl diAqcmRldiwgaW50IF9fdXNlcg0KPiArKnB0cikgew0KPiArCWludCBjb3VudCA9IHJwbWJfZ2V0 X3dyaXRlX2NvdW50KHJkZXYpOw0KPiArDQo+ICsJaWYgKGNvdW50ID4gMCkNCj4gKwkJcmV0dXJu IHB1dF91c2VyKGNvdW50LCBwdHIpOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJuIGNvdW50Ow0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgbG9uZyBycG1iX2lvY3RsX3dibG9ja3NfY21kKHN0cnVjdCBycG1i X2RldiAqcmRldiwNCj4gKwkJCQkgICBzdHJ1Y3QgcnBtYl9pb2NfYmxvY2tzX2NtZCBfX3VzZXIg KnB0cikgew0KPiArCXN0cnVjdCBycG1iX2lvY19ibG9ja3NfY21kIHdibG9ja3M7DQo+ICsJaW50 IHN6Ow0KPiArCWxvbmcgcmV0Ow0KPiArCXU4ICpkYXRhOw0KPiArDQo+ICsJaWYgKGNvcHlfZnJv bV91c2VyKCZ3YmxvY2tzLCBwdHIsIHNpemVvZihzdHJ1Y3QNCj4gcnBtYl9pb2NfYmxvY2tzX2Nt ZCkpKQ0KPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gKw0KPiArCS8qIERvbid0IHdyaXRlIG1vcmUg YmxvY2tzIGRldmljZSBzdXBwb3J0cyAqLw0KPiArCWlmICh3YmxvY2tzLmNvdW50ID4gcmRldi0+ b3BzLT53cl9jbnRfbWF4KQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCXN6ID0gd2Js b2Nrcy5jb3VudCAqIDI1NjsNCj4gKwlkYXRhID0ga21hbGxvYyhzeiwgR0ZQX0tFUk5FTCk7DQo+ ICsNCj4gKwlpZiAoIWRhdGEpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJaWYgKGNv cHlfZnJvbV91c2VyKGRhdGEsIHdibG9ja3MuZGF0YSwgc3opKQ0KPiArCQlyZXQgPSAtRUZBVUxU Ow0KPiArCWVsc2UNCj4gKwkJcmV0ID0gcnBtYl93cml0ZV9ibG9ja3MocmRldiwgd2Jsb2Nrcy5r ZXksIHdibG9ja3MuYWRkciwNCj4gK3dibG9ja3MuY291bnQsIGRhdGEpOw0KPiArDQo+ICsJa2Zy ZWUoZGF0YSk7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGxvbmcgcnBt Yl9pb2N0bF9yYmxvY2tzX2NtZChzdHJ1Y3QgcnBtYl9kZXYgKnJkZXYsDQo+ICsJCQkJICAgc3Ry dWN0IHJwbWJfaW9jX2Jsb2Nrc19jbWQgX191c2VyICpwdHIpIHsNCj4gKwlzdHJ1Y3QgcnBtYl9p b2NfYmxvY2tzX2NtZCByYmxvY2tzOw0KPiArCWludCBzejsNCj4gKwlsb25nIHJldDsNCj4gKwl1 OCAqZGF0YTsNCj4gKw0KPiArCWlmIChjb3B5X2Zyb21fdXNlcigmcmJsb2NrcywgcHRyLCBzaXpl b2Yoc3RydWN0DQo+IHJwbWJfaW9jX2Jsb2Nrc19jbWQpKSkNCj4gKwkJcmV0dXJuIC1FRkFVTFQ7 DQo+ICsNCj4gKwlpZiAocmJsb2Nrcy5jb3VudCA+IHJkZXYtPm9wcy0+cmRfY250X21heCkNCj4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlzeiA9IHJibG9ja3MuY291bnQgKiAyNTY7DQo+ ICsJZGF0YSA9IGttYWxsb2Moc3osIEdGUF9LRVJORUwpOw0KPiArDQo+ICsJaWYgKCFkYXRhKQ0K PiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXJldCA9IHJwbWJfcmVhZF9ibG9ja3MocmRl diwgcmJsb2Nrcy5hZGRyLCByYmxvY2tzLmNvdW50LCBkYXRhKTsNCj4gKw0KPiArCWlmIChyZXQg PT0gMCkNCj4gKwkJcmV0ID0gY29weV90b191c2VyKHJibG9ja3MuZGF0YSwgZGF0YSwgc3opOw0K PiArDQo+ICsJa2ZyZWUoZGF0YSk7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgKiBycG1iX2lvY3RsIC0gcnBtYiBpb2N0bCBkaXNwYXRjaGVyDQo+ICsgKg0KPiArICog QGZwOiBhIGZpbGUgcG9pbnRlcg0KPiArICogQGNtZDogaW9jdGwgY29tbWFuZCBSUE1CX0lPQ19T RVFfQ01EIFJQTUJfSU9DX1ZFUl9DTUQNCj4gK1JQTUJfSU9DX0NBUF9DTUQNCj4gKyAqIEBhcmc6 IGlvY3RsIGRhdGE6IHJwbWJfaW9jX3Zlcl9jbWQgcnBtYl9pb2NfY2FwX2NtZA0KPiBwbWJfaW9j X3NlcV9jbWQNCj4gKyAqDQo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzczsgPCAwIG9uIGVycm9y DQo+ICsgKi8NCj4gK3N0YXRpYyBsb25nIHJwbWJfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nDQo+ICthcmcpIHsNCj4gKwlzdHJ1Y3QgcnBtYl9k ZXYgKnJkZXYgPSBmcC0+cHJpdmF0ZV9kYXRhOw0KPiArCXZvaWQgX191c2VyICpwdHIgPSAodm9p ZCBfX3VzZXIgKilhcmc7DQo+ICsNCj4gKwlzd2l0Y2ggKGNtZCkgew0KPiArCWNhc2UgUlBNQl9J T0NfVkVSX0NNRDoNCj4gKwkJcmV0dXJuIHJwbWJfaW9jdGxfdmVyX2NtZChyZGV2LCBwdHIpOw0K PiArCWNhc2UgUlBNQl9JT0NfQ0FQX0NNRDoNCj4gKwkJcmV0dXJuIHJwbWJfaW9jdGxfY2FwX2Nt ZChyZGV2LCBwdHIpOw0KPiArCWNhc2UgUlBNQl9JT0NfUEtFWV9DTUQ6DQo+ICsJCXJldHVybiBy cG1iX2lvY3RsX3BrZXlfY21kKHJkZXYsIHB0cik7DQo+ICsJY2FzZSBSUE1CX0lPQ19DT1VOVEVS X0NNRDoNCj4gKwkJcmV0dXJuIHJwbWJfaW9jdGxfY291bnRlcl9jbWQocmRldiwgcHRyKTsNCj4g KwljYXNlIFJQTUJfSU9DX1dCTE9DS1NfQ01EOg0KPiArCQlyZXR1cm4gcnBtYl9pb2N0bF93Ymxv Y2tzX2NtZChyZGV2LCBwdHIpOw0KPiArCWNhc2UgUlBNQl9JT0NfUkJMT0NLU19DTUQ6DQo+ICsJ CXJldHVybiBycG1iX2lvY3RsX3JibG9ja3NfY21kKHJkZXYsIHB0cik7DQo+ICsJZGVmYXVsdDoN Cj4gKwkJZGV2X2VycigmcmRldi0+ZGV2LCAidW5zdXBwb3J0ZWQgaW9jdGwgMHgleC5cbiIsIGNt ZCk7DQo+ICsJCXJldHVybiAtRU5PSU9DVExDTUQ7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBycG1iX2ZvcHMgPSB7DQo+ICsJLm9wZW4g ICAgICAgICAgID0gcnBtYl9vcGVuLA0KPiArCS5yZWxlYXNlICAgICAgICA9IHJwbWJfcmVsZWFz ZSwNCj4gKwkudW5sb2NrZWRfaW9jdGwgPSBycG1iX2lvY3RsLA0KPiArCS5vd25lciAgICAgICAg ICA9IFRISVNfTU9EVUxFLA0KPiArCS5sbHNlZWsgICAgICAgICA9IG5vb3BfbGxzZWVrLA0KPiAr fTsNCj4gKw0KPiArdm9pZCBycG1iX2NkZXZfcHJlcGFyZShzdHJ1Y3QgcnBtYl9kZXYgKnJkZXYp IHsNCj4gKwlyZGV2LT5kZXYuZGV2dCA9IE1LREVWKE1BSk9SKHJwbWJfZGV2dCksIHJkZXYtPmlk KTsNCj4gKwlyZGV2LT5jZGV2Lm93bmVyID0gVEhJU19NT0RVTEU7DQo+ICsJY2Rldl9pbml0KCZy ZGV2LT5jZGV2LCAmcnBtYl9mb3BzKTsNCj4gK30NCj4gKw0KPiArdm9pZCBycG1iX2NkZXZfYWRk KHN0cnVjdCBycG1iX2RldiAqcmRldikgew0KPiArCWNkZXZfYWRkKCZyZGV2LT5jZGV2LCByZGV2 LT5kZXYuZGV2dCwgMSk7IH0NCj4gKw0KPiArdm9pZCBycG1iX2NkZXZfZGVsKHN0cnVjdCBycG1i X2RldiAqcmRldikgew0KPiArCWlmIChyZGV2LT5kZXYuZGV2dCkNCj4gKwkJY2Rldl9kZWwoJnJk ZXYtPmNkZXYpOw0KPiArfQ0KPiArDQo+ICtpbnQgX19pbml0IHJwbWJfY2Rldl9pbml0KHZvaWQp DQo+ICt7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IGFsbG9jX2NocmRldl9yZWdpb24o JnJwbWJfZGV2dCwgMCwgUlBNQl9NQVhfREVWUywNCj4gInJwbWIiKTsNCj4gKwlpZiAocmV0IDwg MCkNCj4gKwkJcHJfZXJyKCJ1bmFibGUgdG8gYWxsb2NhdGUgY2hhciBkZXYgcmVnaW9uXG4iKTsN Cj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgX19leGl0IHJwbWJfY2Rl dl9leGl0KHZvaWQpDQo+ICt7DQo+ICsJdW5yZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKHJwbWJfZGV2 dCwgUlBNQl9NQVhfREVWUyk7IH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9ycG1iL2Nv cmUuYyBiL2RyaXZlcnMvY2hhci9ycG1iL2NvcmUuYyBpbmRleA0KPiBhMmUyMWMxNDk4NmEuLmUy NmQ2MDVlNDhlMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9jaGFyL3JwbWIvY29yZS5jDQo+ICsr KyBiL2RyaXZlcnMvY2hhci9ycG1iL2NvcmUuYw0KPiBAQCAtMTIsNiArMTIsNyBAQA0KPiAgI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gDQo+ICAjaW5jbHVkZSA8bGludXgvcnBtYi5oPg0KPiAr I2luY2x1ZGUgInJwbWItY2Rldi5oIg0KPiANCj4gIHN0YXRpYyBERUZJTkVfSURBKHJwbWJfaWRh KTsNCj4gDQo+IEBAIC0yNzcsNiArMjc4LDcgQEAgaW50IHJwbWJfZGV2X3VucmVnaXN0ZXIoc3Ry dWN0IHJwbWJfZGV2ICpyZGV2KQ0KPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gDQo+ICAJbXV0ZXhf bG9jaygmcmRldi0+bG9jayk7DQo+ICsJcnBtYl9jZGV2X2RlbChyZGV2KTsNCj4gIAlkZXZpY2Vf ZGVsKCZyZGV2LT5kZXYpOw0KPiAgCW11dGV4X3VubG9jaygmcmRldi0+bG9jayk7DQo+IA0KPiBA QCAtMzcxLDkgKzM3Myw2IEBAIHN0cnVjdCBycG1iX2RldiAqcnBtYl9kZXZfcmVnaXN0ZXIoc3Ry dWN0IGRldmljZQ0KPiAqZGV2LCB1OCB0YXJnZXQsDQo+ICAJaWYgKCFvcHMtPnJlYWRfYmxvY2tz KQ0KPiAgCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4gDQo+IC0JaWYgKG9wcy0+dHlwZSA9 PSBSUE1CX1RZUEVfQU5ZIHx8IG9wcy0+dHlwZSA+DQo+IFJQTUJfVFlQRV9NQVgpDQo+IC0JCXJl dHVybiBFUlJfUFRSKC1FSU5WQUwpOw0KPiAtDQo+ICAJcmRldiA9IGt6YWxsb2Moc2l6ZW9mKCpy ZGV2KSwgR0ZQX0tFUk5FTCk7DQo+ICAJaWYgKCFyZGV2KQ0KPiAgCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsNCj4gQEAgLTM5Niw2ICszOTUsOCBAQCBzdHJ1Y3QgcnBtYl9kZXYgKnJwbWJfZGV2 X3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UNCj4gKmRldiwgdTggdGFyZ2V0LA0KPiAgCWlmIChyZXQp DQo+ICAJCWdvdG8gZXhpdDsNCj4gDQo+ICsJcnBtYl9jZGV2X2FkZChyZGV2KTsNCj4gKw0KPiAg CWRldl9kYmcoJnJkZXYtPmRldiwgInJlZ2lzdGVyZWQgZGV2aWNlXG4iKTsNCj4gDQo+ICAJcmV0 dXJuIHJkZXY7DQo+IEBAIC00MTIsMTEgKzQxMywxMiBAQCBzdGF0aWMgaW50IF9faW5pdCBycG1i X2luaXQodm9pZCkgIHsNCj4gIAlpZGFfaW5pdCgmcnBtYl9pZGEpOw0KPiAgCWNsYXNzX3JlZ2lz dGVyKCZycG1iX2NsYXNzKTsNCj4gLQlyZXR1cm4gMDsNCj4gKwlyZXR1cm4gcnBtYl9jZGV2X2lu aXQoKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBfX2V4aXQgcnBtYl9leGl0KHZvaWQpDQo+ ICB7DQo+ICsJcnBtYl9jZGV2X2V4aXQoKTsNCj4gIAljbGFzc191bnJlZ2lzdGVyKCZycG1iX2Ns YXNzKTsNCj4gIAlpZGFfZGVzdHJveSgmcnBtYl9pZGEpOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9jaGFyL3JwbWIvcnBtYi1jZGV2LmggYi9kcml2ZXJzL2NoYXIvcnBtYi9ycG1iLQ0K PiBjZGV2LmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMDAwLi5lNTlmZjBj MDVlOWQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2NoYXIvcnBtYi9ycG1iLWNk ZXYuaA0KPiBAQCAtMCwwICsxLDE3IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTMtQ2xhdXNlIE9SIEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTUtMjAxOCBJbnRlbCBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkICAqLyAjaWZkZWYNCj4gK0NP TkZJR19SUE1CX0lOVEZfREVWIGludCBfX2luaXQgcnBtYl9jZGV2X2luaXQodm9pZCk7IHZvaWQg X19leGl0DQo+ICtycG1iX2NkZXZfZXhpdCh2b2lkKTsgdm9pZCBycG1iX2NkZXZfcHJlcGFyZShz dHJ1Y3QgcnBtYl9kZXYgKnJkZXYpOw0KPiArdm9pZCBycG1iX2NkZXZfYWRkKHN0cnVjdCBycG1i X2RldiAqcmRldik7IHZvaWQgcnBtYl9jZGV2X2RlbChzdHJ1Y3QNCj4gK3JwbWJfZGV2ICpyZGV2 KTsgI2Vsc2Ugc3RhdGljIGlubGluZSBpbnQgX19pbml0IHJwbWJfY2Rldl9pbml0KHZvaWQpIHsN Cj4gK3JldHVybiAwOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBfX2V4aXQgcnBtYl9jZGV2X2V4aXQo dm9pZCkge30gc3RhdGljDQo+ICtpbmxpbmUgdm9pZCBycG1iX2NkZXZfcHJlcGFyZShzdHJ1Y3Qg cnBtYl9kZXYgKnJkZXYpIHt9IHN0YXRpYyBpbmxpbmUNCj4gK3ZvaWQgcnBtYl9jZGV2X2FkZChz dHJ1Y3QgcnBtYl9kZXYgKnJkZXYpIHt9IHN0YXRpYyBpbmxpbmUgdm9pZA0KPiArcnBtYl9jZGV2 X2RlbChzdHJ1Y3QgcnBtYl9kZXYgKnJkZXYpIHt9ICNlbmRpZiAvKg0KPiBDT05GSUdfUlBNQl9J TlRGX0RFVg0KPiArKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcnBtYi5oIGIvaW5j bHVkZS9saW51eC9ycG1iLmggaW5kZXgNCj4gNzE4YmE3YzkxZWNkLi5mZTQ0ZjYwZWZlMzEgMTAw NjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvcnBtYi5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgv cnBtYi5oDQo+IEBAIC04LDkgKzgsMTMgQEANCj4gDQo+ICAjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4NCj4gICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jZGV2 Lmg+DQo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9ycG1iLmg+DQo+ICAjaW5jbHVkZSA8bGludXgv a3JlZi5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L2tleS5oPg0KPiANCj4gKyNkZWZpbmUgUlBNQl9B UElfVkVSU0lPTiAweDgwMDAwMDAxDQo+ICsNCj4gIC8qKg0KPiAgICogc3RydWN0IHJwbWJfb3Bz IC0gUlBNQiBvcHMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdW5kZXJseWluZyBibG9jaw0KPiBkZXZp Y2UNCj4gICAqDQo+IEBAIC01MSw2ICs1NSw4IEBAIHN0cnVjdCBycG1iX29wcyB7DQo+ICAgKiBA ZGV2ICAgICAgICA6IGRldmljZQ0KPiAgICogQGlkICAgICAgICAgOiBkZXZpY2UgaWQNCj4gICAq IEB0YXJnZXQgICAgIDogUlBNQiB0YXJnZXQvcmVnaW9uIHdpdGhpbiB0aGUgcGh5c2ljYWwgZGV2 aWNlDQo+ICsgKiBAY2RldiAgICAgICA6IGNoYXJhY3RlciBkZXYNCj4gKyAqIEBzdGF0dXMgICAg IDogZGV2aWNlIHN0YXR1cw0KPiAgICogQG9wcyAgICAgICAgOiBvcGVyYXRpb24gZXhwb3J0ZWQg YnkgYmxvY2sgbGF5ZXINCj4gICAqLw0KPiAgc3RydWN0IHJwbWJfZGV2IHsNCj4gQEAgLTU4LDYg KzY0LDEwIEBAIHN0cnVjdCBycG1iX2RldiB7DQo+ICAJc3RydWN0IGRldmljZSBkZXY7DQo+ICAJ aW50IGlkOw0KPiAgCXU4IHRhcmdldDsNCj4gKyNpZmRlZiBDT05GSUdfUlBNQl9JTlRGX0RFVg0K PiArCXN0cnVjdCBjZGV2IGNkZXY7DQo+ICsJdW5zaWduZWQgbG9uZyBzdGF0dXM7DQo+ICsjZW5k aWYgLyogQ09ORklHX1JQTUJfSU5URl9ERVYgKi8NCj4gIAljb25zdCBzdHJ1Y3QgcnBtYl9vcHMg Km9wczsNCj4gIH07DQo+IA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3JwbWIu aCBiL2luY2x1ZGUvdWFwaS9saW51eC9ycG1iLmggbmV3IGZpbGUNCj4gbW9kZSAxMDA2NDQgaW5k ZXggMDAwMDAwMDAwMDAwLi4zOTU3Yjc4NWNkZDUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9p bmNsdWRlL3VhcGkvbGludXgvcnBtYi5oDQo+IEBAIC0wLDAgKzEsNjggQEANCj4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiAoKEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUpIE9S DQo+ICtCU0QtMy1DbGF1c2UpICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDE1LTIw MTggSW50ZWwgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZA0KPiArICogQ29weXJpZ2h0IChDKSAy MDIxIExpbmFybyBMdGQNCj4gKyAqLw0KPiArI2lmbmRlZiBfVUFQSV9MSU5VWF9SUE1CX0hfDQo+ ICsjZGVmaW5lIF9VQVBJX0xJTlVYX1JQTUJfSF8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IHJwbWJfaW9jX3Zlcl9jbWQgLSBycG1i IGFwaSB2ZXJzaW9uDQo+ICsgKg0KPiArICogQGFwaV92ZXJzaW9uOiBycG1iIEFQSSB2ZXJzaW9u Lg0KPiArICovDQo+ICtzdHJ1Y3QgcnBtYl9pb2NfdmVyX2NtZCB7DQo+ICsJX191MzIgYXBpX3Zl cnNpb247DQo+ICt9IF9fcGFja2VkOw0KPiArDQo+ICtlbnVtIHJwbWJfYXV0aF9tZXRob2Qgew0K PiArCVJQTUJfSE1BQ19BTEdPX1NIQV8yNTYgPSAwLA0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsg KiBzdHJ1Y3QgcnBtYl9pb2NfY2FwX2NtZCAtIHJwbWIgY2FwYWJpbGl0aWVzDQo+ICsgKg0KPiAr ICogQHRhcmdldDogcnBtYiB0YXJnZXQvcmVnaW9uIHdpdGhpbiBSUE1CIHBhcnRpdGlvbi4NCj4g KyAqIEBjYXBhY2l0eTogc3RvcmFnZSBjYXBhY2l0eSAoaW4gdW5pdHMgb2YgMTI4SykNCj4gKyAq IEBibG9ja19zaXplOiBzdG9yYWdlIGRhdGEgYmxvY2sgc2l6ZSAoaW4gdW5pdHMgb2YgMjU2QikN Cj4gKyAqIEB3cl9jbnRfbWF4OiBtYXhpbWFsIG51bWJlciBvZiBibG9jayB0aGF0IGNhbiBiZSB3 cml0dGVuIGluIGEgc2luZ2xlDQo+IHJlcXVlc3QuDQo+ICsgKiBAcmRfY250X21heDogbWF4aW1h bCBudW1iZXIgb2YgYmxvY2sgdGhhdCBjYW4gYmUgcmVhZCBpbiBhIHNpbmdsZQ0KPiByZXF1ZXN0 Lg0KPiArICogQGF1dGhfbWV0aG9kOiBhdXRoZW50aWNhdGlvbiBtZXRob2Q6IGN1cnJlbnRseSBh bHdheXMNCj4gSE1BQ19TSEFfMjU2DQo+ICsgKiBAcmVzZXJ2ZWQ6IHJlc2VydmVkIHRvIGFsaWdu IHRvIDQgYnl0ZXMuDQo+ICsgKi8NCj4gK3N0cnVjdCBycG1iX2lvY19jYXBfY21kIHsNCj4gKwlf X3UxNiB0YXJnZXQ7DQo+ICsJX191MTYgY2FwYWNpdHk7DQo+ICsJX191MTYgYmxvY2tfc2l6ZTsN Cj4gKwlfX3UxNiB3cl9jbnRfbWF4Ow0KPiArCV9fdTE2IHJkX2NudF9tYXg7DQo+ICsJX191MTYg YXV0aF9tZXRob2Q7DQo+ICsJX191MTYgcmVzZXJ2ZWQ7DQo+ICt9IF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOw0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBycG1iX2lvY19ibG9ja3NfY21kIC0g cmVhZC93cml0ZSBibG9ja3MgdG8vZnJvbSBSUE1CDQo+ICsgKg0KPiArICogQGtleWlkOiBrZXlf c2VyaWFsX3Qgb2Yga2V5IHRvIHVzZQ0KPiArICogQGFkZHI6IGluZGV4IGludG8gZGV2aWNlICh1 bml0cyBvZiAyNTZCIGJsb2NrcykNCj4gKyAqIEBjb3VudDogbnVtYmVyIG9mIDI1NkIgYmxvY2tz DQo+ICsgKiBAZGF0YTogcG9pbnRlciB0byBkYXRhIHRvIHdyaXRlL3JlYWQgICovIHN0cnVjdCBy cG1iX2lvY19ibG9ja3NfY21kDQo+ICt7DQo+ICsJX19zMzIga2V5OyAvKiBrZXlfc2VyaWFsX3Qg Ki8NCj4gKwlfX3UzMiBhZGRyOw0KPiArCV9fdTMyIGNvdW50Ow0KPiArCV9fdTggX191c2VyICpk YXRhOw0KPiArfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsNCj4gKw0KPiArDQo+ICsjZGVmaW5l IFJQTUJfSU9DX1ZFUl9DTUQgICAgIF9JT1IoMHhCOCwgODAsIHN0cnVjdCBycG1iX2lvY192ZXJf Y21kKQ0KPiArI2RlZmluZSBSUE1CX0lPQ19DQVBfQ01EICAgICBfSU9SKDB4QjgsIDgxLCBzdHJ1 Y3QgcnBtYl9pb2NfY2FwX2NtZCkNCj4gKyNkZWZpbmUgUlBNQl9JT0NfUEtFWV9DTUQgICAgX0lP VygweEI4LCA4Miwga2V5X3NlcmlhbF90KQ0KPiArI2RlZmluZSBSUE1CX0lPQ19DT1VOVEVSX0NN RCBfSU9SKDB4QjgsIDg0LCBpbnQpICNkZWZpbmUNCj4gK1JQTUJfSU9DX1dCTE9DS1NfQ01EIF9J T1coMHhCOCwgODUsIHN0cnVjdCBycG1iX2lvY19ibG9ja3NfY21kKQ0KPiAjZGVmaW5lDQo+ICtS UE1CX0lPQ19SQkxPQ0tTX0NNRCBfSU9SKDB4QjgsIDg2LCBzdHJ1Y3QgcnBtYl9pb2NfYmxvY2tz X2NtZCkNCj4gKw0KPiArI2VuZGlmIC8qIF9VQVBJX0xJTlVYX1JQTUJfSF8gKi8NCj4gLS0NCj4g Mi4yMC4xDQoNCg==