Received: by 10.223.176.46 with SMTP id f43csp363332wra; Thu, 25 Jan 2018 23:40:02 -0800 (PST) X-Google-Smtp-Source: AH8x224u6LwHpgciDG2E+xBLC4WToe957NClkeskRZIUtcNhW1Hw5J+4vsLSvK6GRFCaaaCpriqW X-Received: by 10.98.66.152 with SMTP id h24mr18330687pfd.13.1516952402130; Thu, 25 Jan 2018 23:40:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516952402; cv=none; d=google.com; s=arc-20160816; b=Tjm0PaEYrIGdvwuNNygBw3x4rfnhMdgyngQcdvK9rRJUkrTtTxwkQNb8/xcND8l2MI Ltpau0CeQi3LoHbDuL3/fKIguq7eYN34nE5TkrH1uVloUi7293zDrtGFn8voTf0wKjYU a7KkyLaVk/KsVHT0o0nTVCNWU90kcQiMJNsW3gmLGGtkWkvIQN3liJIf3YwGQR/fKe+B IDbqQxObm8oIR/3lATOpvi1y7/QYemFAr9JLtJkp47UhnmAvfQ5j23lPcz+0FYsrt8E5 P2Go6kzr2EZRjHxRlvGjivUH0HdnSWN370vaOctdY2ytIIQI/Ufs8Ih0yX+9688MPK1+ x4gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=8rLoA6HSOZUzScLo04KFzqlNnhtrct+rRTjfwyGPFKU=; b=NXmi1H1KTIVOwA4jp/BccG7Za3UGL2Kf8xnmDqIOXVV9VVOcldsMgw95pR4Hgr/xgm iENkPAk2Ua+4XK09uD1g5ZZBomCvDm8luwQs3t9dSKTdqS5bqpGX4Ugy/t/N9eIETExG FeJKrKevKQ5+erlGtD1m1AqfmpghWZ5xX3b6JJbO2DGXVApM60EXzVdWzB/p/egi3Mg2 iZQjhDlpV18/GE6RIbKPzWuOGsEwbWiiZsXS3ogYgQCHUB8Ryw/WcNgB7IgAFRzWCraL LVORJtCqoFS9nII8zDAhFmaUh4xKL7z5mV75k3CQLdWnSHlhxaX1G9HYOkEE5Aaw8tqC NwWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=l1upxLIl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j30si2669841pgn.509.2018.01.25.23.39.47; Thu, 25 Jan 2018 23:40:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=l1upxLIl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752111AbeAZHjJ (ORCPT + 99 others); Fri, 26 Jan 2018 02:39:09 -0500 Received: from mail-eopbgr30064.outbound.protection.outlook.com ([40.107.3.64]:15968 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751630AbeAZHjE (ORCPT ); Fri, 26 Jan 2018 02:39:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8rLoA6HSOZUzScLo04KFzqlNnhtrct+rRTjfwyGPFKU=; b=l1upxLIl1mem83rl74+hMzQtVTQfWgOwbt7BzA5INfStEUWQ2p6CqoJlS6dddjoS391Li0TbNnx6+iRe4YVN6rTV+y0UQtWDPyrL/Cv1j85oNFuMRhUw4I3Ij6Y1FOqhmtxZ8gEDajxlAGpYMi6n256bpf5+HA9XTLA5VsqLxoY= Received: from DB5PR04MB1320.eurprd04.prod.outlook.com (10.162.157.139) by DB5PR04MB1477.eurprd04.prod.outlook.com (10.162.221.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Fri, 26 Jan 2018 07:38:58 +0000 Received: from DB5PR04MB1320.eurprd04.prod.outlook.com ([fe80::20a6:9109:1684:9a18]) by DB5PR04MB1320.eurprd04.prod.outlook.com ([fe80::20a6:9109:1684:9a18%14]) with mapi id 15.20.0444.016; Fri, 26 Jan 2018 07:38:58 +0000 From: Anson Huang To: Dong Aisheng CC: "rui.zhang@intel.com" , "edubezval@gmail.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "kernel@pengutronix.de" , "Fabio Estevam" , "linux@armlinux.org.uk" , Jacky Bai , "linux-pm@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "A.s. Dong" , dl-linux-imx Subject: RE: [PATCH 2/2] thermal: imx: add i.MX7 thermal sensor support Thread-Topic: [PATCH 2/2] thermal: imx: add i.MX7 thermal sensor support Thread-Index: AQHTk3O8aikLHtTL4EqPPvNuYchYR6OFv7AAgAAAf/A= Date: Fri, 26 Jan 2018 07:38:58 +0000 Message-ID: References: <1516605949-14663-1-git-send-email-Anson.Huang@nxp.com> <1516605949-14663-2-git-send-email-Anson.Huang@nxp.com> <20180126070006.GA14058@b29396-OptiPlex-7040> In-Reply-To: <20180126070006.GA14058@b29396-OptiPlex-7040> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-originating-ip: [199.59.231.64] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DB5PR04MB1477;6:maa3r1BjiOkLqLYSLj5I1D/yMVWBIUR9llq9LEdHjxG4i8Es1F95LIiwoiCll+O8uivgpZs2jU1X67TzmIFpYFy75cWkcXNsfQUtRukXuhvrggsDylTeamkyY68SdFY9FPQJt7cMNuGDOSsNUFjxsekzBjKgR15WEdWx0OSPQ3llDirl59ZG95LXyxSW9Evvh+jnKjQhPUQWgv5a0jkheSHvU5vjv6jV7owAcPBXVBxaWFRIm3QKR7Ne68P0iFaFCBq+VY1bScuIEJFXG3YI+itWV3T1aXGqY9DWQ9K3tOYJijfV9d3xABH+cijEE8Os6MbTzrWSmg78JXn5W0Yl68QPm+ysaTcyV3JhuuVeuSkJS5o8TepEdLbn+uoyF6ja;5:QunZUmzfmY4kv3UnRmnf7Db9z8Do8jqYHYbeNsdqnrKwznBP+awSyfr9Ndec2r4Pl+F2L1Vg6wc+GjX9qtvGuWuA+6N2wOpM8nTUzwtATh6/257HNsN+DnJRy019IXfTCAhORO2BCjtwNgxrw4DpXNMWvFdfgC+JQV0k81O3uYs=;24:Yh7ONAYgRz04Y8kgeEVF3wEm2XMfycKmvoLByzj97xiKpalvGZzl2Y93DI7fQDsDGwWLJ7r7bQwD90XrDLo6hnWSuU+Ng1o45z0nxu3NMb4=;7:8PhmvNSnCtT1j9c1HfpIGJ0+Ou/gvshLehehSryqKjxycg1CDH2wU6/LHUyOTtNsmPZsptmr6TfCYbOx7ZWOh6kkuXhjd+rx5c0biqGwzdoaduYzK2N8EwpBlOnTa4RqSt/B1zASy+KmK1BHBw8mM/WHdo7zj5+3L/d8DMid0+ApY7T5FELPOPllo6U3xW3KkD3nEJ+JQDhy8DnQaziEF/ggem3wonihc0suCJzqRef+HOeIzVuBqsAU4m7/GEkF x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 7b5f74f0-6a77-400e-ad7a-08d5648fdc98 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:DB5PR04MB1477; x-ms-traffictypediagnostic: DB5PR04MB1477: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(9452136761055)(185117386973197)(85827821059158)(788757137089)(258649278758335)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040501)(2401047)(8121501046)(5005006)(3002001)(3231023)(2400081)(944501161)(10201501046)(93006095)(93001095)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(6072148)(201708071742011);SRVR:DB5PR04MB1477;BCL:0;PCL:0;RULEID:;SRVR:DB5PR04MB1477; x-forefront-prvs: 05641FD966 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(39380400002)(376002)(346002)(366004)(39860400002)(199004)(189003)(13464003)(99286004)(106356001)(25786009)(53936002)(5660300001)(59450400001)(6246003)(86362001)(575784001)(39060400002)(76176011)(3846002)(478600001)(66066001)(33656002)(81166006)(81156014)(2950100002)(2900100001)(6916009)(8676002)(6116002)(68736007)(7696005)(26005)(8936002)(229853002)(4326008)(54906003)(105586002)(305945005)(9686003)(97736004)(7416002)(74316002)(186003)(3660700001)(55016002)(1411001)(14454004)(5250100002)(2906002)(53546011)(6506007)(53946003)(6436002)(316002)(7736002)(3280700002)(102836004)(21314002)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DB5PR04MB1477;H:DB5PR04MB1320.eurprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: R9BCCmwxBgcB4pBs/HEcURMpG1ha6psTXHzw7AVtL0Njbao2YeoTYgUJLAc9gvOasZnAJoQxZtK/vHiTGZogeg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b5f74f0-6a77-400e-ad7a-08d5648fdc98 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jan 2018 07:38:58.5949 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR04MB1477 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBEb25nIEFpc2hlbmcgW21haWx0 bzpkb25nYXM4NkBnbWFpbC5jb21dIA0KU2VudDogMjAxOMTqMdTCMjbI1SAxNTowMA0KVG86IEFu c29uIEh1YW5nIDxhbnNvbi5odWFuZ0BueHAuY29tPg0KQ2M6IHJ1aS56aGFuZ0BpbnRlbC5jb207 IGVkdWJlenZhbEBnbWFpbC5jb207IHJvYmgrZHRAa2VybmVsLm9yZzsgbWFyay5ydXRsYW5kQGFy bS5jb207IHNoYXduZ3VvQGtlcm5lbC5vcmc7IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgRmFiaW8g RXN0ZXZhbSA8ZmFiaW8uZXN0ZXZhbUBueHAuY29tPjsgbGludXhAYXJtbGludXgub3JnLnVrOyBK YWNreSBCYWkgPHBpbmcuYmFpQG54cC5jb20+OyBsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmc7IGRl dmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBs aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IEEucy4gRG9uZyA8YWlzaGVuZy5k b25nQG54cC5jb20+OyBkbC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29tPg0KU3ViamVjdDog UmU6IFtQQVRDSCAyLzJdIHRoZXJtYWw6IGlteDogYWRkIGkuTVg3IHRoZXJtYWwgc2Vuc29yIHN1 cHBvcnQNCg0KT24gTW9uLCBKYW4gMjIsIDIwMTggYXQgMDM6MjU6NDlQTSArMDgwMCwgQW5zb24g SHVhbmcgd3JvdGU6DQo+IFRoaXMgcGF0Y2ggYWRkcyBpLk1YNyB0aGVybWFsIHNlbnNvciBzdXBw b3J0LCBtb3N0IG9mIHRoZSBpLk1YNyANCj4gdGhlcm1hbCBzZW5zb3IgZnVuY3Rpb25zIGFyZSBz YW1lIHdpdGgNCj4gaS5NWDYgZXhjZXB0IHRoZSByZWdpc3RlcnMgb2Zmc2V0L2xheW91dCwgc28g d2UgbW92ZSB0aG9zZSByZWdpc3RlcnMgDQo+IG9mZnNldC9sYXlvdXQgZGVmaW5pdGlvbnMgdG8g c29jIGRhdGEgc3RydWN0dXJlLg0KPiANCj4gaS5NWDcgdXNlcyBzaW5nbGUgY2FsaWJyYXRpb24g ZGF0YSBAMjVDLCB0aGUgY2FsaWJyYXRpb24gZGF0YSBpcyANCj4gbG9jYXRlZCBhdCBPQ09UUCBv ZmZzZXQgMHg0RjAsIGJpdFsxNzo5XSwgdGhlIGZvcm11bGEgaXMgYXMgYmVsb3c6DQo+IA0KPiBU bWVhcyA9IChObWVhcyAtIG4xKSArIDI1OyBuMSBpcyB0aGUgZnVzZSB2YWx1ZSBmb3IgMjVDLg0K PiANCj4gU2lnbmVkLW9mZi1ieTogQW5zb24gSHVhbmcgPEFuc29uLkh1YW5nQG54cC5jb20+DQo+ IFNpZ25lZC1vZmYtYnk6IEJhaSBQaW5nIDxwaW5nLmJhaUBueHAuY29tPg0KDQpHZW5lcmFsbHkg dGhpcyBwYXRjaCBsb29rcyBmaW5lIHRvIG1lLg0KDQpKdXN0IGEgZmV3IHNtYWxsIHF1ZXN0aW9u cy4NCg0KPiAtLS0NCj4gIGRyaXZlcnMvdGhlcm1hbC9pbXhfdGhlcm1hbC5jIHwgMzE1IA0KPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFu Z2VkLCAyNDcgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy90aGVybWFsL2lteF90aGVybWFsLmMgDQo+IGIvZHJpdmVycy90aGVybWFsL2lt eF90aGVybWFsLmMgaW5kZXggZTdkNGZmYy4uYjJhMDBkNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy90aGVybWFsL2lteF90aGVybWFsLmMNCj4gKysrIGIvZHJpdmVycy90aGVybWFsL2lteF90aGVy bWFsLmMNCj4gQEAgLTMxLDM0ICszMSw1OCBAQA0KPiAgI2RlZmluZSBSRUdfQ0xSCQkweDgNCj4g ICNkZWZpbmUgUkVHX1RPRwkJMHhjDQo+ICANCj4gLSNkZWZpbmUgTUlTQzAJCQkJMHgwMTUwDQo+ IC0jZGVmaW5lIE1JU0MwX1JFRlRPUF9TRUxCSUFTT0ZGCQkoMSA8PCAzKQ0KPiAtI2RlZmluZSBN SVNDMQkJCQkweDAxNjANCj4gLSNkZWZpbmUgTUlTQzFfSVJRX1RFTVBISUdICQkoMSA8PCAyOSkN Cj4gKy8qIGkuTVg2IHNwZWNpZmljICovDQo+ICsjZGVmaW5lIElNWDZfTUlTQzAJCQkJMHgwMTUw DQo+ICsjZGVmaW5lIElNWDZfTUlTQzBfUkVGVE9QX1NFTEJJQVNPRkYJCSgxIDw8IDMpDQo+ICsj ZGVmaW5lIElNWDZfTUlTQzEJCQkJMHgwMTYwDQo+ICsjZGVmaW5lIElNWDZfTUlTQzFfSVJRX1RF TVBISUdICQkJKDEgPDwgMjkpDQo+ICAvKiBCZWxvdyBMT1cgYW5kIFBBTklDIGJpdHMgYXJlIG9u bHkgZm9yIFRFTVBNT05fSU1YNlNYICovDQo+IC0jZGVmaW5lIE1JU0MxX0lSUV9URU1QTE9XCQko MSA8PCAyOCkNCj4gLSNkZWZpbmUgTUlTQzFfSVJRX1RFTVBQQU5JQwkJKDEgPDwgMjcpDQo+IC0N Cj4gLSNkZWZpbmUgVEVNUFNFTlNFMAkJCTB4MDE4MA0KPiAtI2RlZmluZSBURU1QU0VOU0UwX0FM QVJNX1ZBTFVFX1NISUZUCTIwDQo+IC0jZGVmaW5lIFRFTVBTRU5TRTBfQUxBUk1fVkFMVUVfTUFT SwkoMHhmZmYgPDwgVEVNUFNFTlNFMF9BTEFSTV9WQUxVRV9TSElGVCkNCj4gLSNkZWZpbmUgVEVN UFNFTlNFMF9URU1QX0NOVF9TSElGVAk4DQo+IC0jZGVmaW5lIFRFTVBTRU5TRTBfVEVNUF9DTlRf TUFTSwkoMHhmZmYgPDwgVEVNUFNFTlNFMF9URU1QX0NOVF9TSElGVCkNCj4gLSNkZWZpbmUgVEVN UFNFTlNFMF9GSU5JU0hFRAkJKDEgPDwgMikNCj4gLSNkZWZpbmUgVEVNUFNFTlNFMF9NRUFTVVJF X1RFTVAJCSgxIDw8IDEpDQo+IC0jZGVmaW5lIFRFTVBTRU5TRTBfUE9XRVJfRE9XTgkJKDEgPDwg MCkNCj4gLQ0KPiAtI2RlZmluZSBURU1QU0VOU0UxCQkJMHgwMTkwDQo+IC0jZGVmaW5lIFRFTVBT RU5TRTFfTUVBU1VSRV9GUkVRCQkweGZmZmYNCj4gLS8qIEJlbG93IFRFTVBTRU5TRTIgaXMgb25s eSBmb3IgVEVNUE1PTl9JTVg2U1ggKi8NCj4gLSNkZWZpbmUgVEVNUFNFTlNFMgkJCTB4MDI5MA0K PiAtI2RlZmluZSBURU1QU0VOU0UyX0xPV19WQUxVRV9TSElGVAkwDQo+IC0jZGVmaW5lIFRFTVBT RU5TRTJfTE9XX1ZBTFVFX01BU0sJMHhmZmYNCj4gLSNkZWZpbmUgVEVNUFNFTlNFMl9QQU5JQ19W QUxVRV9TSElGVAkxNg0KPiAtI2RlZmluZSBURU1QU0VOU0UyX1BBTklDX1ZBTFVFX01BU0sJMHhm ZmYwMDAwDQo+ICsjZGVmaW5lIElNWDZfTUlTQzFfSVJRX1RFTVBMT1cJCQkoMSA8PCAyOCkNCj4g KyNkZWZpbmUgSU1YNl9NSVNDMV9JUlFfVEVNUFBBTklDCQkoMSA8PCAyNykNCj4gKw0KPiArI2Rl ZmluZSBJTVg2X1RFTVBTRU5TRTAJCQkJMHgwMTgwDQo+ICsjZGVmaW5lIElNWDZfVEVNUFNFTlNF MF9BTEFSTV9WQUxVRV9TSElGVAkyMA0KPiArI2RlZmluZSBJTVg2X1RFTVBTRU5TRTBfQUxBUk1f VkFMVUVfTUFTSwkoMHhmZmYgPDwgMjApDQo+ICsjZGVmaW5lIElNWDZfVEVNUFNFTlNFMF9URU1Q X0NOVF9TSElGVAkJOA0KPiArI2RlZmluZSBJTVg2X1RFTVBTRU5TRTBfVEVNUF9DTlRfTUFTSwkJ KDB4ZmZmIDw8IDgpDQo+ICsjZGVmaW5lIElNWDZfVEVNUFNFTlNFMF9GSU5JU0hFRAkJKDEgPDwg MikNCj4gKyNkZWZpbmUgSU1YNl9URU1QU0VOU0UwX01FQVNVUkVfVEVNUAkJKDEgPDwgMSkNCj4g KyNkZWZpbmUgSU1YNl9URU1QU0VOU0UwX1BPV0VSX0RPV04JCSgxIDw8IDApDQo+ICsNCj4gKyNk ZWZpbmUgSU1YNl9URU1QU0VOU0UxCQkJCTB4MDE5MA0KPiArI2RlZmluZSBJTVg2X1RFTVBTRU5T RTFfTUVBU1VSRV9GUkVRCQkweGZmZmYNCj4gKyNkZWZpbmUgSU1YNl9URU1QU0VOU0UxX01FQVNV UkVfRlJFUV9TSElGVAkwDQo+ICANCj4gLSNkZWZpbmUgT0NPVFBfTUVNMAkJCTB4MDQ4MA0KPiAt I2RlZmluZSBPQ09UUF9BTkExCQkJMHgwNGUwDQo+ICsvKiBCZWxvdyBURU1QU0VOU0UyIGlzIG9u bHkgZm9yIFRFTVBNT05fSU1YNlNYICovDQo+ICsjZGVmaW5lIElNWDZfVEVNUFNFTlNFMgkJCQkw eDAyOTANCj4gKyNkZWZpbmUgSU1YNl9URU1QU0VOU0UyX0xPV19WQUxVRV9TSElGVAkJMA0KPiAr I2RlZmluZSBJTVg2X1RFTVBTRU5TRTJfTE9XX1ZBTFVFX01BU0sJCTB4ZmZmDQo+ICsjZGVmaW5l IElNWDZfVEVNUFNFTlNFMl9QQU5JQ19WQUxVRV9TSElGVAkxNg0KPiArI2RlZmluZSBJTVg2X1RF TVBTRU5TRTJfUEFOSUNfVkFMVUVfTUFTSwkweGZmZjAwMDANCj4gKw0KPiArLyogaS5NWDcgc3Bl Y2lmaWMgKi8NCj4gKyNkZWZpbmUgSU1YN19BTkFESUdfRElHUFJPRwkJCTB4ODAwDQo+ICsjZGVm aW5lIElNWDdfVEVNUFNFTlNFMAkJCQkweDMwMA0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5TRTBf UEFOSUNfQUxBUk1fU0hJRlQJMTgNCj4gKyNkZWZpbmUgSU1YN19URU1QU0VOU0UwX1BBTklDX0FM QVJNX01BU0sJKDB4MWZmIDw8IDE4KQ0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5TRTBfSElHSF9B TEFSTV9TSElGVAk5DQo+ICsjZGVmaW5lIElNWDdfVEVNUFNFTlNFMF9ISUdIX0FMQVJNX01BU0sJ CSgweDFmZiA8PCA5KQ0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5TRTBfTE9XX0FMQVJNX1NISUZU CQkwDQo+ICsjZGVmaW5lIElNWDdfVEVNUFNFTlNFMF9MT1dfQUxBUk1fTUFTSwkJMHgxZmYNCj4g Kw0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5TRTEJCQkJMHgzMTANCj4gKyNkZWZpbmUgSU1YN19U RU1QU0VOU0UxX01FQVNVUkVfRlJFUV9TSElGVAkxNg0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5T RTFfTUVBU1VSRV9GUkVRX01BU0sJKDB4ZmZmZiA8PCAxNikNCj4gKyNkZWZpbmUgSU1YN19URU1Q U0VOU0UxX0ZJTklTSEVECQkoMSA8PCAxMSkNCj4gKyNkZWZpbmUgSU1YN19URU1QU0VOU0UxX01F QVNVUkVfVEVNUAkJKDEgPDwgMTApDQo+ICsjZGVmaW5lIElNWDdfVEVNUFNFTlNFMV9QT1dFUl9E T1dOCQkoMSA8PCA5KQ0KPiArI2RlZmluZSBJTVg3X1RFTVBTRU5TRTFfVEVNUF9WQUxVRV9TSElG VAkwDQo+ICsjZGVmaW5lIElNWDdfVEVNUFNFTlNFMV9URU1QX1ZBTFVFX01BU0sJCTB4MWZmDQo+ ICsNCj4gKyNkZWZpbmUgSU1YNl9PQ09UUF9NRU0wCQkJCTB4MDQ4MA0KPiArI2RlZmluZSBJTVg2 X09DT1RQX0FOQTEJCQkJMHgwNGUwDQo+ICsjZGVmaW5lIElNWDdfT0NPVFBfVEVTVEVSMwkJCTB4 MDQ0MA0KPiArI2RlZmluZSBJTVg3X09DT1RQX0FOQTEJCQkJMHgwNGYwDQo+ICANCj4gIC8qIFRo ZSBkcml2ZXIgc3VwcG9ydHMgMSBwYXNzaXZlIHRyaXAgcG9pbnQgYW5kIDEgY3JpdGljYWwgdHJp cCBwb2ludCANCj4gKi8gIGVudW0gaW14X3RoZXJtYWxfdHJpcCB7IEBAIC03NiwxNyArMTAwLDEx MCBAQCBlbnVtIA0KPiBpbXhfdGhlcm1hbF90cmlwIHsNCj4gIA0KPiAgI2RlZmluZSBURU1QTU9O X0lNWDZRCQkJMQ0KPiAgI2RlZmluZSBURU1QTU9OX0lNWDZTWAkJCTINCj4gKyNkZWZpbmUgVEVN UE1PTl9JTVg3CQkJMw0KPiAgDQo+ICBzdHJ1Y3QgdGhlcm1hbF9zb2NfZGF0YSB7DQo+ICAJdTMy IHZlcnNpb247DQo+ICsNCj4gKwl1MzIgc2Vuc29yX2N0cmw7DQo+ICsJdTMyIHBvd2VyX2Rvd25f bWFzazsNCj4gKwl1MzIgbWVhc3VyZV90ZW1wX21hc2s7DQo+ICsNCj4gKwl1MzIgbWVhc3VyZV9m cmVxX2N0cmw7DQo+ICsJdTMyIG1lYXN1cmVfZnJlcV9tYXNrOw0KPiArCXUzMiBtZWFzdXJlX2Zy ZXFfc2hpZnQ7DQo+ICsNCj4gKwl1MzIgdGVtcF9kYXRhOw0KPiArCXUzMiB0ZW1wX3ZhbHVlX21h c2s7DQo+ICsJdTMyIHRlbXBfdmFsdWVfc2hpZnQ7DQo+ICsJdTMyIHRlbXBfdmFsaWRfbWFzazsN Cj4gKw0KPiArCXUzMiBwYW5pY19hbGFybV9jdHJsOw0KPiArCXUzMiBwYW5pY19hbGFybV9tYXNr Ow0KPiArCXUzMiBwYW5pY19hbGFybV9zaGlmdDsNCj4gKw0KPiArCXUzMiBoaWdoX2FsYXJtX2N0 cmw7DQo+ICsJdTMyIGhpZ2hfYWxhcm1fbWFzazsNCj4gKwl1MzIgaGlnaF9hbGFybV9zaGlmdDsN Cj4gKw0KPiArCXUzMiBsb3dfYWxhcm1fY3RybDsNCj4gKwl1MzIgbG93X2FsYXJtX21hc2s7DQo+ ICsJdTMyIGxvd19hbGFybV9zaGlmdDsNCj4gIH07DQo+ICANCj4gIHN0YXRpYyBzdHJ1Y3QgdGhl cm1hbF9zb2NfZGF0YSB0aGVybWFsX2lteDZxX2RhdGEgPSB7DQo+ICAJLnZlcnNpb24gPSBURU1Q TU9OX0lNWDZRLA0KPiArDQo+ICsJLnNlbnNvcl9jdHJsID0gSU1YNl9URU1QU0VOU0UwLA0KPiAr CS5wb3dlcl9kb3duX21hc2sgPSBJTVg2X1RFTVBTRU5TRTBfUE9XRVJfRE9XTiwNCj4gKwkubWVh c3VyZV90ZW1wX21hc2sgPSBJTVg2X1RFTVBTRU5TRTBfTUVBU1VSRV9URU1QLA0KPiArDQo+ICsJ Lm1lYXN1cmVfZnJlcV9jdHJsID0gSU1YNl9URU1QU0VOU0UxLA0KPiArCS5tZWFzdXJlX2ZyZXFf c2hpZnQgPSBJTVg2X1RFTVBTRU5TRTFfTUVBU1VSRV9GUkVRX1NISUZULA0KPiArCS5tZWFzdXJl X2ZyZXFfbWFzayA9IElNWDZfVEVNUFNFTlNFMV9NRUFTVVJFX0ZSRVEsDQo+ICsNCj4gKwkudGVt cF9kYXRhID0gSU1YNl9URU1QU0VOU0UwLA0KPiArCS50ZW1wX3ZhbHVlX21hc2sgPSBJTVg2X1RF TVBTRU5TRTBfVEVNUF9DTlRfTUFTSywNCj4gKwkudGVtcF92YWx1ZV9zaGlmdCA9IElNWDZfVEVN UFNFTlNFMF9URU1QX0NOVF9TSElGVCwNCj4gKwkudGVtcF92YWxpZF9tYXNrID0gSU1YNl9URU1Q U0VOU0UwX0ZJTklTSEVELA0KPiArDQo+ICsJLmhpZ2hfYWxhcm1fY3RybCA9IElNWDZfVEVNUFNF TlNFMCwNCj4gKwkuaGlnaF9hbGFybV9tYXNrID0gSU1YNl9URU1QU0VOU0UwX0FMQVJNX1ZBTFVF X01BU0ssDQo+ICsJLmhpZ2hfYWxhcm1fc2hpZnQgPSBJTVg2X1RFTVBTRU5TRTBfQUxBUk1fVkFM VUVfU0hJRlQsDQo+ICB9Ow0KPiAgDQo+ICBzdGF0aWMgc3RydWN0IHRoZXJtYWxfc29jX2RhdGEg dGhlcm1hbF9pbXg2c3hfZGF0YSA9IHsNCj4gIAkudmVyc2lvbiA9IFRFTVBNT05fSU1YNlNYLA0K PiArDQo+ICsJLnNlbnNvcl9jdHJsID0gSU1YNl9URU1QU0VOU0UwLA0KPiArCS5wb3dlcl9kb3du X21hc2sgPSBJTVg2X1RFTVBTRU5TRTBfUE9XRVJfRE9XTiwNCj4gKwkubWVhc3VyZV90ZW1wX21h c2sgPSBJTVg2X1RFTVBTRU5TRTBfTUVBU1VSRV9URU1QLA0KPiArDQo+ICsJLm1lYXN1cmVfZnJl cV9jdHJsID0gSU1YNl9URU1QU0VOU0UxLA0KPiArCS5tZWFzdXJlX2ZyZXFfc2hpZnQgPSBJTVg2 X1RFTVBTRU5TRTFfTUVBU1VSRV9GUkVRX1NISUZULA0KPiArCS5tZWFzdXJlX2ZyZXFfbWFzayA9 IElNWDZfVEVNUFNFTlNFMV9NRUFTVVJFX0ZSRVEsDQo+ICsNCj4gKwkudGVtcF9kYXRhID0gSU1Y Nl9URU1QU0VOU0UwLA0KPiArCS50ZW1wX3ZhbHVlX21hc2sgPSBJTVg2X1RFTVBTRU5TRTBfVEVN UF9DTlRfTUFTSywNCj4gKwkudGVtcF92YWx1ZV9zaGlmdCA9IElNWDZfVEVNUFNFTlNFMF9URU1Q X0NOVF9TSElGVCwNCj4gKwkudGVtcF92YWxpZF9tYXNrID0gSU1YNl9URU1QU0VOU0UwX0ZJTklT SEVELA0KPiArDQo+ICsJLmhpZ2hfYWxhcm1fY3RybCA9IElNWDZfVEVNUFNFTlNFMCwNCj4gKwku aGlnaF9hbGFybV9tYXNrID0gSU1YNl9URU1QU0VOU0UwX0FMQVJNX1ZBTFVFX01BU0ssDQo+ICsJ LmhpZ2hfYWxhcm1fc2hpZnQgPSBJTVg2X1RFTVBTRU5TRTBfQUxBUk1fVkFMVUVfU0hJRlQsDQo+ ICsNCj4gKwkucGFuaWNfYWxhcm1fY3RybCA9IElNWDZfVEVNUFNFTlNFMiwNCj4gKwkucGFuaWNf YWxhcm1fbWFzayA9IElNWDZfVEVNUFNFTlNFMl9QQU5JQ19WQUxVRV9NQVNLLA0KPiArCS5wYW5p Y19hbGFybV9zaGlmdCA9IElNWDZfVEVNUFNFTlNFMl9QQU5JQ19WQUxVRV9TSElGVCwNCg0KTWlz c2luZyBsb3dfYWxhcm0gc2V0dGluZyBoZXJlLCBzZWVtcyB5b3Ugb3BlcmF0ZSB0aGVtIGRpcmVj dGx5IHdpdGggbWFjcm9zIGluIGFub3RoZXIgcGxhY2UuDQoNCkp1c3Qgbm90aWNlZCB0aGVyZSBp cyByZWdpc3RlcnMgd3JpdGUgaW4gLnByb2JlIGZ1bmN0aW9uLCB3aWxsIGFkZCBsb3dfYWxhcm1f eHh4IGZvciBpLk1YNlNYIGFuZCByZXBsYWNlDQp0aGUgY29kZSBpbiAucHJvYmUgZnVuY3Rpb24u DQoNCkFuc29uLg0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCB0aGVybWFsX3NvY19kYXRh IHRoZXJtYWxfaW14N19kYXRhID0gew0KPiArCS52ZXJzaW9uID0gVEVNUE1PTl9JTVg3LA0KPiAr DQo+ICsJLnNlbnNvcl9jdHJsID0gSU1YN19URU1QU0VOU0UxLA0KPiArCS5wb3dlcl9kb3duX21h c2sgPSBJTVg3X1RFTVBTRU5TRTFfUE9XRVJfRE9XTiwNCj4gKwkubWVhc3VyZV90ZW1wX21hc2sg PSBJTVg3X1RFTVBTRU5TRTFfTUVBU1VSRV9URU1QLA0KPiArDQo+ICsJLm1lYXN1cmVfZnJlcV9j dHJsID0gSU1YN19URU1QU0VOU0UxLA0KPiArCS5tZWFzdXJlX2ZyZXFfc2hpZnQgPSBJTVg3X1RF TVBTRU5TRTFfTUVBU1VSRV9GUkVRX1NISUZULA0KPiArCS5tZWFzdXJlX2ZyZXFfbWFzayA9IElN WDdfVEVNUFNFTlNFMV9NRUFTVVJFX0ZSRVFfTUFTSywNCj4gKw0KPiArCS50ZW1wX2RhdGEgPSBJ TVg3X1RFTVBTRU5TRTEsDQo+ICsJLnRlbXBfdmFsdWVfbWFzayA9IElNWDdfVEVNUFNFTlNFMV9U RU1QX1ZBTFVFX01BU0ssDQo+ICsJLnRlbXBfdmFsdWVfc2hpZnQgPSBJTVg3X1RFTVBTRU5TRTFf VEVNUF9WQUxVRV9TSElGVCwNCj4gKwkudGVtcF92YWxpZF9tYXNrID0gSU1YN19URU1QU0VOU0Ux X0ZJTklTSEVELA0KPiArDQo+ICsJLnBhbmljX2FsYXJtX2N0cmwgPSBJTVg3X1RFTVBTRU5TRTEs DQo+ICsJLnBhbmljX2FsYXJtX21hc2sgPSBJTVg3X1RFTVBTRU5TRTBfUEFOSUNfQUxBUk1fTUFT SywNCj4gKwkucGFuaWNfYWxhcm1fc2hpZnQgPSBJTVg3X1RFTVBTRU5TRTBfUEFOSUNfQUxBUk1f U0hJRlQsDQo+ICsNCj4gKwkuaGlnaF9hbGFybV9jdHJsID0gSU1YN19URU1QU0VOU0UwLA0KPiAr CS5oaWdoX2FsYXJtX21hc2sgPSBJTVg3X1RFTVBTRU5TRTBfSElHSF9BTEFSTV9NQVNLLA0KPiAr CS5oaWdoX2FsYXJtX3NoaWZ0ID0gSU1YN19URU1QU0VOU0UwX0hJR0hfQUxBUk1fU0hJRlQsDQo+ ICsNCj4gKwkubG93X2FsYXJtX2N0cmwgPSBJTVg3X1RFTVBTRU5TRTAsDQo+ICsJLmxvd19hbGFy bV9tYXNrID0gSU1YN19URU1QU0VOU0UwX0xPV19BTEFSTV9NQVNLLA0KPiArCS5sb3dfYWxhcm1f c2hpZnQgPSBJTVg3X1RFTVBTRU5TRTBfTE9XX0FMQVJNX1NISUZULA0KPiAgfTsNCj4gIA0KPiAg c3RydWN0IGlteF90aGVybWFsX2RhdGEgew0KPiBAQCAtMTEyLDMwICsyMjksNDQgQEAgc3RhdGlj IHZvaWQgaW14X3NldF9wYW5pY190ZW1wKHN0cnVjdCBpbXhfdGhlcm1hbF9kYXRhICpkYXRhLA0K PiAgCQkJICAgICAgIGludCBwYW5pY190ZW1wKQ0KPiAgew0KPiAgCXN0cnVjdCByZWdtYXAgKm1h cCA9IGRhdGEtPnRlbXBtb247DQo+ICsJY29uc3Qgc3RydWN0IHRoZXJtYWxfc29jX2RhdGEgKnNv Y19kYXRhID0gZGF0YS0+c29jZGF0YTsNCj4gIAlpbnQgY3JpdGljYWxfdmFsdWU7DQo+ICANCj4g LQljcml0aWNhbF92YWx1ZSA9IChkYXRhLT5jMiAtIHBhbmljX3RlbXApIC8gZGF0YS0+YzE7DQo+ IC0JcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMiArIFJFR19DTFIsIFRFTVBTRU5TRTJfUEFO SUNfVkFMVUVfTUFTSyk7DQo+IC0JcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMiArIFJFR19T RVQsIGNyaXRpY2FsX3ZhbHVlIDw8DQo+IC0JCQlURU1QU0VOU0UyX1BBTklDX1ZBTFVFX1NISUZU KTsNCj4gKwlpZiAoZGF0YS0+c29jZGF0YS0+dmVyc2lvbiA9PSBURU1QTU9OX0lNWDcpDQoNCklz IHRoZXJlIGFuIGNoYW5jZSBmb3IgTVg3IHRvIHJlYWNoIGhlcmU/DQoNCk1YN0QncyBwYW5pYyBy ZXNldCBvbmx5IHJlc2V0IFNPQywgY2FuIE5PVCByZXNldCB3aG9sZSBib2FyZCB2aXMgd2RvZywg c28gdGhpcyBmdW5jdGlvbg0KY2FuIE5PVCBiZSBlbmFibGVkIGZvciBNWDdELCB3aWxsIHJlbW92 ZSB0aGUgTVg3RCBwYXRoIGhlcmUuDQoNCkFuc29uDQoNCj4gKwkJY3JpdGljYWxfdmFsdWUgPSBw YW5pY190ZW1wIC8gMTAwMCArIGRhdGEtPmMxIC0gMjU7DQo+ICsJZWxzZQ0KPiArCQljcml0aWNh bF92YWx1ZSA9IChkYXRhLT5jMiAtIHBhbmljX3RlbXApIC8gZGF0YS0+YzE7DQo+ICsNCj4gKwly ZWdtYXBfd3JpdGUobWFwLCBzb2NfZGF0YS0+cGFuaWNfYWxhcm1fY3RybCArIFJFR19DTFIsDQo+ ICsJCSAgICAgc29jX2RhdGEtPnBhbmljX2FsYXJtX21hc2spOw0KPiArCXJlZ21hcF93cml0ZSht YXAsIHNvY19kYXRhLT5wYW5pY19hbGFybV9jdHJsICsgUkVHX1NFVCwNCj4gKwkJICAgICBjcml0 aWNhbF92YWx1ZSA8PCBzb2NfZGF0YS0+cGFuaWNfYWxhcm1fc2hpZnQpOw0KPiAgfQ0KPiAgDQo+ ICBzdGF0aWMgdm9pZCBpbXhfc2V0X2FsYXJtX3RlbXAoc3RydWN0IGlteF90aGVybWFsX2RhdGEg KmRhdGEsDQo+ICAJCQkgICAgICAgaW50IGFsYXJtX3RlbXApDQo+ICB7DQo+ICAJc3RydWN0IHJl Z21hcCAqbWFwID0gZGF0YS0+dGVtcG1vbjsNCj4gKwljb25zdCBzdHJ1Y3QgdGhlcm1hbF9zb2Nf ZGF0YSAqc29jX2RhdGEgPSBkYXRhLT5zb2NkYXRhOw0KPiAgCWludCBhbGFybV92YWx1ZTsNCj4g IA0KPiAgCWRhdGEtPmFsYXJtX3RlbXAgPSBhbGFybV90ZW1wOw0KPiAtCWFsYXJtX3ZhbHVlID0g KGRhdGEtPmMyIC0gYWxhcm1fdGVtcCkgLyBkYXRhLT5jMTsNCj4gLQlyZWdtYXBfd3JpdGUobWFw LCBURU1QU0VOU0UwICsgUkVHX0NMUiwgVEVNUFNFTlNFMF9BTEFSTV9WQUxVRV9NQVNLKTsNCj4g LQlyZWdtYXBfd3JpdGUobWFwLCBURU1QU0VOU0UwICsgUkVHX1NFVCwgYWxhcm1fdmFsdWUgPDwN Cj4gLQkJCVRFTVBTRU5TRTBfQUxBUk1fVkFMVUVfU0hJRlQpOw0KPiArDQo+ICsJaWYgKGRhdGEt PnNvY2RhdGEtPnZlcnNpb24gPT0gVEVNUE1PTl9JTVg3KQ0KPiArCQlhbGFybV92YWx1ZSA9IGFs YXJtX3RlbXAgLyAxMDAwICsgZGF0YS0+YzEgLSAyNTsNCj4gKwllbHNlDQo+ICsJCWFsYXJtX3Zh bHVlID0gKGRhdGEtPmMyIC0gYWxhcm1fdGVtcCkgLyBkYXRhLT5jMTsNCj4gKw0KPiArCXJlZ21h cF93cml0ZShtYXAsIHNvY19kYXRhLT5oaWdoX2FsYXJtX2N0cmwgKyBSRUdfQ0xSLA0KPiArCQkg ICAgIHNvY19kYXRhLT5oaWdoX2FsYXJtX21hc2spOw0KPiArCXJlZ21hcF93cml0ZShtYXAsIHNv Y19kYXRhLT5oaWdoX2FsYXJtX2N0cmwgKyBSRUdfU0VULA0KPiArCQkgICAgIGFsYXJtX3ZhbHVl IDw8IHNvY19kYXRhLT5oaWdoX2FsYXJtX3NoaWZ0KTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIGlu dCBpbXhfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgKnRlbXAp ICB7DQo+ICAJc3RydWN0IGlteF90aGVybWFsX2RhdGEgKmRhdGEgPSB0ei0+ZGV2ZGF0YTsNCj4g Kwljb25zdCBzdHJ1Y3QgdGhlcm1hbF9zb2NfZGF0YSAqc29jX2RhdGEgPSBkYXRhLT5zb2NkYXRh Ow0KPiAgCXN0cnVjdCByZWdtYXAgKm1hcCA9IGRhdGEtPnRlbXBtb247DQo+ICAJdW5zaWduZWQg aW50IG5fbWVhczsNCj4gIAlib29sIHdhaXQ7DQo+IEBAIC0xNDMsMTYgKzI3NCwxOCBAQCBzdGF0 aWMgaW50IGlteF9nZXRfdGVtcChzdHJ1Y3QgDQo+IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBp bnQgKnRlbXApDQo+ICANCj4gIAlpZiAoZGF0YS0+bW9kZSA9PSBUSEVSTUFMX0RFVklDRV9FTkFC TEVEKSB7DQo+ICAJCS8qIENoZWNrIGlmIGEgbWVhc3VyZW1lbnQgaXMgY3VycmVudGx5IGluIHBy b2dyZXNzICovDQo+IC0JCXJlZ21hcF9yZWFkKG1hcCwgVEVNUFNFTlNFMCwgJnZhbCk7DQo+IC0J CXdhaXQgPSAhKHZhbCAmIFRFTVBTRU5TRTBfRklOSVNIRUQpOw0KPiArCQlyZWdtYXBfcmVhZCht YXAsIHNvY19kYXRhLT50ZW1wX2RhdGEsICZ2YWwpOw0KPiArCQl3YWl0ID0gISh2YWwgJiBzb2Nf ZGF0YS0+dGVtcF92YWxpZF9tYXNrKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQkvKg0KPiAgCQkgKiBF dmVyeSB0aW1lIHdlIG1lYXN1cmUgdGhlIHRlbXBlcmF0dXJlLCB3ZSB3aWxsIHBvd2VyIG9uIHRo ZQ0KPiAgCQkgKiB0ZW1wZXJhdHVyZSBzZW5zb3IsIGVuYWJsZSBtZWFzdXJlbWVudHMsIHRha2Ug YSByZWFkaW5nLA0KPiAgCQkgKiBkaXNhYmxlIG1lYXN1cmVtZW50cywgcG93ZXIgb2ZmIHRoZSB0 ZW1wZXJhdHVyZSBzZW5zb3IuDQo+ICAJCSAqLw0KPiAtCQlyZWdtYXBfd3JpdGUobWFwLCBURU1Q U0VOU0UwICsgUkVHX0NMUiwgVEVNUFNFTlNFMF9QT1dFUl9ET1dOKTsNCj4gLQkJcmVnbWFwX3dy aXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQsIFRFTVBTRU5TRTBfTUVBU1VSRV9URU1QKTsN Cj4gKwkJcmVnbWFwX3dyaXRlKG1hcCwgc29jX2RhdGEtPnNlbnNvcl9jdHJsICsgUkVHX0NMUiwN Cj4gKwkJCSAgICBzb2NfZGF0YS0+cG93ZXJfZG93bl9tYXNrKTsNCj4gKwkJcmVnbWFwX3dyaXRl KG1hcCwgc29jX2RhdGEtPnNlbnNvcl9jdHJsICsgUkVHX1NFVCwNCj4gKwkJCSAgICBzb2NfZGF0 YS0+bWVhc3VyZV90ZW1wX21hc2spOw0KPiAgDQo+ICAJCXdhaXQgPSB0cnVlOw0KPiAgCX0NCj4g QEAgLTE2NCwyMiArMjk3LDI4IEBAIHN0YXRpYyBpbnQgaW14X2dldF90ZW1wKHN0cnVjdCB0aGVy bWFsX3pvbmVfZGV2aWNlICp0eiwgaW50ICp0ZW1wKQ0KPiAgCWlmICh3YWl0KQ0KPiAgCQl1c2xl ZXBfcmFuZ2UoMjAsIDUwKTsNCj4gIA0KPiAtCXJlZ21hcF9yZWFkKG1hcCwgVEVNUFNFTlNFMCwg JnZhbCk7DQo+ICsJcmVnbWFwX3JlYWQobWFwLCBzb2NfZGF0YS0+dGVtcF9kYXRhLCAmdmFsKTsN Cj4gIA0KPiAgCWlmIChkYXRhLT5tb2RlICE9IFRIRVJNQUxfREVWSUNFX0VOQUJMRUQpIHsNCj4g LQkJcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19DTFIsIFRFTVBTRU5TRTBfTUVB U1VSRV9URU1QKTsNCj4gLQkJcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQs IFRFTVBTRU5TRTBfUE9XRVJfRE9XTik7DQo+ICsJCXJlZ21hcF93cml0ZShtYXAsIHNvY19kYXRh LT5zZW5zb3JfY3RybCArIFJFR19DTFIsDQo+ICsJCQkgICAgIHNvY19kYXRhLT5tZWFzdXJlX3Rl bXBfbWFzayk7DQo+ICsJCXJlZ21hcF93cml0ZShtYXAsIHNvY19kYXRhLT5zZW5zb3JfY3RybCAr IFJFR19TRVQsDQo+ICsJCQkgICAgIHNvY19kYXRhLT5wb3dlcl9kb3duX21hc2spOw0KPiAgCX0N Cj4gIA0KPiAtCWlmICgodmFsICYgVEVNUFNFTlNFMF9GSU5JU0hFRCkgPT0gMCkgew0KPiArCWlm ICgodmFsICYgc29jX2RhdGEtPnRlbXBfdmFsaWRfbWFzaykgPT0gMCkgew0KPiAgCQlkZXZfZGJn KCZ0ei0+ZGV2aWNlLCAidGVtcCBtZWFzdXJlbWVudCBuZXZlciBmaW5pc2hlZFxuIik7DQo+ICAJ CXJldHVybiAtRUFHQUlOOw0KPiAgCX0NCj4gIA0KPiAtCW5fbWVhcyA9ICh2YWwgJiBURU1QU0VO U0UwX1RFTVBfQ05UX01BU0spID4+IFRFTVBTRU5TRTBfVEVNUF9DTlRfU0hJRlQ7DQo+ICsJbl9t ZWFzID0gKHZhbCAmIHNvY19kYXRhLT50ZW1wX3ZhbHVlX21hc2spDQo+ICsJCT4+IHNvY19kYXRh LT50ZW1wX3ZhbHVlX3NoaWZ0Ow0KPiAgDQo+ICAJLyogU2VlIGlteF9pbml0X2NhbGliKCkgZm9y IGZvcm11bGEgZGVyaXZhdGlvbiAqLw0KPiAtCSp0ZW1wID0gZGF0YS0+YzIgLSBuX21lYXMgKiBk YXRhLT5jMTsNCj4gKwlpZiAoZGF0YS0+c29jZGF0YS0+dmVyc2lvbiA9PSBURU1QTU9OX0lNWDcp DQo+ICsJCSp0ZW1wID0gKG5fbWVhcyAtIGRhdGEtPmMxICsgMjUpICogMTAwMDsNCj4gKwllbHNl DQo+ICsJCSp0ZW1wID0gZGF0YS0+YzIgLSBuX21lYXMgKiBkYXRhLT5jMTsNCj4gIA0KPiAgCS8q IFVwZGF0ZSBhbGFybSB2YWx1ZSB0byBuZXh0IGhpZ2hlciB0cmlwIHBvaW50IGZvciBURU1QTU9O X0lNWDZRICovDQo+ICAJaWYgKGRhdGEtPnNvY2RhdGEtPnZlcnNpb24gPT0gVEVNUE1PTl9JTVg2 USkgeyBAQCAtMjIzLDIxICszNjIsMjYgQEAgDQo+IHN0YXRpYyBpbnQgaW14X3NldF9tb2RlKHN0 cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwgIHsNCj4gIAlzdHJ1Y3QgaW14X3RoZXJtYWxf ZGF0YSAqZGF0YSA9IHR6LT5kZXZkYXRhOw0KPiAgCXN0cnVjdCByZWdtYXAgKm1hcCA9IGRhdGEt PnRlbXBtb247DQo+ICsJY29uc3Qgc3RydWN0IHRoZXJtYWxfc29jX2RhdGEgKnNvY19kYXRhID0g ZGF0YS0+c29jZGF0YTsNCj4gIA0KPiAgCWlmIChtb2RlID09IFRIRVJNQUxfREVWSUNFX0VOQUJM RUQpIHsNCj4gIAkJdHotPnBvbGxpbmdfZGVsYXkgPSBJTVhfUE9MTElOR19ERUxBWTsNCj4gIAkJ dHotPnBhc3NpdmVfZGVsYXkgPSBJTVhfUEFTU0lWRV9ERUxBWTsNCj4gIA0KPiAtCQlyZWdtYXBf d3JpdGUobWFwLCBURU1QU0VOU0UwICsgUkVHX0NMUiwgVEVNUFNFTlNFMF9QT1dFUl9ET1dOKTsN Cj4gLQkJcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQsIFRFTVBTRU5TRTBf TUVBU1VSRV9URU1QKTsNCj4gKwkJcmVnbWFwX3dyaXRlKG1hcCwgc29jX2RhdGEtPnNlbnNvcl9j dHJsICsgUkVHX0NMUiwNCj4gKwkJCSAgICAgc29jX2RhdGEtPnBvd2VyX2Rvd25fbWFzayk7DQo+ ICsJCXJlZ21hcF93cml0ZShtYXAsIHNvY19kYXRhLT5zZW5zb3JfY3RybCArIFJFR19TRVQsDQo+ ICsJCQkgICAgIHNvY19kYXRhLT5tZWFzdXJlX3RlbXBfbWFzayk7DQo+ICANCj4gIAkJaWYgKCFk YXRhLT5pcnFfZW5hYmxlZCkgew0KPiAgCQkJZGF0YS0+aXJxX2VuYWJsZWQgPSB0cnVlOw0KPiAg CQkJZW5hYmxlX2lycShkYXRhLT5pcnEpOw0KPiAgCQl9DQo+ICAJfSBlbHNlIHsNCj4gLQkJcmVn bWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19DTFIsIFRFTVBTRU5TRTBfTUVBU1VSRV9U RU1QKTsNCj4gLQkJcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQsIFRFTVBT RU5TRTBfUE9XRVJfRE9XTik7DQo+ICsJCXJlZ21hcF93cml0ZShtYXAsIHNvY19kYXRhLT5zZW5z b3JfY3RybCArIFJFR19DTFIsDQo+ICsJCQkgICAgIHNvY19kYXRhLT5tZWFzdXJlX3RlbXBfbWFz ayk7DQo+ICsJCXJlZ21hcF93cml0ZShtYXAsIHNvY19kYXRhLT5zZW5zb3JfY3RybCArIFJFR19T RVQsDQo+ICsJCQkgICAgIHNvY19kYXRhLT5wb3dlcl9kb3duX21hc2spOw0KPiAgDQo+ICAJCXR6 LT5wb2xsaW5nX2RlbGF5ID0gMDsNCj4gIAkJdHotPnBhc3NpdmVfZGVsYXkgPSAwOw0KPiBAQCAt MzU5LDYgKzUwMywxNSBAQCBzdGF0aWMgaW50IGlteF9pbml0X2NhbGliKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsIHUzMiB2YWwpDQo+ICAJfQ0KPiAgDQo+ICAJLyoNCj4gKwkgKiBPbiBp Lk1YNywgd2Ugb25seSB1c2UgdGhlIGNhbGlicmF0aW9uIGRhdGEgYXQgMjVDIHRvIGdldCB0aGUg dGVtcCwNCj4gKwkgKiBUbWVhcyA9ICggTm1lYXMgLSBuMSkgKyAyNTsgbjEgaXMgdGhlIGZ1c2Ug dmFsdWUgZm9yIDI1Qy4NCj4gKwkgKi8NCj4gKwlpZiAoZGF0YS0+c29jZGF0YS0+dmVyc2lvbiA9 PSBURU1QTU9OX0lNWDcpIHsNCj4gKwkJZGF0YS0+YzEgPSAodmFsID4+IDkpICYgMHgxZmY7DQo+ ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCS8qDQo+ICAJICogU2Vuc29yIGRhdGEgbGF5 b3V0Og0KPiAgCSAqICAgWzMxOjIwXSAtIHNlbnNvciB2YWx1ZSBAIDI1Qw0KPiAgCSAqIFVzZSB1 bml2ZXJzYWwgZm9ybXVsYSBub3cgYW5kIG9ubHkgbmVlZCBzZW5zb3IgdmFsdWUgQCAyNUMgQEAg DQo+IC00MjYsNiArNTc5LDcgQEAgc3RhdGljIHZvaWQgaW14X2luaXRfdGVtcF9ncmFkZShzdHJ1 Y3QgDQo+IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTMyIHZhbCkNCj4gIA0KPiAgc3RhdGljIGlu dCBpbXhfaW5pdF9mcm9tX3RlbXBtb25fZGF0YShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KSAgDQo+IHsNCj4gKwlzdHJ1Y3QgaW14X3RoZXJtYWxfZGF0YSAqZGF0YSA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOw0KDQpjb25zdD8NCg0KYWdyZWUuDQoNCkFuc29uDQoNCj4gIAlzdHJ1 Y3QgcmVnbWFwICptYXA7DQo+ICAJaW50IHJldDsNCj4gIAl1MzIgdmFsOw0KPiBAQCAtNDM4LDcg KzU5MiwxMSBAQCBzdGF0aWMgaW50IGlteF9pbml0X2Zyb21fdGVtcG1vbl9kYXRhKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJCXJldHVybiByZXQ7DQo+ICAJfQ0KPiAgDQo+IC0J cmV0ID0gcmVnbWFwX3JlYWQobWFwLCBPQ09UUF9BTkExLCAmdmFsKTsNCj4gKwlpZiAoZGF0YS0+ c29jZGF0YS0+dmVyc2lvbiA9PSBURU1QTU9OX0lNWDcpDQo+ICsJCXJldCA9IHJlZ21hcF9yZWFk KG1hcCwgSU1YN19PQ09UUF9BTkExLCAmdmFsKTsNCj4gKwllbHNlDQo+ICsJCXJldCA9IHJlZ21h cF9yZWFkKG1hcCwgSU1YNl9PQ09UUF9BTkExLCAmdmFsKTsNCj4gKw0KPiAgCWlmIChyZXQpIHsN Cj4gIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgc2Vuc29yIGRhdGE6ICVk XG4iLCByZXQpOw0KPiAgCQlyZXR1cm4gcmV0Ow0KPiBAQCAtNDQ3LDcgKzYwNSwxMSBAQCBzdGF0 aWMgaW50IGlteF9pbml0X2Zyb21fdGVtcG1vbl9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ICAJaWYgKHJldCkNCj4gIAkJcmV0dXJuIHJldDsNCj4gIA0KPiAtCXJldCA9IHJl Z21hcF9yZWFkKG1hcCwgT0NPVFBfTUVNMCwgJnZhbCk7DQo+ICsJLyogdXNlIE9UUCBmb3IgdGhl cm1hbCBncmFkZSAqLw0KPiArCWlmIChkYXRhLT5zb2NkYXRhLT52ZXJzaW9uID09IFRFTVBNT05f SU1YNykNCj4gKwkJcmV0ID0gcmVnbWFwX3JlYWQobWFwLCBJTVg3X09DT1RQX1RFU1RFUjMsICZ2 YWwpOw0KPiArCWVsc2UNCj4gKwkJcmV0ID0gcmVnbWFwX3JlYWQobWFwLCBJTVg2X09DT1RQX01F TTAsICZ2YWwpOw0KPiAgCWlmIChyZXQpIHsNCj4gIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIHJlYWQgc2Vuc29yIGRhdGE6ICVkXG4iLCByZXQpOw0KPiAgCQlyZXR1cm4gcmV0Ow0K PiBAQCAtNTAwLDYgKzY2Miw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCANCj4gaW14X3RoZXJtYWxf YWxhcm1faXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICpkZXYpICBzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBvZl9pbXhfdGhlcm1hbF9tYXRjaFtdID0gew0KPiAgCXsgLmNvbXBhdGli bGUgPSAiZnNsLGlteDZxLXRlbXBtb24iLCAuZGF0YSA9ICZ0aGVybWFsX2lteDZxX2RhdGEsIH0s DQo+ICAJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14NnN4LXRlbXBtb24iLCAuZGF0YSA9ICZ0aGVy bWFsX2lteDZzeF9kYXRhLCANCj4gfSwNCj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxpbXg3LXRl bXBtb24iLCAuZGF0YSA9ICZ0aGVybWFsX2lteDdfZGF0YSwgfSwNCj4gIAl7IC8qIGVuZCAqLyB9 DQo+ICB9Ow0KPiAgTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfaW14X3RoZXJtYWxfbWF0Y2gp OyBAQCAtNTMxLDE0ICs2OTQsMTUgQEAgDQo+IHN0YXRpYyBpbnQgaW14X3RoZXJtYWxfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIA0KPiAgCS8qIG1ha2Ugc3VyZSB0aGUg SVJRIGZsYWcgaXMgY2xlYXIgYmVmb3JlIGVuYWJsaW5nIGlycSBvbiBpLk1YNlNYICovDQo+ICAJ aWYgKGRhdGEtPnNvY2RhdGEtPnZlcnNpb24gPT0gVEVNUE1PTl9JTVg2U1gpIHsNCj4gLQkJcmVn bWFwX3dyaXRlKG1hcCwgTUlTQzEgKyBSRUdfQ0xSLCBNSVNDMV9JUlFfVEVNUEhJR0ggfA0KPiAt CQkJTUlTQzFfSVJRX1RFTVBMT1cgfCBNSVNDMV9JUlFfVEVNUFBBTklDKTsNCj4gKwkJcmVnbWFw X3dyaXRlKG1hcCwgSU1YNl9NSVNDMSArIFJFR19DTFIsDQo+ICsJCQlJTVg2X01JU0MxX0lSUV9U RU1QSElHSCB8IElNWDZfTUlTQzFfSVJRX1RFTVBMT1cNCj4gKwkJCXwgSU1YNl9NSVNDMV9JUlFf VEVNUFBBTklDKTsNCj4gIAkJLyoNCj4gIAkJICogcmVzZXQgdmFsdWUgb2YgTE9XIEFMQVJNIGlz IGluY29ycmVjdCwgc2V0IGl0IHRvIGxvd2VzdA0KPiAgCQkgKiB2YWx1ZSB0byBhdm9pZCBmYWxz ZSB0cmlnZ2VyIG9mIGxvdyBhbGFybS4NCj4gIAkJICovDQo+IC0JCXJlZ21hcF93cml0ZShtYXAs IFRFTVBTRU5TRTIgKyBSRUdfU0VULA0KPiAtCQkJVEVNUFNFTlNFMl9MT1dfVkFMVUVfTUFTSyk7 DQo+ICsJCXJlZ21hcF93cml0ZShtYXAsIElNWDZfVEVNUFNFTlNFMiArIFJFR19TRVQsDQo+ICsJ CQlJTVg2X1RFTVBTRU5TRTJfTE9XX1ZBTFVFX01BU0spOw0KPiAgCX0NCg0KRG9lcyBNWDcgbmVl ZCB0aGUgc2FtZSBvcGVyYXRpb24/DQoNCk1YN0QgZG9lcyBOT1QgbmVlZCB0aGlzLg0KDQpXaWxs IGRvIGFsbCBjaGFuZ2VzIGluIFYyLCB0aGFua3MuDQoNCkFuc29uLg0KDQpSZWdhcmRzDQpEb25n IEFpc2hlbmcNCg0KPiAgDQo+ICAJZGF0YS0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAw KTsgQEAgLTU2NSwxMSArNzI5LDE3IEBAIHN0YXRpYyANCj4gaW50IGlteF90aGVybWFsX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJfQ0KPiAgDQo+ICAJLyogTWFrZSBz dXJlIHNlbnNvciBpcyBpbiBrbm93biBnb29kIHN0YXRlIGZvciBtZWFzdXJlbWVudHMgKi8NCj4g LQlyZWdtYXBfd3JpdGUobWFwLCBURU1QU0VOU0UwICsgUkVHX0NMUiwgVEVNUFNFTlNFMF9QT1dF Ul9ET1dOKTsNCj4gLQlyZWdtYXBfd3JpdGUobWFwLCBURU1QU0VOU0UwICsgUkVHX0NMUiwgVEVN UFNFTlNFMF9NRUFTVVJFX1RFTVApOw0KPiAtCXJlZ21hcF93cml0ZShtYXAsIFRFTVBTRU5TRTEg KyBSRUdfQ0xSLCBURU1QU0VOU0UxX01FQVNVUkVfRlJFUSk7DQo+IC0JcmVnbWFwX3dyaXRlKG1h cCwgTUlTQzAgKyBSRUdfU0VULCBNSVNDMF9SRUZUT1BfU0VMQklBU09GRik7DQo+IC0JcmVnbWFw X3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQsIFRFTVBTRU5TRTBfUE9XRVJfRE9XTik7 DQo+ICsJcmVnbWFwX3dyaXRlKG1hcCwgZGF0YS0+c29jZGF0YS0+c2Vuc29yX2N0cmwgKyBSRUdf Q0xSLA0KPiArCQkgICAgIGRhdGEtPnNvY2RhdGEtPnBvd2VyX2Rvd25fbWFzayk7DQo+ICsJcmVn bWFwX3dyaXRlKG1hcCwgZGF0YS0+c29jZGF0YS0+c2Vuc29yX2N0cmwgKyBSRUdfQ0xSLA0KPiAr CQkgICAgIGRhdGEtPnNvY2RhdGEtPm1lYXN1cmVfdGVtcF9tYXNrKTsNCj4gKwlyZWdtYXBfd3Jp dGUobWFwLCBkYXRhLT5zb2NkYXRhLT5tZWFzdXJlX2ZyZXFfY3RybCArIFJFR19DTFIsDQo+ICsJ CSAgICAgZGF0YS0+c29jZGF0YS0+bWVhc3VyZV9mcmVxX21hc2spOw0KPiArCWlmIChkYXRhLT5z b2NkYXRhLT52ZXJzaW9uICE9IFRFTVBNT05fSU1YNykNCj4gKwkJcmVnbWFwX3dyaXRlKG1hcCwg SU1YNl9NSVNDMCArIFJFR19TRVQsDQo+ICsJCQlJTVg2X01JU0MwX1JFRlRPUF9TRUxCSUFTT0ZG KTsNCj4gKwlyZWdtYXBfd3JpdGUobWFwLCBkYXRhLT5zb2NkYXRhLT5zZW5zb3JfY3RybCArIFJF R19TRVQsDQo+ICsJCSAgICAgZGF0YS0+c29jZGF0YS0+cG93ZXJfZG93bl9tYXNrKTsNCj4gIA0K PiAgCWRhdGEtPnBvbGljeSA9IGNwdWZyZXFfY3B1X2dldCgwKTsNCj4gIAlpZiAoIWRhdGEtPnBv bGljeSkgew0KPiBAQCAtNjM0LDE2ICs4MDQsMjAgQEAgc3RhdGljIGludCBpbXhfdGhlcm1hbF9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQkgZGF0YS0+dGVtcF9wYXNz aXZlIC8gMTAwMCk7DQo+ICANCj4gIAkvKiBFbmFibGUgbWVhc3VyZW1lbnRzIGF0IH4gMTAgSHog Ki8NCj4gLQlyZWdtYXBfd3JpdGUobWFwLCBURU1QU0VOU0UxICsgUkVHX0NMUiwgVEVNUFNFTlNF MV9NRUFTVVJFX0ZSRVEpOw0KPiArCXJlZ21hcF93cml0ZShtYXAsIGRhdGEtPnNvY2RhdGEtPm1l YXN1cmVfZnJlcV9jdHJsICsgUkVHX0NMUiwNCj4gKwkJICAgICBkYXRhLT5zb2NkYXRhLT5tZWFz dXJlX2ZyZXFfbWFzayk7DQo+ICAJbWVhc3VyZV9mcmVxID0gRElWX1JPVU5EX1VQKDMyNzY4LCAx MCk7IC8qIDEwIEh6ICovDQo+IC0JcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMSArIFJFR19T RVQsIG1lYXN1cmVfZnJlcSk7DQo+ICsJcmVnbWFwX3dyaXRlKG1hcCwgZGF0YS0+c29jZGF0YS0+ bWVhc3VyZV9mcmVxX2N0cmwgKyBSRUdfU0VULA0KPiArCQkgICAgIG1lYXN1cmVfZnJlcSA8PCBk YXRhLT5zb2NkYXRhLT5tZWFzdXJlX2ZyZXFfc2hpZnQpOw0KPiAgCWlteF9zZXRfYWxhcm1fdGVt cChkYXRhLCBkYXRhLT50ZW1wX3Bhc3NpdmUpOw0KPiAgDQo+ICAJaWYgKGRhdGEtPnNvY2RhdGEt PnZlcnNpb24gPT0gVEVNUE1PTl9JTVg2U1gpDQo+ICAJCWlteF9zZXRfcGFuaWNfdGVtcChkYXRh LCBkYXRhLT50ZW1wX2NyaXRpY2FsKTsNCj4gIA0KPiAtCXJlZ21hcF93cml0ZShtYXAsIFRFTVBT RU5TRTAgKyBSRUdfQ0xSLCBURU1QU0VOU0UwX1BPV0VSX0RPV04pOw0KPiAtCXJlZ21hcF93cml0 ZShtYXAsIFRFTVBTRU5TRTAgKyBSRUdfU0VULCBURU1QU0VOU0UwX01FQVNVUkVfVEVNUCk7DQo+ ICsJcmVnbWFwX3dyaXRlKG1hcCwgZGF0YS0+c29jZGF0YS0+c2Vuc29yX2N0cmwgKyBSRUdfQ0xS LA0KPiArCQkgICAgIGRhdGEtPnNvY2RhdGEtPnBvd2VyX2Rvd25fbWFzayk7DQo+ICsJcmVnbWFw X3dyaXRlKG1hcCwgZGF0YS0+c29jZGF0YS0+c2Vuc29yX2N0cmwgKyBSRUdfU0VULA0KPiArCQkg ICAgIGRhdGEtPnNvY2RhdGEtPm1lYXN1cmVfdGVtcF9tYXNrKTsNCj4gIA0KPiAgCXJldCA9IGRl dm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJnBkZXYtPmRldiwgZGF0YS0+aXJxLA0KPiAgCQkJaW14 X3RoZXJtYWxfYWxhcm1faXJxLCBpbXhfdGhlcm1hbF9hbGFybV9pcnFfdGhyZWFkLCBAQCAtNjY5 LDcgDQo+ICs4NDMsOCBAQCBzdGF0aWMgaW50IGlteF90aGVybWFsX3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCXN0cnVjdCByZWdtYXAgKm1hcCA9IGRhdGEtPnRlbXBt b247DQo+ICANCj4gIAkvKiBEaXNhYmxlIG1lYXN1cmVtZW50cyAqLw0KPiAtCXJlZ21hcF93cml0 ZShtYXAsIFRFTVBTRU5TRTAgKyBSRUdfU0VULCBURU1QU0VOU0UwX1BPV0VSX0RPV04pOw0KPiAr CXJlZ21hcF93cml0ZShtYXAsIGRhdGEtPnNvY2RhdGEtPnNlbnNvcl9jdHJsICsgUkVHX1NFVCwN Cj4gKwkJICAgICBkYXRhLT5zb2NkYXRhLT5wb3dlcl9kb3duX21hc2spOw0KPiAgCWlmICghSVNf RVJSKGRhdGEtPnRoZXJtYWxfY2xrKSkNCj4gIAkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRhdGEt PnRoZXJtYWxfY2xrKTsNCj4gIA0KPiBAQCAtNjkyLDggKzg2NywxMCBAQCBzdGF0aWMgaW50IGlt eF90aGVybWFsX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiAgCSAqIHRlbXBlcmF0dXJl IHdpbGwgYmUgcmVhZCBhcyB0aGUgdGhlcm1hbCBzZW5zb3IgaXMgcG93ZXJlZA0KPiAgCSAqIGRv d24uDQo+ICAJICovDQo+IC0JcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19DTFIs IFRFTVBTRU5TRTBfTUVBU1VSRV9URU1QKTsNCj4gLQlyZWdtYXBfd3JpdGUobWFwLCBURU1QU0VO U0UwICsgUkVHX1NFVCwgVEVNUFNFTlNFMF9QT1dFUl9ET1dOKTsNCj4gKwlyZWdtYXBfd3JpdGUo bWFwLCBkYXRhLT5zb2NkYXRhLT5zZW5zb3JfY3RybCArIFJFR19DTFIsDQo+ICsJCSAgICAgZGF0 YS0+c29jZGF0YS0+bWVhc3VyZV90ZW1wX21hc2spOw0KPiArCXJlZ21hcF93cml0ZShtYXAsIGRh dGEtPnNvY2RhdGEtPnNlbnNvcl9jdHJsICsgUkVHX1NFVCwNCj4gKwkJICAgICBkYXRhLT5zb2Nk YXRhLT5wb3dlcl9kb3duX21hc2spOw0KPiAgCWRhdGEtPm1vZGUgPSBUSEVSTUFMX0RFVklDRV9E SVNBQkxFRDsNCj4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZGF0YS0+dGhlcm1hbF9jbGspOw0K PiAgDQo+IEBAIC03MTAsOCArODg3LDEwIEBAIHN0YXRpYyBpbnQgaW14X3RoZXJtYWxfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gIAlpZiAocmV0KQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAg CS8qIEVuYWJsZWQgdGhlcm1hbCBzZW5zb3IgYWZ0ZXIgcmVzdW1lICovDQo+IC0JcmVnbWFwX3dy aXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19DTFIsIFRFTVBTRU5TRTBfUE9XRVJfRE9XTik7DQo+ IC0JcmVnbWFwX3dyaXRlKG1hcCwgVEVNUFNFTlNFMCArIFJFR19TRVQsIFRFTVBTRU5TRTBfTUVB U1VSRV9URU1QKTsNCj4gKwlyZWdtYXBfd3JpdGUobWFwLCBkYXRhLT5zb2NkYXRhLT5zZW5zb3Jf Y3RybCArIFJFR19DTFIsDQo+ICsJCSAgICAgZGF0YS0+c29jZGF0YS0+cG93ZXJfZG93bl9tYXNr KTsNCj4gKwlyZWdtYXBfd3JpdGUobWFwLCBkYXRhLT5zb2NkYXRhLT5zZW5zb3JfY3RybCArIFJF R19TRVQsDQo+ICsJCSAgICAgZGF0YS0+c29jZGF0YS0+bWVhc3VyZV90ZW1wX21hc2spOw0KPiAg CWRhdGEtPm1vZGUgPSBUSEVSTUFMX0RFVklDRV9FTkFCTEVEOw0KPiAgDQo+ICAJcmV0dXJuIDA7 DQo+IC0tDQo+IDIuNy40DQo+IA0K