From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C0D2EA0A0C; Thu, 1 Jul 2021 07:12:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 746B340141; Thu, 1 Jul 2021 07:12:44 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 030DF40040 for ; Thu, 1 Jul 2021 07:12:41 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10031"; a="188852510" X-IronPort-AV: E=Sophos;i="5.83,313,1616482800"; d="scan'208";a="188852510" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jun 2021 22:12:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,313,1616482800"; d="scan'208";a="641945597" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga006.fm.intel.com with ESMTP; 30 Jun 2021 22:12:39 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 30 Jun 2021 22:12:39 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Wed, 30 Jun 2021 22:12:39 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.107) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Wed, 30 Jun 2021 22:12:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DYCqOC7VN7+b7FqCVdqcsYxotJPkXY8ghrLXVonNBOEgaihrTipz3Ne94ewle+1H8Kz84PQbWd3Uy5EwHceEMdiV2RrkwaW0yehx60kaxYwf8jqW0tGyqgeXOIseUh1sstPxW0yrwcFrffn9pp7JWfUhpxRBul+Aik8jZpYd9aRt4b+jbrY5Tf6Nh+Y/PwZwJiCM1/ROLqhsVSl9+Nv8jg5N4ZTE83+mrP9RFfMo5EikSW/O8pF7RLsLGBEdJ79xhhxs6wfps5Glp3eVCwZONATtR9LucJgZf+na4C0JJBha7oslDGGnhyBd5Zc7QISJhJfwZ9DRKj3x8xrIoINeXA== 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=prnkzmdk9KP3Flc8koldj9zI6+YS5Bs+9wJSKT2U1vU=; b=LvEdMHnUjLUT766fiz0Vwg4zrLDTYsipnWVytb46LXThvu0FUMIbEYQFnsseIQwaxofPsUkrxiRIlwb/9ag+PJR5neVdXXj5QrmsHL2YOZccH5z0CYphslWpgYL9li3XL5PWWvdBv7JLCfh7D2cRi/7KccQBE/9CKg8whppu+DFndmt5D4BDcDJtJAkX+BNkhTcu9dggwhxfvZuOAZvMcbMtXeYdAqXATqF3OhABmcr72j8FBXVMjqjoVM0K6rhDksYsWxomIutjjmgwkLt50ylgDEC7VVbKOAWWTJWtQkL5zWOTe7N9TM0PpEAfci/mTFfGbMxZv0hxHBgP+7+D8g== 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=prnkzmdk9KP3Flc8koldj9zI6+YS5Bs+9wJSKT2U1vU=; b=gfGr98zsLvJofFLtGfLsfZAN0QN+ob5fGvJIvWxrvzktluKXArB3nyU/DcHIb9lFEng1utOQHrYJnvA3XJxdF0lSzJcb8WjKI8gutIAUhewolyYM491etz1kycgnusdK8A4J/N7NjR9b2SrmbwXptA6F5auqPDOMSCqVfQZPoTc= Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by BN6PR11MB3970.namprd11.prod.outlook.com (2603:10b6:405:7a::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.23; Thu, 1 Jul 2021 05:12:20 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::e9c1:3649:2c25:6e27]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::e9c1:3649:2c25:6e27%3]) with mapi id 15.20.4287.022; Thu, 1 Jul 2021 05:12:20 +0000 From: "Ding, Xuan" To: Maxime Coquelin , "Xia, Chenbo" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Pai G, Sunil" , "Richardson, Bruce" , "Van Haaren, Harry" , "Liu, Yong" , "Jiang, Cheng1" Thread-Topic: [PATCH v3] vhost: enable IOMMU for async vhost Thread-Index: AQHXWFTdpQPQx4fw0UWNEqutf4jwDqsaCjwAgAQSyKCADMMYAIAC14PA Date: Thu, 1 Jul 2021 05:12:20 +0000 Message-ID: References: <20210531150629.35020-1-xuan.ding@intel.com> <20210603173023.10487-1-xuan.ding@intel.com> <302392cf-6643-a290-1050-27b0a592e74e@redhat.com> <933fa415-f3c8-7e4a-b3d2-20b382f456aa@redhat.com> In-Reply-To: <933fa415-f3c8-7e4a-b3d2-20b382f456aa@redhat.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7df6b743-fd6d-4f21-f762-08d93c4ecd82 x-ms-traffictypediagnostic: BN6PR11MB3970: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KDT4fW4So0wwgwaBT5Lh1nF98uhFy+7EdEgLzJOnrj3/CokJXTKEI3aHH5nSos5G9IjRnZHqMk1Nvb84JkPTglSZRVEKRJ4IBKdOcxRVoQPSLZ+8lIm28IzmjGTUSYXgZ2PHuV36wq9+9MKPtlzYb6h7VrY0fuC3hA/iVPJCjk28+X3ONMoFscD6WldRyg8VwOeLeg809MgUxRcgdK6VAb4AV0BdIve2p5d6F/Al5zBvi3fUmQXF7Yim9D+a/W4dHBQ6i5PQQRGtnJJcstuuLHLc1Mfu/P86AgQCGHxibWIKsx69xhTR/8HY19VIKwkPA7xMu0eFoB4arn8NuVOSdB6+frOMUd+s3eZJb4ga2oNXWfLuMFQ7Pqgcj+/JA+w/hD1he5eE48nMsaS1Ft0zl2Ktbz1vpz672aRzLMkZ21U9m8IZsaDZ35SmBMDDfPnUW8OhJf/uSeOAvlGKn58Uw2JC56mZLXkR/TDGjD+JoooZV/hv6bBIbHlQ72lU9rmAYFjQtdmeXyrHDXL9mH8onEDuZuWgYQvNLiT3JHllr4sAESWNey7LStpFlJvrXTLmcMBYtttGtPZotnJ70JA1f5/R/bOJlNRrNYR2+LbUHL9pXVFyu2fBnwjbRrtJVbC5ONJoX8Rmavf3f4AmTmlIFQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(136003)(366004)(376002)(396003)(346002)(8676002)(6636002)(478600001)(7696005)(53546011)(8936002)(186003)(6506007)(83380400001)(66476007)(107886003)(9686003)(55016002)(30864003)(38100700002)(26005)(52536014)(86362001)(5660300002)(2906002)(66946007)(33656002)(64756008)(66556008)(122000001)(66446008)(71200400001)(76116006)(54906003)(110136005)(316002)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dmxtbjlyTFBTUWdueWVnbFJPTVR1bGppOXVzNVJMbnNRNFNKRVNBbGRDYkpu?= =?utf-8?B?b3pyV0RNZ200OUtESGFhQ3B1U21IMXFOSisyWXV3c1lRZEtkTVhnbnhkYnJH?= =?utf-8?B?RUFnRnFMcmNWbGVsb1N0aEVjU2hvQk90T1JRV0JxYVVVRnM4dmNDbW9EM2o0?= =?utf-8?B?N0RscEZCalVVcWp1eTFDTXJhNjB5OTN2amdIbnVHWDdKYTRwVEdzNWJ4aHpW?= =?utf-8?B?T3hKaHFNaXE4TmlBTTlkeFQrWEFXZ2gzc0lBTE90MU40Um5JdDNseFM4UWpI?= =?utf-8?B?eGFpSExnZ0k0cTQvRy81VUxBNWQvZUdDelBaeElOM1VzSHowZWsrUk5pR1lt?= =?utf-8?B?dTZrUFlod2xJVlFFZks2NzRHOWtuMTNqank4ZUNvbWNhUi9pZ25VRmJ1aFRa?= =?utf-8?B?SGxjQXBaa2ZCcGc1TFdpTE5rZEJyTGR2Tks3OHhxNEFUWVdSN2dSTW1mQm96?= =?utf-8?B?VEttUElxa294Y3B5YzJhT0Z5cC80K3l0TVpoWjA4NnhGM1FDRGlvcjF2L3Va?= =?utf-8?B?aVhZRXFUR2tkTmlYNDZQMXR1U0I3NTE0QXFkRTdIdlFaZFdNaVk3QThzSUVK?= =?utf-8?B?azVPS0ZPL0YxUzFuT2Z3S3JReVZVemNnSzIvZ0E3d0pIeTVZbUJxUEQ2U1F2?= =?utf-8?B?ZG1XeGkxdHNueEVrdHd5THI5dERCOEJSWEl0TjBiZDF3elBpSzVPVU53ZHhk?= =?utf-8?B?bFpNTGFZY3BkSmk3akZBbWZFem9sQVJ0QmpjaWlWNHFNa0tzV3pxU29NRTdX?= =?utf-8?B?K2plM1ZGejkyaTdTY0hwNEdkcDlrd3ljd2V1N3VsOXFYbjRDakRKUnk2ZDVK?= =?utf-8?B?eHhGVTlwaS9wN1REZ2VIQ3graDNSVHR6Q1RTVU9GU0w4cGdJQmhQdjZSdHBX?= =?utf-8?B?M0g3cmFuWmlOMUsvU2lMb3B4ZU13OElZaUtKanppSmxjL29BTllJTnc3T0sr?= =?utf-8?B?S3VBYW51R05xV2NPS3J4cXBpdFpja3Q4QXRHQ1pFSWIyZG1JcHFleXBZUitK?= =?utf-8?B?UEp5SFJxejR5dWRBU0YveXhWTnBxeFNTVFBUTWZoUm9YNXVjR1FGSTFnTHFB?= =?utf-8?B?eCtqWDRBdk1zUENuTDRoNk5hSjg1b3RMcXZxcDNsdzJOTHEyMlpIZTQzOE8z?= =?utf-8?B?RU9HUm04V09GVEdrRzdKOGkvV2hiaUZRcWcxNkIvdUhaRXhNVFp0dnVyY1J5?= =?utf-8?B?bWU0bCtVbStrYjRjTTBSQXcwbE03cktSRUF1YW41SHBXVjRUZU5YYll1eWdz?= =?utf-8?B?Q3BBSklzazl0RDVFTXhpdWRUaGhUNVEvOXdkODVPRWcwNHBNZW9VS2paWjVa?= =?utf-8?B?bVRTcmhhdkZIc0ljemd5ekgzUzlteVRJWE9lLzhEMWYrYUZVWjVPT2gvdzFs?= =?utf-8?B?ZE54eENqYko5VFZXVGd6RTlybUxLWDBEcTQ5dkhtb2tMdk9UclZsaytHb2dE?= =?utf-8?B?Y3U5M1llM3VPaTl1QmRqNlVPS1VvS1VXTDBjb1YrZEdiSGpFMXYzNDFyOFli?= =?utf-8?B?aUZRa0d3VGdUVWp0Q1IwdTFZOFV4TnJsTnJ2STlOYVhKNUszR0NGekhYYTAr?= =?utf-8?B?Tm50Ky8rNFl5ZUpFd2VxeHRKNjVtbW5EZXpZUFB4bGZTTUNsOFJ3WGtBdnRo?= =?utf-8?B?eWhFR0RITjhkQWx4MytIVGRLRjlRbFVtV1I0aHdsSVJzUmYxcEJxRElsbzBJ?= =?utf-8?B?eFVSajNzOUxraHhrZG10VHlqcktzUjZuSW9HZTdicGNFZUhhcVh1S05qVStK?= =?utf-8?Q?zdX9KsrfMHSWVSyhQk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7df6b743-fd6d-4f21-f762-08d93c4ecd82 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2021 05:12:20.1359 (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: v9LpPPwfYiRBBpu+aQjZ5lVs+k58kX8P/JJ+7r/VVagXoH9gNrjG9FoG9rK2HVIHQ77zIrZFGbDm+E59wDzWyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB3970 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3] vhost: enable IOMMU for async vhost X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IEp1bmUgMjksIDIwMjEgNToyMyBQTQ0KPiBUbzogRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVs LmNvbT47IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRr Lm9yZzsgSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBQYWkgRywgU3VuaWwNCj4gPHN1 bmlsLnBhaS5nQGludGVsLmNvbT47IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29u QGludGVsLmNvbT47IFZhbg0KPiBIYWFyZW4sIEhhcnJ5IDxoYXJyeS52YW4uaGFhcmVuQGludGVs LmNvbT47IExpdSwgWW9uZyA8eW9uZy5saXVAaW50ZWwuY29tPjsNCj4gSmlhbmcsIENoZW5nMSA8 Y2hlbmcxLmppYW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2M10gdmhvc3Q6 IGVuYWJsZSBJT01NVSBmb3IgYXN5bmMgdmhvc3QNCj4gDQo+IEhpIFh1YW4sDQo+IA0KPiBPbiA2 LzIyLzIxIDg6MTggQU0sIERpbmcsIFh1YW4gd3JvdGU6DQo+ID4gSGkgTWF4aW1lLA0KPiA+DQo+ ID4gUmVwbGllcyBhcmUgaW5saW5lLg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5j b20+DQo+ID4+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDE5LCAyMDIxIDEyOjE4IEFNDQo+ID4+IFRv OiBEaW5nLCBYdWFuIDx4dWFuLmRpbmdAaW50ZWwuY29tPjsgWGlhLCBDaGVuYm8gPGNoZW5iby54 aWFAaW50ZWwuY29tPg0KPiA+PiBDYzogZGV2QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1 QGludGVsLmNvbT47IFBhaSBHLCBTdW5pbA0KPiA+PiA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsg UmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsNCj4gVmFuDQo+ ID4+IEhhYXJlbiwgSGFycnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgTGl1LCBZb25n IDx5b25nLmxpdUBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjNdIHZob3N0 OiBlbmFibGUgSU9NTVUgZm9yIGFzeW5jIHZob3N0DQo+ID4+DQo+ID4+IEhpIFh1YW4sDQo+ID4+ DQo+ID4+IE9uIDYvMy8yMSA3OjMwIFBNLCB4dWFuLmRpbmdAaW50ZWwuY29tIHdyb3RlOg0KPiA+ Pj4gRnJvbTogWHVhbiBEaW5nIDx4dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+Pj4NCj4gPj4+IEZv ciBhc3luYyBjb3B5LCBpdCBpcyB1bnNhZmUgdG8gZGlyZWN0bHkgdXNlIHRoZSBwaHlzaWNhbCBh ZGRyZXNzLg0KPiA+Pj4gQW5kIGN1cnJlbnQgYWRkcmVzcyB0cmFuc2xhdGlvbiBmcm9tIEdQQSB0 byBIUEEgdmlhIFNXIGFsc28gdGFrZXMNCj4gPj4+IENQVSBjeWNsZXMsIHRoZXNlIGNhbiBhbGwg YmVuZWZpdCBmcm9tIElPTU1VLg0KPiA+Pj4NCj4gPj4+IFNpbmNlIHRoZSBleGlzdGluZyBETUEg ZW5naW5lIHN1cHBvcnRzIHRvIHVzZSBwbGF0Zm9ybSBJT01NVSwNCj4gPj4+IHRoaXMgcGF0Y2gg ZW5hYmxlcyBJT01NVSBmb3IgYXN5bmMgdmhvc3QsIHdoaWNoIGRlZmluZXMgSU9BVA0KPiA+Pj4g ZGV2aWNlcyB0byB1c2UgdmlydHVhbCBhZGRyZXNzIGluc3RlYWQgb2YgcGh5c2ljYWwgYWRkcmVz cy4NCj4gPj4NCj4gPj4gV2UgaGF2ZSB0byBrZWVwIGluIG1pbmQgYSBnZW5lcmljIERNQSBhcGkg aXMgY29taW5nLCBhbmQgbWF5YmUgd2Ugd2FudA0KPiA+PiBhIFNXIGltcGxlbWVudGF0aW9uIG9m IGEgZG1hZGV2IGJhc2VkIG9uIG1lbWNweSBhdCBsZWFzdCBmb3INCj4gPj4gdGVzdGluZy9kZWJ1 Z2dpbmcgcHVycG9zZS4NCj4gPg0KPiA+IEkgbm90aWNlZCB0aGUgZ2VuZXJpYyBkbWFkZXYgbW9k ZWwgaXMgdW5kZXIgZGlzY3Vzc2lvbi4gVG8gc3VwcG9ydCBhIFNXDQo+ID4gaW1wbGVtZW50YXRp b24sIHRoZSBWQSBtb2RlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGlzIGlzIGFsc28gdGhlIHByb2Js ZW0NCj4gPiB0aGF0IHRoaXMgcGF0Y2ggaG9wZXMgdG8gc29sdmUuIFRyYWRpdGlvbmFsbHksIERN QSBlbmdpbmUgY2FuIG9ubHkgdXNlDQo+ID4gcGh5c2ljYWwgYWRkcmVzcyBpbiBQQSBtb2RlLg0K PiA+DQo+ID4+DQo+ID4+PiBXaGVuIHNldCBtZW1vcnkgdGFibGUsIHRoZSBmcm9udGVuZCdzIG1l bW9yeSB3aWxsIGJlIG1hcHBlZA0KPiA+Pj4gdG8gdGhlIGRlZmF1bHQgY29udGFpbmVyIG9mIERQ REsgd2hlcmUgSU9BVCBkZXZpY2VzIGhhdmUgYmVlbg0KPiA+Pj4gYWRkZWQgaW50by4gV2hlbiBE TUEgY29weSBmYWlscywgdGhlIHZpcnR1YWwgYWRkcmVzcyBwcm92aWRlZA0KPiA+Pj4gdG8gSU9B VCBkZXZpY2VzIGFsc28gYWxsb3cgdXMgZmFsbGJhY2sgdG8gU1cgY29weSBvciBQQSBjb3B5Lg0K PiA+Pj4NCj4gPj4+IFdpdGggSU9NTVUgZW5hYmxlZCwgdG8gdXNlIElPQVQgZGV2aWNlczoNCj4g Pj4+IDEuIElPQVQgZGV2aWNlcyBtdXN0IGJlIGJpbmRlZCB0byB2ZmlvLXBjaSwgcmF0aGVyIHRo YW4gaWdiX3Vpby4NCj4gPj4+IDIuIERQREsgbXVzdCB1c2UgIi0taW92YS1tb2RlPXZhIi4NCj4g Pj4NCj4gPj4gSSB0aGluayB0aGlzIGlzIHByb2JsZW1hdGljLCBhdCBsZWFzdCB3ZSBuZWVkIHRv IGNoZWNrIHRoZSByaWdodCBpb3ZhDQo+ID4+IG1vZGUgaGFzIGJlZW4gc2VsZWN0ZWQsIGJ1dCBl dmVuIHdpdGggZG9pbmcgdGhhdCBpdCBpcyBsaW1pdGluZy4NCj4gPg0KPiA+IEFzIGEgbGlicmFy eSwgdmhvc3QgaXMgbm90IGF3YXJlIG9mIHRoZSBkZXZpY2Ugc2VsZWN0ZWQgYWRkcmVzcyhQQSBv ciBWQSkNCj4gPiBhbmQgY3VycmVudCBEUERLIGlvdmEgbW9kZS4gVG8gc29tZSBleHRlbnQsIHRo aXMgcGF0Y2ggaXMgYSBwcm9wb3NhbC4NCj4gDQo+IElmIEknbSBub3QgbWlzdGFrZW4sIHRoZSBE TUEgZGV2aWNlIGRyaXZlciBpbml0IHNob3VsZCBmYWlsIGlmIGl0IGRvZXMNCj4gbm90IHN1cHBv cnQgdGhlIERQREsgSU9WQSBtb2RlLg0KPiANCj4gVGhlbiwgb24gVmhvc3QgbGliIHNpZGUsIHlv dSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhlIElPVkEgbW9kZSBieQ0KPiB1c2luZyB0aGUgcnRl X2VhbF9pb3ZhX21vZGUoKSBBUEkuDQoNCkdldCB5b3VyIHBvaW50LCBpZiB0aGUgVmhvc3QgbGli IGlzIGFibGUgdG8gZ2V0IHRoZSBJT1ZBIG1vZGUsIEkgdGhpbmsgaXQgaXMNCnBvc3NpYmxlIHRv IGJlIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbnQgRFBESyBJT1ZBIG1vZGUuIEkgd2lsbCB3b3Jr IG91dA0KYSBuZXcgcGF0Y2ggdG8gcGFzcyBpb3ZhIHRvIGNhbGxiYWNrIGluc3RlYWQgb2Ygdmly dHVhbCBhZGRyZXNzIG9ubHkuDQoNCj4gDQo+ID4gV2l0aCBkZXZpY2UgZmVkIHdpdGggVkEsIFNX IGZhbGxiYWNrIGNhbiBiZSBzdXBwb3J0ZWQuDQo+ID4gQW5kIFZBIGNhbiBhbHNvIGJlIHRyYW5z bGF0ZWQgdG8gUEEgdGhyb3VnaCBydGVfbWVtX3ZpcnQyaW92YSgpLg0KPiA+IEZpbmFsbHksIHRo ZSBhZGRyZXNzIHNlbGVjdGVkIGJ5IHRoZSBkZXZpY2UgaXMgZGV0ZXJtaW5lZCBieSBjYWxsYmFj ay4NCj4gPiBOb3QgdmljZSB2ZXJzYS4NCj4gPg0KPiA+IElmIHRoZSBETUEgY2FsbGJhY2sgaW1w bGVtZW50ZXIgZm9sbG93cyB0aGlzIGRlc2lnbiwgU1cgZmFsbGJhY2sgY2FuIGJlDQo+IHN1cHBv cnRlZC4NCj4gPiBJIHdvdWxkIGJlIHZlcnkgZ3JhdGVmdWwgaWYgeW91IGNvdWxkIHByb3ZpZGUg c29tZSBpbnNpZ2h0cyBmb3IgdGhpcyBkZXNpZ24uIDopDQo+IA0KPiBUQkgsIEkgZmluZCB0aGUg YXN5bmMgZGVzaWduIHRvbyBtdWNoIGNvbXBsaWNhdGVkLg0KPiBIYXZpbmcgc29tZSBkZXNjcmlw dG9ycyBoYW5kbGVkIGJ5IHRoZSBETUEgZW5naW5lLCBvdGhlcnMgYnkgdGhlIENQVQ0KPiBtYWtl cyBpdCBleHRyZW1seSBoYXJkIHRvIGRlYnVnLiBBbHNvLCBpdCBtYWtlcyBWaG9zdCBsaWJyYXJ5 IHVzZSBsZXNzDQo+IGRldGVybWluaXN0aWMuDQoNCkhlcmUgaXMgdG8gY29uc2lkZXIgdGhlIGRp ZmZlcmVuY2UgaW4gY29weSBlZmZpY2llbmN5LiBJbiB0aGUgY2FzZSBvZiBzbWFsbCBwYWNrYWdl cw0KKGxlc3MgdGhhbiB0aHJlc2hvbGQpLCB0aGUgcGVyZm9ybWFuY2Ugb2YgQ1BVIGNvcHkgaXMg YmV0dGVyLiBXaGVuIHRoZSBwYWNrYWdlDQpsZW5ndGggaXMgYmlnZ2VyIHRoYW4gdGhlIHRocmVz aG9sZCwgdGhlIERNQSBlbmdpbmUgY29weSB3aWxsIGdldCBhIGJpZyBwZXJmb3JtYW5jZQ0KaW1w cm92ZW1lbnQuDQoNCj4gDQo+ID4+DQo+ID4+IFdoYXQgcHJldmVudCB1cyB0byByZXVzZSBhZGRf Z3Vlc3RfcGFnZXMoKSBhbG9ncml0aG0gdG8gaW1wbGVtZW50DQo+ID4+IElPVkFfQVNfUEE/DQo+ ID4NCj4gPiBJZiBJT1ZBIGlzIFBBLCBpdCdzIG5vdCBlYXN5IHRvIHRyYW5zbGF0ZSBQQSB0byBW QSB0byBzdXBwb3J0IFNXIGltcGxlbWVudGF0aW9uLg0KPiANCj4gV2hhdCBwcmV2ZW50IHlvdSB0 byB1c2UgZGV2LT5ndWVzdF9wYWdlc1tdIGluIHRoYXQgY2FzZSB0byBkbyB0aGUNCj4gdHJhbnNs YXRpb25zPw0KDQpZZXMsIHlvdSBhcmUgcmlnaHQsIHVzZSBydGVfbWVtX2lvdmEydmlydCgpIGNh biBoZWxwIHRvIGRvIHNvLg0KDQo+IA0KPiA+IFVudGlsIG5vdywgSSBkb24ndCBoYXZlIGFueSBn b29kIGlkZWFzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBJT1ZBX0FTX1BBDQo+ID4gYW5kIElPVkFf QVNfVkEgYXQgdGhlIHNhbWUgdGltZSwgYmVjYXVzZSBpdCByZXF1aXJlcyB2aG9zdCBsaWJyYXJ5 IHRvDQo+ID4gc2VsZWN0IFBBL1ZBIGZvciBETUEgZGV2aWNlIGFjY29yZGluZyB0byBkaWZmZXJl bnQgRFBESyBpb3ZhIG1vZGUuDQo+IA0KPiBJZiB0aGUgRE1BIGRldmljZSBjbGFpbXMgdG8gc3Vw cG9ydCBJT1ZBX0FTX1BBIGF0IHByb2JlIHRpbWUsIGl0IHNob3VsZA0KPiBiZSB1c2VhYmxlIGJ5 IHRoZSB2aG9zdCBsaWJyYXJ5LiBJdCBtaWdodCBub3QgYmUgdGhlIG1vcmUgZWZmaWNpZW50DQo+ IG1vZGUsIGJ1dCB3ZSBjYW5ub3QganVzdCBoYXZlIGEgY29tbWVudCBpbiB0aGUgZG9jdW1lbmF0 aW9uIHNheWluZyB0aGF0DQo+IElPVkFfQVNfVkEgaXMgdGhlIG9ubHkgc3VwcG9ydGVkIG1vZGUs IHdpdGhvdXQgYW55IHNhZmV0eSBjaGVjayBpbiB0aGUNCj4gY29kZSBpdHNlbGYuDQoNCkNvbXBh dGlibGUgd2l0aCBJT1ZBX0FTX1BBIGlzIHBvc3NpYmxlLCB0aGUgcmVhc29uIGZvciBJT1ZBX0FT X1ZBIGRlc2lnbg0KaXMgYmVjYXVzZSBWQSBpcyBlYXNpZXIgdG8gb3BlcmF0ZS4gVGh1cyBzb21l IGNvbXBhdGliaWxpdHkgaXMgc2FjcmlmaWNlZC4NCg0KSSB3aWxsIGFkb3B0IHlvdXIgc3VnZ2Vz dGlvbiwgdGhhbmtzIHZlcnkgbXVjaCENCg0KUmVnYXJkcywNClh1YW4NCg0KPiANCj4gUmVnYXJk cywNCj4gTWF4aW1lDQo+IA0KPiA+IFRoYW5rcywNCj4gPiBYdWFuDQo+ID4NCj4gPj4NCj4gPj4+ DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBYdWFuIERpbmcgPHh1YW4uZGluZ0BpbnRlbC5jb20+DQo+ ID4+PiAtLS0NCj4gPj4+DQo+ID4+PiB2MzoNCj4gPj4+ICogRml4ZWQgc29tZSB0eXBvcy4NCj4g Pj4+DQo+ID4+PiB2MjoNCj4gPj4+ICogRml4ZWQgYSBmb3JtYXQgaXNzdWUuDQo+ID4+PiAqIEFk ZGVkIHRoZSBkbWEgdW5tYXAgbG9naWMgd2hlbiBkZXZpY2UgaXMgY2xvc2VkLg0KPiA+Pj4gLS0t DQo+ID4+PiAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Zob3N0X2xpYi5yc3QgfCAgMjAgKysrKysN Cj4gPj4+ICBsaWIvdmhvc3Qvdmhvc3RfdXNlci5jICAgICAgICAgICAgICB8IDEyNSArKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4+PiAgbGliL3Zob3N0L3ZpcnRpb19uZXQuYyAgICAg ICAgICAgICAgfCAgMzAgKysrLS0tLQ0KPiA+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0 aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9kb2Mv Z3VpZGVzL3Byb2dfZ3VpZGUvdmhvc3RfbGliLnJzdA0KPiA+PiBiL2RvYy9ndWlkZXMvcHJvZ19n dWlkZS92aG9zdF9saWIucnN0DQo+ID4+PiBpbmRleCBkMThmYjk4OTEwLi41Nzc3ZjBkYTk2IDEw MDY0NA0KPiA+Pj4gLS0tIGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Zob3N0X2xpYi5yc3QNCj4g Pj4+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+ID4+PiBAQCAt NDIwLDMgKzQyMCwyMyBAQCBGaW5hbGx5LCBhIHNldCBvZiBkZXZpY2Ugb3BzIGlzIGRlZmluZWQg Zm9yIGRldmljZQ0KPiA+PiBzcGVjaWZpYyBvcGVyYXRpb25zOg0KPiA+Pj4gICogYGBnZXRfbm90 aWZ5X2FyZWFgYA0KPiA+Pj4NCj4gPj4+ICAgIENhbGxlZCB0byBnZXQgdGhlIG5vdGlmeSBhcmVh IGluZm8gb2YgdGhlIHF1ZXVlLg0KPiA+Pj4gKw0KPiA+Pj4gK1Zob3N0IGFzeW5jIGRhdGEgcGF0 aA0KPiA+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+Pj4gKw0KPiA+Pj4gKyogQWRkcmVz cyBtb2RlDQo+ID4+PiArDQo+ID4+PiArICBNb2Rlcm4gSU9BVCBkZXZpY2VzIHN1cHBvcnQgdG8g dXNlIHRoZSBJT01NVSwgd2hpY2ggY2FuIGF2b2lkIHVzaW5nDQo+ID4+PiArICB0aGUgdW5zYWZl IEhQQS4gQmVzaWRlcywgdGhlIENQVSBjeWNsZXMgdG9vayBieSBTVyB0byB0cmFuc2xhdGUgZnJv bQ0KPiA+Pj4gKyAgR1BBIHRvIEhQQSBjYW4gYWxzbyBiZSBzYXZlZC4gU28gSU9BVCBkZXZpY2Vz IGFyZSBkZWZpbmVkIHRvIHVzZQ0KPiA+Pj4gKyAgdmlydHVhbCBhZGRyZXNzIGluc3RlYWQgb2Yg cGh5c2ljYWwgYWRkcmVzcy4NCj4gPj4+ICsNCj4gPj4+ICsgIFdpdGggSU9NTVUgZW5hYmxlZCwg dG8gdXNlIElPQVQgZGV2aWNlczoNCj4gPj4+ICsgIDEuIElPQVQgZGV2aWNlcyBtdXN0IGJlIGJp bmRlZCB0byB2ZmlvLXBjaSwgcmF0aGVyIHRoYW4gaWdiX3Vpby4NCj4gPj4+ICsgIDIuIERQREsg bXVzdCB1c2UgYGAtLWlvdmEtbW9kZT12YWBgLg0KPiA+Pj4gKw0KPiA+Pj4gKyogRmFsbGJhY2sN Cj4gPj4+ICsNCj4gPj4+ICsgIFdoZW4gdGhlIERNQSBjb3B5IGZhaWxzLCB0aGUgdXNlciB3aG8g aW1wbGVtZW50cyB0aGUgdHJhbnNmZXJfZGF0YQ0KPiA+Pj4gKyAgY2FsbGJhY2sgY2FuIGZhbGxi YWNrIHRvIFNXIGNvcHkgb3IgZmFsbGJhY2sgdG8gUEEgY29weSB0aHJvdWdoDQo+ID4+PiArICBy dGVfbWVtX3ZpcnQyaW92YSgpLg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aG9zdF91 c2VyLmMgYi9saWIvdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+PiBpbmRleCA4ZjBlYmE2NDEyLi5j MzNmYTc4NGZmIDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+ Pj4gKysrIGIvbGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4gQEAgLTQ1LDYgKzQ1LDcgQEAN Cj4gPj4+ICAjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiA+Pj4gICNpbmNsdWRlIDxydGVfbWFs bG9jLmg+DQo+ID4+PiAgI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gPj4+ICsjaW5jbHVkZSA8cnRl X3ZmaW8uaD4NCj4gPj4+DQo+ID4+PiAgI2luY2x1ZGUgImlvdGxiLmgiDQo+ID4+PiAgI2luY2x1 ZGUgInZob3N0LmgiDQo+ID4+PiBAQCAtMTQxLDYgKzE0MiwzNCBAQCBnZXRfYmxrX3NpemUoaW50 IGZkKQ0KPiA+Pj4gIAlyZXR1cm4gcmV0ID09IC0xID8gKHVpbnQ2NF90KS0xIDogKHVpbnQ2NF90 KXN0YXQuc3RfYmxrc2l6ZTsNCj4gPj4+ICB9DQo+ID4+Pg0KPiA+Pj4gK3N0YXRpYyBpbnQNCj4g Pj4+ICthc3luY19kbWFfbWFwKHN0cnVjdCBydGVfdmhvc3RfbWVtX3JlZ2lvbiAqcmVnaW9uLCBi b29sIGRvX21hcCkNCj4gPj4+ICt7DQo+ID4+PiArCWludCByZXQgPSAwOw0KPiA+Pj4gKwlpZiAo ZG9fbWFwKSB7DQo+ID4+PiArCQkvKiBBZGQgbWFwcGVkIHJlZ2lvbiBpbnRvIHRoZSBkZWZhdWx0 IGNvbnRhaW5lciBvZiBEUERLLiAqLw0KPiA+Pj4gKwkJcmV0ID0NCj4gPj4gcnRlX3ZmaW9fY29u dGFpbmVyX2RtYV9tYXAoUlRFX1ZGSU9fREVGQVVMVF9DT05UQUlORVJfRkQsDQo+ID4+PiArCQkJ CQkJIHJlZ2lvbi0+aG9zdF91c2VyX2FkZHIsDQo+ID4+PiArCQkJCQkJIHJlZ2lvbi0+aG9zdF91 c2VyX2FkZHIsDQo+ID4+PiArCQkJCQkJIHJlZ2lvbi0+c2l6ZSk7DQo+ID4+PiArCQlpZiAocmV0 KSB7DQo+ID4+PiArCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJETUEgZW5naW5lIG1hcCBmYWls ZWRcbiIpOw0KPiA+Pj4gKwkJCXJldHVybiByZXQ7DQo+ID4+PiArCQl9DQo+ID4+PiArCX0gZWxz ZSB7DQo+ID4+PiArCQkvKiBSZW1vdmUgbWFwcGVkIHJlZ2lvbiBmcm9tIHRoZSBkZWZhdWx0IGNv bnRhaW5lciBvZiBEUERLLg0KPiA+PiAqLw0KPiA+Pj4gKwkJcmV0ID0NCj4gPj4gcnRlX3ZmaW9f Y29udGFpbmVyX2RtYV91bm1hcChSVEVfVkZJT19ERUZBVUxUX0NPTlRBSU5FUl9GRCwNCj4gPj4+ ICsJCQkJCQkgICByZWdpb24tPmhvc3RfdXNlcl9hZGRyLA0KPiA+Pj4gKwkJCQkJCSAgIHJlZ2lv bi0+aG9zdF91c2VyX2FkZHIsDQo+ID4+PiArCQkJCQkJICAgcmVnaW9uLT5zaXplKTsNCj4gPj4+ ICsJCWlmIChyZXQpIHsNCj4gPj4+ICsJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkRNQSBlbmdp bmUgdW5tYXANCj4gPj4gZmFpbGVkXG4iKTsNCj4gPj4+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+Pj4g KwkJfQ0KPiA+Pj4gKwl9DQo+ID4+PiArCXJldHVybiByZXQ7DQo+ID4+PiArfQ0KPiA+Pj4gKw0K PiA+Pj4gIHN0YXRpYyB2b2lkDQo+ID4+PiAgZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCB2aXJ0aW9f bmV0ICpkZXYpDQo+ID4+PiAgew0KPiA+Pj4gQEAgLTE1NSw2ICsxODQsOSBAQCBmcmVlX21lbV9y ZWdpb24oc3RydWN0IHZpcnRpb19uZXQgKmRldikNCj4gPj4+ICAJCWlmIChyZWctPmhvc3RfdXNl cl9hZGRyKSB7DQo+ID4+PiAgCQkJbXVubWFwKHJlZy0+bW1hcF9hZGRyLCByZWctPm1tYXBfc2l6 ZSk7DQo+ID4+PiAgCQkJY2xvc2UocmVnLT5mZCk7DQo+ID4+PiArDQo+ID4+PiArCQkJaWYgKGRl di0+YXN5bmNfY29weSkNCj4gPj4+ICsJCQkJYXN5bmNfZG1hX21hcChyZWcsIGZhbHNlKTsNCj4g Pj4+ICAJCX0NCj4gPj4+ICAJfQ0KPiA+Pj4gIH0NCj4gPj4+IEBAIC04NjYsODcgKzg5OCw2IEBA IHZob3N0X3VzZXJfc2V0X3ZyaW5nX2Jhc2Uoc3RydWN0IHZpcnRpb19uZXQNCj4gKipwZGV2LA0K PiA+Pj4gIAlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0s7DQo+ID4+PiAgfQ0KPiA+Pj4N Cj4gPj4+IC1zdGF0aWMgaW50DQo+ID4+PiAtYWRkX29uZV9ndWVzdF9wYWdlKHN0cnVjdCB2aXJ0 aW9fbmV0ICpkZXYsIHVpbnQ2NF90IGd1ZXN0X3BoeXNfYWRkciwNCj4gPj4+IC0JCSAgIHVpbnQ2 NF90IGhvc3RfcGh5c19hZGRyLCB1aW50NjRfdCBzaXplKQ0KPiA+Pj4gLXsNCj4gPj4+IC0Jc3Ry dWN0IGd1ZXN0X3BhZ2UgKnBhZ2UsICpsYXN0X3BhZ2U7DQo+ID4+PiAtCXN0cnVjdCBndWVzdF9w YWdlICpvbGRfcGFnZXM7DQo+ID4+PiAtDQo+ID4+PiAtCWlmIChkZXYtPm5yX2d1ZXN0X3BhZ2Vz ID09IGRldi0+bWF4X2d1ZXN0X3BhZ2VzKSB7DQo+ID4+PiAtCQlkZXYtPm1heF9ndWVzdF9wYWdl cyAqPSAyOw0KPiA+Pj4gLQkJb2xkX3BhZ2VzID0gZGV2LT5ndWVzdF9wYWdlczsNCj4gPj4+IC0J CWRldi0+Z3Vlc3RfcGFnZXMgPSBydGVfcmVhbGxvYyhkZXYtPmd1ZXN0X3BhZ2VzLA0KPiA+Pj4g LQkJCQkJZGV2LT5tYXhfZ3Vlc3RfcGFnZXMgKiBzaXplb2YoKnBhZ2UpLA0KPiA+Pj4gLQkJCQkJ UlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4+PiAtCQlpZiAoZGV2LT5ndWVzdF9wYWdlcyA9PSBO VUxMKSB7DQo+ID4+PiAtCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJjYW5ub3QgcmVhbGxvYw0K PiA+PiBndWVzdF9wYWdlc1xuIik7DQo+ID4+PiAtCQkJcnRlX2ZyZWUob2xkX3BhZ2VzKTsNCj4g Pj4+IC0JCQlyZXR1cm4gLTE7DQo+ID4+PiAtCQl9DQo+ID4+PiAtCX0NCj4gPj4+IC0NCj4gPj4+ IC0JaWYgKGRldi0+bnJfZ3Vlc3RfcGFnZXMgPiAwKSB7DQo+ID4+PiAtCQlsYXN0X3BhZ2UgPSAm ZGV2LT5ndWVzdF9wYWdlc1tkZXYtPm5yX2d1ZXN0X3BhZ2VzIC0gMV07DQo+ID4+PiAtCQkvKiBt ZXJnZSBpZiB0aGUgdHdvIHBhZ2VzIGFyZSBjb250aW51b3VzICovDQo+ID4+PiAtCQlpZiAoaG9z dF9waHlzX2FkZHIgPT0gbGFzdF9wYWdlLT5ob3N0X3BoeXNfYWRkciArDQo+ID4+PiAtCQkJCSAg ICAgIGxhc3RfcGFnZS0+c2l6ZSkgew0KPiA+Pj4gLQkJCWxhc3RfcGFnZS0+c2l6ZSArPSBzaXpl Ow0KPiA+Pj4gLQkJCXJldHVybiAwOw0KPiA+Pj4gLQkJfQ0KPiA+Pj4gLQl9DQo+ID4+PiAtDQo+ ID4+PiAtCXBhZ2UgPSAmZGV2LT5ndWVzdF9wYWdlc1tkZXYtPm5yX2d1ZXN0X3BhZ2VzKytdOw0K PiA+Pj4gLQlwYWdlLT5ndWVzdF9waHlzX2FkZHIgPSBndWVzdF9waHlzX2FkZHI7DQo+ID4+PiAt CXBhZ2UtPmhvc3RfcGh5c19hZGRyICA9IGhvc3RfcGh5c19hZGRyOw0KPiA+Pj4gLQlwYWdlLT5z aXplID0gc2l6ZTsNCj4gPj4+IC0NCj4gPj4+IC0JcmV0dXJuIDA7DQo+ID4+PiAtfQ0KPiA+Pj4g LQ0KPiA+Pj4gLXN0YXRpYyBpbnQNCj4gPj4+IC1hZGRfZ3Vlc3RfcGFnZXMoc3RydWN0IHZpcnRp b19uZXQgKmRldiwgc3RydWN0IHJ0ZV92aG9zdF9tZW1fcmVnaW9uDQo+ICpyZWcsDQo+ID4+PiAt CQl1aW50NjRfdCBwYWdlX3NpemUpDQo+ID4+PiAtew0KPiA+Pj4gLQl1aW50NjRfdCByZWdfc2l6 ZSA9IHJlZy0+c2l6ZTsNCj4gPj4+IC0JdWludDY0X3QgaG9zdF91c2VyX2FkZHIgID0gcmVnLT5o b3N0X3VzZXJfYWRkcjsNCj4gPj4+IC0JdWludDY0X3QgZ3Vlc3RfcGh5c19hZGRyID0gcmVnLT5n dWVzdF9waHlzX2FkZHI7DQo+ID4+PiAtCXVpbnQ2NF90IGhvc3RfcGh5c19hZGRyOw0KPiA+Pj4g LQl1aW50NjRfdCBzaXplOw0KPiA+Pj4gLQ0KPiA+Pj4gLQlob3N0X3BoeXNfYWRkciA9IHJ0ZV9t ZW1fdmlydDJpb3ZhKCh2b2lkICopKHVpbnRwdHJfdClob3N0X3VzZXJfYWRkcik7DQo+ID4+PiAt CXNpemUgPSBwYWdlX3NpemUgLSAoZ3Vlc3RfcGh5c19hZGRyICYgKHBhZ2Vfc2l6ZSAtIDEpKTsN Cj4gPj4+IC0Jc2l6ZSA9IFJURV9NSU4oc2l6ZSwgcmVnX3NpemUpOw0KPiA+Pj4gLQ0KPiA+Pj4g LQlpZiAoYWRkX29uZV9ndWVzdF9wYWdlKGRldiwgZ3Vlc3RfcGh5c19hZGRyLCBob3N0X3BoeXNf YWRkciwgc2l6ZSkgPA0KPiA+PiAwKQ0KPiA+Pj4gLQkJcmV0dXJuIC0xOw0KPiA+Pj4gLQ0KPiA+ Pj4gLQlob3N0X3VzZXJfYWRkciAgKz0gc2l6ZTsNCj4gPj4+IC0JZ3Vlc3RfcGh5c19hZGRyICs9 IHNpemU7DQo+ID4+PiAtCXJlZ19zaXplIC09IHNpemU7DQo+ID4+PiAtDQo+ID4+PiAtCXdoaWxl IChyZWdfc2l6ZSA+IDApIHsNCj4gPj4+IC0JCXNpemUgPSBSVEVfTUlOKHJlZ19zaXplLCBwYWdl X3NpemUpOw0KPiA+Pj4gLQkJaG9zdF9waHlzX2FkZHIgPSBydGVfbWVtX3ZpcnQyaW92YSgodm9p ZCAqKSh1aW50cHRyX3QpDQo+ID4+PiAtCQkJCQkJICBob3N0X3VzZXJfYWRkcik7DQo+ID4+PiAt CQlpZiAoYWRkX29uZV9ndWVzdF9wYWdlKGRldiwgZ3Vlc3RfcGh5c19hZGRyLCBob3N0X3BoeXNf YWRkciwNCj4gPj4+IC0JCQkJc2l6ZSkgPCAwKQ0KPiA+Pj4gLQkJCXJldHVybiAtMTsNCj4gPj4+ IC0NCj4gPj4+IC0JCWhvc3RfdXNlcl9hZGRyICArPSBzaXplOw0KPiA+Pj4gLQkJZ3Vlc3RfcGh5 c19hZGRyICs9IHNpemU7DQo+ID4+PiAtCQlyZWdfc2l6ZSAtPSBzaXplOw0KPiA+Pj4gLQl9DQo+ ID4+PiAtDQo+ID4+PiAtCS8qIHNvcnQgZ3Vlc3QgcGFnZSBhcnJheSBpZiBvdmVyIGJpbmFyeSBz ZWFyY2ggdGhyZXNob2xkICovDQo+ID4+PiAtCWlmIChkZXYtPm5yX2d1ZXN0X3BhZ2VzID49IFZI T1NUX0JJTkFSWV9TRUFSQ0hfVEhSRVNIKSB7DQo+ID4+PiAtCQlxc29ydCgodm9pZCAqKWRldi0+ Z3Vlc3RfcGFnZXMsIGRldi0+bnJfZ3Vlc3RfcGFnZXMsDQo+ID4+PiAtCQkJc2l6ZW9mKHN0cnVj dCBndWVzdF9wYWdlKSwgZ3Vlc3RfcGFnZV9hZGRyY21wKTsNCj4gPj4+IC0JfQ0KPiA+Pj4gLQ0K PiA+Pj4gLQlyZXR1cm4gMDsNCj4gPj4+IC19DQo+ID4+PiAtDQo+ID4+PiAgI2lmZGVmIFJURV9M SUJSVEVfVkhPU1RfREVCVUcNCj4gPj4+ICAvKiBUT0RPOiBlbmFibGUgaXQgb25seSBpbiBkZWJ1 ZyBtb2RlPyAqLw0KPiA+Pj4gIHN0YXRpYyB2b2lkDQo+ID4+PiBAQCAtMTEwNSw2ICsxMDU2LDcg QEAgdmhvc3RfdXNlcl9tbWFwX3JlZ2lvbihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiA+Pj4g IAl1aW50NjRfdCBtbWFwX3NpemU7DQo+ID4+PiAgCXVpbnQ2NF90IGFsaWdubWVudDsNCj4gPj4+ ICAJaW50IHBvcHVsYXRlOw0KPiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4NCj4gPj4+ICAJLyogQ2hl Y2sgZm9yIG1lbW9yeV9zaXplICsgbW1hcF9vZmZzZXQgb3ZlcmZsb3cgKi8NCj4gPj4+ICAJaWYg KG1tYXBfb2Zmc2V0ID49IC1yZWdpb24tPnNpemUpIHsNCj4gPj4+IEBAIC0xMTU4LDEyICsxMTEw LDEzIEBAIHZob3N0X3VzZXJfbW1hcF9yZWdpb24oc3RydWN0IHZpcnRpb19uZXQNCj4gKmRldiwN Cj4gPj4+ICAJcmVnaW9uLT5tbWFwX3NpemUgPSBtbWFwX3NpemU7DQo+ID4+PiAgCXJlZ2lvbi0+ aG9zdF91c2VyX2FkZHIgPSAodWludDY0X3QpKHVpbnRwdHJfdCltbWFwX2FkZHIgKw0KPiA+PiBt bWFwX29mZnNldDsNCj4gPj4+DQo+ID4+PiAtCWlmIChkZXYtPmFzeW5jX2NvcHkpDQo+ID4+PiAt CQlpZiAoYWRkX2d1ZXN0X3BhZ2VzKGRldiwgcmVnaW9uLCBhbGlnbm1lbnQpIDwgMCkgew0KPiA+ Pj4gLQkJCVZIT1NUX0xPR19DT05GSUcoRVJSLA0KPiA+Pj4gLQkJCQkJImFkZGluZyBndWVzdCBw YWdlcyB0byByZWdpb24NCj4gPj4gZmFpbGVkLlxuIik7DQo+ID4+PiArCWlmIChkZXYtPmFzeW5j X2NvcHkpIHsNCj4gPj4+ICsJCXJldCA9IGFzeW5jX2RtYV9tYXAocmVnaW9uLCB0cnVlKTsNCj4g Pj4+ICsJCWlmIChyZXQpIHsNCj4gPj4+ICsJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkNvbmZp Z3VyZSBJT01NVSBmb3IgRE1BDQo+ID4+IGVuZ2luZSBmYWlsZWRcbiIpOw0KPiA+Pj4gIAkJCXJl dHVybiAtMTsNCj4gPj4NCj4gPj4gTWF5YmUgd2UncmUgdG9vIGxhdGUgaW4gdGhlIGluaXQgYWxy ZWFkeSwgYnV0IEkgd291bGQgdGhpbmsgd2UgbWF5IHdhbnQNCj4gPj4gdG8gZmFsbGJhY2sgdG8g U1cgaW1wbGVtZW50YXRpb24gaW5zZWENCj4gPj4NCj4gPj4+IC0JCX0NCj4gPj4+ICsJCQl9DQo+ ID4+PiArCX0NCj4gPj4+DQo+ID4+PiAgCVZIT1NUX0xPR19DT05GSUcoSU5GTywNCj4gPj4+ICAJ CQkiZ3Vlc3QgbWVtb3J5IHJlZ2lvbiBzaXplOiAweCUiIFBSSXg2NCAiXG4iDQo+ID4+PiBkaWZm IC0tZ2l0IGEvbGliL3Zob3N0L3ZpcnRpb19uZXQuYyBiL2xpYi92aG9zdC92aXJ0aW9fbmV0LmMN Cj4gPj4+IGluZGV4IDhkYThhODZhMTAuLjg4MTEwZDJjYjMgMTAwNjQ0DQo+ID4+PiAtLS0gYS9s aWIvdmhvc3QvdmlydGlvX25ldC5jDQo+ID4+PiArKysgYi9saWIvdmhvc3QvdmlydGlvX25ldC5j DQo+ID4+PiBAQCAtOTgwLDExICs5ODAsOSBAQCBhc3luY19tYnVmX3RvX2Rlc2Moc3RydWN0IHZp cnRpb19uZXQgKmRldiwgc3RydWN0DQo+ID4+IHZob3N0X3ZpcnRxdWV1ZSAqdnEsDQo+ID4+PiAg CXN0cnVjdCBiYXRjaF9jb3B5X2VsZW0gKmJhdGNoX2NvcHkgPSB2cS0+YmF0Y2hfY29weV9lbGVt czsNCj4gPj4+ICAJc3RydWN0IHZpcnRpb19uZXRfaGRyX21yZ19yeGJ1ZiB0bXBfaGRyLCAqaGRy ID0gTlVMTDsNCj4gPj4+ICAJaW50IGVycm9yID0gMDsNCj4gPj4+IC0JdWludDY0X3QgbWFwcGVk X2xlbjsNCj4gPj4+DQo+ID4+PiAgCXVpbnQzMl90IHRsZW4gPSAwOw0KPiA+Pj4gIAlpbnQgdHZl Y19pZHggPSAwOw0KPiA+Pj4gLQl2b2lkICpocGE7DQo+ID4+Pg0KPiA+Pj4gIAlpZiAodW5saWtl bHkobSA9PSBOVUxMKSkgew0KPiA+Pj4gIAkJZXJyb3IgPSAtMTsNCj4gPj4+IEBAIC0xMDc0LDI3 ICsxMDcyLDE5IEBAIGFzeW5jX21idWZfdG9fZGVzYyhzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0K PiA+PiBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gPj4+DQo+ID4+PiAgCQljcHlfbGVu ID0gUlRFX01JTihidWZfYXZhaWwsIG1idWZfYXZhaWwpOw0KPiA+Pj4NCj4gPj4+IC0JCXdoaWxl ICh1bmxpa2VseShjcHlfbGVuICYmIGNweV9sZW4gPj0gY3B5X3RocmVzaG9sZCkpIHsNCj4gPj4+ IC0JCQlocGEgPSAodm9pZCAqKSh1aW50cHRyX3QpZ3BhX3RvX2ZpcnN0X2hwYShkZXYsDQo+ID4+ PiAtCQkJCQlidWZfaW92YSArIGJ1Zl9vZmZzZXQsDQo+ID4+PiAtCQkJCQljcHlfbGVuLCAmbWFw cGVkX2xlbik7DQo+ID4+PiAtDQo+ID4+PiAtCQkJaWYgKHVubGlrZWx5KCFocGEgfHwgbWFwcGVk X2xlbiA8IGNweV90aHJlc2hvbGQpKQ0KPiA+Pj4gLQkJCQlicmVhazsNCj4gPj4+IC0NCj4gPj4+ ICsJCWlmICh1bmxpa2VseShjcHlfbGVuID49IGNweV90aHJlc2hvbGQpKSB7DQo+ID4+PiAgCQkJ YXN5bmNfZmlsbF92ZWMoc3JjX2lvdmVjICsgdHZlY19pZHgsDQo+ID4+PiAtCQkJCSh2b2lkICop KHVpbnRwdHJfdClydGVfcGt0bWJ1Zl9pb3ZhX29mZnNldChtLA0KPiA+Pj4gLQkJCQltYnVmX29m ZnNldCksIChzaXplX3QpbWFwcGVkX2xlbik7DQo+ID4+PiArCQkJCXJ0ZV9wa3RtYnVmX210b2Rf b2Zmc2V0KG0sIHZvaWQgKiwNCj4gPj4gbWJ1Zl9vZmZzZXQpLCAoc2l6ZV90KWNweV9sZW4pOw0K PiA+Pj4NCj4gPj4+ICAJCQlhc3luY19maWxsX3ZlYyhkc3RfaW92ZWMgKyB0dmVjX2lkeCwNCj4g Pj4+IC0JCQkJCWhwYSwgKHNpemVfdCltYXBwZWRfbGVuKTsNCj4gPj4+IC0NCj4gPj4+IC0JCQl0 bGVuICs9ICh1aW50MzJfdCltYXBwZWRfbGVuOw0KPiA+Pj4gLQkJCWNweV9sZW4gLT0gKHVpbnQz Ml90KW1hcHBlZF9sZW47DQo+ID4+PiAtCQkJbWJ1Zl9hdmFpbCAgLT0gKHVpbnQzMl90KW1hcHBl ZF9sZW47DQo+ID4+PiAtCQkJbWJ1Zl9vZmZzZXQgKz0gKHVpbnQzMl90KW1hcHBlZF9sZW47DQo+ ID4+PiAtCQkJYnVmX2F2YWlsICAtPSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPj4+IC0JCQli dWZfb2Zmc2V0ICs9ICh1aW50MzJfdCltYXBwZWRfbGVuOw0KPiA+Pj4gKwkJCQkodm9pZCAqKSgo dWludHB0cl90KShidWZfYWRkciArIGJ1Zl9vZmZzZXQpKSwNCj4gPj4gKHNpemVfdCljcHlfbGVu KTsNCj4gPj4+ICsNCj4gPj4+ICsJCQl0bGVuICs9IGNweV9sZW47DQo+ID4+PiArCQkJbWJ1Zl9h dmFpbCAgLT0gY3B5X2xlbjsNCj4gPj4+ICsJCQltYnVmX29mZnNldCArPSBjcHlfbGVuOw0KPiA+ Pj4gKwkJCWJ1Zl9hdmFpbCAgLT0gY3B5X2xlbjsNCj4gPj4+ICsJCQlidWZfb2Zmc2V0ICs9IGNw eV9sZW47DQo+ID4+PiArCQkJY3B5X2xlbiA9IDA7DQo+ID4+PiAgCQkJdHZlY19pZHgrKzsNCj4g Pj4+ICAJCX0NCj4gPj4+DQo+ID4+Pg0KPiA+DQoNCg==