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=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 BEDA5C433E0 for ; Wed, 10 Jun 2020 12:16:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7F4FF20734 for ; Wed, 10 Jun 2020 12:16:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="CEW71h2V" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728540AbgFJMQD (ORCPT ); Wed, 10 Jun 2020 08:16:03 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:55688 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728544AbgFJMQC (ORCPT ); Wed, 10 Jun 2020 08:16:02 -0400 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 05AC74vm001556; Wed, 10 Jun 2020 14:15:27 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=STMicroelectronics; bh=6/M6guD1gKV5nQdAggYmQ0rGer1rtEJ0LyM4mLBww4s=; b=CEW71h2Vfcyviw41ZXIJ6gAKWxksaH63vEKcU8hiTYn9bfwLlk/X4XaN0tf1ewbivuvi TyCW53Y9dfm2M5eqOkU2RXOXhk4vv8lYOfWDc8rvpaxStt85JfzpMXr0xqQ7J1UFfRCy n12+qE+FsNlhE48TCq7JoILD6Mv12dNEOHo9riLeuKVnI3nElQzfXMcIgCFR0nT7OqYP f0D3mHXQwp2WMu6uwjiaNvLpnFXeElCZqf9VmhqWbMirXMcABqg03sbGBdMF6PeUp4Vj xxVNFmk6fTPgwRK/Ge0DOP8a6rhK6vtqJTiYSBgTQunXXD7apy//B69af8YjV27fm7of 8g== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 31g21g4sqn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 10 Jun 2020 14:15:27 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 680D010002A; Wed, 10 Jun 2020 14:15:24 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag6node3.st.com [10.75.127.18]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 270032AF4BA; Wed, 10 Jun 2020 14:15:24 +0200 (CEST) Received: from SFHDAG6NODE1.st.com (10.75.127.16) by SFHDAG6NODE3.st.com (10.75.127.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 10 Jun 2020 14:15:23 +0200 Received: from SFHDAG6NODE1.st.com ([fe80::8d96:4406:44e3:eb27]) by SFHDAG6NODE1.st.com ([fe80::8d96:4406:44e3:eb27%20]) with mapi id 15.00.1473.003; Wed, 10 Jun 2020 14:15:23 +0200 From: Yannick FERTRE To: Adrian Ratiu , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-rockchip@lists.infradead.org" , Laurent Pinchart CC: Heiko Stuebner , Philippe CORNU , Jernej Skrabec , Andrzej Hajda , Jonas Karlman , "linux-imx@nxp.com" , "kernel@collabora.com" , "linux-stm32@st-md-mailman.stormreply.com" , Boris Brezillon , Emil Velikov , Adrian Pop , Arnaud Ferraris Subject: Re: [PATCH v9 02/11] drm: bridge: dw_mipi_dsi: abstract register access using reg_fields Thread-Topic: [PATCH v9 02/11] drm: bridge: dw_mipi_dsi: abstract register access using reg_fields Thread-Index: AQHWPnqdvxoqBjRVWUGhFAUk2p+pTKjRoxoA Date: Wed, 10 Jun 2020 12:15:23 +0000 Message-ID: References: <20200609162700.953260-1-adrian.ratiu@collabora.com> <20200609162700.953260-3-adrian.ratiu@collabora.com> In-Reply-To: <20200609162700.953260-3-adrian.ratiu@collabora.com> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.44] Content-Type: text/plain; charset="utf-8" Content-ID: <327194E1B0CEE74D8DC883EA274402FF@st.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216,18.0.687 definitions=2020-06-10_07:2020-06-10,2020-06-10 signatures=0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGkgQWRyaWFuLA0KDQp0aGFua3MgZm9yIHRoZSBwYWNoOiB0ZXN0ZWQgb24gc3RtMzJtcDEuDQoN ClRlc3RlZC1ieTogWWFubmljayBGZXJ0csOpIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+DQoNCg0K DQpPbiA2LzkvMjAgNjoyNiBQTSwgQWRyaWFuIFJhdGl1IHdyb3RlOg0KPiBSZWdpc3RlciBleGlz dGVuY2UsIGFkZHJlc3Mvb2Zmc2V0cywgZmllbGQgbGF5b3V0cywgcmVzZXJ2ZWQgYml0cyBhbmQN Cj4gc28gb24gZGlmZmVyIGJldHdlZW4gTUlQSS1EU0kgdmVyc2lvbnMgYW5kIGJldHdlZW4gU29D IHZlbmRvciBib2FyZHMuDQo+IERlc3BpdGUgdGhlc2UgZGlmZmVyZW5jZXMgdGhlIGh3IElQIGFu ZCBwcm90b2NvbHMgYXJlIG1vc3RseSB0aGUgc2FtZQ0KPiBzbyB0aGUgZ2VuZXJpYyBicmlkZ2Ug Y2FuIGJlIG1hZGUgdG8gY29tcGVuc2F0ZSB0aGVzZSBkaWZmZXJlbmNlcy4NCj4NCj4gVGhlIGN1 cnJlbnQgUm9ja2NoaXAgYW5kIFNUTSBkcml2ZXJzIGhhcmRjb2RlZCBhIGxvdCBvZiB0aGVpciBj b21tb24NCj4gZGVmaW5pdGlvbnMgaW4gdGhlIGJyaWRnZSBjb2RlIGJlY2F1c2UgdGhleSdyZSBi YXNlZCBvbiBEU0kgdjEuMzAgYW5kDQo+IDEuMzEgd2hpY2ggYXJlIHJlbGF0aXZlbHkgY2xvc2Us IGJ1dCBpbiBvcmRlciB0byBzdXBwb3J0IG9sZGVyL2Z1dHVyZQ0KPiB2ZXJzaW9ucyB3aXRoIG1v cmUgZGl2ZXJnaW5nIGxheW91dHMgbGlrZSB0aGUgdjEuMDEgcHJlc2VudCBvbiBpbXg2LA0KPiB3 ZSBhYnN0cmFjdCBzb21lIG9mIHRoZSByZWdpc3RlciBhY2Nlc3NlcyB2aWEgdGhlIHJlZ21hcCBm aWVsZCBBUElzLg0KPg0KPiBUaGUgYnJpZGdlIGRldGVjdHMgdGhlIERTSSBjb3JlIHZlcnNpb24g YW5kIGluaXRpYWxpemVzIHRoZSByZXF1aXJlZA0KPiByZWdtYXAgcmVnaXN0ZXIgbGF5b3V0LiBP dGhlciBEU0kgdmVyc2lvbnMgLyByZWdpc3RlciBsYXlvdXRzIGNhbg0KPiBlYXNpbHkgYmUgYWRk ZWQgaW4gdGhlIGZ1dHVyZSBieSBvbmx5IGNoYW5naW5nIHRoZSBicmlkZ2UgY29kZS4NCj4NCj4g VGhlIHBsYXRmb3JtIGRyaXZlcnMgZG9uJ3QgcmVxdWlyZSBhbnkgY2hhbmdlcywgRFNJIHJlZ2lz dGVyIGxheW91dA0KPiB2ZXJzaW9uaW5nIHdpbGwgYmUgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5 IHRoZSBicmlkZ2UsIGJ1dCBpZiBpbg0KPiB0aGUgZnV0dXJlIHRoZSByZWdtYXAgb3IgbGF5b3V0 cyBuZWVkcyB0byBiZSBleHBvc2VkIHRvIHRoZSBkcml2cmVzLA0KPiBpdCBjb3VsZCBlYXNpbHkg YmUgZG9uZSB2aWEgcGxhdF9kYXRhIG9yIGEgbmV3IEFQSSBpbiBkd19taXBpX2RzaS5oLg0KPg0K PiBTdWdnZXN0ZWQtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9y YS5jb20+DQo+IFJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJv cmEuY29tPg0KPiBUZXN0ZWQtYnk6IEFkcmlhbiBQb3AgPHBvcC5hZHJpYW42MUBnbWFpbC5jb20+ DQo+IFRlc3RlZC1ieTogQXJuYXVkIEZlcnJhcmlzIDxhcm5hdWQuZmVycmFyaXNAY29sbGFib3Jh LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogQWRyaWFuIFJhdGl1IDxhZHJpYW4ucmF0aXVAY29sbGFi b3JhLmNvbT4NCj4gLS0tDQo+IENoYW5nZXMgc2luY2UgdjU6DQo+ICAgIC0gRml4IENPTkZJR19E RUJVR19GUyBidWlsZCAoQWRyaWFuKQ0KPiAgICAtIEZpeCBEUk1fTU9ERV9GTEFHXyogdGVzdCBu ZWdhdGlvbiAoQWRyaWFuKQ0KPiAgICAtIEZpeGVkIGNmZ19waHlfc3RhdHVzIHJhbmdlIGZyb20g WzAsMF0gdG8gWzAsMl0NCj4gICAgLSBSZXBsYWNlIGRvIHt9IHdoaWxlKDApIHdpdGggR0NDIGV4 dGVuc2lvbiAoe30pIChBbmRyemVqKQ0KPiAgICAtIEZpeGVkIHBheWxvYWQgbm8tb3Agd3JpdGVz IG9uIFNUTSBkZXZpY2VzIChBZHJpYW4gJiBBcm5hdWQpDQo+DQo+IENoYW5nZXMgc2luY2UgdjQ6 DQo+ICAgIC0gTW92ZSByZWdtYXAgaW5mcmFzdHJ1Y3R1cmUgbG9naWMgdG8gYSBzZXBhcmF0ZSBj b21taXQgKEV6ZXF1aWVsKQ0KPiAgICAtIENvbnNvbGlkYXRlIGZpZWxkIGluZnJhc3RydWN0dXJl IGluIHRoaXMgY29tbWl0IChFemVxdWllbCkNCj4gICAgLSBNb3ZlIHRoZSBkc2kgdjEuMDEgbGF5 b3V0IGxvZ2ljIHRvIGEgc2VwYXJhdGUgY29tbWl0IChFemVxdWllbCkNCj4NCj4gQ2hhbmdlcyBz aW5jZSB2MjoNCj4gICAgLSBBZGRlZCBjb25zdCBkZWNsYXJhdGlvbnMgdG8gZHdfbWlwaV9kc2kg c3RydWN0cyAoRW1pbCkNCj4gICAgLSBGaXhlZCBjb21taXQgdGFncyAoRW1pbCkNCj4NCj4gQ2hh bmdlcyBzaW5jZSB2MToNCj4gICAgLSBNb3ZlZCByZWdpc3RlciBkZWZpbml0aW9ucyAmIHJlZ21h cCBpbml0aWFsaXphdGlvbiBpbnRvIGJyaWRnZQ0KPiAgICBtb2R1bGUuIFBsYXRmb3JtIGRyaXZl cnMgZ2V0IHRoZSByZWdtYXAgdmlhIHBsYXRfZGF0YSBhZnRlciBjYWxsaW5nDQo+ICAgIHRoZSBi cmlkZ2UgcHJvYmUgKEVtaWwpLg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5 bm9wc3lzL2R3LW1pcGktZHNpLmMgfCA0OTkgKysrKysrKysrKysrLS0tLS0tDQo+ICAgMSBmaWxl IGNoYW5nZWQsIDM0NyBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pDQo+DQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMNCj4gaW5kZXggMzRi ODY2OGFlMjRlYS4uZjQ1M2RmNGViNTA3MiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYw0KPiBAQCAtMzEsNiArMzEsNyBAQA0KPiAgICNp bmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPg0KPiAgIA0KPiAgICNkZWZpbmUgSFdWRVJf MTMxCQkJMHgzMTMzMzEwMAkvKiBJUCB2ZXJzaW9uIDEuMzEgKi8NCj4gKyNkZWZpbmUgSFdWRVJf MTMwCQkJMHgzMTMzMzAwMAkvKiBJUCB2ZXJzaW9uIDEuMzAgKi8NCj4gICANCj4gICAjZGVmaW5l IERTSV9WRVJTSU9OCQkJMHgwMA0KPiAgICNkZWZpbmUgVkVSU0lPTgkJCQlHRU5NQVNLKDMxLCA4 KQ0KPiBAQCAtNDcsNyArNDgsNiBAQA0KPiAgICNkZWZpbmUgRFBJX1ZDSUQodmNpZCkJCQkoKHZj aWQpICYgMHgzKQ0KPiAgIA0KPiAgICNkZWZpbmUgRFNJX0RQSV9DT0xPUl9DT0RJTkcJCTB4MTAN Cj4gLSNkZWZpbmUgTE9PU0VMWTE4X0VOCQkJQklUKDgpDQo+ICAgI2RlZmluZSBEUElfQ09MT1Jf Q09ESU5HXzE2QklUXzEJMHgwDQo+ICAgI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzE2QklUXzIJ MHgxDQo+ICAgI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzE2QklUXzMJMHgyDQo+IEBAIC01Niwx MSArNTYsNiBAQA0KPiAgICNkZWZpbmUgRFBJX0NPTE9SX0NPRElOR18yNEJJVAkJMHg1DQo+ICAg DQo+ICAgI2RlZmluZSBEU0lfRFBJX0NGR19QT0wJCQkweDE0DQo+IC0jZGVmaW5lIENPTE9STV9B Q1RJVkVfTE9XCQlCSVQoNCkNCj4gLSNkZWZpbmUgU0hVVERfQUNUSVZFX0xPVwkJQklUKDMpDQo+ IC0jZGVmaW5lIEhTWU5DX0FDVElWRV9MT1cJCUJJVCgyKQ0KPiAtI2RlZmluZSBWU1lOQ19BQ1RJ VkVfTE9XCQlCSVQoMSkNCj4gLSNkZWZpbmUgREFUQUVOX0FDVElWRV9MT1cJCUJJVCgwKQ0KPiAg IA0KPiAgICNkZWZpbmUgRFNJX0RQSV9MUF9DTURfVElNCQkweDE4DQo+ICAgI2RlZmluZSBPVVRW QUNUX0xQQ01EX1RJTUUocCkJCSgoKHApICYgMHhmZikgPDwgMTYpDQo+IEBAIC04MSwyNyArNzYs MTkgQEANCj4gICAjZGVmaW5lIERTSV9HRU5fVkNJRAkJCTB4MzANCj4gICANCj4gICAjZGVmaW5l IERTSV9NT0RFX0NGRwkJCTB4MzQNCj4gLSNkZWZpbmUgRU5BQkxFX1ZJREVPX01PREUJCTANCj4g LSNkZWZpbmUgRU5BQkxFX0NNRF9NT0RFCQkJQklUKDApDQo+ICAgDQo+ICAgI2RlZmluZSBEU0lf VklEX01PREVfQ0ZHCQkweDM4DQo+IC0jZGVmaW5lIEVOQUJMRV9MT1dfUE9XRVIJCSgweDNmIDw8 IDgpDQo+IC0jZGVmaW5lIEVOQUJMRV9MT1dfUE9XRVJfTUFTSwkJKDB4M2YgPDwgOCkNCj4gKyNk ZWZpbmUgRU5BQkxFX0xPV19QT1dFUgkJMHgzZg0KPiArDQo+ICAgI2RlZmluZSBWSURfTU9ERV9U WVBFX05PTl9CVVJTVF9TWU5DX1BVTFNFUwkweDANCj4gICAjZGVmaW5lIFZJRF9NT0RFX1RZUEVf Tk9OX0JVUlNUX1NZTkNfRVZFTlRTCTB4MQ0KPiAgICNkZWZpbmUgVklEX01PREVfVFlQRV9CVVJT VAkJCTB4Mg0KPiAtI2RlZmluZSBWSURfTU9ERV9UWVBFX01BU0sJCQkweDMNCj4gLSNkZWZpbmUg VklEX01PREVfVlBHX0VOQUJMRQkJQklUKDE2KQ0KPiAtI2RlZmluZSBWSURfTU9ERV9WUEdfSE9S SVpPTlRBTAkJQklUKDI0KQ0KPiAgIA0KPiAgICNkZWZpbmUgRFNJX1ZJRF9QS1RfU0laRQkJMHgz Yw0KPiAtI2RlZmluZSBWSURfUEtUX1NJWkUocCkJCQkoKHApICYgMHgzZmZmKQ0KPiAgIA0KPiAg ICNkZWZpbmUgRFNJX1ZJRF9OVU1fQ0hVTktTCQkweDQwDQo+IC0jZGVmaW5lIFZJRF9OVU1fQ0hV TktTKGMpCQkoKGMpICYgMHgxZmZmKQ0KPiAgIA0KPiAgICNkZWZpbmUgRFNJX1ZJRF9OVUxMX1NJ WkUJCTB4NDQNCj4gLSNkZWZpbmUgVklEX05VTExfU0laRShiKQkJKChiKSAmIDB4MWZmZikNCj4g ICANCj4gICAjZGVmaW5lIERTSV9WSURfSFNBX1RJTUUJCTB4NDgNCj4gICAjZGVmaW5lIERTSV9W SURfSEJQX1RJTUUJCTB4NGMNCj4gQEAgLTEyNSw3ICsxMTIsNiBAQA0KPiAgICNkZWZpbmUgR0VO X1NXXzJQX1RYX0xQCQkJQklUKDEwKQ0KPiAgICNkZWZpbmUgR0VOX1NXXzFQX1RYX0xQCQkJQklU KDkpDQo+ICAgI2RlZmluZSBHRU5fU1dfMFBfVFhfTFAJCQlCSVQoOCkNCj4gLSNkZWZpbmUgQUNL X1JRU1RfRU4JCQlCSVQoMSkNCj4gICAjZGVmaW5lIFRFQVJfRlhfRU4JCQlCSVQoMCkNCj4gICAN Cj4gICAjZGVmaW5lIENNRF9NT0RFX0FMTF9MUAkJCShNQVhfUkRfUEtUX1NJWkVfTFAgfCBcDQo+ IEBAIC0xNTQsOCArMTQwLDYgQEANCj4gICAjZGVmaW5lIEdFTl9DTURfRU1QVFkJCQlCSVQoMCkN Cj4gICANCj4gICAjZGVmaW5lIERTSV9UT19DTlRfQ0ZHCQkJMHg3OA0KPiAtI2RlZmluZSBIU1RY X1RPX0NOVChwKQkJCSgoKHApICYgMHhmZmZmKSA8PCAxNikNCj4gLSNkZWZpbmUgTFBSWF9UT19D TlQocCkJCQkoKHApICYgMHhmZmZmKQ0KPiAgIA0KPiAgICNkZWZpbmUgRFNJX0hTX1JEX1RPX0NO VAkJMHg3Yw0KPiAgICNkZWZpbmUgRFNJX0xQX1JEX1RPX0NOVAkJMHg4MA0KPiBAQCAtMTY0LDUy ICsxNDgsMTcgQEANCj4gICAjZGVmaW5lIERTSV9CVEFfVE9fQ05UCQkJMHg4Yw0KPiAgIA0KPiAg ICNkZWZpbmUgRFNJX0xQQ0xLX0NUUkwJCQkweDk0DQo+IC0jZGVmaW5lIEFVVE9fQ0xLTEFORV9D VFJMCQlCSVQoMSkNCj4gLSNkZWZpbmUgUEhZX1RYUkVRVUVTVENMS0hTCQlCSVQoMCkNCj4gLQ0K PiAgICNkZWZpbmUgRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHCQkweDk4DQo+IC0jZGVmaW5lIFBIWV9D TEtIUzJMUF9USU1FKGxiY2MpCQkoKChsYmNjKSAmIDB4M2ZmKSA8PCAxNikNCj4gLSNkZWZpbmUg UEhZX0NMS0xQMkhTX1RJTUUobGJjYykJCSgobGJjYykgJiAweDNmZikNCj4gLQ0KPiAgICNkZWZp bmUgRFNJX1BIWV9UTVJfQ0ZHCQkJMHg5Yw0KPiAtI2RlZmluZSBQSFlfSFMyTFBfVElNRShsYmNj KQkJKCgobGJjYykgJiAweGZmKSA8PCAyNCkNCj4gLSNkZWZpbmUgUEhZX0xQMkhTX1RJTUUobGJj YykJCSgoKGxiY2MpICYgMHhmZikgPDwgMTYpDQo+IC0jZGVmaW5lIE1BWF9SRF9USU1FKGxiY2Mp CQkoKGxiY2MpICYgMHg3ZmZmKQ0KPiAtI2RlZmluZSBQSFlfSFMyTFBfVElNRV9WMTMxKGxiY2Mp CSgoKGxiY2MpICYgMHgzZmYpIDw8IDE2KQ0KPiAtI2RlZmluZSBQSFlfTFAySFNfVElNRV9WMTMx KGxiY2MpCSgobGJjYykgJiAweDNmZikNCj4gLQ0KPiAgICNkZWZpbmUgRFNJX1BIWV9SU1RaCQkJ MHhhMA0KPiAtI2RlZmluZSBQSFlfRElTRk9SQ0VQTEwJCQkwDQo+IC0jZGVmaW5lIFBIWV9FTkZP UkNFUExMCQkJQklUKDMpDQo+IC0jZGVmaW5lIFBIWV9ESVNBQkxFQ0xLCQkJMA0KPiAtI2RlZmlu ZSBQSFlfRU5BQkxFQ0xLCQkJQklUKDIpDQo+IC0jZGVmaW5lIFBIWV9SU1RaCQkJMA0KPiAtI2Rl ZmluZSBQSFlfVU5SU1RaCQkJQklUKDEpDQo+IC0jZGVmaW5lIFBIWV9TSFVURE9XTloJCQkwDQo+ IC0jZGVmaW5lIFBIWV9VTlNIVVRET1dOWgkJCUJJVCgwKQ0KPiAtDQo+ICAgI2RlZmluZSBEU0lf UEhZX0lGX0NGRwkJCTB4YTQNCj4gLSNkZWZpbmUgUEhZX1NUT1BfV0FJVF9USU1FKGN5Y2xlKQko KChjeWNsZSkgJiAweGZmKSA8PCA4KQ0KPiAtI2RlZmluZSBOX0xBTkVTKG4pCQkJKCgobikgLSAx KSAmIDB4MykNCj4gLQ0KPiAtI2RlZmluZSBEU0lfUEhZX1VMUFNfQ1RSTAkJMHhhOA0KPiAtI2Rl ZmluZSBEU0lfUEhZX1RYX1RSSUdHRVJTCQkweGFjDQo+ICAgDQo+ICAgI2RlZmluZSBEU0lfUEhZ X1NUQVRVUwkJCTB4YjANCj4gICAjZGVmaW5lIFBIWV9TVE9QX1NUQVRFX0NMS19MQU5FCQlCSVQo MikNCj4gICAjZGVmaW5lIFBIWV9MT0NLCQkJQklUKDApDQo+ICAgDQo+ICAgI2RlZmluZSBEU0lf UEhZX1RTVF9DVFJMMAkJMHhiNA0KPiAtI2RlZmluZSBQSFlfVEVTVENMSwkJCUJJVCgxKQ0KPiAt I2RlZmluZSBQSFlfVU5URVNUQ0xLCQkJMA0KPiAtI2RlZmluZSBQSFlfVEVTVENMUgkJCUJJVCgw KQ0KPiAtI2RlZmluZSBQSFlfVU5URVNUQ0xSCQkJMA0KPiAtDQo+ICAgI2RlZmluZSBEU0lfUEhZ X1RTVF9DVFJMMQkJMHhiOA0KPiAtI2RlZmluZSBQSFlfVEVTVEVOCQkJQklUKDE2KQ0KPiAtI2Rl ZmluZSBQSFlfVU5URVNURU4JCQkwDQo+IC0jZGVmaW5lIFBIWV9URVNURE9VVChuKQkJCSgoKG4p ICYgMHhmZikgPDwgOCkNCj4gLSNkZWZpbmUgUEhZX1RFU1RESU4obikJCQkoKG4pICYgMHhmZikN Cj4gICANCj4gICAjZGVmaW5lIERTSV9JTlRfU1QwCQkJMHhiYw0KPiAgICNkZWZpbmUgRFNJX0lO VF9TVDEJCQkweGMwDQo+IEBAIC0yMTcsNyArMTY2LDYgQEANCj4gICAjZGVmaW5lIERTSV9JTlRf TVNLMQkJCTB4YzgNCj4gICANCj4gICAjZGVmaW5lIERTSV9QSFlfVE1SX1JEX0NGRwkJMHhmNA0K PiAtI2RlZmluZSBNQVhfUkRfVElNRV9WMTMxKGxiY2MpCQkoKGxiY2MpICYgMHg3ZmZmKQ0KPiAg IA0KPiAgICNkZWZpbmUgUEhZX1NUQVRVU19USU1FT1VUX1VTCQkxMDAwMA0KPiAgICNkZWZpbmUg Q01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUwkyMDAwMA0KPiBAQCAtMjUwLDYgKzE5OCw1MyBAQCBz dHJ1Y3QgZHdfbWlwaV9kc2kgew0KPiAgIAlzdHJ1Y3QgZHdfbWlwaV9kc2kgKnNsYXZlOyAvKiBk dWFsLWRzaSBzbGF2ZSBwdHIgKi8NCj4gICANCj4gICAJY29uc3Qgc3RydWN0IGR3X21pcGlfZHNp X3BsYXRfZGF0YSAqcGxhdF9kYXRhOw0KPiArDQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmll bGRfZHBpXzE4bG9vc2VseV9lbjsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9kcGlf Y29sb3JfY29kaW5nOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX2RwaV92aWQ7DQo+ ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfZHBpX3ZzeW5jX2FjdGl2ZV9sb3c7DQo+ICsJ c3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfZHBpX2hzeW5jX2FjdGl2ZV9sb3c7DQo+ICsJc3Ry dWN0IHJlZ21hcF9maWVsZAkqZmllbGRfY21kX21vZGVfYWNrX3Jxc3RfZW47DQo+ICsJc3RydWN0 IHJlZ21hcF9maWVsZAkqZmllbGRfY21kX21vZGVfYWxsX2xwX2VuOw0KPiArCXN0cnVjdCByZWdt YXBfZmllbGQJKmZpZWxkX2NtZF9tb2RlX2VuOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZp ZWxkX2NtZF9wa3Rfc3RhdHVzOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3ZpZF9t b2RlX2VuOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3ZpZF9tb2RlX3R5cGU7DQo+ ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfdmlkX21vZGVfbG93X3Bvd2VyOw0KPiArCXN0 cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3ZpZF9tb2RlX3ZwZ19lbjsNCj4gKwlzdHJ1Y3QgcmVn bWFwX2ZpZWxkCSpmaWVsZF92aWRfbW9kZV92cGdfaG9yaXo7DQo+ICsJc3RydWN0IHJlZ21hcF9m aWVsZAkqZmllbGRfdmlkX3BrdF9zaXplOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxk X3ZpZF9oc2FfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF92aWRfaGJwX3Rp bWU7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfdmlkX2hsaW5lX3RpbWU7DQo+ICsJ c3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfdmlkX3ZzYV90aW1lOw0KPiArCXN0cnVjdCByZWdt YXBfZmllbGQJKmZpZWxkX3ZpZF92YnBfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpm aWVsZF92aWRfdmZwX3RpbWU7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfdmlkX3Zh Y3RpdmVfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfdHhyZXF1ZXN0 Y2xraHM7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfcGh5X2J0YV90aW1lOw0KPiAr CXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3BoeV9tYXhfcmRfdGltZTsNCj4gKwlzdHJ1Y3Qg cmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfbHAyaHNfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2Zp ZWxkCSpmaWVsZF9waHlfaHMybHBfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVs ZF9waHlfY2xrbHAyaHNfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlf Y2xraHMybHBfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfdGVzdGNs cjsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfdW5zaHV0ZG93bno7DQo+ICsJ c3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfcGh5X3VucnN0ejsNCj4gKwlzdHJ1Y3QgcmVnbWFw X2ZpZWxkCSpmaWVsZF9waHlfZW5hYmxlY2xrOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZp ZWxkX3BoeV9mb3JjZXBsbDsNCj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfbmxh bmVzOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3BoeV9zdG9wX3dhaXRfdGltZTsN Cj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9waHlfc3RhdHVzOw0KPiArCXN0cnVjdCBy ZWdtYXBfZmllbGQJKmZpZWxkX3Bja2hkbF9jZmc7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkq ZmllbGRfaHN0eF90aW1lb3V0X2NvdW50ZXI7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmll bGRfbHByeF90aW1lb3V0X2NvdW50ZXI7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRf aW50X3N0YXQwOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX2ludF9zdGF0MTsNCj4g KwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9pbnRfbWFzazA7DQo+ICsJc3RydWN0IHJlZ21h cF9maWVsZAkqZmllbGRfaW50X21hc2sxOw0KPiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxk X2dlbl9oZHI7DQo+ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfZ2VuX3BheWxvYWQ7DQo+ ICAgfTsNCj4gICANCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgZHdfbWlw aV9kc2lfcmVnbWFwX2NmZyA9IHsNCj4gQEAgLTI1OSw2ICsyNTQsMTExIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBkd19taXBpX2RzaV9yZWdtYXBfY2ZnID0gew0KPiAgIAku bmFtZSA9ICJkdy1taXBpLWRzaSIsDQo+ICAgfTsNCj4gICANCj4gK3N0cnVjdCBkd19taXBpX2Rz aV92YXJpYW50IHsNCj4gKwkvKiBSZWdtYXAgZmllbGQgY29uZmlncyBmb3IgRFNJIGFkYXB0ZXIg Ki8NCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19kcGlfMThsb29zZWx5X2VuOw0KPiArCXN0cnVj dCByZWdfZmllbGQJY2ZnX2RwaV9jb2xvcl9jb2Rpbmc7DQo+ICsJc3RydWN0IHJlZ19maWVsZAlj ZmdfZHBpX3ZpZDsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19kcGlfdnN5bmNfYWN0aXZlX2xv dzsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19kcGlfaHN5bmNfYWN0aXZlX2xvdzsNCj4gKwlz dHJ1Y3QgcmVnX2ZpZWxkCWNmZ19jbWRfbW9kZV9lbjsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNm Z19jbWRfbW9kZV9hY2tfcnFzdF9lbjsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19jbWRfbW9k ZV9hbGxfbHBfZW47DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfY21kX3BrdF9zdGF0dXM7DQo+ ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX21vZGVfZW47DQo+ICsJc3RydWN0IHJlZ19maWVs ZAljZmdfdmlkX21vZGVfdHlwZTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ192aWRfbW9kZV9s b3dfcG93ZXI7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX21vZGVfdnBnX2VuOw0KPiAr CXN0cnVjdCByZWdfZmllbGQJY2ZnX3ZpZF9tb2RlX3ZwZ19ob3JpejsNCj4gKwlzdHJ1Y3QgcmVn X2ZpZWxkCWNmZ192aWRfcGt0X3NpemU7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX2hz YV90aW1lOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3ZpZF9oYnBfdGltZTsNCj4gKwlzdHJ1 Y3QgcmVnX2ZpZWxkCWNmZ192aWRfaGxpbmVfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNm Z192aWRfdnNhX3RpbWU7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX3ZicF90aW1lOw0K PiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3ZpZF92ZnBfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnX2Zp ZWxkCWNmZ192aWRfdmFjdGl2ZV90aW1lOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV90 eHJlcXVlc3RjbGtoczsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlfYnRhX3RpbWU7DQo+ ICsJc3RydWN0IHJlZ19maWVsZAljZmdfcGh5X21heF9yZF90aW1lOw0KPiArCXN0cnVjdCByZWdf ZmllbGQJY2ZnX3BoeV9scDJoc190aW1lOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV9o czJscF90aW1lOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV9tYXhfcmRfdGltZV92MTMx Ow0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV9scDJoc190aW1lX3YxMzE7DQo+ICsJc3Ry dWN0IHJlZ19maWVsZAljZmdfcGh5X2hzMmxwX3RpbWVfdjEzMTsNCj4gKwlzdHJ1Y3QgcmVnX2Zp ZWxkCWNmZ19waHlfY2xrbHAyaHNfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlf Y2xraHMybHBfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlfdGVzdGNscjsNCj4g KwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlfdW5zaHV0ZG93bno7DQo+ICsJc3RydWN0IHJlZ19m aWVsZAljZmdfcGh5X3VucnN0ejsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlfZW5hYmxl Y2xrOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV9mb3JjZXBsbDsNCj4gKwlzdHJ1Y3Qg cmVnX2ZpZWxkCWNmZ19waHlfbmxhbmVzOw0KPiArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3BoeV9z dG9wX3dhaXRfdGltZTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19waHlfc3RhdHVzOw0KPiAr CXN0cnVjdCByZWdfZmllbGQJY2ZnX3Bja2hkbF9jZmc7DQo+ICsJc3RydWN0IHJlZ19maWVsZAlj ZmdfaHN0eF90aW1lb3V0X2NvdW50ZXI7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfbHByeF90 aW1lb3V0X2NvdW50ZXI7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfaW50X3N0YXQwOw0KPiAr CXN0cnVjdCByZWdfZmllbGQJY2ZnX2ludF9zdGF0MTsNCj4gKwlzdHJ1Y3QgcmVnX2ZpZWxkCWNm Z19pbnRfbWFzazA7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfaW50X21hc2sxOw0KPiArCXN0 cnVjdCByZWdfZmllbGQJY2ZnX2dlbl9oZHI7DQo+ICsJc3RydWN0IHJlZ19maWVsZAljZmdfZ2Vu X3BheWxvYWQ7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNp X3ZhcmlhbnQgZHdfbWlwaV9kc2lfdjEzMF92MTMxX2xheW91dCA9IHsNCj4gKwkuY2ZnX2RwaV9j b2xvcl9jb2RpbmcgPQkJUkVHX0ZJRUxEKERTSV9EUElfQ09MT1JfQ09ESU5HLCAwLCAzKSwNCj4g KwkuY2ZnX2RwaV8xOGxvb3NlbHlfZW4gPQkJUkVHX0ZJRUxEKERTSV9EUElfQ09MT1JfQ09ESU5H LCA4LCA4KSwNCj4gKwkuY2ZnX2RwaV92aWQgPQkJCVJFR19GSUVMRChEU0lfRFBJX1ZDSUQsIDAs IDIpLA0KPiArCS5jZmdfZHBpX3ZzeW5jX2FjdGl2ZV9sb3cgPQlSRUdfRklFTEQoRFNJX0RQSV9D RkdfUE9MLCAxLCAxKSwNCj4gKwkuY2ZnX2RwaV9oc3luY19hY3RpdmVfbG93ID0JUkVHX0ZJRUxE KERTSV9EUElfQ0ZHX1BPTCwgMiwgMiksDQo+ICsJLmNmZ19jbWRfbW9kZV9hY2tfcnFzdF9lbiA9 CVJFR19GSUVMRChEU0lfQ01EX01PREVfQ0ZHLCAxLCAxKSwNCj4gKwkuY2ZnX2NtZF9tb2RlX2Fs bF9scF9lbiA9CVJFR19GSUVMRChEU0lfQ01EX01PREVfQ0ZHLCA4LCAyNCksDQo+ICsJLmNmZ19j bWRfbW9kZV9lbiA9CQlSRUdfRklFTEQoRFNJX01PREVfQ0ZHLCAwLCAzMSksDQo+ICsJLmNmZ19j bWRfcGt0X3N0YXR1cyA9CQlSRUdfRklFTEQoRFNJX0NNRF9QS1RfU1RBVFVTLCAwLCAzMSksDQo+ ICsJLmNmZ192aWRfbW9kZV9lbiA9CQlSRUdfRklFTEQoRFNJX01PREVfQ0ZHLCAwLCAzMSksDQo+ ICsJLmNmZ192aWRfbW9kZV90eXBlID0JCVJFR19GSUVMRChEU0lfVklEX01PREVfQ0ZHLCAwLCAx KSwNCj4gKwkuY2ZnX3ZpZF9tb2RlX2xvd19wb3dlciA9CVJFR19GSUVMRChEU0lfVklEX01PREVf Q0ZHLCA4LCAxMyksDQo+ICsJLmNmZ192aWRfbW9kZV92cGdfZW4gPQkJUkVHX0ZJRUxEKERTSV9W SURfTU9ERV9DRkcsIDE2LCAxNiksDQo+ICsJLmNmZ192aWRfbW9kZV92cGdfaG9yaXogPQlSRUdf RklFTEQoRFNJX1ZJRF9NT0RFX0NGRywgMjQsIDI0KSwNCj4gKwkuY2ZnX3ZpZF9wa3Rfc2l6ZSA9 CQlSRUdfRklFTEQoRFNJX1ZJRF9QS1RfU0laRSwgMCwgMTApLA0KPiArCS5jZmdfdmlkX2hzYV90 aW1lID0JCVJFR19GSUVMRChEU0lfVklEX0hTQV9USU1FLCAwLCAzMSksDQo+ICsJLmNmZ192aWRf aGJwX3RpbWUgPQkJUkVHX0ZJRUxEKERTSV9WSURfSEJQX1RJTUUsIDAsIDMxKSwNCj4gKwkuY2Zn X3ZpZF9obGluZV90aW1lID0JCVJFR19GSUVMRChEU0lfVklEX0hMSU5FX1RJTUUsIDAsIDMxKSwN Cj4gKwkuY2ZnX3ZpZF92c2FfdGltZSA9CQlSRUdfRklFTEQoRFNJX1ZJRF9WU0FfTElORVMsIDAs IDMxKSwNCj4gKwkuY2ZnX3ZpZF92YnBfdGltZSA9CQlSRUdfRklFTEQoRFNJX1ZJRF9WQlBfTElO RVMsIDAsIDMxKSwNCj4gKwkuY2ZnX3ZpZF92ZnBfdGltZSA9CQlSRUdfRklFTEQoRFNJX1ZJRF9W RlBfTElORVMsIDAsIDMxKSwNCj4gKwkuY2ZnX3ZpZF92YWN0aXZlX3RpbWUgPQkJUkVHX0ZJRUxE KERTSV9WSURfVkFDVElWRV9MSU5FUywgMCwgMzEpLA0KPiArCS5jZmdfcGh5X3R4cmVxdWVzdGNs a2hzID0JUkVHX0ZJRUxEKERTSV9MUENMS19DVFJMLCAwLCAwKSwNCj4gKwkuY2ZnX3BoeV9idGFf dGltZSA9CQlSRUdfRklFTEQoRFNJX0JUQV9UT19DTlQsIDAsIDMxKSwNCj4gKwkuY2ZnX3BoeV9t YXhfcmRfdGltZSA9CQlSRUdfRklFTEQoRFNJX1BIWV9UTVJfQ0ZHLCAwLCAxNSksDQo+ICsJLmNm Z19waHlfbHAyaHNfdGltZSA9CQlSRUdfRklFTEQoRFNJX1BIWV9UTVJfQ0ZHLCAxNiwgMjMpLA0K PiArCS5jZmdfcGh5X2hzMmxwX3RpbWUgPQkJUkVHX0ZJRUxEKERTSV9QSFlfVE1SX0NGRywgMjQs IDMxKSwNCj4gKwkuY2ZnX3BoeV9tYXhfcmRfdGltZV92MTMxID0JUkVHX0ZJRUxEKERTSV9QSFlf VE1SX1JEX0NGRywgMCwgMTUpLA0KPiArCS5jZmdfcGh5X2xwMmhzX3RpbWVfdjEzMSA9CVJFR19G SUVMRChEU0lfUEhZX1RNUl9DRkcsIDAsIDE1KSwNCj4gKwkuY2ZnX3BoeV9oczJscF90aW1lX3Yx MzEgPQlSRUdfRklFTEQoRFNJX1BIWV9UTVJfQ0ZHLCAxNiwgMzEpLA0KPiArCS5jZmdfcGh5X2Ns a2xwMmhzX3RpbWUgPQlSRUdfRklFTEQoRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHLCAwLCAxNSksDQo+ ICsJLmNmZ19waHlfY2xraHMybHBfdGltZSA9CVJFR19GSUVMRChEU0lfUEhZX1RNUl9MUENMS19D RkcsIDE2LCAzMSksDQo+ICsJLmNmZ19waHlfdGVzdGNsciA9CQlSRUdfRklFTEQoRFNJX1BIWV9U U1RfQ1RSTDAsIDAsIDApLA0KPiArCS5jZmdfcGh5X3Vuc2h1dGRvd256ID0JCVJFR19GSUVMRChE U0lfUEhZX1JTVFosIDAsIDApLA0KPiArCS5jZmdfcGh5X3VucnN0eiA9CQlSRUdfRklFTEQoRFNJ X1BIWV9SU1RaLCAxLCAxKSwNCj4gKwkuY2ZnX3BoeV9lbmFibGVjbGsgPQkJUkVHX0ZJRUxEKERT SV9QSFlfUlNUWiwgMiwgMiksDQo+ICsJLmNmZ19waHlfZm9yY2VwbGwgPQkJUkVHX0ZJRUxEKERT SV9QSFlfUlNUWiwgMywgMyksDQo+ICsJLmNmZ19waHlfbmxhbmVzID0JCVJFR19GSUVMRChEU0lf UEhZX0lGX0NGRywgMCwgMSksDQo+ICsJLmNmZ19waHlfc3RvcF93YWl0X3RpbWUgPQlSRUdfRklF TEQoRFNJX1BIWV9JRl9DRkcsIDgsIDE1KSwNCj4gKwkuY2ZnX3BoeV9zdGF0dXMgPQkJUkVHX0ZJ RUxEKERTSV9QSFlfU1RBVFVTLCAwLCAyKSwNCj4gKwkuY2ZnX3Bja2hkbF9jZmcgPQkJUkVHX0ZJ RUxEKERTSV9QQ0tIRExfQ0ZHLCAwLCA0KSwNCj4gKwkuY2ZnX2hzdHhfdGltZW91dF9jb3VudGVy ID0JUkVHX0ZJRUxEKERTSV9UT19DTlRfQ0ZHLCAxNiwgMzEpLA0KPiArCS5jZmdfbHByeF90aW1l b3V0X2NvdW50ZXIgPQlSRUdfRklFTEQoRFNJX1RPX0NOVF9DRkcsIDAsIDE1KSwNCj4gKwkuY2Zn X2ludF9zdGF0MCA9CQlSRUdfRklFTEQoRFNJX0lOVF9TVDAsIDAsIDMxKSwNCj4gKwkuY2ZnX2lu dF9zdGF0MSA9CQlSRUdfRklFTEQoRFNJX0lOVF9TVDEsIDAsIDMxKSwNCj4gKwkuY2ZnX2ludF9t YXNrMCA9CQlSRUdfRklFTEQoRFNJX0lOVF9NU0swLCAwLCAzMSksDQo+ICsJLmNmZ19pbnRfbWFz azEgPQkJUkVHX0ZJRUxEKERTSV9JTlRfTVNLMSwgMCwgMzEpLA0KPiArCS5jZmdfZ2VuX2hkciA9 CQkJUkVHX0ZJRUxEKERTSV9HRU5fSERSLCAwLCAzMSksDQo+ICsJLmNmZ19nZW5fcGF5bG9hZCA9 CQlSRUdfRklFTEQoRFNJX0dFTl9QTERfREFUQSwgMCwgMzEpLA0KPiArfTsNCj4gKw0KPiAgIC8q DQo+ICAgICogQ2hlY2sgaWYgZWl0aGVyIGEgbGluayB0byBhIG1hc3RlciBvciBzbGF2ZSBpcyBw cmVzZW50DQo+ICAgICovDQo+IEBAIC0zNTksMTUgKzQ1OSwyMiBAQCBzdGF0aWMgdm9pZCBkd19t aXBpX21lc3NhZ2VfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLA0KPiAgIAkJCQkgICBj b25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpDQo+ICAgew0KPiAgIAlib29sIGxwbSA9IG1z Zy0+ZmxhZ3MgJiBNSVBJX0RTSV9NU0dfVVNFX0xQTTsNCj4gLQl1MzIgdmFsID0gMDsNCj4gKwl1 MzIgY21kX21vZGVfbHAgPSAwOw0KPiArDQo+ICsJc3dpdGNoIChkc2ktPmh3X3ZlcnNpb24pIHsN Cj4gKwljYXNlIEhXVkVSXzEzMDoNCj4gKwljYXNlIEhXVkVSXzEzMToNCj4gKwkJY21kX21vZGVf bHAgPSBDTURfTU9ERV9BTExfTFA7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gICANCj4gICAJaWYg KG1zZy0+ZmxhZ3MgJiBNSVBJX0RTSV9NU0dfUkVRX0FDSykNCj4gLQkJdmFsIHw9IEFDS19SUVNU X0VOOw0KPiArCQlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9jbWRfbW9kZV9hY2tfcnFz dF9lbiwgMSk7DQo+ICsNCj4gICAJaWYgKGxwbSkNCj4gLQkJdmFsIHw9IENNRF9NT0RFX0FMTF9M UDsNCj4gKwkJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfY21kX21vZGVfYWxsX2xwX2Vu LCBjbWRfbW9kZV9scCk7DQo+ICAgDQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0xQ Q0xLX0NUUkwsIGxwbSA/IDAgOiBQSFlfVFhSRVFVRVNUQ0xLSFMpOw0KPiAtCXJlZ21hcF93cml0 ZShkc2ktPnJlZ3MsIERTSV9DTURfTU9ERV9DRkcsIHZhbCk7DQo+ICsJcmVnbWFwX2ZpZWxkX3dy aXRlKGRzaS0+ZmllbGRfcGh5X3R4cmVxdWVzdGNsa2hzLCBscG0gPyAwIDogMSk7DQo+ICAgfQ0K PiAgIA0KPiAgIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfZ2VuX3BrdF9oZHJfd3JpdGUoc3RydWN0 IGR3X21pcGlfZHNpICpkc2ksIHUzMiBoZHJfdmFsKQ0KPiBAQCAtMzc1LDE4ICs0ODIsMTggQEAg c3RhdGljIGludCBkd19taXBpX2RzaV9nZW5fcGt0X2hkcl93cml0ZShzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSwgdTMyIGhkcl92YWwpDQo+ICAgCWludCByZXQ7DQo+ICAgCXUzMiB2YWwsIG1hc2s7 DQo+ICAgDQo+IC0JcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJ X0NNRF9QS1RfU1RBVFVTLA0KPiAtCQkJCSAgICAgICB2YWwsICEodmFsICYgR0VOX0NNRF9GVUxM KSwgMTAwMCwNCj4gLQkJCQkgICAgICAgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICsJ cmV0ID0gcmVnbWFwX2ZpZWxkX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+ZmllbGRfY21kX3BrdF9z dGF0dXMsDQo+ICsJCQkJCSAgICAgdmFsLCAhKHZhbCAmIEdFTl9DTURfRlVMTCksDQo+ICsJCQkJ CSAgICAgMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICAgCWlmIChyZXQpIHsN Cj4gICAJCWRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8gZ2V0IGF2YWlsYWJsZSBjb21tYW5k IEZJRk9cbiIpOw0KPiAgIAkJcmV0dXJuIHJldDsNCj4gICAJfQ0KPiAgIA0KPiAtCXJlZ21hcF93 cml0ZShkc2ktPnJlZ3MsIERTSV9HRU5fSERSLCBoZHJfdmFsKTsNCj4gKwlyZWdtYXBfZmllbGRf d3JpdGUoZHNpLT5maWVsZF9nZW5faGRyLCBoZHJfdmFsKTsNCj4gICANCj4gICAJbWFzayA9IEdF Tl9DTURfRU1QVFkgfCBHRU5fUExEX1dfRU1QVFk7DQo+IC0JcmV0ID0gcmVnbWFwX3JlYWRfcG9s bF90aW1lb3V0KGRzaS0+cmVncywgRFNJX0NNRF9QS1RfU1RBVFVTLA0KPiArCXJldCA9IHJlZ21h cF9maWVsZF9yZWFkX3BvbGxfdGltZW91dChkc2ktPmZpZWxkX2NtZF9wa3Rfc3RhdHVzLA0KPiAg IAkJCQkgICAgICAgdmFsLCAodmFsICYgbWFzaykgPT0gbWFzaywNCj4gICAJCQkJICAgICAgIDEw MDAsIENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOw0KPiAgIAlpZiAocmV0KSB7DQo+IEBAIC00 MDksMjAgKzUxNiwyMiBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3dyaXRlKHN0cnVjdCBkd19t aXBpX2RzaSAqZHNpLA0KPiAgIAkJaWYgKGxlbiA8IHBsZF9kYXRhX2J5dGVzKSB7DQo+ICAgCQkJ d29yZCA9IDA7DQo+ICAgCQkJbWVtY3B5KCZ3b3JkLCB0eF9idWYsIGxlbik7DQo+IC0JCQlyZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfR0VOX1BMRF9EQVRBLA0KPiAtCQkJCSAgICAgbGUzMl90 b19jcHUod29yZCkpOw0KPiArCQkJcmVnbWFwX2ZpZWxkX2ZvcmNlX3dyaXRlKGRzaS0+ZmllbGRf Z2VuX3BheWxvYWQsDQo+ICsJCQkJCQkgbGUzMl90b19jcHUod29yZCkpOw0KPiAgIAkJCWxlbiA9 IDA7DQo+ICAgCQl9IGVsc2Ugew0KPiAgIAkJCW1lbWNweSgmd29yZCwgdHhfYnVmLCBwbGRfZGF0 YV9ieXRlcyk7DQo+IC0JCQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfR0VOX1BMRF9EQVRB LA0KPiAtCQkJCSAgICAgbGUzMl90b19jcHUod29yZCkpOw0KPiArCQkJcmVnbWFwX2ZpZWxkX2Zv cmNlX3dyaXRlKGRzaS0+ZmllbGRfZ2VuX3BheWxvYWQsDQo+ICsJCQkJCQkgbGUzMl90b19jcHUo d29yZCkpOw0KPiAgIAkJCXR4X2J1ZiArPSBwbGRfZGF0YV9ieXRlczsNCj4gICAJCQlsZW4gLT0g cGxkX2RhdGFfYnl0ZXM7DQo+ICAgCQl9DQo+ICAgDQo+IC0JCXJldCA9IHJlZ21hcF9yZWFkX3Bv bGxfdGltZW91dChkc2ktPnJlZ3MsIERTSV9DTURfUEtUX1NUQVRVUywNCj4gLQkJCQkJICAgICAg IHZhbCwgISh2YWwgJiBHRU5fUExEX1dfRlVMTCksDQo+IC0JCQkJCSAgICAgICAxMDAwLCBDTURf UEtUX1NUQVRVU19USU1FT1VUX1VTKTsNCj4gKwkJcmV0ID0gcmVnbWFwX2ZpZWxkX3JlYWRfcG9s bF90aW1lb3V0KGRzaS0+ZmllbGRfY21kX3BrdF9zdGF0dXMsDQo+ICsJCQkJCQkgICAgIHZhbCwN Cj4gKwkJCQkJCSAgICAgISh2YWwgJiBHRU5fUExEX1dfRlVMTCksDQo+ICsJCQkJCQkgICAgIDEw MDAsDQo+ICsJCQkJCQkgICAgIENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOw0KPiAgIAkJaWYg KHJldCkgew0KPiAgIAkJCWRldl9lcnIoZHNpLT5kZXYsDQo+ICAgCQkJCSJmYWlsZWQgdG8gZ2V0 IGF2YWlsYWJsZSB3cml0ZSBwYXlsb2FkIEZJRk9cbiIpOw0KPiBAQCAtNDQzLDkgKzU1Miw5IEBA IHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfcmVhZChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwNCj4g ICAJdTMyIHZhbDsNCj4gICANCj4gICAJLyogV2FpdCBlbmQgb2YgdGhlIHJlYWQgb3BlcmF0aW9u ICovDQo+IC0JcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJX0NN RF9QS1RfU1RBVFVTLA0KPiAtCQkJCSAgICAgICB2YWwsICEodmFsICYgR0VOX1JEX0NNRF9CVVNZ KSwNCj4gLQkJCQkgICAgICAgMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICsJ cmV0ID0gcmVnbWFwX2ZpZWxkX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+ZmllbGRfY21kX3BrdF9z dGF0dXMsDQo+ICsJCQkJCSAgICAgdmFsLCAhKHZhbCAmIEdFTl9SRF9DTURfQlVTWSksDQo+ICsJ CQkJCSAgICAgMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICAgCWlmIChyZXQp IHsNCj4gICAJCWRldl9lcnIoZHNpLT5kZXYsICJUaW1lb3V0IGR1cmluZyByZWFkIG9wZXJhdGlv blxuIik7DQo+ICAgCQlyZXR1cm4gcmV0Ow0KPiBAQCAtNDUzLDE1ICs1NjIsMTcgQEAgc3RhdGlj IGludCBkd19taXBpX2RzaV9yZWFkKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLA0KPiAgIA0KPiAg IAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHsNCj4gICAJCS8qIFJlYWQgZmlmbyBtdXN0 IG5vdCBiZSBlbXB0eSBiZWZvcmUgYWxsIGJ5dGVzIGFyZSByZWFkICovDQo+IC0JCXJldCA9IHJl Z21hcF9yZWFkX3BvbGxfdGltZW91dChkc2ktPnJlZ3MsIERTSV9DTURfUEtUX1NUQVRVUywNCj4g LQkJCQkJICAgICAgIHZhbCwgISh2YWwgJiBHRU5fUExEX1JfRU1QVFkpLA0KPiAtCQkJCQkgICAg ICAgMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICsJCXJldCA9IHJlZ21hcF9m aWVsZF9yZWFkX3BvbGxfdGltZW91dChkc2ktPmZpZWxkX2NtZF9wa3Rfc3RhdHVzLA0KPiArCQkJ CQkJICAgICB2YWwsDQo+ICsJCQkJCQkgICAgICEodmFsICYgR0VOX1BMRF9SX0VNUFRZKSwNCj4g KwkJCQkJCSAgICAgMTAwMCwNCj4gKwkJCQkJCSAgICAgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9V Uyk7DQo+ICAgCQlpZiAocmV0KSB7DQo+ICAgCQkJZGV2X2Vycihkc2ktPmRldiwgIlJlYWQgcGF5 bG9hZCBGSUZPIGlzIGVtcHR5XG4iKTsNCj4gICAJCQlyZXR1cm4gcmV0Ow0KPiAgIAkJfQ0KPiAg IA0KPiAtCQlyZWdtYXBfcmVhZChkc2ktPnJlZ3MsIERTSV9HRU5fUExEX0RBVEEsICZ2YWwpOw0K PiArCQlyZWdtYXBfZmllbGRfcmVhZChkc2ktPmZpZWxkX2dlbl9wYXlsb2FkLCAmdmFsKTsNCj4g ICAJCWZvciAoaiA9IDA7IGogPCA0ICYmIGogKyBpIDwgbGVuOyBqKyspDQo+ICAgCQkJYnVmW2kg KyBqXSA9IHZhbCA+PiAoOCAqIGopOw0KPiAgIAl9DQo+IEBAIC01MTUsMzAgKzYyNiwzMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIGR3X21pcGlfZHNpX2hvc3Rfb3Bz ID0gew0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmln KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQ0KPiAgIHsNCj4gLQl1MzIgdmFsOw0KPiAtDQo+ICAg CS8qDQo+ICAgCSAqIFRPRE8gZHcgZHJ2IGltcHJvdmVtZW50cw0KPiAgIAkgKiBlbmFibGluZyBs b3cgcG93ZXIgaXMgcGFuZWwtZGVwZW5kZW50LCB3ZSBzaG91bGQgdXNlIHRoZQ0KPiAgIAkgKiBw YW5lbCBjb25maWd1cmF0aW9uIGhlcmUuLi4NCj4gICAJICovDQo+IC0JdmFsID0gRU5BQkxFX0xP V19QT1dFUjsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF92aWRfbW9kZV9sb3df cG93ZXIsIEVOQUJMRV9MT1dfUE9XRVIpOw0KPiAgIA0KPiAgIAlpZiAoZHNpLT5tb2RlX2ZsYWdz ICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkNCj4gLQkJdmFsIHw9IFZJRF9NT0RFX1RZUEVf QlVSU1Q7DQo+ICsJCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3ZpZF9tb2RlX3R5cGUs DQo+ICsJCQkJICAgVklEX01PREVfVFlQRV9CVVJTVCk7DQo+ICAgCWVsc2UgaWYgKGRzaS0+bW9k ZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSkNCj4gLQkJdmFsIHw9IFZJ RF9NT0RFX1RZUEVfTk9OX0JVUlNUX1NZTkNfUFVMU0VTOw0KPiArCQlyZWdtYXBfZmllbGRfd3Jp dGUoZHNpLT5maWVsZF92aWRfbW9kZV90eXBlLA0KPiArCQkJCSAgIFZJRF9NT0RFX1RZUEVfTk9O X0JVUlNUX1NZTkNfUFVMU0VTKTsNCj4gICAJZWxzZQ0KPiAtCQl2YWwgfD0gVklEX01PREVfVFlQ RV9OT05fQlVSU1RfU1lOQ19FVkVOVFM7DQo+ICsJCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZp ZWxkX3ZpZF9tb2RlX3R5cGUsDQo+ICsJCQkJICAgVklEX01PREVfVFlQRV9OT05fQlVSU1RfU1lO Q19FVkVOVFMpOw0KPiAgIA0KPiAgICNpZmRlZiBDT05GSUdfREVCVUdfRlMNCj4gICAJaWYgKGRz aS0+dnBnKSB7DQo+IC0JCXZhbCB8PSBWSURfTU9ERV9WUEdfRU5BQkxFOw0KPiAtCQl2YWwgfD0g ZHNpLT52cGdfaG9yaXpvbnRhbCA/IFZJRF9NT0RFX1ZQR19IT1JJWk9OVEFMIDogMDsNCj4gKwkJ cmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfdmlkX21vZGVfdnBnX2VuLCAxKTsNCj4gKwkJ cmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfdmlkX21vZGVfdnBnX2hvcml6LA0KPiArCQkJ CSAgIGRzaS0+dnBnX2hvcml6b250YWwgPyAxIDogMCk7DQo+ICAgCX0NCj4gICAjZW5kaWYgLyog Q09ORklHX0RFQlVHX0ZTICovDQo+IC0NCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lf VklEX01PREVfQ0ZHLCB2YWwpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBkd19taXBp X2RzaV9zZXRfbW9kZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwNCj4gQEAgLTU0NywxMSArNjU4 LDEzIEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3NldF9tb2RlKHN0cnVjdCBkd19taXBpX2Rz aSAqZHNpLA0KPiAgIAlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBSRVNFVCk7 DQo+ICAgDQo+ICAgCWlmIChtb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgew0KPiAt CQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfTU9ERV9DRkcsIEVOQUJMRV9WSURFT19NT0RF KTsNCj4gKwkJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfY21kX21vZGVfZW4sIDApOw0K PiArDQo+ICAgCQlkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhkc2kpOw0KPiAtCQlyZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfTFBDTEtfQ1RSTCwgUEhZX1RYUkVRVUVTVENMS0hTKTsN Cj4gKw0KPiArCQlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfdHhyZXF1ZXN0Y2xr aHMsIDEpOw0KPiAgIAl9IGVsc2Ugew0KPiAtCQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lf TU9ERV9DRkcsIEVOQUJMRV9DTURfTU9ERSk7DQo+ICsJCXJlZ21hcF9maWVsZF93cml0ZShkc2kt PmZpZWxkX2NtZF9tb2RlX2VuLCAxKTsNCj4gICAJfQ0KPiAgIA0KPiAgIAlyZWdtYXBfd3JpdGUo ZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBQT1dFUlVQKTsNCj4gQEAgLTU2MCw3ICs2NzMsNyBAQCBz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9zZXRfbW9kZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwN Cj4gICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kaXNhYmxlKHN0cnVjdCBkd19taXBpX2RzaSAq ZHNpKQ0KPiAgIHsNCj4gICAJcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BXUl9VUCwgUkVT RVQpOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfUlNUWiwgUEhZX1JTVFop Ow0KPiArCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV91bnJzdHosIDApOw0KPiAg IH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9pbml0KHN0cnVjdCBkd19taXBp X2RzaSAqZHNpKQ0KPiBAQCAtNTg5LDE0ICs3MDIsMTUgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9k c2lfaW5pdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4gICBzdGF0aWMgdm9pZCBkd19taXBp X2RzaV9kcGlfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLA0KPiAgIAkJCQkgICBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkNCj4gICB7DQo+IC0JdTMyIHZhbCA9IDAs IGNvbG9yID0gMDsNCj4gKwl1MzIgY29sb3IgPSAwOw0KPiAgIA0KPiAgIAlzd2l0Y2ggKGRzaS0+ Zm9ybWF0KSB7DQo+ICAgCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjg4ODoNCj4gICAJCWNvbG9yID0g RFBJX0NPTE9SX0NPRElOR18yNEJJVDsNCj4gICAJCWJyZWFrOw0KPiAgIAljYXNlIE1JUElfRFNJ X0ZNVF9SR0I2NjY6DQo+IC0JCWNvbG9yID0gRFBJX0NPTE9SX0NPRElOR18xOEJJVF8yIHwgTE9P U0VMWTE4X0VOOw0KPiArCQljb2xvciA9IERQSV9DT0xPUl9DT0RJTkdfMThCSVRfMjsNCj4gKwkJ cmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpXzE4bG9vc2VseV9lbiwgMSk7DQo+ICAg CQlicmVhazsNCj4gICAJY2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2X1BBQ0tFRDoNCj4gICAJCWNv bG9yID0gRFBJX0NPTE9SX0NPRElOR18xOEJJVF8xOw0KPiBAQCAtNjA2LDE0ICs3MjAsMTQgQEAg c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBpX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRz aSwNCj4gICAJCWJyZWFrOw0KPiAgIAl9DQo+ICAgDQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRz aS0+ZmllbGRfZHBpX3ZpZCwgRFBJX1ZDSUQoZHNpLT5jaGFubmVsKSk7DQo+ICsJcmVnbWFwX2Zp ZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpX2NvbG9yX2NvZGluZywgY29sb3IpOw0KPiArDQo+ICAg CWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKQ0KPiAtCQl2YWwgfD0gVlNZ TkNfQUNUSVZFX0xPVzsNCj4gKwkJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpX3Zz eW5jX2FjdGl2ZV9sb3csIDEpOw0KPiAgIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X05IU1lOQykNCj4gLQkJdmFsIHw9IEhTWU5DX0FDVElWRV9MT1c7DQo+ICsJCXJlZ21hcF9maWVs ZF93cml0ZShkc2ktPmZpZWxkX2RwaV9oc3luY19hY3RpdmVfbG93LCAxKTsNCj4gICANCj4gLQly ZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfRFBJX1ZDSUQsIERQSV9WQ0lEKGRzaS0+Y2hhbm5l bCkpOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9EUElfQ09MT1JfQ09ESU5HLCBj b2xvcik7DQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0RQSV9DRkdfUE9MLCB2YWwp Ow0KPiAgIAkvKg0KPiAgIAkgKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMNCj4gICAJICogbGFy Z2VzdCBwYWNrZXQgc2l6ZXMgZHVyaW5nIGhmcCBvciBkdXJpbmcgdnNhL3ZwYi92ZnANCj4gQEAg LTYyNiw3ICs3NDAsOCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGlfY29uZmlnKHN0cnVj dCBkd19taXBpX2RzaSAqZHNpLA0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3Bh Y2tldF9oYW5kbGVyX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4gICB7DQo+IC0J cmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BDS0hETF9DRkcsIENSQ19SWF9FTiB8IEVDQ19S WF9FTiB8IEJUQV9FTik7DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGNraGRs X2NmZywNCj4gKwkJCSAgIENSQ19SWF9FTiB8IEVDQ19SWF9FTiB8IEJUQV9FTik7DQo+ICAgfQ0K PiAgIA0KPiAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoc3Ry dWN0IGR3X21pcGlfZHNpICpkc2ksDQo+IEBAIC02MzksMTEgKzc1NCw5IEBAIHN0YXRpYyB2b2lk IGR3X21pcGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2ks DQo+ICAgCSAqIERTSV9WTlBDUi5OUFNJWkUuLi4gZXNwZWNpYWxseSBiZWNhdXNlIHRoaXMgZHJp dmVyIHN1cHBvcnRzDQo+ICAgCSAqIG5vbi1idXJzdCB2aWRlbyBtb2Rlcywgc2VlIGR3X21pcGlf ZHNpX3ZpZGVvX21vZGVfY29uZmlnKCkuLi4NCj4gICAJICovDQo+IC0NCj4gLQlyZWdtYXBfd3Jp dGUoZHNpLT5yZWdzLCBEU0lfVklEX1BLVF9TSVpFLA0KPiAtCQkgICAgICAgZHdfbWlwaV9pc19k dWFsX21vZGUoZHNpKSA/DQo+IC0JCQkJVklEX1BLVF9TSVpFKG1vZGUtPmhkaXNwbGF5IC8gMikg Og0KPiAtCQkJCVZJRF9QS1RfU0laRShtb2RlLT5oZGlzcGxheSkpOw0KPiArCXJlZ21hcF9maWVs ZF93cml0ZShkc2ktPmZpZWxkX3ZpZF9wa3Rfc2l6ZSwNCj4gKwkJCSAgIGR3X21pcGlfaXNfZHVh bF9tb2RlKGRzaSkgPw0KPiArCQkJCW1vZGUtPmhkaXNwbGF5IC8gMiA6IG1vZGUtPmhkaXNwbGF5 KTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfY29tbWFuZF9tb2Rl X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4gQEAgLTY1MywxNSArNzY2LDE3IEBA IHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoc3RydWN0IGR3X21p cGlfZHNpICpkc2kpDQo+ICAgCSAqIGNvbXB1dGUgaGlnaCBzcGVlZCB0cmFuc21pc3Npb24gY291 bnRlciB0aW1lb3V0IGFjY29yZGluZw0KPiAgIAkgKiB0byB0aGUgdGltZW91dCBjbG9jayBkaXZp c2lvbiAoVE9fQ0xLX0RJVklTSU9OKSBhbmQgYnl0ZSBsYW5lLi4uDQo+ICAgCSAqLw0KPiAtCXJl Z21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9UT19DTlRfQ0ZHLA0KPiAtCQkgICAgIEhTVFhfVE9f Q05UKDEwMDApIHwgTFBSWF9UT19DTlQoMTAwMCkpOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShk c2ktPmZpZWxkX2hzdHhfdGltZW91dF9jb3VudGVyLCAxMDAwKTsNCj4gKwlyZWdtYXBfZmllbGRf d3JpdGUoZHNpLT5maWVsZF9scHJ4X3RpbWVvdXRfY291bnRlciwgMTAwMCk7DQo+ICsNCj4gICAJ LyoNCj4gICAJICogVE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzDQo+ICAgCSAqIHRoZSBCdXMtVHVy bi1Bcm91bmQgVGltZW91dCBDb3VudGVyIHNob3VsZCBiZSBjb21wdXRlZA0KPiAgIAkgKiBhY2Nv cmRpbmcgdG8gYnl0ZSBsYW5lLi4uDQo+ICAgCSAqLw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJl Z3MsIERTSV9CVEFfVE9fQ05ULCAweGQwMCk7DQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywg RFNJX01PREVfQ0ZHLCBFTkFCTEVfQ01EX01PREUpOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShk c2ktPmZpZWxkX3BoeV9idGFfdGltZSwgMHhkMDApOw0KPiArDQo+ICsJcmVnbWFwX2ZpZWxkX3dy aXRlKGRzaS0+ZmllbGRfY21kX21vZGVfZW4sIDEpOw0KPiAgIH0NCj4gICANCj4gICAvKiBHZXQg bGFuZSBieXRlIGNsb2NrIGN5Y2xlcy4gKi8NCj4gQEAgLTY5NSwxMyArODEwLDEzIEBAIHN0YXRp YyB2b2lkIGR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAq ZHNpLA0KPiAgIAkgKiBjb21wdXRhdGlvbnMgYmVsb3cgbWF5IGJlIGltcHJvdmVkLi4uDQo+ICAg CSAqLw0KPiAgIAlsYmNjID0gZHdfbWlwaV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhkc2ksIG1v ZGUsIGh0b3RhbCk7DQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1ZJRF9ITElORV9U SU1FLCBsYmNjKTsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF92aWRfaGxpbmVf dGltZSwgbGJjYyk7DQo+ICAgDQo+ICAgCWxiY2MgPSBkd19taXBpX2RzaV9nZXRfaGNvbXBvbmVu dF9sYmNjKGRzaSwgbW9kZSwgaHNhKTsNCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lf VklEX0hTQV9USU1FLCBsYmNjKTsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF92 aWRfaHNhX3RpbWUsIGxiY2MpOw0KPiAgIA0KPiAgIAlsYmNjID0gZHdfbWlwaV9kc2lfZ2V0X2hj b21wb25lbnRfbGJjYyhkc2ksIG1vZGUsIGhicCk7DQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVn cywgRFNJX1ZJRF9IQlBfVElNRSwgbGJjYyk7DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ ZmllbGRfdmlkX2hicF90aW1lLCBsYmNjKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRz aSwNCj4gQEAgLTcxNCwxMCArODI5LDEwIEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3ZlcnRp Y2FsX3RpbWluZ19jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksDQo+ICAgCXZmcCA9IG1v ZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7DQo+ICAgCXZicCA9IG1vZGUtPnZ0b3Rh bCAtIG1vZGUtPnZzeW5jX2VuZDsNCj4gICANCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBE U0lfVklEX1ZBQ1RJVkVfTElORVMsIHZhY3RpdmUpOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJl Z3MsIERTSV9WSURfVlNBX0xJTkVTLCB2c2EpOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3Ms IERTSV9WSURfVkZQX0xJTkVTLCB2ZnApOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERT SV9WSURfVkJQX0xJTkVTLCB2YnApOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxk X3ZpZF92YWN0aXZlX3RpbWUsIHZhY3RpdmUpOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShkc2kt PmZpZWxkX3ZpZF92c2FfdGltZSwgdnNhKTsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5m aWVsZF92aWRfdmZwX3RpbWUsIHZmcCk7DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+Zmll bGRfdmlkX3ZicF90aW1lLCB2YnApOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBkd19t aXBpX2RzaV9kcGh5X3RpbWluZ19jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpDQo+IEBA IC03MzgsMjMgKzg1MywxMiBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGh5X3RpbWluZ19j b25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpDQo+ICAgCSAqIG5vdGU6IERTSV9QSFlfVE1S X0NGRy5NQVhfUkRfVElNRSBzaG91bGQgYmUgaW4gbGluZSB3aXRoDQo+ICAgCSAqIERTSV9DTURf TU9ERV9DRkcuTUFYX1JEX1BLVF9TSVpFX0xQIChzZWUgQ01EX01PREVfQUxMX0xQKQ0KPiAgIAkg Ki8NCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfbHAyaHNfdGltZSwgdGlt aW5nLmRhdGFfbHAyaHMpOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9o czJscF90aW1lLCB0aW1pbmcuZGF0YV9oczJscCk7DQo+ICAgDQo+IC0JaWYgKGRzaS0+aHdfdmVy c2lvbiA+PSBIV1ZFUl8xMzEpIHsNCj4gLQkJcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BI WV9UTVJfQ0ZHLA0KPiAtCQkJICAgICBQSFlfSFMyTFBfVElNRV9WMTMxKHRpbWluZy5kYXRhX2hz MmxwKSB8DQo+IC0JCQkgICAgIFBIWV9MUDJIU19USU1FX1YxMzEodGltaW5nLmRhdGFfbHAyaHMp KTsNCj4gLQkJcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BIWV9UTVJfUkRfQ0ZHLA0KPiAt CQkJICAgICBNQVhfUkRfVElNRV9WMTMxKDEwMDAwKSk7DQo+IC0JfSBlbHNlIHsNCj4gLQkJcmVn bWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BIWV9UTVJfQ0ZHLA0KPiAtCQkJICAgICBQSFlfSFMy TFBfVElNRSh0aW1pbmcuZGF0YV9oczJscCkgfA0KPiAtCQkJICAgICBQSFlfTFAySFNfVElNRSh0 aW1pbmcuZGF0YV9scDJocykgfA0KPiAtCQkJICAgICBNQVhfUkRfVElNRSgxMDAwMCkpOw0KPiAt CX0NCj4gLQ0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfVE1SX0xQQ0xLX0NG RywNCj4gLQkJICAgICBQSFlfQ0xLSFMyTFBfVElNRSh0aW1pbmcuY2xrX2hzMmxwKSB8DQo+IC0J CSAgICAgUEhZX0NMS0xQMkhTX1RJTUUodGltaW5nLmNsa19scDJocykpOw0KPiArCXJlZ21hcF9m aWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9tYXhfcmRfdGltZSwgMTAwMDApOw0KPiArCXJlZ21h cF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9jbGtoczJscF90aW1lLCB0aW1pbmcuY2xrX2hz MmxwKTsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfY2xrbHAyaHNfdGlt ZSwgdGltaW5nLmNsa19scDJocyk7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIGR3X21p cGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4g QEAgLTc2NCwxOCArODY4LDIyIEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaHlfaW50ZXJm YWNlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4gICAJICogc3RvcCB3YWl0IHRp bWUgc2hvdWxkIGJlIHRoZSBtYXhpbXVtIGJldHdlZW4gaG9zdCBkc2kNCj4gICAJICogYW5kIHBh bmVsIHN0b3Agd2FpdCB0aW1lcw0KPiAgIAkgKi8NCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdz LCBEU0lfUEhZX0lGX0NGRywNCj4gLQkJICAgICBQSFlfU1RPUF9XQUlUX1RJTUUoMHgyMCkgfCBO X0xBTkVTKGRzaS0+bGFuZXMpKTsNCj4gKwlyZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9w aHlfc3RvcF93YWl0X3RpbWUsIDB4MjApOw0KPiArCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZp ZWxkX3BoeV9ubGFuZXMsIGRzaS0+bGFuZXMgLSAxKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGlj IHZvaWQgZHdfbWlwaV9kc2lfZHBoeV9pbml0KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQ0KPiAg IHsNCj4gICAJLyogQ2xlYXIgUEhZIHN0YXRlICovDQo+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVn cywgRFNJX1BIWV9SU1RaLCBQSFlfRElTRk9SQ0VQTEwgfCBQSFlfRElTQUJMRUNMSw0KPiAtCQkg ICAgIHwgUEhZX1JTVFogfCBQSFlfU0hVVERPV05aKTsNCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5y ZWdzLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7DQo+IC0JcmVnbWFwX3dyaXRl KGRzaS0+cmVncywgRFNJX1BIWV9UU1RfQ1RSTDAsIFBIWV9URVNUQ0xSKTsNCj4gLQlyZWdtYXBf d3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7DQo+ICsJ cmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X2VuYWJsZWNsaywgMCk7DQo+ICsJcmVn bWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3VucnN0eiwgMCk7DQo+ICsJcmVnbWFwX2Zp ZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3Vuc2h1dGRvd256LCAwKTsNCj4gKw0KPiArCXJlZ21h cF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9mb3JjZXBsbCwgMCk7DQo+ICsNCj4gKwlyZWdt YXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfdGVzdGNsciwgMCk7DQo+ICsJcmVnbWFwX2Zp ZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3Rlc3RjbHIsIDEpOw0KPiArCXJlZ21hcF9maWVsZF93 cml0ZShkc2ktPmZpZWxkX3BoeV90ZXN0Y2xyLCAwKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGlj IHZvaWQgZHdfbWlwaV9kc2lfZHBoeV9lbmFibGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpDQo+ IEBAIC03ODMsMTggKzg5MSwyMSBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGh5X2VuYWJs ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkNCj4gICAJdTMyIHZhbDsNCj4gICAJaW50IHJldDsN Cj4gICANCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1JTVFosIFBIWV9FTkZP UkNFUExMIHwgUEhZX0VOQUJMRUNMSyB8DQo+IC0JCSAgICAgUEhZX1VOUlNUWiB8IFBIWV9VTlNI VVRET1dOWik7DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X2VuYWJsZWNs aywgMSk7DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3VucnN0eiwgMSk7 DQo+ICsJcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3Vuc2h1dGRvd256LCAxKTsN Cj4gICANCj4gLQlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lf UEhZX1NUQVRVUywNCj4gLQkJCQkgICAgICAgdmFsLCB2YWwgJiBQSFlfTE9DSywNCj4gLQkJCQkg ICAgICAgMTAwMCwgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsNCj4gKwlyZWdtYXBfZmllbGRfd3Jp dGUoZHNpLT5maWVsZF9waHlfZm9yY2VwbGwsIDEpOw0KPiArDQo+ICsJcmV0ID0gcmVnbWFwX2Zp ZWxkX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+ZmllbGRfcGh5X3N0YXR1cywNCj4gKwkJCQkJICAg ICB2YWwsIHZhbCAmIFBIWV9MT0NLLA0KPiArCQkJCQkgICAgIDEwMDAsIFBIWV9TVEFUVVNfVElN RU9VVF9VUyk7DQo+ICAgCWlmIChyZXQpDQo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQg dG8gd2FpdCBwaHkgbG9jayBzdGF0ZVxuIik7DQo+ICAgDQo+IC0JcmV0ID0gcmVnbWFwX3JlYWRf cG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJX1BIWV9TVEFUVVMsDQo+IC0JCQkJICAgICAgIHZh bCwgdmFsICYgUEhZX1NUT1BfU1RBVEVfQ0xLX0xBTkUsIDEwMDAsDQo+IC0JCQkJICAgICAgIFBI WV9TVEFUVVNfVElNRU9VVF9VUyk7DQo+ICsJcmV0ID0gcmVnbWFwX2ZpZWxkX3JlYWRfcG9sbF90 aW1lb3V0KGRzaS0+ZmllbGRfcGh5X3N0YXR1cywNCj4gKwkJCQkJICAgICB2YWwsIHZhbCAmIFBI WV9TVE9QX1NUQVRFX0NMS19MQU5FLA0KPiArCQkJCQkgICAgIDEwMDAsIFBIWV9TVEFUVVNfVElN RU9VVF9VUyk7DQo+ICAgCWlmIChyZXQpDQo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQg dG8gd2FpdCBwaHkgY2xrIGxhbmUgc3RvcCBzdGF0ZVxuIik7DQo+ICAgfQ0KPiBAQCAtODAzLDEw ICs5MTQsMTAgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfY2xlYXJfZXJyKHN0cnVjdCBkd19t aXBpX2RzaSAqZHNpKQ0KPiAgIHsNCj4gICAJdTMyIHZhbDsNCj4gICANCj4gLQlyZWdtYXBfcmVh ZChkc2ktPnJlZ3MsIERTSV9JTlRfU1QwLCAmdmFsKTsNCj4gLQlyZWdtYXBfcmVhZChkc2ktPnJl Z3MsIERTSV9JTlRfU1QxLCAmdmFsKTsNCj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lf SU5UX01TSzAsIDApOw0KPiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9JTlRfTVNLMSwg MCk7DQo+ICsJcmVnbWFwX2ZpZWxkX3JlYWQoZHNpLT5maWVsZF9pbnRfc3RhdDAsICZ2YWwpOw0K PiArCXJlZ21hcF9maWVsZF9yZWFkKGRzaS0+ZmllbGRfaW50X3N0YXQxLCAmdmFsKTsNCj4gKwly ZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9pbnRfbWFzazAsIDApOw0KPiArCXJlZ21hcF9m aWVsZF93cml0ZShkc2ktPmZpZWxkX2ludF9tYXNrMSwgMCk7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0 YXRpYyB2b2lkIGR3X21pcGlfZHNpX2JyaWRnZV9wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkNCj4gQEAgLTEwMDUsNiArMTExNiw4NCBAQCBzdGF0aWMgaW50IGR3X21pcGlf ZHNpX2dldF9od192ZXJzaW9uKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQ0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgDQo+ICsjZGVmaW5lIElOSVRfRklFTEQoZikgSU5JVF9GSUVMRF9DRkco ZmllbGRfIyNmLCBjZmdfIyNmKQ0KPiArI2RlZmluZSBJTklUX0ZJRUxEX0NGRyhmLCBjb25mKQko ewkJCQkJXA0KPiArCQlkc2ktPmYgPSBkZXZtX3JlZ21hcF9maWVsZF9hbGxvYyhkc2ktPmRldiwg ZHNpLT5yZWdzLAlcDQo+ICsJCQkJCQkgdmFyaWFudC0+Y29uZik7CVwNCj4gKwkJaWYgKElTX0VS Uihkc2ktPmYpKQkJCQkJXA0KPiArCQkJZGV2X3dhcm4oZHNpLT5kZXYsICJJZ25vcmluZyByZWdt YXAgZmllbGQgIiAjZiAiXG4iKTsgfSkNCj4gKw0KPiArc3RhdGljIGludCBkd19taXBpX2RzaV9y ZWdtYXBfZmllbGRzX2luaXQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpDQo+ICt7DQo+ICsJY29u c3Qgc3RydWN0IGR3X21pcGlfZHNpX3ZhcmlhbnQgKnZhcmlhbnQ7DQo+ICsNCj4gKwlzd2l0Y2gg KGRzaS0+aHdfdmVyc2lvbikgew0KPiArCWNhc2UgSFdWRVJfMTMwOg0KPiArCWNhc2UgSFdWRVJf MTMxOg0KPiArCQl2YXJpYW50ID0gJmR3X21pcGlfZHNpX3YxMzBfdjEzMV9sYXlvdXQ7DQo+ICsJ CWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCURSTV9FUlJPUigiVW5yZWNvZ25pemVkIERTSSBo b3N0IGNvbnRyb2xsZXIgSFcgcmV2aXNpb25cbiIpOw0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4g Kwl9DQo+ICsNCj4gKwlJTklUX0ZJRUxEKGRwaV8xOGxvb3NlbHlfZW4pOw0KPiArCUlOSVRfRklF TEQoZHBpX3ZpZCk7DQo+ICsJSU5JVF9GSUVMRChkcGlfY29sb3JfY29kaW5nKTsNCj4gKwlJTklU X0ZJRUxEKGRwaV92c3luY19hY3RpdmVfbG93KTsNCj4gKwlJTklUX0ZJRUxEKGRwaV9oc3luY19h Y3RpdmVfbG93KTsNCj4gKwlJTklUX0ZJRUxEKGNtZF9tb2RlX2Fja19ycXN0X2VuKTsNCj4gKwlJ TklUX0ZJRUxEKGNtZF9tb2RlX2FsbF9scF9lbik7DQo+ICsJSU5JVF9GSUVMRChjbWRfbW9kZV9l bik7DQo+ICsJSU5JVF9GSUVMRChjbWRfcGt0X3N0YXR1cyk7DQo+ICsJSU5JVF9GSUVMRCh2aWRf bW9kZV9lbik7DQo+ICsJSU5JVF9GSUVMRCh2aWRfbW9kZV90eXBlKTsNCj4gKwlJTklUX0ZJRUxE KHZpZF9tb2RlX2xvd19wb3dlcik7DQo+ICsJSU5JVF9GSUVMRCh2aWRfcGt0X3NpemUpOw0KPiAr CUlOSVRfRklFTEQodmlkX2hzYV90aW1lKTsNCj4gKwlJTklUX0ZJRUxEKHZpZF9oYnBfdGltZSk7 DQo+ICsJSU5JVF9GSUVMRCh2aWRfaGxpbmVfdGltZSk7DQo+ICsJSU5JVF9GSUVMRCh2aWRfdnNh X3RpbWUpOw0KPiArCUlOSVRfRklFTEQodmlkX3ZicF90aW1lKTsNCj4gKwlJTklUX0ZJRUxEKHZp ZF92ZnBfdGltZSk7DQo+ICsJSU5JVF9GSUVMRCh2aWRfdmFjdGl2ZV90aW1lKTsNCj4gKwlJTklU X0ZJRUxEKHBoeV90eHJlcXVlc3RjbGtocyk7DQo+ICsJSU5JVF9GSUVMRChwaHlfdGVzdGNscik7 DQo+ICsJSU5JVF9GSUVMRChwaHlfdW5zaHV0ZG93bnopOw0KPiArCUlOSVRfRklFTEQocGh5X3Vu cnN0eik7DQo+ICsJSU5JVF9GSUVMRChwaHlfZW5hYmxlY2xrKTsNCj4gKwlJTklUX0ZJRUxEKHBo eV9ubGFuZXMpOw0KPiArCUlOSVRfRklFTEQocGh5X3N0b3Bfd2FpdF90aW1lKTsNCj4gKwlJTklU X0ZJRUxEKHBoeV9zdGF0dXMpOw0KPiArCUlOSVRfRklFTEQocGNraGRsX2NmZyk7DQo+ICsJSU5J VF9GSUVMRChoc3R4X3RpbWVvdXRfY291bnRlcik7DQo+ICsJSU5JVF9GSUVMRChscHJ4X3RpbWVv dXRfY291bnRlcik7DQo+ICsJSU5JVF9GSUVMRChpbnRfc3RhdDApOw0KPiArCUlOSVRfRklFTEQo aW50X3N0YXQxKTsNCj4gKwlJTklUX0ZJRUxEKGludF9tYXNrMCk7DQo+ICsJSU5JVF9GSUVMRChp bnRfbWFzazEpOw0KPiArCUlOSVRfRklFTEQoZ2VuX2hkcik7DQo+ICsJSU5JVF9GSUVMRChnZW5f cGF5bG9hZCk7DQo+ICsJSU5JVF9GSUVMRChwaHlfYnRhX3RpbWUpOw0KPiArCUlOSVRfRklFTEQo dmlkX21vZGVfdnBnX2VuKTsNCj4gKwlJTklUX0ZJRUxEKHZpZF9tb2RlX3ZwZ19ob3Jpeik7DQo+ ICsJSU5JVF9GSUVMRChwaHlfY2xrbHAyaHNfdGltZSk7DQo+ICsJSU5JVF9GSUVMRChwaHlfY2xr aHMybHBfdGltZSk7DQo+ICsJSU5JVF9GSUVMRChwaHlfZm9yY2VwbGwpOw0KPiArDQo+ICsJaWYg KGRzaS0+aHdfdmVyc2lvbiA9PSBIV1ZFUl8xMzEpIHsNCj4gKwkJSU5JVF9GSUVMRF9DRkcoZmll bGRfcGh5X21heF9yZF90aW1lLCBjZmdfcGh5X21heF9yZF90aW1lX3YxMzEpOw0KPiArCQlJTklU X0ZJRUxEX0NGRyhmaWVsZF9waHlfbHAyaHNfdGltZSwgY2ZnX3BoeV9scDJoc190aW1lX3YxMzEp Ow0KPiArCQlJTklUX0ZJRUxEX0NGRyhmaWVsZF9waHlfaHMybHBfdGltZSwgY2ZnX3BoeV9oczJs cF90aW1lX3YxMzEpOw0KPiArCX0gZWxzZSB7DQo+ICsJCUlOSVRfRklFTEQocGh5X21heF9yZF90 aW1lKTsNCj4gKwkJSU5JVF9GSUVMRChwaHlfbHAyaHNfdGltZSk7DQo+ICsJCUlOSVRfRklFTEQo cGh5X2hzMmxwX3RpbWUpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICAgc3RhdGljIHN0cnVjdCBkd19taXBpX2RzaSAqDQo+ICAgX19kd19taXBpX2RzaV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiAgIAkJICAgIGNvbnN0IHN0cnVjdCBkd19t aXBpX2RzaV9wbGF0X2RhdGEgKnBsYXRfZGF0YSkNCj4gQEAgLTEwODUsNiArMTI3NCwxMiBAQCBf X2R3X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ICAgCQly ZXR1cm4gRVJSX1BUUihyZXQpOw0KPiAgIAl9DQo+ICAgDQo+ICsJcmV0ID0gZHdfbWlwaV9kc2lf cmVnbWFwX2ZpZWxkc19pbml0KGRzaSk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRl diwgIkZhaWxlZCB0byBpbml0IHJlZ2lzdGVyIGxheW91dCBtYXA6ICVkXG4iLCByZXQpOw0KPiAr CQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArCX0NCj4gKw0KPiAgIAlkd19taXBpX2RzaV9kZWJ1 Z2ZzX2luaXQoZHNpKTsNCj4gICAJcG1fcnVudGltZV9lbmFibGUoZGV2KTsNCj4gICANCg==