Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3020255ybi; Mon, 10 Jun 2019 02:55:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqyeB/nMG5t0vhQ5dPfUXTMRU7wNEQFeu2kX5MZYx1x4ExxQlMct5d8FSb7BWb/o+81oVL9o X-Received: by 2002:aa7:8817:: with SMTP id c23mr6197837pfo.146.1560160549332; Mon, 10 Jun 2019 02:55:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560160549; cv=none; d=google.com; s=arc-20160816; b=Eg5nZyzL7P4YKmlhl0zS9JhShY52JVB05fLXdaLtseNg7Fkpw6j4ODmx85YTqpynIg v5HYff/krlnVWs5lDti95Aeq9JgR2PITvozEP/+7GobNZ4XYCTWOZnGkuVZiyZuY/JJ2 10gyEWPjVc7JEkx87OrI8SSCw57ps7Qg38KaeOfITstp6CgIPWrUTzmD+1t6P75yokWs 1IdfLJ0wJTFsiyNJnCavX2TCAUvPuzostrhBrSVDnF1ZqDW38ruCRrMkZrBG981TJWp9 4z3jv3AuTyI6+mSHObSSiZSk14p2+Z0UHSFH1OkYfdte2QB4aKnKzqA+eVVfdEF/w5Yy TLnA== 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 :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=wqNdIJGBEsaEoVXXljCL45Eyert2hG9dDbJIFSOqD8U=; b=mtwqysmIAmrnWzJq0Zgkyx8eJ/pdzuXENj8eLLicIYj/ExWPqOJdgsgpiRkqIO/O0O DbWx2vyUdVAEncRys/lYwWLu2wC6lcdm+lXFMHil0/7eEOXVJ3HNk7E7aKyTvTplVZ6L 0v6Vh6ko51uENBq/fWSlsPNutSgL6KFbAuo27bTgpM+lt/oNvsnaHpdFCKxVj4asVGbS tj213XZsDHutVOxnp8DAfbe+XltC32oXqNXFLTuosiO3CIj2hu0WNp+N5kVbC9GPhVwI hYcdxeJscojH9JVWt+0vBcHyBNt9nNhJn3LpeOZAVh6tyRSRL+n+Un6Mn0586vf/bId6 ivDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=hYsSRZOw; 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 m9si9677433pff.88.2019.06.10.02.55.23; Mon, 10 Jun 2019 02:55:49 -0700 (PDT) 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=selector2 header.b=hYsSRZOw; 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 S2389102AbfFJJvh (ORCPT + 99 others); Mon, 10 Jun 2019 05:51:37 -0400 Received: from mail-eopbgr10084.outbound.protection.outlook.com ([40.107.1.84]:30310 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388033AbfFJJvh (ORCPT ); Mon, 10 Jun 2019 05:51:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wqNdIJGBEsaEoVXXljCL45Eyert2hG9dDbJIFSOqD8U=; b=hYsSRZOwXpH0DQXC0zVul1ApDotCyBk/7hETpyB0PMW9rCXOUhxudxm2kbgSc6BbO8UhnqjD2bjS1qpXS+UARpfj0jvrrS8lmfwP4DmVWOhzuMiKi/JE1XKuX1fUrvQwSqV4Vou6peM3IS6yP6BiXFz1nlky9EcEbabOoIYPDyg= Received: from VI1PR04MB4431.eurprd04.prod.outlook.com (20.177.55.159) by VI1PR04MB4335.eurprd04.prod.outlook.com (52.134.122.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.14; Mon, 10 Jun 2019 09:51:12 +0000 Received: from VI1PR04MB4431.eurprd04.prod.outlook.com ([fe80::20bb:da22:d5f2:f2ab]) by VI1PR04MB4431.eurprd04.prod.outlook.com ([fe80::20bb:da22:d5f2:f2ab%4]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019 09:51:12 +0000 From: Peng Ma To: Vinod Koul CC: "dan.j.williams@intel.com" , Leo Li , "linux-kernel@vger.kernel.org" , "dmaengine@vger.kernel.org" Subject: RE: [EXT] Re: [V3 2/2] dmaengine: fsl-dpaa2-qdma: Add NXP dpaa2 qDMA controller driver for Layerscape SoCs Thread-Topic: [EXT] Re: [V3 2/2] dmaengine: fsl-dpaa2-qdma: Add NXP dpaa2 qDMA controller driver for Layerscape SoCs Thread-Index: AQHU7qXr3uPYZwSnaEqIkDYkulszCqZSvHSAgEHP4sA= Date: Mon, 10 Jun 2019 09:51:11 +0000 Message-ID: References: <20190409072212.15860-1-peng.ma@nxp.com> <20190409072212.15860-2-peng.ma@nxp.com> <20190429053203.GF3845@vkoul-mobl.Dlink> In-Reply-To: <20190429053203.GF3845@vkoul-mobl.Dlink> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=peng.ma@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1e2c8c48-4888-4692-72f4-08d6ed892bc3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:VI1PR04MB4335; x-ms-traffictypediagnostic: VI1PR04MB4335: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:565; x-forefront-prvs: 0064B3273C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6029001)(396003)(136003)(39860400002)(346002)(366004)(376002)(51234002)(13464003)(199004)(189003)(26005)(81156014)(81166006)(25786009)(8676002)(86362001)(186003)(8936002)(6916009)(3846002)(478600001)(6116002)(4326008)(2906002)(256004)(14444005)(52536014)(30864003)(5660300002)(14454004)(6246003)(33656002)(53936002)(76116006)(7736002)(305945005)(73956011)(66946007)(66476007)(66556008)(64756008)(9686003)(99286004)(316002)(66446008)(6436002)(229853002)(54906003)(68736007)(6506007)(55016002)(102836004)(74316002)(7696005)(76176011)(66066001)(53946003)(71200400001)(71190400001)(11346002)(446003)(44832011)(486006)(476003)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4335;H:VI1PR04MB4431.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: F7IeBOnIu8TXY/11BtQCbGx9k1hucV9bYQIHfoP3RK90PkeZclSvgHYCGXpMT2VwjXIcZt821XBGJvvQw0+QH1n+3UgHsqUpdIed3PT78vZMN1RvAOgTiuOMHuXalr17Y6ocN2lCOb1EFt44oo4uVvOvqLyNgE0z29Dkx7QNA8La9zlPlnnz3z83qQogAe6rolAArEpf8jzPr5sZDK7k3CWiH90cSpxHPzrC6UwU5yFQkAgQE4TDkD16GGs2Ix/wB0S5qZLnb2IPxzP7+CuuYP01MsDfRWJaHorpy0yZwSAQjWx2T5Kt7W0q2uIvGKd5UVkTvmi/Uey+HPrllOU73MtDOQWx4mpVnM4uIFTlMAP0vfF26AGxu29wsIwzhr7vtCorPL0lOebtLagalhvU9qoFazVMyO8L+EnnG1btmcU= 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: 1e2c8c48-4888-4692-72f4-08d6ed892bc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 09:51:11.8796 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: peng.ma@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4335 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIFZpbm9kLA0KDQpQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGlubGluZSwgdGhhbmtzIHZlcnkg bXVjaC4NCg0KQmVzdCBSZWdhcmRzLA0KUGVuZw0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj5Gcm9tOiBWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPg0KPlNlbnQ6IDIwMTnE6jTU wjI5yNUgMTM6MzINCj5UbzogUGVuZyBNYSA8cGVuZy5tYUBueHAuY29tPg0KPkNjOiBkYW4uai53 aWxsaWFtc0BpbnRlbC5jb207IExlbyBMaSA8bGVveWFuZy5saUBueHAuY29tPjsNCj5saW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnOyBkbWFlbmdpbmVAdmdlci5rZXJuZWwub3JnDQo+U3ViamVj dDogW0VYVF0gUmU6IFtWMyAyLzJdIGRtYWVuZ2luZTogZnNsLWRwYWEyLXFkbWE6IEFkZCBOWFAg ZHBhYTIgcURNQQ0KPmNvbnRyb2xsZXIgZHJpdmVyIGZvciBMYXllcnNjYXBlIFNvQ3MNCj4NCj5D YXV0aW9uOiBFWFQgRW1haWwNCj4NCj5PbiAwOS0wNC0xOSwgMTU6MjIsIFBlbmcgTWEgd3JvdGU6 DQo+PiBEUFBBMihEYXRhIFBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSAyKSBxRE1BIFRo ZSBxRE1BIHN1cHBvcnRzDQo+PiBjaGFubmVsIHZpcnR1YWxpemF0aW9uIGJ5IGFsbG93aW5nIERN QSBqb2JzIHRvIGJlIGVucXVldWVkIGludG8NCj4+IGRpZmZlcmVudCBmcmFtZSBxdWV1ZXMuIENv cmUgY2FuIGluaXRpYXRlIGEgRE1BIHRyYW5zYWN0aW9uIGJ5DQo+PiBwcmVwYXJpbmcgYSBmcmFt ZSBkZXNjcmlwdG9yKEZEKSBmb3IgZWFjaCBETUEgam9iIGFuZCBlbnF1ZXVpbmcgdGhpcyBqb2Ig dG8NCj5hIGZyYW1lIHF1ZXVlLg0KPj4gdGhyb3VnaCBhIGhhcmR3YXJlIHBvcnRhbC4gVGhlIHFE TUEgcHJlZmV0Y2hlcyBETUEgam9icyBmcm9tIHRoZSBmcmFtZQ0KPnF1ZXVlcy4NCj4+IEl0IHRo ZW4gc2NoZWR1bGVzIGFuZCBkaXNwYXRjaGVzIHRvIGludGVybmFsIERNQSBoYXJkd2FyZSBlbmdp bmVzLA0KPj4gd2hpY2ggZ2VuZXJhdGUgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMuIEJvdGggcURN QSBzb3VyY2UgZGF0YSBhbmQNCj4+IGRlc3RpbmF0aW9uIGRhdGEgY2FuIGJlIGVpdGhlciBjb250 aWd1b3VzIG9yIG5vbi1jb250aWd1b3VzIHVzaW5nIG9uZSBvcg0KPm1vcmUgc2NhdHRlci9nYXRo ZXIgdGFibGVzLg0KPj4gVGhlIHFETUEgc3VwcG9ydHMgZ2xvYmFsIGJhbmR3aWR0aCBmbG93IGNv bnRyb2wgd2hlcmUgYWxsIERNQQ0KPj4gdHJhbnNhY3Rpb25zIGFyZSBzdGFsbGVkIGlmIHRoZSBi YW5kd2lkdGggdGhyZXNob2xkIGhhcyBiZWVuIHJlYWNoZWQuDQo+PiBBbHNvIHN1cHBvcnRlZCBh cmUgdHJhbnNhY3Rpb24gYmFzZWQgcmVhZCB0aHJvdHRsaW5nLg0KPj4NCj4+IEFkZCBOWFAgZHBw YTIgcURNQSB0byBzdXBwb3J0IHNvbWUgb2YgTGF5ZXJzY2FwZSBTb0NzLg0KPj4gc3VjaCBhczog TFMxMDg4QSwgTFMyMDh4QSwgTFgyLCBldGMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogUGVuZyBN YSA8cGVuZy5tYUBueHAuY29tPg0KPj4gLS0tDQo+PiBjaGFuZ2VkIGZvciB2MzoNCj4+ICAgICAg IC0gQWRkIGRlcGVuZHMgb24gYXJtNjQgZm9yIGRwYWEyIHFkbWEgZHJpdmVyDQo+PiAgICAgICAt IFRoZSBkcGFhMl9pb19zZXJ2aWNlX1tkZV1yZWdpc3RlciBmdW5jdGlvbnMgaGF2ZSBhIG5ldw0K PnBhcmFtZXRlcg0KPj4gICAgICAgU28gdXBkYXRlIGFsbCBjYWxscyB0byBzb21lIGZ1bmN0aW9u cw0KPj4NCj4+ICBkcml2ZXJzL2RtYS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgfCAgICAy ICsNCj4+ICBkcml2ZXJzL2RtYS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgICAxICsN Cj4+ICBkcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9LY29uZmlnICAgICAgfCAgICA5ICsNCj4+ ICBkcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9NYWtlZmlsZSAgICAgfCAgICAzICsNCj4+ICBk cml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmMgfCAgNzgyDQo+PiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+PiBkcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9k cGFhMi1xZG1hLmggfCAgMTUyICsrKysrKw0KPj4gIDYgZmlsZXMgY2hhbmdlZCwgOTQ5IGluc2Vy dGlvbnMoKyksIDAgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQ0KPj4gMTAwNjQ0IGRyaXZlcnMv ZG1hL2ZzbC1kcGFhMi1xZG1hL0tjb25maWcNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9kbWEvZnNsLWRwYWEyLXFkbWEvTWFrZWZpbGUNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvZHBhYTItcWRtYS5jDQo+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuaA0KPj4NCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2RtYS9LY29uZmlnIGIvZHJpdmVycy9kbWEvS2NvbmZpZyBpbmRleA0K Pj4gZWFmNzhmNC4uMDhhYWUwMSAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZG1hL0tjb25maWcN Cj4+ICsrKyBiL2RyaXZlcnMvZG1hL0tjb25maWcNCj4+IEBAIC02NzEsNiArNjcxLDggQEAgc291 cmNlICJkcml2ZXJzL2RtYS9zaC9LY29uZmlnIg0KPj4NCj4+ICBzb3VyY2UgImRyaXZlcnMvZG1h L3RpL0tjb25maWciDQo+Pg0KPj4gK3NvdXJjZSAiZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEv S2NvbmZpZyINCj4+ICsNCj4+ICAjIGNsaWVudHMNCj4+ICBjb21tZW50ICJETUEgQ2xpZW50cyIN Cj4+ICAgICAgIGRlcGVuZHMgb24gRE1BX0VOR0lORQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv ZG1hL01ha2VmaWxlIGIvZHJpdmVycy9kbWEvTWFrZWZpbGUgaW5kZXgNCj4+IDYxMjZlMWMuLjI0 OTllZDggMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2RtYS9NYWtlZmlsZQ0KPj4gKysrIGIvZHJp dmVycy9kbWEvTWFrZWZpbGUNCj4+IEBAIC03NSw2ICs3NSw3IEBAIG9iai0kKENPTkZJR19VTklQ SElFUl9NRE1BQykgKz0NCj51bmlwaGllci1tZG1hYy5vDQo+PiAgb2JqLSQoQ09ORklHX1hHRU5F X0RNQSkgKz0geGdlbmUtZG1hLm8NCj4+ICBvYmotJChDT05GSUdfWlhfRE1BKSArPSB6eF9kbWEu bw0KPj4gIG9iai0kKENPTkZJR19TVF9GRE1BKSArPSBzdF9mZG1hLm8NCj4+ICtvYmotJChDT05G SUdfRlNMX0RQQUEyX1FETUEpICs9IGZzbC1kcGFhMi1xZG1hLw0KPj4NCj4+ICBvYmoteSArPSBt ZWRpYXRlay8NCj4+ICBvYmoteSArPSBxY29tLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1h L2ZzbC1kcGFhMi1xZG1hL0tjb25maWcNCj4+IGIvZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEv S2NvbmZpZw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAuLjI1OGVk NmINCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1h L0tjb25maWcNCj4+IEBAIC0wLDAgKzEsOSBAQA0KPj4gK21lbnVjb25maWcgRlNMX0RQQUEyX1FE TUENCj4+ICsgICAgIHRyaXN0YXRlICJOWFAgRFBBQTIgUURNQSINCj4+ICsgICAgIGRlcGVuZHMg b24gQVJNNjQNCj4+ICsgICAgIGRlcGVuZHMgb24gRlNMX01DX0JVUyAmJiBGU0xfTUNfRFBJTw0K Pj4gKyAgICAgc2VsZWN0IERNQV9FTkdJTkUNCj4+ICsgICAgIHNlbGVjdCBETUFfVklSVFVBTF9D SEFOTkVMUw0KPj4gKyAgICAgaGVscA0KPj4gKyAgICAgICBOWFAgRGF0YSBQYXRoIEFjY2VsZXJh dGlvbiBBcmNoaXRlY3R1cmUgMiBRRE1BIGRyaXZlciwNCj4+ICsgICAgICAgdXNpbmcgdGhlIE5Y UCBNQyBidXMgZHJpdmVyLg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2ZzbC1kcGFhMi1x ZG1hL01ha2VmaWxlDQo+PiBiL2RyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL01ha2VmaWxlDQo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMC4uYzFkMDIyNg0KPj4gLS0t IC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvTWFrZWZpbGUN Cj4+IEBAIC0wLDAgKzEsMyBAQA0KPj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjANCj4+ICsjIE1ha2VmaWxlIGZvciB0aGUgTlhQIERQQUEyIHFETUEgY29udHJvbGxlcnMNCj4+ ICtvYmotJChDT05GSUdfRlNMX0RQQUEyX1FETUEpICs9IGRwYWEyLXFkbWEubyBkcGRtYWkubw0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYw0K Pj4gYi9kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmMNCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwLi4wY2RkZTBmDQo+PiAtLS0gL2Rldi9udWxs DQo+PiArKysgYi9kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmMNCj4+IEBA IC0wLDAgKzEsNzgyIEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4+ICsvLyBDb3B5cmlnaHQgMjAxNC0yMDE4IE5YUA0KPj4gKw0KPj4gKy8qDQo+PiArICogQXV0 aG9yOiBDaGFuZ21pbmcgSHVhbmcgPGplcnJ5Lmh1YW5nQG54cC5jb20+DQo+PiArICoNCj4+ICsg KiBEcml2ZXIgZm9yIHRoZSBOWFAgUURNQSBlbmdpbmUgd2l0aCBRTWFuIG1vZGUuDQo+PiArICog Q2hhbm5lbCB2aXJ0dWFsaXphdGlvbiBpcyBzdXBwb3J0ZWQgdGhyb3VnaCBlbnF1ZXVpbmcgb2Yg RE1BIGpvYnMNCj4+ICt0bywNCj4+ICsgKiBvciBkZXF1ZXVpbmcgRE1BIGpvYnMgZnJvbSBkaWZm ZXJlbnQgd29yayBxdWV1ZXMgd2l0aCBRTWFuIHBvcnRhbC4NCj4+ICsgKiBUaGlzIG1vZHVsZSBj YW4gYmUgZm91bmQgb24gTlhQIExTMiBTb0NzLg0KPj4gKyAqDQo+PiArICovDQo+PiArDQo+PiAr I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ PiArI2luY2x1ZGUgPGxpbnV4L2RtYXBvb2wuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJx Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3N5 c19zb2MuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvZnNsL21jLmg+DQo+PiArI2luY2x1ZGUgPHNv Yy9mc2wvZHBhYTItaW8uaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAiLi4vdmlydC1kbWEuaCINCj4+ ICsjaW5jbHVkZSAiZHBkbWFpX2NtZC5oIg0KPj4gKyNpbmNsdWRlICJkcGRtYWkuaCINCj4+ICsj aW5jbHVkZSAiZHBhYTItcWRtYS5oIg0KPj4gKw0KPj4gK3N0YXRpYyBib29sIHNtbXVfZGlzYWJs ZSA9IHRydWU7DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBkcGFhMl9xZG1hX2NoYW4gKnRvX2Rw YWEyX3FkbWFfY2hhbihzdHJ1Y3QgZG1hX2NoYW4NCj4+ICsqY2hhbikgew0KPj4gKyAgICAgcmV0 dXJuIGNvbnRhaW5lcl9vZihjaGFuLCBzdHJ1Y3QgZHBhYTJfcWRtYV9jaGFuLCB2Y2hhbi5jaGFu KTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgZHBhYTJfcWRtYV9jb21wICp0b19mc2xfcWRt YV9jb21wKHN0cnVjdCB2aXJ0X2RtYV9kZXNjDQo+PiArKnZkKSB7DQo+PiArICAgICByZXR1cm4g Y29udGFpbmVyX29mKHZkLCBzdHJ1Y3QgZHBhYTJfcWRtYV9jb21wLCB2ZGVzYyk7IH0NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGRwYWEyX3FkbWFfYWxsb2NfY2hhbl9yZXNvdXJjZXMoc3RydWN0IGRt YV9jaGFuICpjaGFuKSB7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9jaGFuICpkcGFhMl9j aGFuID0NCj50b19kcGFhMl9xZG1hX2NoYW4oY2hhbik7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJf cWRtYV9lbmdpbmUgKmRwYWEyX3FkbWEgPSBkcGFhMl9jaGFuLT5xZG1hOw0KPj4gKyAgICAgc3Ry dWN0IGRldmljZSAqZGV2ID0gJmRwYWEyX3FkbWEtPnByaXYtPmRwZG1haV9kZXYtPmRldjsNCj4+ ICsNCj4+ICsgICAgIGRwYWEyX2NoYW4tPmZkX3Bvb2wgPSBkbWFfcG9vbF9jcmVhdGUoImZkX3Bv b2wiLCBkZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZEX1BPT0xfU0laRSwgMzIsDQo+MCk7DQo+PiArICAgICBpZiAoIWRwYWEyX2NoYW4tPmZkX3Bv b2wpDQo+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKyAgICAgcmV0 dXJuIGRwYWEyX3FkbWEtPmRlc2NfYWxsb2NhdGVkKys7IH0NCj4+ICsNCj4+ICtzdGF0aWMgdm9p ZCBkcGFhMl9xZG1hX2ZyZWVfY2hhbl9yZXNvdXJjZXMoc3RydWN0IGRtYV9jaGFuICpjaGFuKSB7 DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9jaGFuICpkcGFhMl9jaGFuID0NCj50b19kcGFh Ml9xZG1hX2NoYW4oY2hhbik7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9lbmdpbmUgKmRw YWEyX3FkbWEgPSBkcGFhMl9jaGFuLT5xZG1hOw0KPj4gKyAgICAgdW5zaWduZWQgbG9uZyBmbGFn czsNCj4+ICsNCj4+ICsgICAgIExJU1RfSEVBRChoZWFkKTsNCj4+ICsNCj4+ICsgICAgIHNwaW5f bG9ja19pcnFzYXZlKCZkcGFhMl9jaGFuLT52Y2hhbi5sb2NrLCBmbGFncyk7DQo+PiArICAgICB2 Y2hhbl9nZXRfYWxsX2Rlc2NyaXB0b3JzKCZkcGFhMl9jaGFuLT52Y2hhbiwgJmhlYWQpOw0KPj4g KyAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHBhYTJfY2hhbi0+dmNoYW4ubG9jaywgZmxh Z3MpOw0KPj4gKw0KPj4gKyAgICAgdmNoYW5fZG1hX2Rlc2NfZnJlZV9saXN0KCZkcGFhMl9jaGFu LT52Y2hhbiwgJmhlYWQpOw0KPj4gKw0KPj4gKyAgICAgZHBhYTJfZHBkbWFpX2ZyZWVfY29tcChk cGFhMl9jaGFuLA0KPiZkcGFhMl9jaGFuLT5jb21wX3VzZWQpOw0KPj4gKyAgICAgZHBhYTJfZHBk bWFpX2ZyZWVfY29tcChkcGFhMl9jaGFuLCAmZHBhYTJfY2hhbi0+Y29tcF9mcmVlKTsNCj4+ICsN Cj4+ICsgICAgIGRtYV9wb29sX2Rlc3Ryb3koZHBhYTJfY2hhbi0+ZmRfcG9vbCk7DQo+PiArICAg ICBkcGFhMl9xZG1hLT5kZXNjX2FsbG9jYXRlZC0tOw0KPj4gK30NCj4+ICsNCj4+ICsvKg0KPj4g KyAqIFJlcXVlc3QgYSBjb21tYW5kIGRlc2NyaXB0b3IgZm9yIGVucXVldWUuDQo+PiArICovDQo+ PiArc3RhdGljIHN0cnVjdCBkcGFhMl9xZG1hX2NvbXAgKg0KPj4gK2RwYWEyX3FkbWFfcmVxdWVz dF9kZXNjKHN0cnVjdCBkcGFhMl9xZG1hX2NoYW4gKmRwYWEyX2NoYW4pIHsNCj4+ICsgICAgIHN0 cnVjdCBkcGFhMl9xZG1hX2NvbXAgKmNvbXBfdGVtcCA9IE5VTEw7DQo+PiArICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOw0KPj4gKw0KPj4gKyAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmRwYWEyX2No YW4tPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICsgICAgIGlmIChsaXN0X2VtcHR5KCZkcGFhMl9j aGFuLT5jb21wX2ZyZWUpKSB7DQo+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRwYWEyX2NoYW4tPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICsgICAgICAgICAgICAgY29t cF90ZW1wID0ga3phbGxvYyhzaXplb2YoKmNvbXBfdGVtcCksIEdGUF9LRVJORUwpOw0KPg0KPkdG UF9OT1dBSVQ/DQpbUGVuZyBNYV0gR290IGl0Lg0KPg0KPj4gKyAgICAgICAgICAgICBpZiAoIWNv bXBfdGVtcCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAg ICAgICAgY29tcF90ZW1wLT5mZF92aXJ0X2FkZHIgPQ0KPj4gKyAgICAgICAgICAgICAgICAgICAg IGRtYV9wb29sX2FsbG9jKGRwYWEyX2NoYW4tPmZkX3Bvb2wsDQo+R0ZQX05PV0FJVCwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcF90ZW1wLT5mZF9idXNfYWRk cik7DQo+PiArICAgICAgICAgICAgIGlmICghY29tcF90ZW1wLT5mZF92aXJ0X2FkZHIpDQo+DQo+ ZXJyIGhhbmRsaW5nIHNlZW1zIGluY29ycmVjdCwgeW91IGRvbnQgY2xlYW4gdXAsIGNhbGxlciBk b2VzbnQgY2hlY2sgcmV0dXJuIQ0KPg0KW1BlbmcgTWFdIFllcywgSXQncyBteSBmYXVsdC4NCj4+ ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsNCj4+ICsgICAgICAgICAgICAg Y29tcF90ZW1wLT5mbF92aXJ0X2FkZHIgPQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICh2b2lk ICopKChzdHJ1Y3QgZHBhYTJfZmQgKikNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXBfdGVtcC0+ZmRfdmlydF9hZGRyICsgMSk7DQo+DQo+Y2FzdHMgYW5kIHBvaW50ZXIgbWF0 aCwgd2hhdCBjb3VsZCBnbyB3cm9uZyEhIFRoaXMgZG9lc250IHNtZWxsIHJpZ2h0IQ0KPg0KPj4g KyAgICAgICAgICAgICBjb21wX3RlbXAtPmZsX2J1c19hZGRyID0gY29tcF90ZW1wLT5mZF9idXNf YWRkciArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz dHJ1Y3QgZHBhYTJfZmQpOw0KPg0KPndoeSBub3QgdXNlIGZsX3ZpcnRfYWRkciBhbmQgZ2V0IHRo ZSBidXNfYWRkcmVzcz8NCldoYXQgeW91IG1lYW4gaXMgSSBzaG91bGQgdXNlIHZpcnRfdG9fcGh5 cyB0byBnZXQgdGhlIGJ1c19hZGRyZXNzPw0KPg0KPj4gKyAgICAgICAgICAgICBjb21wX3RlbXAt PmRlc2NfdmlydF9hZGRyID0NCj4+ICsgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSgoc3Ry dWN0IGRwYWEyX2ZsX2VudHJ5ICopDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wX3RlbXAtPmZsX3ZpcnRfYWRkciArIDMpOw0KPj4gKyAgICAgICAgICAgICBjb21wX3RlbXAt PmRlc2NfYnVzX2FkZHIgPSBjb21wX3RlbXAtPmZsX2J1c19hZGRyICsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZHBhYTJfZmxfZW50cnkpICogMzsNCj4N Cj5wb2ludGVyIG1hdGggaW4gdGhlIHR3byBjYWxscyBkb2VzbnQgbWF0Y2ggYW5kIGFzIEkgc2Fp ZCBkb2VzbnQgbG9vayBnb29kLi4uDQpTaG91bGQgSSBkbyB0aGlzIGFzIGZvbGxvd3M6DQotICAg ICAgICAgICAgICAgY29tcF90ZW1wLT5mbF92aXJ0X2FkZHIgPQ0KLSAgICAgICAgICAgICAgICAg ICAgICAgKHZvaWQgKikoKHN0cnVjdCBkcGFhMl9mZCAqKQ0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb21wX3RlbXAtPmZkX3ZpcnRfYWRkciArIDEpOw0KLSAgICAgICAgICAgICAg IGNvbXBfdGVtcC0+ZmxfYnVzX2FkZHIgPSBjb21wX3RlbXAtPmZkX2J1c19hZGRyICsNCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGRwYWEyX2Zk KTsNCi0gICAgICAgICAgICAgICBjb21wX3RlbXAtPmRlc2NfdmlydF9hZGRyID0NCi0gICAgICAg ICAgICAgICAgICAgICAgICh2b2lkICopKChzdHJ1Y3QgZHBhYTJfZmxfZW50cnkgKikNCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF90ZW1wLT5mbF92aXJ0X2FkZHIgKyAzKTsN Ci0gICAgICAgICAgICAgICBjb21wX3RlbXAtPmRlc2NfYnVzX2FkZHIgPSBjb21wX3RlbXAtPmZs X2J1c19hZGRyICsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVj dCBkcGFhMl9mbF9lbnRyeSkgKiAzOw0KKyAgICAgICAgICAgICAgIGNvbXBfdGVtcC0+ZmRfdmly dF9hZGRyID0gKHN0cnVjdCBkcGFhMl9mZCAqKXZpcnRfYWRkcl9oZWFkKys7DQorICAgICAgICAg ICAgICAgY29tcF90ZW1wLT5mbF92aXJ0X2FkZHIgPSAoc3RydWN0IGRwYWEyX2ZsX2VudHJ5ICop dmlydF9hZGRyX2hlYWQ7DQorICAgICAgICAgICAgICAgY29tcF90ZW1wLT5mbF9idXNfYWRkciA9 IHZpcnRfdG9fcGh5cyhjb21wX3RlbXAtPmZsX3ZpcnRfYWRkcik7DQorICAgICAgICAgICAgICAg dmlydF9hZGRyX2hlYWQgPSAoc3RydWN0IGRwYWEyX2ZsX2VudHJ5ICopdmlydF9hZGRyX2hlYWQg KyAzOw0KKyAgICAgICAgICAgICAgIGNvbXBfdGVtcC0+ZGVzY192aXJ0X2FkZHIgPSAoc3RydWN0 IGRwYWEyX3FkbWFfc2RfZCAqKXZpcnRfYWRkcl9oZWFkOw0KKyAgICAgICAgICAgICAgIGNvbXBf dGVtcC0+ZGVzY19idXNfYWRkciA9IHZpcnRfdG9fcGh5cyhjb21wX3RlbXAtPmRlc2NfdmlydF9h ZGRyKTsNCj4NCj4+ICsNCj4+ICsgICAgICAgICAgICAgY29tcF90ZW1wLT5xY2hhbiA9IGRwYWEy X2NoYW47DQo+PiArICAgICAgICAgICAgIHJldHVybiBjb21wX3RlbXA7DQo+PiArICAgICB9DQo+ PiArICAgICBjb21wX3RlbXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkcGFhMl9jaGFuLT5jb21wX2Zy ZWUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcGFhMl9x ZG1hX2NvbXAsIGxpc3QpOw0KPj4gKyAgICAgbGlzdF9kZWwoJmNvbXBfdGVtcC0+bGlzdCk7DQo+ PiArICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcGFhMl9jaGFuLT5xdWV1ZV9sb2NrLCBm bGFncyk7DQo+PiArDQo+PiArICAgICBjb21wX3RlbXAtPnFjaGFuID0gZHBhYTJfY2hhbjsNCj4+ ICtlcnI6DQo+PiArICAgICByZXR1cm4gY29tcF90ZW1wOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgdm9pZA0KPj4gK2RwYWEyX3FkbWFfcG9wdWxhdGVfZmQodTMyIGZvcm1hdCwgc3RydWN0IGRw YWEyX3FkbWFfY29tcA0KPj4gKypkcGFhMl9jb21wKSB7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJf ZmQgKmZkOw0KPj4gKw0KPj4gKyAgICAgZmQgPSAoc3RydWN0IGRwYWEyX2ZkICopZHBhYTJfY29t cC0+ZmRfdmlydF9hZGRyOw0KPg0KPndoYXRzIHdpdGggdGhlIGNhc3RzISB5b3Ugc2VlbSB0byBs aWtlIHRoZW0hIFlvdSBhcmUgY2FzdGluZyBhd2F5IGZyb20gdm9pZCENClRoaXMgd2lsbCBhdm9p ZCBhZnRlciBjaGFuZ2UgZmRfdmlydF9hZGRyIHR5cGUuDQo+DQo+PiArICAgICBtZW1zZXQoZmQs IDAsIHNpemVvZihzdHJ1Y3QgZHBhYTJfZmQpKTsNCj4+ICsNCj4+ICsgICAgIC8qIGZkIHBvcHVs YXRlZCAqLw0KPj4gKyAgICAgZHBhYTJfZmRfc2V0X2FkZHIoZmQsIGRwYWEyX2NvbXAtPmZsX2J1 c19hZGRyKTsNCj4+ICsgICAgIC8qIEJ5cGFzcyBtZW1vcnkgdHJhbnNsYXRpb24sIEZyYW1lIGxp c3QgZm9ybWF0LCBzaG9ydCBsZW5ndGggZGlzYWJsZQ0KPiovDQo+PiArICAgICAvKiB3ZSBuZWVk IHRvIGRpc2FibGUgQk1UIGlmIGZzbC1tYyB1c2UgaW92YSBhZGRyICovDQo+PiArICAgICBpZiAo c21tdV9kaXNhYmxlKQ0KPj4gKyAgICAgICAgICAgICBkcGFhMl9mZF9zZXRfYnBpZChmZCwgUU1B Tl9GRF9CTVRfRU5BQkxFKTsNCj4+ICsgICAgIGRwYWEyX2ZkX3NldF9mb3JtYXQoZmQsIFFNQU5f RkRfRk1UX0VOQUJMRSB8DQo+PiArIFFNQU5fRkRfU0xfRElTQUJMRSk7DQo+PiArDQo+PiArICAg ICBkcGFhMl9mZF9zZXRfZnJjKGZkLCBmb3JtYXQgfCBRRE1BX1NFUl9DVFgpOyB9DQo+PiArDQo+ PiArLyogZmlyc3QgZnJhbWUgbGlzdCBmb3IgZGVzY3JpcHRvciBidWZmZXIgKi8gc3RhdGljIHZv aWQNCj4+ICtkcGFhMl9xZG1hX3BvcHVsYXRlX2ZpcnN0X2ZyYW1lbChzdHJ1Y3QgZHBhYTJfZmxf ZW50cnkgKmZfbGlzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHBhYTJfcWRtYV9jb21wDQo+KmRwYWEyX2NvbXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCB3cnRfY2hhbmdlZCkgew0KPj4gKyAgICAgc3RydWN0IGRwYWEyX3FkbWFf c2RfZCAqc2RkOw0KPj4gKw0KPj4gKyAgICAgc2RkID0gKHN0cnVjdCBkcGFhMl9xZG1hX3NkX2Qg KilkcGFhMl9jb21wLT5kZXNjX3ZpcnRfYWRkcjsNCj4NCj5hZ2Fpbg0KU2FtZSB0byBiZWZvcmUu DQo+DQo+PiArICAgICBtZW1zZXQoc2RkLCAwLCAyICogKHNpemVvZigqc2RkKSkpOw0KPj4gKw0K Pj4gKyAgICAgLyogc291cmNlIGRlc2NyaXB0b3IgQ01EICovDQo+PiArICAgICBzZGQtPmNtZCA9 IGNwdV90b19sZTMyKFFETUFfU0RfQ01EX1JEVFRZUEVfQ09IRVJFTlQpOw0KPj4gKyAgICAgc2Rk Kys7DQo+PiArDQo+PiArICAgICAvKiBkZXN0IGRlc2NyaXB0b3IgQ01EICovDQo+PiArICAgICBp ZiAod3J0X2NoYW5nZWQpDQo+PiArICAgICAgICAgICAgIHNkZC0+Y21kID0NCj5jcHVfdG9fbGUz MihMWDIxNjBfUURNQV9ERF9DTURfV1JUVFlQRV9DT0hFUkVOVCk7DQo+PiArICAgICBlbHNlDQo+ PiArICAgICAgICAgICAgIHNkZC0+Y21kID0NCj5jcHVfdG9fbGUzMihRRE1BX0REX0NNRF9XUlRU WVBFX0NPSEVSRU5UKTsNCj4+ICsNCj4+ICsgICAgIG1lbXNldChmX2xpc3QsIDAsIHNpemVvZihz dHJ1Y3QgZHBhYTJfZmxfZW50cnkpKTsNCj4+ICsNCj4+ICsgICAgIC8qIGZpcnN0IGZyYW1lIGxp c3QgdG8gc291cmNlIGRlc2NyaXB0b3IgKi8NCj4+ICsgICAgIGRwYWEyX2ZsX3NldF9hZGRyKGZf bGlzdCwgZHBhYTJfY29tcC0+ZGVzY19idXNfYWRkcik7DQo+PiArICAgICBkcGFhMl9mbF9zZXRf bGVuKGZfbGlzdCwgMHgyMCk7DQo+PiArICAgICBkcGFhMl9mbF9zZXRfZm9ybWF0KGZfbGlzdCwg UURNQV9GTF9GTVRfU0JGIHwNCj5RRE1BX0ZMX1NMX0xPTkcpOw0KPj4gKw0KPj4gKyAgICAgLyog YnlwYXNzIG1lbW9yeSB0cmFuc2xhdGlvbiAqLw0KPj4gKyAgICAgaWYgKHNtbXVfZGlzYWJsZSkN Cj4+ICsgICAgICAgICAgICAgZl9saXN0LT5icGlkID0gY3B1X3RvX2xlMTYoUURNQV9GTF9CTVRf RU5BQkxFKTsgfQ0KPj4gKw0KPj4gKy8qIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZnJhbWUgbGlz dCAqLyBzdGF0aWMgdm9pZA0KPj4gK2RwYWEyX3FkbWFfcG9wdWxhdGVfZnJhbWVzKHN0cnVjdCBk cGFhMl9mbF9lbnRyeSAqZl9saXN0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9h ZGRyX3QgZHN0LCBkbWFfYWRkcl90IHNyYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3QgbGVuLCB1aW50OF90IGZtdCkgew0KPj4gKyAgICAgLyogc291cmNlIGZyYW1lIGxpc3Qg dG8gc291cmNlIGJ1ZmZlciAqLw0KPj4gKyAgICAgbWVtc2V0KGZfbGlzdCwgMCwgc2l6ZW9mKHN0 cnVjdCBkcGFhMl9mbF9lbnRyeSkpOw0KPj4gKw0KPj4gKyAgICAgZHBhYTJfZmxfc2V0X2FkZHIo Zl9saXN0LCBzcmMpOw0KPj4gKyAgICAgZHBhYTJfZmxfc2V0X2xlbihmX2xpc3QsIGxlbik7DQo+ PiArDQo+PiArICAgICAvKiBzaW5nbGUgYnVmZmVyIGZyYW1lIG9yIHNjYXR0ZXIgZ2F0aGVyIGZy YW1lICovDQo+PiArICAgICBkcGFhMl9mbF9zZXRfZm9ybWF0KGZfbGlzdCwgKGZtdCB8IFFETUFf RkxfU0xfTE9ORykpOw0KPj4gKw0KPj4gKyAgICAgLyogYnlwYXNzIG1lbW9yeSB0cmFuc2xhdGlv biAqLw0KPj4gKyAgICAgaWYgKHNtbXVfZGlzYWJsZSkNCj4+ICsgICAgICAgICAgICAgZl9saXN0 LT5icGlkID0gY3B1X3RvX2xlMTYoUURNQV9GTF9CTVRfRU5BQkxFKTsNCj4+ICsNCj4+ICsgICAg IGZfbGlzdCsrOw0KPj4gKw0KPj4gKyAgICAgLyogZGVzdGluYXRpb24gZnJhbWUgbGlzdCB0byBk ZXN0aW5hdGlvbiBidWZmZXIgKi8NCj4+ICsgICAgIG1lbXNldChmX2xpc3QsIDAsIHNpemVvZihz dHJ1Y3QgZHBhYTJfZmxfZW50cnkpKTsNCj4+ICsNCj4+ICsgICAgIGRwYWEyX2ZsX3NldF9hZGRy KGZfbGlzdCwgZHN0KTsNCj4+ICsgICAgIGRwYWEyX2ZsX3NldF9sZW4oZl9saXN0LCBsZW4pOw0K Pj4gKyAgICAgZHBhYTJfZmxfc2V0X2Zvcm1hdChmX2xpc3QsIChmbXQgfCBRRE1BX0ZMX1NMX0xP TkcpKTsNCj4+ICsgICAgIC8qIHNpbmdsZSBidWZmZXIgZnJhbWUgb3Igc2NhdHRlciBnYXRoZXIg ZnJhbWUgKi8NCj4+ICsgICAgIGRwYWEyX2ZsX3NldF9maW5hbChmX2xpc3QsIFFETUFfRkxfRik7 DQo+PiArICAgICAvKiBieXBhc3MgbWVtb3J5IHRyYW5zbGF0aW9uICovDQo+PiArICAgICBpZiAo c21tdV9kaXNhYmxlKQ0KPj4gKyAgICAgICAgICAgICBmX2xpc3QtPmJwaWQgPSBjcHVfdG9fbGUx NihRRE1BX0ZMX0JNVF9FTkFCTEUpOyB9DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBkbWFfYXN5 bmNfdHhfZGVzY3JpcHRvciAqZHBhYTJfcWRtYV9wcmVwX21lbWNweShzdHJ1Y3QNCj4+ICtkbWFf Y2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBkc3QsDQo+PiArICAgICAgICAgICAgICAgICAgICAgZG1h X2FkZHJfdCBzcmMsIHNpemVfdCBsZW4sIHVsb25nIGZsYWdzKSB7DQo+PiArICAgICBzdHJ1Y3Qg ZHBhYTJfcWRtYV9jaGFuICpkcGFhMl9jaGFuID0NCj50b19kcGFhMl9xZG1hX2NoYW4oY2hhbik7 DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9lbmdpbmUgKmRwYWEyX3FkbWE7DQo+PiArICAg ICBzdHJ1Y3QgZHBhYTJfcWRtYV9jb21wICpkcGFhMl9jb21wOw0KPj4gKyAgICAgc3RydWN0IGRw YWEyX2ZsX2VudHJ5ICpmX2xpc3Q7DQo+PiArICAgICBib29sIHdydF9jaGFuZ2VkOw0KPj4gKyAg ICAgdTMyIGZvcm1hdDsNCj4+ICsNCj4+ICsgICAgIGRwYWEyX3FkbWEgPSBkcGFhMl9jaGFuLT5x ZG1hOw0KPj4gKyAgICAgZHBhYTJfY29tcCA9IGRwYWEyX3FkbWFfcmVxdWVzdF9kZXNjKGRwYWEy X2NoYW4pOw0KPj4gKyAgICAgd3J0X2NoYW5nZWQgPSAoYm9vbClkcGFhMl9xZG1hLT5xZG1hX3dy dHlwZV9maXh1cDsNCj4+ICsNCj4+ICsjaWZkZWYgTE9OR19GT1JNQVQNCj4NCj4gY29tcGlsZSBm bGFnIGFuZCBkZWZpbmUsIHNvIGVsc2UgcGFydCBpcyBkZWFkIGNvZGU/Pw0KT2ssIEkgd2lsbCBh ZGQgaXQgdG8gS2NvbmZpZy4NCj4NCj4+ICsgICAgIGZvcm1hdCA9IFFETUFfRkRfTE9OR19GT1JN QVQ7DQo+PiArI2Vsc2UNCj4+ICsgICAgIGZvcm1hdCA9IFFETUFfRkRfU0hPUlRfRk9STUFUOw0K Pj4gKyNlbmRpZg0KPj4gKyAgICAgLyogcG9wdWxhdGUgRnJhbWUgZGVzY3JpcHRvciAqLw0KPj4g KyAgICAgZHBhYTJfcWRtYV9wb3B1bGF0ZV9mZChmb3JtYXQsIGRwYWEyX2NvbXApOw0KPj4gKw0K Pj4gKyAgICAgZl9saXN0ID0gKHN0cnVjdCBkcGFhMl9mbF9lbnRyeSAqKWRwYWEyX2NvbXAtPmZs X3ZpcnRfYWRkcjsNCj4+ICsNCj4+ICsjaWZkZWYgTE9OR19GT1JNQVQNCj4+ICsgICAgIC8qIGZp cnN0IGZyYW1lIGxpc3QgZm9yIGRlc2NyaXB0b3IgYnVmZmVyIChsb2duIGZvcm1hdCkgKi8NCj4+ ICsgICAgIGRwYWEyX3FkbWFfcG9wdWxhdGVfZmlyc3RfZnJhbWVsKGZfbGlzdCwgZHBhYTJfY29t cCwNCj4+ICt3cnRfY2hhbmdlZCk7DQo+PiArDQo+PiArICAgICBmX2xpc3QrKzsNCj4+ICsjZW5k aWYNCj4+ICsNCj4+ICsgICAgIGRwYWEyX3FkbWFfcG9wdWxhdGVfZnJhbWVzKGZfbGlzdCwgZHN0 LCBzcmMsIGxlbiwNCj4+ICsgUURNQV9GTF9GTVRfU0JGKTsNCj4+ICsNCj4+ICsgICAgIHJldHVy biB2Y2hhbl90eF9wcmVwKCZkcGFhMl9jaGFuLT52Y2hhbiwgJmRwYWEyX2NvbXAtPnZkZXNjLA0K Pj4gK2ZsYWdzKTsgfQ0KPj4gKw0KPj4gK3N0YXRpYyBlbnVtDQo+PiArZG1hX3N0YXR1cyBkcGFh Ml9xZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbWFfY29va2llX3QgY29va2llLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRtYV90eF9zdGF0ZSAqdHhzdGF0ZSkgew0KPj4gKyAgICAg cmV0dXJuIGRtYV9jb29raWVfc3RhdHVzKGNoYW4sIGNvb2tpZSwgdHhzdGF0ZSk7IH0NCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBkcGFhMl9xZG1hX2lzc3VlX3BlbmRpbmcoc3RydWN0IGRtYV9jaGFu ICpjaGFuKSB7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9jaGFuICpkcGFhMl9jaGFuID0N Cj50b19kcGFhMl9xZG1hX2NoYW4oY2hhbik7DQo+PiArICAgICBzdHJ1Y3QgZHBhYTJfcWRtYV9l bmdpbmUgKmRwYWEyX3FkbWEgPSBkcGFhMl9jaGFuLT5xZG1hOw0KPj4gKyAgICAgc3RydWN0IGRw YWEyX3FkbWFfcHJpdiAqcHJpdiA9IGRwYWEyX3FkbWEtPnByaXY7DQo+PiArICAgICBzdHJ1Y3Qg ZHBhYTJfcWRtYV9jb21wICpkcGFhMl9jb21wOw0KPj4gKyAgICAgc3RydWN0IHZpcnRfZG1hX2Rl c2MgKnZkZXNjOw0KPj4gKyAgICAgc3RydWN0IGRwYWEyX2ZkICpmZDsNCj4+ICsgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7DQo+PiArICAgICBpbnQgZXJyOw0KPj4gKw0KPj4gKyAgICAgc3Bpbl9s b2NrX2lycXNhdmUoJmRwYWEyX2NoYW4tPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICsgICAgIHNw aW5fbG9jaygmZHBhYTJfY2hhbi0+dmNoYW4ubG9jayk7DQo+PiArICAgICBpZiAodmNoYW5faXNz dWVfcGVuZGluZygmZHBhYTJfY2hhbi0+dmNoYW4pKSB7DQo+PiArICAgICAgICAgICAgIHZkZXNj ID0gdmNoYW5fbmV4dF9kZXNjKCZkcGFhMl9jaGFuLT52Y2hhbik7DQo+PiArICAgICAgICAgICAg IGlmICghdmRlc2MpDQo+PiArICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfZW5xdWV1ZTsN Cj4+ICsgICAgICAgICAgICAgZHBhYTJfY29tcCA9IHRvX2ZzbF9xZG1hX2NvbXAodmRlc2MpOw0K Pj4gKw0KPj4gKyAgICAgICAgICAgICBmZCA9IChzdHJ1Y3QgZHBhYTJfZmQgKilkcGFhMl9jb21w LT5mZF92aXJ0X2FkZHI7DQo+PiArDQo+PiArICAgICAgICAgICAgIGxpc3RfZGVsKCZ2ZGVzYy0+ bm9kZSk7DQo+PiArICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmRwYWEyX2NvbXAtPmxpc3Qs DQo+PiArICZkcGFhMl9jaGFuLT5jb21wX3VzZWQpOw0KPg0KPndoYXQgZG9lcyB0aGlzIGxpc3Qg ZG8/DQo+DQpJdCBpcyB3aWxsIHVzZWQgaW4gaW50ZXJydXB0IHRvIGRlYWwgZG1hIGpvYnMuDQo+ PiArDQo+PiArICAgICAgICAgICAgIC8qIFRPQk86IHByaW9yaXR5IGhhcmQtY29kZWQgdG8gemVy byAqLw0KPg0KPllvdSBtZWFuIFRPRE8/DQpZZXMuDQo+DQo+PiArICAgICAgICAgICAgIGVyciA9 IGRwYWEyX2lvX3NlcnZpY2VfZW5xdWV1ZV9mcShOVUxMLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJpdi0+dHhfcXVldWVfYXR0clswXS5mcWlkLCBmZCk7DQo+PiArICAgICAg ICAgICAgIGlmIChlcnIpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZHBh YTJfY29tcC0+bGlzdCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgm ZHBhYTJfY29tcC0+bGlzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkcGFhMl9jaGFuLT5jb21wX2ZyZWUpOw0KPj4gKyAgICAgICAgICAgICB9DQo+PiArICAgICB9 DQo+PiArZXJyX2VucXVldWU6DQo+PiArICAgICBzcGluX3VubG9jaygmZHBhYTJfY2hhbi0+dmNo YW4ubG9jayk7DQo+PiArICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcGFhMl9jaGFuLT5x dWV1ZV9sb2NrLCBmbGFncyk7IH0NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9fY29sZCBkcGFhMl9x ZG1hX3NldHVwKHN0cnVjdCBmc2xfbWNfZGV2aWNlICpsc19kZXYpIHsNCj4+ICsgICAgIHN0cnVj dCBkcGFhMl9xZG1hX3ByaXZfcGVyX3ByaW8gKnBwcml2Ow0KPj4gKyAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gJmxzX2Rldi0+ZGV2Ow0KPj4gKyAgICAgc3RydWN0IGRwYWEyX3FkbWFfcHJpdiAq cHJpdjsNCj4+ICsgICAgIHU4IHByaW9fZGVmID0gRFBETUFJX1BSSU9fTlVNOw0KPj4gKyAgICAg aW50IGVycjsNCj4+ICsgICAgIGludCBpOw0KPj4gKw0KPj4gKyAgICAgcHJpdiA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOw0KPj4gKw0KPj4gKyAgICAgcHJpdi0+ZGV2ID0gZGV2Ow0KPj4gKyAgICAg cHJpdi0+ZHBxZG1hX2lkID0gbHNfZGV2LT5vYmpfZGVzYy5pZDsNCj4+ICsNCj4+ICsgICAgIC8q R2V0IHRoZSBoYW5kbGUgZm9yIHRoZSBEUERNQUkgdGhpcyBpbnRlcmZhY2UgaXMgYXNzb2NpYXRl IHdpdGgNCj4+ICsgKi8NCj4NCj5QbGVhc2UgcnVuIGNoZWNrcGF0Y2gsIGl0IHNob3VsZCBoYXZl IHRvbGQgeW91IHRoYXQgeW91IG5lZWQgc3BhY2UgYWZ0ZXINCj5jb21tZW50IG1hcmtlciAvKiBm b28uLi4NCj4NCk9rLCBJIHdpbGwgY2hlY2sgaXQgd2l0aCAtLXN0cmljdC4NCj4+ICsgICAgIGVy ciA9IGRwZG1haV9vcGVuKHByaXYtPm1jX2lvLCAwLCBwcml2LT5kcHFkbWFfaWQsDQo+JmxzX2Rl di0+bWNfaGFuZGxlKTsNCj4+ICsgICAgIGlmIChlcnIpIHsNCj4+ICsgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJkcGRtYWlfb3BlbigpIGZhaWxlZFxuIik7DQo+PiArICAgICAgICAgICAgIHJl dHVybiBlcnI7DQo+PiArICAgICB9DQo+PiArICAgICBkZXZfaW5mbyhkZXYsICJPcGVuZWQgZHBk bWFpIG9iamVjdCBzdWNjZXNzZnVsbHlcbiIpOw0KPj4gKw0KPj4gKyAgICAgZXJyID0gZHBkbWFp X2dldF9hdHRyaWJ1dGVzKHByaXYtPm1jX2lvLCAwLCBsc19kZXYtPm1jX2hhbmRsZSwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpdi0+ZHBkbWFpX2F0dHIpOw0KPj4g KyAgICAgaWYgKGVycikgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImRwZG1haV9n ZXRfYXR0cmlidXRlcygpIGZhaWxlZFxuIik7DQo+PiArICAgICAgICAgICAgIHJldHVybiBlcnI7 DQo+DQo+c28geW91IGRvbnQgY2xvc2Ugd2hhdCB5b3Ugb3BlbmVkIGluIGRwZG1haV9vcGVuKCkg UGxlYXNlIGdpdmUgYSBzZXJpb3VzDQo+dGhvdWdodCBhbmQgdGVzdGluZyB0byB0aGlzIGRyaXZl cg0KT0ssIGdvdCBpdC4NCj4NCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGlmIChwcml2LT5k cGRtYWlfYXR0ci52ZXJzaW9uLm1ham9yID4gRFBETUFJX1ZFUl9NQUpPUikgew0KPj4gKyAgICAg ICAgICAgICBkZXZfZXJyKGRldiwgIkRQRE1BSSBtYWpvciB2ZXJzaW9uIG1pc21hdGNoXG4iDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAiRm91bmQgJXUuJXUsIHN1cHBvcnRlZCB2ZXJz aW9uDQo+aXMgJXUuJXVcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2 LT5kcGRtYWlfYXR0ci52ZXJzaW9uLm1ham9yLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpdi0+ZHBkbWFpX2F0dHIudmVyc2lvbi5taW5vciwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERQRE1BSV9WRVJfTUFKT1IsDQo+RFBETUFJX1ZFUl9NSU5PUik7DQo+ PiArICAgICB9DQo+PiArDQo+PiArICAgICBpZiAocHJpdi0+ZHBkbWFpX2F0dHIudmVyc2lvbi5t aW5vciA+IERQRE1BSV9WRVJfTUlOT1IpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJEUERNQUkgbWlub3IgdmVyc2lvbiBtaXNtYXRjaFxuIg0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZvdW5kICV1LiV1LCBzdXBwb3J0ZWQgdmVyc2lvbg0KPmlzICV1LiV1XG4iLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+ZHBkbWFpX2F0dHIudmVyc2lv bi5tYWpvciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmRwZG1haV9h dHRyLnZlcnNpb24ubWlub3IsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUERN QUlfVkVSX01BSk9SLA0KPkRQRE1BSV9WRVJfTUlOT1IpOw0KPg0KPndoYXQgaXMgdGhlIGltcGxp Y2F0aW9uIG9mIHRoZXNlIGVycm9yLCB3aHkgbm90IGJhaWwgb3V0IG9uIHRoZXNlPw0KVGhlcmUg c2hvdWxkIGJlIHJldHVybi4NCj4NCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHByaXYtPm51 bV9wYWlycyA9IG1pbihwcml2LT5kcGRtYWlfYXR0ci5udW1fb2ZfcHJpb3JpdGllcywNCj5wcmlv X2RlZik7DQo+PiArICAgICBwcHJpdiA9IGtjYWxsb2MocHJpdi0+bnVtX3BhaXJzLCBzaXplb2Yo KnBwcml2KSwgR0ZQX0tFUk5FTCk7DQo+DQo+d2hhdCBpcyB0aGUgY29udGV4dCBvZiB0aGUgZm4s IHNsZWVweSwgYXRvbWljPw0KVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbiBxZG1hIHBy b2JlLEhlcmUgaXMgbm90IGEgY3JpdGljYWwgYXJlYSwNCldoYXQncyB0aGUgcHJvYmxlbSBhYm91 dCB0byB1c2UgR0ZQX0tFUk5FTCwgcGxlYXNlIGxldCBtZSBrbm93Lg0KPg0KPj4gKyAgICAgaWYg KCFwcHJpdikgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImt6YWxsb2MgZm9yIHBw cml2IGZhaWxlZFxuIik7DQo+DQo+dGhpcyBuZWVkIG5vdCBiZSBsb2dnZWQsIGNvcmUgd2lsbCBk byBzbw0KT0suDQo+DQo+PiArICAgICAgICAgICAgIHJldHVybiAtMTsNCj4NCj5yZWFsbHkgLTE/ Pw0KSSB3aWxsIHVwZGF0ZS4NCj4NCj5JIHRoaW5rIHRoaXMgZHJpdmVyIG5lZWRzIG1vcmUgd29y aywgcGxlYXNlIGZpeCB0aGVzZSBpc3N1ZXMgaW4gdGhlIGNvbW1lbnRzDQo+YWJvdmUgYW5kIGFs c28gc2VlIGluIHJlc3Qgb2YgdGhlIGNvZGUNCk9LLCBJIHdpbGwgY2hlY2sgYWxsIG9mIHRob3Nl IHBhdGNoIGFib3V0IHRoZXNlIGlzc3VlcyBpbiByZXN0IG9mIHRoZSBjb2RlLiBUaGFua3MuDQo+ DQpCZXN0IFJlZ2FyZHMsDQpQZW5nDQo+LS0NCj5+Vmlub2QNCg==