From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8F3B2A0350; Tue, 23 Jun 2020 03:54:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0968F1C43F; Tue, 23 Jun 2020 03:54:27 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id BCFC51C19E for ; Tue, 23 Jun 2020 03:54:25 +0200 (CEST) IronPort-SDR: QHqT9NsTwMxN96W7NApFC7CBO0+PlD01AOU6CvgkemsIikOEuPoJrb2/sPIMfHM3oUM/qGSpZa ntOkzCu1yr1g== X-IronPort-AV: E=McAfee;i="6000,8403,9660"; a="228588067" X-IronPort-AV: E=Sophos;i="5.75,268,1589266800"; d="scan'208";a="228588067" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2020 18:54:23 -0700 IronPort-SDR: S7NGagkVzY4cMv3BkE913plDdPbRS9Z44O4Ce3xLgxMhceins6y8q5jHrRN4jIr/QaPg+l57Yt 5wL26elgfmLA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,268,1589266800"; d="scan'208";a="301041650" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 22 Jun 2020 18:54:23 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 22 Jun 2020 18:54:21 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 22 Jun 2020 18:54:21 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 22 Jun 2020 18:54:21 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.100) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 22 Jun 2020 18:54:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hnM1VyKveJqM5sXVMfG2oZDRpUulw++LwUkxxg+bONC11JiOvQlht+GDAFaprv67W+8T6OgsmCwGr0p3pOgU6t5SmLuDaMxlUab+zaLHBzZHDa+PYeLhfsmSuNNr6C8fGRh/ROZPyc39DJzxOTZ4SQaUoKzgJpTOYLuv8CDhmMFJqR3brA9snD4VbvMwLa8RJ8Boa8t2tooymRrCvAYrZW+NpkuOEoe1OUdBcuLdGaKjTQ360lN1dV7NT/yr+eKrMpzwZ0dL/B4WsRmtb6QmF86/A/s0SQnvXOeYSCqV4xVwRTOGjf5f26pADchorRQPfF+CDYHuKO1uNFaPLbgRmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YfXINgENlfcr1eCa3H49m0lOoghWeu2kdGWSf4n4h8=; b=ko5aPDqotX6n8xMEssgpQR8TMb2R02GpwRBV+NRUVEFIXHWT9fSuF0qVlevxqP9v0b4Qttexh/PR6c5YHwdd0pxsmLxdfSxXQGGvXsaI+nSWVgPAd1Tq+IOo6SZb3adYdOx2y6b94RYjSFHQ8QlkRIlNo8EWX4rZ14/akF10eRCbE0XNmyaJOzssJ542HvZD6cHlw5GZfd+EIYsy+BtazJwih7fkXUx7YgY1of6nBJMSjFw7/VVe3+8H4Cn458hDYaqTPnNo4AqMNWVAbT3DMuCUicvunmvjTtQvTb4JhiVOrz/4FFNEadkQWffBKM38Yn6v1iIadcuywRYOdmNEPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YfXINgENlfcr1eCa3H49m0lOoghWeu2kdGWSf4n4h8=; b=BAs3SSDmV7mYX7k6+soxyy1o8zDv3CG5ooVNMhltnYB1qnh42JLd0x6ffSISzDfIOH7oYedse2LfZC1NnPTZIUYXRZnJAyayZ99DFckPoBnIk0v0oqLDB1I9MKgrDnvDgLl3paDc4aFhPd8ls78fvND8IFFI88Ntj5MJdV/ld+Q= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB4629.namprd11.prod.outlook.com (2603:10b6:208:264::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Tue, 23 Jun 2020 01:54:17 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::7cde:8326:5010:c47e]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::7cde:8326:5010:c47e%7]) with mapi id 15.20.3109.027; Tue, 23 Jun 2020 01:54:17 +0000 From: "Xia, Chenbo" To: "Jiang, Cheng1" , "maxime.coquelin@redhat.com" , "Wang, Zhihong" CC: "dev@dpdk.org" , "Fu, Patrick" , "Liang, Cunming" Thread-Topic: [RFC] example/vhost: add support for vhost async data path Thread-Index: AQHWSEHYWF0HBhKl4UONmd6FHuNbfKjlb1XA Date: Tue, 23 Jun 2020 01:54:16 +0000 Message-ID: References: <20200622025914.85175-1-Cheng1.jiang@intel.com> In-Reply-To: <20200622025914.85175-1-Cheng1.jiang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e99cc6df-4276-4723-4426-08d817185686 x-ms-traffictypediagnostic: MN2PR11MB4629: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 04433051BF x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KU544vEmEKyfOq0T9ao/dR3wTVIDObYmlKMlkAPdyZ0mtw8EWzZN/4DIpHEwCRYG8Psqv0IWWj+JYbIw+2jLeewe7wz3hA8HWUYRKe8fT44WNQQbFakl2G3i2lUyP7Xoq81Gl8naIvD/5FTY9y+1hL1/gcBJT+G8ajM9urfI4fboMVlceIFCLuBuV+dud1PfotkZf2VWzUMXnpqvWkfIlFuTFW8gEIbPyMN7vHbjY78ZkIyVEFHaUImjpRvsQUtDMkNuYXwpahBju/N7TUAh3hMnJAHTXErmVyLq3TC/G1XctBPUeDorj5CVeTFTDScxtMP3CMaJx7vTJZ6tqf4OW/MmSbkXqNDmRjYhMlZXh2KMkf1Jx4KNzeAveihA6ukqpsDVzQYTh6Yi/s4tbpj/UQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(366004)(396003)(376002)(346002)(136003)(30864003)(54906003)(110136005)(966005)(7696005)(478600001)(55016002)(9686003)(186003)(6506007)(53546011)(33656002)(26005)(316002)(6636002)(2906002)(86362001)(66476007)(66446008)(52536014)(83380400001)(66946007)(8936002)(8676002)(64756008)(76116006)(5660300002)(66556008)(71200400001)(107886003)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: rjOUG3PThnTmFa5bmNr6G0Kg3x6bW4l5qGROD1Z6b7Saa+Gg2+/ZTy3v8WrlUDPL24T/0HkLIUEyg1zJDdOdGGs1QpywOyQsl6c5/WGDmncepL+CxrCEsJzp4PDchEhluY6Q92pUxWIV7D6oVTFAJVwTRiib1moh7CuZy+iqbQDw2T9uFCPMF+ik/jGsd6BHHYEHCBz6ElZnXLKh1aiCEG191gaLl4++puvezN2oZgvQvCYz6IlRuR69Y3l3ZR5t91kTqr+1/LxwDr4fNRaj0UozqMGQF7wH+PtoFIHS2aJiUyi6kvYJgiJ/rWW6ge4suxau6uledXKWm96TkAYmU+mZXsefqGmb/9M9JufSQ3ZPOF+bn1FsPPcKfVPrwhghEfy2OeF6OnlXWq88PIosRj+RD7u8qd5JCkzZ+zTVEy6+arHAuY41tU/X6zw/oWN6C+rU634xgVsqxOY1rpXySeVA6bAdQQHKH0PPBS6ghrbSQcVeES46MbVuKCPBpUoF Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: e99cc6df-4276-4723-4426-08d817185686 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2020 01:54:16.9330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vW7DfSHzZ8bDVC4gKDWjLBXSegx6nEoyW4hqOD8I7iNp3ZXNYb58F1qRibFfFePP48vUcjbJyA8aoyVTVCLeBg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4629 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [RFC] example/vhost: add support for vhost async data path X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQ2hlbmcsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmlhbmcs IENoZW5nMSA8Y2hlbmcxLmppYW5nQGludGVsLmNvbT4NCj4gU2VudDogTW9uZGF5LCBKdW5lIDIy LCAyMDIwIDEwOjU5IEFNDQo+IFRvOiBtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbTsgWGlhLCBD aGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsNCj4gV2FuZywgWmhpaG9uZyA8emhpaG9uZy53 YW5nQGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgRnUsIFBhdHJpY2sgPHBhdHJpY2su ZnVAaW50ZWwuY29tPjsgTGlhbmcsIEN1bm1pbmcNCj4gPGN1bm1pbmcubGlhbmdAaW50ZWwuY29t PjsgSmlhbmcsIENoZW5nMSA8Y2hlbmcxLmppYW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogW1JG Q10gZXhhbXBsZS92aG9zdDogYWRkIHN1cHBvcnQgZm9yIHZob3N0IGFzeW5jIGRhdGEgcGF0aA0K PiANCj4gVGhpcyBwYXRjaCBtYWtlcyB2aG9zdC12c3dpdGNoIGJlIGFibGUgdG8gdXNlIHZob3N0 IGFzeW5jaHJvbm91cyBhcGkgZm9yDQo+IGVucXVldWUgb3BlcmF0aW9ucy4gRGVtb25zdHJhdGVk IGhvdyB0aGUgYXBwbGljYXRpb24gbGV2ZXJhZ2UgSU9BVCBETUENCj4gY2hhbm5lbCB3aXRoIHZo b3N0IGFzeW5jIGFwaS4gU2luY2UgdGhpcyBpcyBhbiBlYXJseSBwcmV2aWV3IHBhdGNoLCB0aGUN Cj4gcGVyZm9ybWFuY2UgaGFzIG5vdCBiZWVuIGZ1bGx5IG9wdGltaXplZCBhbmQgaXQncyBub3Qg c3VnZ2VzdGVkIHRvIHVzZSB0aGlzDQo+IHBhdGNoIGFzIGEgdG9vbCBmb3IgYmVuY2htYXJrLg0K PiANCj4gV2UgaW50cm9kdWNlIHR3byBwYXJhbWV0ZXJzIHRvIGVuYWJsZSBETUEgYWNjZWxlcmF0 aW9uIGZvciBUeCBvcGVyYXRpb25zIG9mDQo+IHF1ZXVlczoNCj4g4oCTYXN5bmNfdmhvc3RfZHJp dmVyIEFzeW5jIHZob3N0LXVzZXIgbmV0IGRyaXZlciB3aGljaCBkZW1vbnN0cmF0ZXMgaG93IHRv IHVzZQ0KPiB0aGUgYXN5bmMgdmhvc3QgQVBJcyB3aWxsIGJlIHVzZWQgd2hlbiB0aGlzIG9wdGlv biBpcyBnaXZlbi4gSXQgaXMgZGlzYWJsZWQgYnkNCj4gZGVmYXVsdC4NCj4gDQo+IC1kbWFzIFRo aXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgYXNzaWduZWQgRE1BIGRldmljZSBv ZiBhIHF1ZXVlLg0KPiANCj4gVGhpcyBwYXRjaCBkZXBlbmRzIG9uIGZvbGxvd2luZyBwYXRjaCBz ZXQ6DQo+IGh0dHA6Ly9wYXRjaGVzLmRwZGsub3JnL2NvdmVyLzcxMjY1Lw0KPiANCj4gU2lnbmVk LW9mZi1ieTogQ2hlbmcgSmlhbmcgPENoZW5nMS5qaWFuZ0BpbnRlbC5jb20+DQo+IC0tLQ0KPiAg ZXhhbXBsZXMvdmhvc3QvbWFpbi5jIHwgMjQ2DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQ0KPiAgZXhhbXBsZXMvdmhvc3QvbWFpbi5oIHwgICAxICsNCj4gIDIg ZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmhvc3QvbWFpbi5jIGIvZXhhbXBsZXMvdmhvc3QvbWFpbi5j IGluZGV4DQo+IGFiNjQ5YmYxNC4uNDZkZDI4MmUwIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy92 aG9zdC9tYWluLmMNCj4gKysrIGIvZXhhbXBsZXMvdmhvc3QvbWFpbi5jDQo+IEBAIC0yNCwxMSAr MjQsMTUgQEANCj4gICNpbmNsdWRlIDxydGVfaXAuaD4NCj4gICNpbmNsdWRlIDxydGVfdGNwLmg+ DQo+ICAjaW5jbHVkZSA8cnRlX3BhdXNlLmg+DQo+ICsjaW5jbHVkZSA8cnRlX3Zob3N0X2FzeW5j Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX3Jhd2Rldi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9pb2F0X3Jh d2Rldi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9wY2kuaD4NCj4gDQo+ICAjaW5jbHVkZSAibWFpbi5o Ig0KPiANCj4gICNpZm5kZWYgTUFYX1FVRVVFUw0KPiAtI2RlZmluZSBNQVhfUVVFVUVTIDEyOA0K PiArI2RlZmluZSBNQVhfUVVFVUVTIDUxMg0KPiAgI2VuZGlmDQo+IA0KPiAgLyogdGhlIG1heGlt dW0gbnVtYmVyIG9mIGV4dGVybmFsIHBvcnRzIHN1cHBvcnRlZCAqLyBAQCAtNTgsNiArNjIsMTAg QEANCj4gIC8qIE1heGltdW0gbG9uZyBvcHRpb24gbGVuZ3RoIGZvciBvcHRpb24gcGFyc2luZy4g Ki8gICNkZWZpbmUNCj4gTUFYX0xPTkdfT1BUX1NaIDY0DQo+IA0KPiArI2RlZmluZSBJT0FUX1JJ TkdfU0laRSA0MDk2DQo+ICsNCj4gKyNkZWZpbmUgTUFYX0VOUVVFVUVEX1NJWkUgMjA0OA0KPiAr DQo+ICAvKiBtYXNrIG9mIGVuYWJsZWQgcG9ydHMgKi8NCj4gIHN0YXRpYyB1aW50MzJfdCBlbmFi bGVkX3BvcnRfbWFzayA9IDA7DQo+IA0KPiBAQCAtOTYsNiArMTA0LDIwIEBAIHN0YXRpYyBpbnQg ZGVxdWV1ZV96ZXJvX2NvcHk7DQo+IA0KPiAgc3RhdGljIGludCBidWlsdGluX25ldF9kcml2ZXI7 DQo+IA0KPiArc3RhdGljIGludCBhc3luY192aG9zdF9kcml2ZXI7DQo+ICsNCj4gK3N0cnVjdCBk bWFfaW5mbyB7DQo+ICsJc3RydWN0IHJ0ZV9wY2lfYWRkciBhZGRyOw0KPiArCXVpbnQxNl90IGRl dl9pZDsNCj4gKwlib29sIGlzX3ZhbGlkOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IGRtYV9pbmZv X2lucHV0IHsNCj4gKwlzdHJ1Y3QgZG1hX2luZm8gZG1hc1tSVEVfTUFYX1FVRVVFU19QRVJfUE9S VCAqIDJdOw0KPiArCXVpbnQxNl90IG5yOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBk bWFfaW5mb19pbnB1dCBkbWFfYmluZFsyMF07DQoNClNob3VsZCAnMjAnIGJlIE1BWF9WSE9TVF9E RVZJQ0UgYXMgdGhpcyBpcyBpbmRleGVkIGJ5IHZpZD8NCg0KPiAgLyogU3BlY2lmeSB0aW1lb3V0 IChpbiB1c2Vjb25kcykgYmV0d2VlbiByZXRyaWVzIG9uIFJYLiAqLyAgc3RhdGljIHVpbnQzMl90 DQo+IGJ1cnN0X3J4X2RlbGF5X3RpbWUgPSBCVVJTVF9SWF9XQUlUX1VTOw0KPiAgLyogU3BlY2lm eSB0aGUgbnVtYmVyIG9mIHJldHJpZXMgb24gUlguICovIEBAIC0xNDEsNiArMTYzLDYxIEBAIHN0 YXRpYyBzdHJ1Y3QNCj4gcnRlX2V0aF9jb25mIHZtZHFfY29uZl9kZWZhdWx0ID0gew0KPiAgCX0s DQo+ICB9Ow0KPiANCj4gK3N0YXRpYyBpbnQNCj4gK2lvYXRfdHJhbnNmZXJfZGF0YV9jYihpbnQg dmlkLCB1aW50MTZfdCBxdWV1ZV9pZCwgc3RydWN0IGRtYV90cmFuc19kZXNjDQo+ICpkZXNjcywN Cj4gKwkJc3RydWN0IGRtYV90cmFuc19zdGF0dXMgKm9wYXF1ZV9kYXRhLCB1aW50MTZfdCBjb3Vu dCkgew0KPiArCWludCByZXQ7DQo+ICsJdWludDE2X3QgaV9kZXNjOw0KPiArDQo+ICsJc3RydWN0 IGlvdl9pdCAqc3JjID0gTlVMTDsNCj4gKwlzdHJ1Y3QgaW92X2l0ICpkc3QgPSBOVUxMOw0KPiAr CXVuc2lnbmVkIGxvbmcgaV9zZWc7DQo+ICsNCj4gKwlpbnQgZGV2X2lkID0gZG1hX2JpbmRbdmlk XS5kbWFzW3F1ZXVlX2lkICogMiArIFZJUlRJT19SWFFdLmRldl9pZDsNCj4gKwlpZiAobGlrZWx5 KCFvcGFxdWVfZGF0YSkpIHsNCj4gKwkJZm9yIChpX2Rlc2MgPSAwOyBpX2Rlc2MgPCBjb3VudDsg aV9kZXNjKyspIHsNCj4gKwkJCXNyYyA9IGRlc2NzW2lfZGVzY10uc3JjOw0KPiArCQkJZHN0ID0g ZGVzY3NbaV9kZXNjXS5kc3Q7DQo+ICsJCQlpX3NlZyA9IDA7DQo+ICsJCQl3aGlsZSAoaV9zZWcg PCBzcmMtPm5yX3NlZ3MpIHsNCj4gKwkJCQlyZXQgPSBydGVfaW9hdF9lbnF1ZXVlX2NvcHkoZGV2 X2lkLA0KPiArCQkJCQkodWludHB0cl90KShzcmMtPmlvdltpX3NlZ10uaW92X2Jhc2UpDQo+ICsJ CQkJCQkrIHNyYy0+b2Zmc2V0LA0KPiArCQkJCQkodWludHB0cl90KShkc3QtPmlvdltpX3NlZ10u aW92X2Jhc2UpDQo+ICsJCQkJCQkrIGRzdC0+b2Zmc2V0LA0KPiArCQkJCQlzcmMtPmlvdltpX3Nl Z10uaW92X2xlbiwNCj4gKwkJCQkJMCwNCj4gKwkJCQkJMCwNCj4gKwkJCQkJMCk7DQo+ICsJCQkJ aWYgKHJldCAhPSAxKQ0KPiArCQkJCQlicmVhazsNCj4gKwkJCQlpX3NlZysrOw0KPiArCQkJfQ0K PiArCQl9DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyogT3BhcXVlIGRhdGEgaXMgbm90IHN1cHBvcnRl ZCAqLw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArCS8qIHJpbmcgdGhlIGRvb2xiZWxsICov DQoNCnMvZG9vbGJlbGwvZG9vcmJlbGwNCg0KPiArCXJ0ZV9pb2F0X2RvX2NvcGllcyhkZXZfaWQp Ow0KPiArCXJldHVybiBpX2Rlc2M7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2lvYXRf Y2hlY2tfY29tcGxldGVkX2NvcGllc19jYihpbnQgdmlkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4g KwkJc3RydWN0IGRtYV90cmFuc19zdGF0dXMgKm9wYXF1ZV9kYXRhLA0KPiArCQl1aW50MTZfdCBt YXhfcGFja2V0cyBfX3J0ZV91bnVzZWQpDQo+ICt7DQo+ICsJaWYgKCFvcGFxdWVfZGF0YSkgew0K PiArCQl1aW50cHRyX3QgZHVtcFsyNTVdOw0KPiArCQlyZXR1cm4NCj4gcnRlX2lvYXRfY29tcGxl dGVkX2NvcGllcyhkbWFfYmluZFt2aWRdLmRtYXNbcXVldWVfaWQgKiAyDQo+ICsJCQkrIFZJUlRJ T19SWFFdLmRldl9pZCwgMjU1LCBkdW1wLCBkdW1wKTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBP cGFxdWUgZGF0YSBpcyBub3Qgc3VwcG9ydGVkICovDQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ ICt9DQo+IA0KPiAgc3RhdGljIHVuc2lnbmVkIGxjb3JlX2lkc1tSVEVfTUFYX0xDT1JFXTsgIHN0 YXRpYyB1aW50MTZfdA0KPiBwb3J0c1tSVEVfTUFYX0VUSFBPUlRTXTsgQEAgLTE4Niw2ICsyNjMs OTQgQEAgc3RydWN0IG1idWZfdGFibGUNCj4gbGNvcmVfdHhfcXVldWVbUlRFX01BWF9MQ09SRV07 DQo+ICAgKiBCdWlsZHMgdXAgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBmb3IgVk1EUSBWTEFO IHBvb2wgbWFwDQo+ICAgKiBhY2NvcmRpbmcgdG8gdGhlIHBvb2wgJiBxdWV1ZSBsaW1pdHMuDQo+ ICAgKi8NCj4gKw0KPiArc3RhdGljIGlubGluZSBpbnQNCj4gK29wZW5fZG1hKGNvbnN0IGNoYXIg KnZhbHVlLCB2b2lkICpkbWFfYmluZF9pbmZvKSB7DQo+ICsJc3RydWN0IGRtYV9pbmZvX2lucHV0 ICpkbWFfaW5mbyA9IGRtYV9iaW5kX2luZm87DQo+ICsJY2hhciAqaW5wdXQgPSBzdHJuZHVwKHZh bHVlLCBzdHJsZW4odmFsdWUpICsgMSk7DQo+ICsJY2hhciAqYWRkcnMgPSBpbnB1dDsNCj4gKwlj aGFyICpwdHJzWzJdOw0KPiArCWNoYXIgKnN0YXJ0LCAqZW5kLCAqc3Vic3RyOw0KPiArCWludDY0 X3QgcWlkLCB2cmluZ19pZDsNCj4gKwlzdHJ1Y3QgcnRlX2lvYXRfcmF3ZGV2X2NvbmZpZyBjb25m aWc7DQo+ICsJc3RydWN0IHJ0ZV9yYXdkZXZfaW5mbyBpbmZvID0geyAuZGV2X3ByaXZhdGUgPSAm Y29uZmlnIH07DQo+ICsJY2hhciBuYW1lWzMyXTsNCj4gKwlpbnQgZGV2X2lkOw0KPiArCWludCBy ZXQgPSAwOw0KPiArDQo+ICsJd2hpbGUgKGlzYmxhbmsoKmFkZHJzKSkNCj4gKwkJYWRkcnMrKzsN Cj4gKwlpZiAoKmFkZHJzID09ICdcMCcpIHsNCj4gKwkJcmV0ID0gLTE7DQo+ICsJCWdvdG8gb3V0 Ow0KPiArCX0NCj4gKw0KPiArCS8qIHByb2Nlc3MgRE1BIGRldmljZXMgd2l0aGluIGJyYWNrZXQu ICovDQo+ICsJYWRkcnMrKzsNCj4gKwlzdWJzdHIgPSBzdHJ0b2soYWRkcnMsICI7XSIpOw0KPiAr CWlmICghc3Vic3RyKSB7DQo+ICsJCXJldCA9IC0xOw0KPiArCQlnb3RvIG91dDsNCj4gKwl9DQo+ ICsNCj4gKwlkbyB7DQo+ICsJCXJ0ZV9zdHJzcGxpdChzdWJzdHIsIHN0cmxlbihzdWJzdHIpLCBw dHJzLCAyLCAnQCcpOw0KPiArDQo+ICsJCXN0YXJ0ID0gc3Ryc3RyKHB0cnNbMF0sICJ0eHEiKTsN Cj4gKwkJaWYgKHN0YXJ0ID09IE5VTEwpIHsNCj4gKwkJCXJldCA9IC0xOw0KPiArCQkJZ290byBv dXQ7DQo+ICsJCX0NCj4gKw0KPiArCQlzdGFydCArPSAzOw0KPiArCQlxaWQgPSBzdHJ0b2woc3Rh cnQsICZlbmQsIDApOw0KPiArCQlpZiAoZW5kID09IHN0YXJ0KSB7DQo+ICsJCQlyZXQgPSAtMTsN Cj4gKwkJCWdvdG8gb3V0Ow0KPiArCQl9DQo+ICsNCj4gKwkJdnJpbmdfaWQgPSBxaWQgKiAyICsg VklSVElPX1JYUTsNCj4gKwkJaWYgKHJ0ZV9wY2lfYWRkcl9wYXJzZShwdHJzWzFdLA0KPiArCQkJ CSAgICAgICAmZG1hX2luZm8tPmRtYXNbdnJpbmdfaWRdLmFkZHIpIDwgMCkgew0KPiArCQkJcmV0 ID0gLTE7DQo+ICsJCQlnb3RvIG91dDsNCj4gKwkJfQ0KPiArDQo+ICsJCXJ0ZV9wY2lfZGV2aWNl X25hbWUoJmRtYV9pbmZvLT5kbWFzW3ZyaW5nX2lkXS5hZGRyLA0KPiArCQkJCSAgICBuYW1lLCBz aXplb2YobmFtZSkpOw0KPiArCQlkZXZfaWQgPSBydGVfcmF3ZGV2X2dldF9kZXZfaWQobmFtZSk7 DQo+ICsJCWlmIChkZXZfaWQgPT0gKHVpbnQxNl90KSgtRU5PREVWKSB8fA0KPiArCQkgICAgZGV2 X2lkID09ICh1aW50MTZfdCkoLUVJTlZBTCkpIHsNCj4gKwkJCXJldCA9IC0xOw0KPiArCQkJZ290 byBvdXQ7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAocnRlX3Jhd2Rldl9pbmZvX2dldChkZXZfaWQs ICZpbmZvKSA8IDAgfHwNCj4gKwkJICAgIHN0cnN0cihpbmZvLmRyaXZlcl9uYW1lLCAiaW9hdCIp ID09IE5VTEwpIHsNCj4gKwkJCXJldCA9IC0xOw0KPiArCQkJZ290byBvdXQ7DQo+ICsJCX0NCj4g Kw0KPiArCQlkbWFfaW5mby0+ZG1hc1t2cmluZ19pZF0uZGV2X2lkID0gZGV2X2lkOw0KPiArCQlk bWFfaW5mby0+ZG1hc1t2cmluZ19pZF0uaXNfdmFsaWQgPSB0cnVlOw0KPiArCQljb25maWcucmlu Z19zaXplID0gSU9BVF9SSU5HX1NJWkU7DQo+ICsJCWlmIChydGVfcmF3ZGV2X2NvbmZpZ3VyZShk ZXZfaWQsICZpbmZvKSA8IDApIHsNCj4gKwkJCXJldCA9IC0xOw0KPiArCQkJZ290byBvdXQ7DQo+ ICsJCX0NCj4gKwkJcnRlX3Jhd2Rldl9zdGFydChkZXZfaWQpOw0KPiArDQo+ICsJCWRtYV9pbmZv LT5ucisrOw0KPiArDQo+ICsJCXN1YnN0ciA9IHN0cnRvayhOVUxMLCAiO10iKTsNCj4gKwl9IHdo aWxlIChzdWJzdHIpOw0KPiArDQo+ICtvdXQ6DQo+ICsJZnJlZShpbnB1dCk7DQo+ICsJcmV0dXJu IHJldDsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGlubGluZSBpbnQNCj4gIGdldF9ldGhfY29uZihz dHJ1Y3QgcnRlX2V0aF9jb25mICpldGhfY29uZiwgdWludDMyX3QgbnVtX2RldmljZXMpICB7IEBA IC0NCj4gNDg4LDYgKzY1Myw4IEBAIHVzX3Zob3N0X3BhcnNlX2FyZ3MoaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQ0KPiAgCQl7ImNsaWVudCIsIG5vX2FyZ3VtZW50LCAmY2xpZW50X21vZGUsIDF9LA0K PiAgCQl7ImRlcXVldWUtemVyby1jb3B5Iiwgbm9fYXJndW1lbnQsICZkZXF1ZXVlX3plcm9fY29w eSwgMX0sDQo+ICAJCXsiYnVpbHRpbi1uZXQtZHJpdmVyIiwgbm9fYXJndW1lbnQsICZidWlsdGlu X25ldF9kcml2ZXIsIDF9LA0KPiArCQl7ImFzeW5jX3Zob3N0X2RyaXZlciIsIG5vX2FyZ3VtZW50 LCAmYXN5bmNfdmhvc3RfZHJpdmVyLCAxfSwNCj4gKwkJeyJkbWFzIiwgcmVxdWlyZWRfYXJndW1l bnQsIE5VTEwsIDB9LA0KPiAgCQl7TlVMTCwgMCwgMCwgMH0sDQo+ICAJfTsNCj4gDQo+IEBAIC02 MjMsMTMgKzc5MCwyNSBAQCB1c192aG9zdF9wYXJzZV9hcmdzKGludCBhcmdjLCBjaGFyICoqYXJn dikNCj4gIAkJCQkJCSJzb2NrZXQtZmlsZSIsDQo+IE1BWF9MT05HX09QVF9TWikpIHsNCj4gIAkJ CQlpZiAodXNfdmhvc3RfcGFyc2Vfc29ja2V0X3BhdGgob3B0YXJnKSA9PSAtMSkgew0KPiAgCQkJ CQlSVEVfTE9HKElORk8sIFZIT1NUX0NPTkZJRywNCj4gLQkJCQkJIkludmFsaWQgYXJndW1lbnQg Zm9yIHNvY2tldCBuYW1lDQo+IChNYXggJWQgY2hhcmFjdGVycylcbiIsDQo+IC0JCQkJCVBBVEhf TUFYKTsNCj4gKwkJCQkJCSJJbnZhbGlkIGFyZ3VtZW50IGZvciBzb2NrZXQNCj4gbmFtZSAoTWF4 ICVkIGNoYXJhY3RlcnMpXG4iLA0KPiArCQkJCQkJUEFUSF9NQVgpOw0KPiAgCQkJCQl1c192aG9z dF91c2FnZShwcmduYW1lKTsNCj4gIAkJCQkJcmV0dXJuIC0xOw0KPiAgCQkJCX0NCj4gIAkJCX0N Cj4gDQo+ICsJCQlpZiAoIXN0cm5jbXAobG9uZ19vcHRpb25bb3B0aW9uX2luZGV4XS5uYW1lLA0K PiArCQkJCQkJImRtYXMiLCBNQVhfTE9OR19PUFRfU1opKQ0KPiB7DQo+ICsJCQkJaWYgKG9wZW5f ZG1hKG9wdGFyZywgJihkbWFfYmluZFswXSkpID09IC0xKSB7DQo+ICsJCQkJCWlmICgqb3B0YXJn ID09IC0xKSB7DQo+ICsJCQkJCQlSVEVfTE9HKElORk8sDQo+IFZIT1NUX0NPTkZJRywNCj4gKwkJ CQkJCQkiV3JvbmcgRE1BIGFyZ3NcbiIpOw0KPiArCQkJCQkJdXNfdmhvc3RfdXNhZ2UocHJnbmFt ZSk7DQo+ICsJCQkJCQlyZXR1cm4gLTE7DQo+ICsJCQkJCX0NCj4gKwkJCQl9DQo+ICsJCQl9DQo+ ICsNCj4gIAkJCWJyZWFrOw0KPiANCj4gIAkJCS8qIEludmFsaWQgb3B0aW9uIC0gcHJpbnQgb3B0 aW9ucy4gKi8gQEAgLTc4NSw5ICs5NjQsMjYNCj4gQEAgdmlydGlvX3htaXQoc3RydWN0IHZob3N0 X2RldiAqZHN0X3ZkZXYsIHN0cnVjdCB2aG9zdF9kZXYgKnNyY192ZGV2LA0KPiAgCSAgICBzdHJ1 Y3QgcnRlX21idWYgKm0pDQo+ICB7DQo+ICAJdWludDE2X3QgcmV0Ow0KPiArCXN0cnVjdCBydGVf bWJ1ZiAqbV9jcGxbMV07DQo+IA0KPiAgCWlmIChidWlsdGluX25ldF9kcml2ZXIpIHsNCj4gIAkJ cmV0ID0gdnNfZW5xdWV1ZV9wa3RzKGRzdF92ZGV2LCBWSVJUSU9fUlhRLCAmbSwgMSk7DQo+ICsJ fSBlbHNlIGlmIChhc3luY192aG9zdF9kcml2ZXIpIHsNCj4gKwkJcmV0ID0gcnRlX3Zob3N0X3N1 Ym1pdF9lbnF1ZXVlX2J1cnN0KGRzdF92ZGV2LT52aWQsDQo+IFZJUlRJT19SWFEsDQo+ICsJCQkJ CQkmbSwgMSk7DQo+ICsNCj4gKwkJaWYgKGxpa2VseShyZXQpKSB7DQo+ICsJCQlkc3RfdmRldi0+ bnJfYXN5bmNfcGt0cysrOw0KPiArCQkJcnRlX21idWZfcmVmY250X3VwZGF0ZShtLCAxKTsNCj4g KwkJfQ0KPiArDQo+ICsJCXdoaWxlIChsaWtlbHkoZHN0X3ZkZXYtPm5yX2FzeW5jX3BrdHMpKSB7 DQo+ICsJCQlkc3RfdmRldi0+bnJfYXN5bmNfcGt0cyA9DQo+ICsJCQkJcnRlX3Zob3N0X3BvbGxf ZW5xdWV1ZV9jb21wbGV0ZWQoZHN0X3ZkZXYtDQo+ID52aWQsDQo+ICsJCQkJCVZJUlRJT19SWFEs IG1fY3BsLCAxKTsNCg0KSSB0aGluayBucl9hc3luY19wa3RzIHNob3VsZCBiZSBjaGFuZ2VkIG9u bHkgd2hlbiBydGVfdmhvc3RfcG9sbF9lbnF1ZXVlX2NvbXBsZXRlZCBzdWNjZWVkPw0KDQpUaGFu a3MhDQpDaGVuYm8NCg0KPiArCQkJZHN0X3ZkZXYtPm5yX2FzeW5jX3BrdHMtLTsNCj4gKwkJCXJ0 ZV9wa3RtYnVmX2ZyZWUoKm1fY3BsKTsNCj4gKwkJfQ0KPiAgCX0gZWxzZSB7DQo+ICAJCXJldCA9 IHJ0ZV92aG9zdF9lbnF1ZXVlX2J1cnN0KGRzdF92ZGV2LT52aWQsIFZJUlRJT19SWFEsICZtLA0K PiAxKTsNCj4gIAl9DQo+IEBAIC0xMDM2LDYgKzEyMzIsMTkgQEAgZHJhaW5fbWJ1Zl90YWJsZShz dHJ1Y3QgbWJ1Zl90YWJsZSAqdHhfcSkNCj4gIAl9DQo+ICB9DQo+IA0KPiArc3RhdGljIF9fcnRl X2Fsd2F5c19pbmxpbmUgdm9pZA0KPiArY29tcGxldGVfYXN5bmNfcGt0cyhzdHJ1Y3Qgdmhvc3Rf ZGV2ICp2ZGV2LCB1aW50MTZfdCBxaWQpIHsNCj4gKwlzdHJ1Y3QgcnRlX21idWYgKnBfY3BsW01B WF9QS1RfQlVSU1RdOw0KPiArCXVpbnQxNl90IGNvbXBsZXRlX2NvdW50Ow0KPiArDQo+ICsJY29t cGxldGVfY291bnQgPSBydGVfdmhvc3RfcG9sbF9lbnF1ZXVlX2NvbXBsZXRlZCh2ZGV2LT52aWQs DQo+ICsJCQkJCQlxaWQsIHBfY3BsLCBNQVhfUEtUX0JVUlNUKTsNCj4gKwl2ZGV2LT5ucl9hc3lu Y19wa3RzIC09IGNvbXBsZXRlX2NvdW50Ow0KPiArCWlmIChjb21wbGV0ZV9jb3VudCkNCj4gKwkJ ZnJlZV9wa3RzKHBfY3BsLCBjb21wbGV0ZV9jb3VudCk7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBf X3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gIGRyYWluX2V0aF9yeChzdHJ1Y3Qgdmhvc3RfZGV2 ICp2ZGV2KQ0KPiAgew0KPiBAQCAtMTA0NCw2ICsxMjUzLDEwIEBAIGRyYWluX2V0aF9yeChzdHJ1 Y3Qgdmhvc3RfZGV2ICp2ZGV2KQ0KPiANCj4gIAlyeF9jb3VudCA9IHJ0ZV9ldGhfcnhfYnVyc3Qo cG9ydHNbMF0sIHZkZXYtPnZtZHFfcnhfcSwNCj4gIAkJCQkgICAgcGt0cywgTUFYX1BLVF9CVVJT VCk7DQo+ICsNCj4gKwl3aGlsZSAobGlrZWx5KHZkZXYtPm5yX2FzeW5jX3BrdHMpKQ0KPiArCQlj b21wbGV0ZV9hc3luY19wa3RzKHZkZXYsIFZJUlRJT19SWFEpOw0KPiArDQo+ICAJaWYgKCFyeF9j b3VudCkNCj4gIAkJcmV0dXJuOw0KPiANCj4gQEAgLTEwNjgsMTYgKzEyODEsMjIgQEAgZHJhaW5f ZXRoX3J4KHN0cnVjdCB2aG9zdF9kZXYgKnZkZXYpDQo+ICAJaWYgKGJ1aWx0aW5fbmV0X2RyaXZl cikgew0KPiAgCQllbnF1ZXVlX2NvdW50ID0gdnNfZW5xdWV1ZV9wa3RzKHZkZXYsIFZJUlRJT19S WFEsDQo+ICAJCQkJCQlwa3RzLCByeF9jb3VudCk7DQo+ICsJfSBlbHNlIGlmIChhc3luY192aG9z dF9kcml2ZXIpIHsNCj4gKwkJZW5xdWV1ZV9jb3VudCA9IHJ0ZV92aG9zdF9zdWJtaXRfZW5xdWV1 ZV9idXJzdCh2ZGV2LT52aWQsDQo+ICsJCQkJCVZJUlRJT19SWFEsIHBrdHMsIHJ4X2NvdW50KTsN Cj4gKwkJdmRldi0+bnJfYXN5bmNfcGt0cyArPSBlbnF1ZXVlX2NvdW50Ow0KPiAgCX0gZWxzZSB7 DQo+ICAJCWVucXVldWVfY291bnQgPSBydGVfdmhvc3RfZW5xdWV1ZV9idXJzdCh2ZGV2LT52aWQs DQo+IFZJUlRJT19SWFEsDQo+ICAJCQkJCQlwa3RzLCByeF9jb3VudCk7DQo+ICAJfQ0KPiArDQo+ ICAJaWYgKGVuYWJsZV9zdGF0cykgew0KPiAgCQlydGVfYXRvbWljNjRfYWRkKCZ2ZGV2LT5zdGF0 cy5yeF90b3RhbF9hdG9taWMsIHJ4X2NvdW50KTsNCj4gIAkJcnRlX2F0b21pYzY0X2FkZCgmdmRl di0+c3RhdHMucnhfYXRvbWljLCBlbnF1ZXVlX2NvdW50KTsNCj4gIAl9DQo+IA0KPiAtCWZyZWVf cGt0cyhwa3RzLCByeF9jb3VudCk7DQo+ICsJaWYgKCFhc3luY192aG9zdF9kcml2ZXIpDQo+ICsJ CWZyZWVfcGt0cyhwa3RzLCByeF9jb3VudCk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIF9fcnRlX2Fs d2F5c19pbmxpbmUgdm9pZA0KPiBAQCAtMTIyNCw2ICsxNDQzLDkgQEAgZGVzdHJveV9kZXZpY2Uo aW50IHZpZCkNCj4gIAkJIiglZCkgZGV2aWNlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBkYXRhIGNv cmVcbiIsDQo+ICAJCXZkZXYtPnZpZCk7DQo+IA0KPiArCWlmIChhc3luY192aG9zdF9kcml2ZXIp DQo+ICsJCXJ0ZV92aG9zdF9hc3luY19jaGFubmVsX3VucmVnaXN0ZXIodmlkLCBWSVJUSU9fUlhR KTsNCj4gKw0KPiAgCXJ0ZV9mcmVlKHZkZXYpOw0KPiAgfQ0KPiANCj4gQEAgLTEyMzgsNiArMTQ2 MCwxMiBAQCBuZXdfZGV2aWNlKGludCB2aWQpDQo+ICAJdWludDMyX3QgZGV2aWNlX251bV9taW4g PSBudW1fZGV2aWNlczsNCj4gIAlzdHJ1Y3Qgdmhvc3RfZGV2ICp2ZGV2Ow0KPiANCj4gKwlzdHJ1 Y3QgcnRlX3Zob3N0X2FzeW5jX2NoYW5uZWxfb3BzIGNoYW5uZWxfb3BzID0gew0KPiArCQkudHJh bnNmZXJfZGF0YSA9IGlvYXRfdHJhbnNmZXJfZGF0YV9jYiwNCj4gKwkJLmNoZWNrX2NvbXBsZXRl ZF9jb3BpZXMgPSBpb2F0X2NoZWNrX2NvbXBsZXRlZF9jb3BpZXNfY2INCj4gKwl9Ow0KPiArCXN0 cnVjdCBkbWFfY2hhbm5lbF9mZWF0dXJlcyBmOw0KPiArDQo+ICAJdmRldiA9IHJ0ZV96bWFsbG9j KCJ2aG9zdCBkZXZpY2UiLCBzaXplb2YoKnZkZXYpLA0KPiBSVEVfQ0FDSEVfTElORV9TSVpFKTsN Cj4gIAlpZiAodmRldiA9PSBOVUxMKSB7DQo+ICAJCVJURV9MT0coSU5GTywgVkhPU1RfREFUQSwN Cj4gQEAgLTEyNzgsNiArMTUwNiwxMyBAQCBuZXdfZGV2aWNlKGludCB2aWQpDQo+ICAJCSIoJWQp IGRldmljZSBoYXMgYmVlbiBhZGRlZCB0byBkYXRhIGNvcmUgJWRcbiIsDQo+ICAJCXZpZCwgdmRl di0+Y29yZWlkKTsNCj4gDQo+ICsJaWYgKGFzeW5jX3Zob3N0X2RyaXZlcikgew0KPiArCQlmLmlu b3JkZXIgPSAxOw0KPiArCQlmLnRocmVzaG9sZCA9IDI1NjsNCj4gKwkJcmV0dXJuIHJ0ZV92aG9z dF9hc3luY19jaGFubmVsX3JlZ2lzdGVyKHZpZCwgVklSVElPX1JYUSwNCj4gKwkJCWYuaW50dmFs LCAmY2hhbm5lbF9vcHMpOw0KPiArCX0NCj4gKw0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiANCj4g QEAgLTE1MTcsNiArMTc1Miw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4gIAkv KiBSZWdpc3RlciB2aG9zdCB1c2VyIGRyaXZlciB0byBoYW5kbGUgdmhvc3QgbWVzc2FnZXMuICov DQo+ICAJZm9yIChpID0gMDsgaSA8IG5iX3NvY2tldHM7IGkrKykgew0KPiAgCQljaGFyICpmaWxl ID0gc29ja2V0X2ZpbGVzICsgaSAqIFBBVEhfTUFYOw0KPiArCQlpZiAoYXN5bmNfdmhvc3RfZHJp dmVyKQ0KPiArCQkJZmxhZ3MgPSBmbGFncyB8IFJURV9WSE9TVF9VU0VSX0FTWU5DX0NPUFk7DQo+ ICsNCj4gIAkJcmV0ID0gcnRlX3Zob3N0X2RyaXZlcl9yZWdpc3RlcihmaWxlLCBmbGFncyk7DQo+ ICAJCWlmIChyZXQgIT0gMCkgew0KPiAgCQkJdW5yZWdpc3Rlcl9kcml2ZXJzKGkpOw0KPiBkaWZm IC0tZ2l0IGEvZXhhbXBsZXMvdmhvc3QvbWFpbi5oIGIvZXhhbXBsZXMvdmhvc3QvbWFpbi5oIGlu ZGV4DQo+IDdjYmEwZWRiZi4uNDMxN2I2YWU4IDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy92aG9z dC9tYWluLmgNCj4gKysrIGIvZXhhbXBsZXMvdmhvc3QvbWFpbi5oDQo+IEBAIC01MSw2ICs1MSw3 IEBAIHN0cnVjdCB2aG9zdF9kZXYgew0KPiAgCXVpbnQ2NF90IGZlYXR1cmVzOw0KPiAgCXNpemVf dCBoZHJfbGVuOw0KPiAgCXVpbnQxNl90IG5yX3ZyaW5nczsNCj4gKwl1aW50MTZfdCBucl9hc3lu Y19wa3RzOw0KPiAgCXN0cnVjdCBydGVfdmhvc3RfbWVtb3J5ICptZW07DQo+ICAJc3RydWN0IGRl dmljZV9zdGF0aXN0aWNzIHN0YXRzOw0KPiAgCVRBSUxRX0VOVFJZKHZob3N0X2RldikgZ2xvYmFs X3ZkZXZfZW50cnk7DQo+IC0tDQo+IDIuMjYuMg0KDQo=