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 207D9A04C0; Tue, 29 Sep 2020 10:31:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7F54B1D8E9; Tue, 29 Sep 2020 10:31:28 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id BB8B91D735 for ; Tue, 29 Sep 2020 10:31:26 +0200 (CEST) IronPort-SDR: vNjDHtWJvPFtRdKpYb6q538kqtd6h8OGABi9GCvOMuw4TppF6EQ0BJzeuZ4Ske2rkRDD5KWElM w4qSL2qMv+7g== X-IronPort-AV: E=McAfee;i="6000,8403,9758"; a="223732656" X-IronPort-AV: E=Sophos;i="5.77,317,1596524400"; d="scan'208";a="223732656" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2020 01:31:23 -0700 IronPort-SDR: +8RhUeeQelTx9YYxa+HDL071LOlV6q3lraJAnjDGlYJchy2dkq42iDP/hWjLsnZFWp72lxHkFg UVripaXL4MeA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,317,1596524400"; d="scan'208";a="513773899" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga006.fm.intel.com with ESMTP; 29 Sep 2020 01:31:22 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Sep 2020 01:31:22 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Sep 2020 01:31:21 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 29 Sep 2020 01:31:21 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.103) 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.1713.5; Tue, 29 Sep 2020 01:31:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZkf3zyz1bRvR4qr+Haoc0bvcbbKSbc9nyTYqmpL0B6GDpvI57g0zpKpw8hRGK+CC7cyAQ0FB/Gr0qrjHILyTok/WcEpHdvBJAjNjWoc1iy1LCAoTKnIt4E2HJImTuQsUAJ1byBSrBwcUNu8RVxjocp/XQ0ET86krZTuCtxPUv2xuUC5GcWyVbQfTuwfhWL7hReGR3UhEErboGon1gqJdwV6qsIZqtiQheIz5363pSCELs4Sa0hh3K1G5a3rKjemL8a70BW3iIFiLzKre/n+gAAoqo0zaeqRxksBv28yVtkIwCTsmEk4GKy+bRzeilNnWdbWg1Kc6IwPoj7dmvSuGA== 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=3gzMoZ8Q7i+YuhUTSesB5EWrI3Je3kfYqC+ISrY8Tgk=; b=L0Qp1OLhi17MqyzBuz1/Hid+AS6zUvrjfNemCgAGBhnpKaAep67PVvYEqJn4S/iwglQuqz6yGLZx9sySXLWO1Db8eR5LqEo77EYe03RqsGrK/am8gG7H9yTDRw4CW1dnvJTG0ti1x7d6UMV++oWMvRwOhfib10Yk0996pM56dOfIos/CcE+G8hUpPGs1BUG1Pb4aYvyxQHo0VpSrDiDdI0A/YBkAPmrCA/r5GmiCda3Y1n5LTADBi6u9lrm6pK7RiNGEOfyITT5Xd0Cr5xOb+DIRti42eRl+7Oy8tlwHbyJ+Gn9AUDwKHVRHHHnkSUbbcpk1zfRUedXjO3uTnGmPjQ== 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=3gzMoZ8Q7i+YuhUTSesB5EWrI3Je3kfYqC+ISrY8Tgk=; b=WGFdybk7e2rwf0i4Egxci2Arj/RE7XEFX+px1bYuiVms7f6OeSqit/UUpD0O24bwXsLiQ8Ia9uQz/3sO4k20hbCDDzb22rZoWbngYOyk0URtmOWyXiTbYOkK2/Q2kLGT0KY7vUMF9ZOwM+r3ZpIkqanoWjuIHhMQfv8mYX3efig= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3933.namprd11.prod.outlook.com (2603:10b6:208:13d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.25; Tue, 29 Sep 2020 08:31:18 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::1dc7:9f52:91c1:52da]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::1dc7:9f52:91c1:52da%3]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 08:31:18 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "Fu, Patrick" , "amorenoz@redhat.com" Thread-Topic: [PATCH v2 8/8] net/virtio: introduce Vhost-vDPA backend Thread-Index: AQHWkzflyT9di2H1REeVW1pPW3MA/ql/MLwg Date: Tue, 29 Sep 2020 08:31:18 +0000 Message-ID: References: <20200925123113.68916-1-maxime.coquelin@redhat.com> <20200925123113.68916-9-maxime.coquelin@redhat.com> In-Reply-To: <20200925123113.68916-9-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN 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.102.204.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7d2a6f60-d612-4993-1dd2-08d8645209e2 x-ms-traffictypediagnostic: MN2PR11MB3933: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3968; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3fSjkZxu/XGXzoiGEVAb66ehmZ2BTV1h9ak48HtcfMIWfspdXlMhANrff50TDb/kko2XpRdR/Z8v4ydsKc54SByoURT2SO8D5Bl/9lZSqZ9/gJk9KwUpBC8gRbD99cnbVz5CFT8oOTtDAaSlpDEgMSUpXNxgKuoNzu5DDfbyQ0Qgo+ZZT8Ma5qiZnuWTugVLpOwunEyQXJeWhjK5JRUDaZJ2juSC7wmKlB2tOyaYbuqmlQxh4+WKeUN7WJ4PfW6b4TuVljwsmPcUK/tD4xKl9LGrJPKuVWKxg+zuFy9nA/Nuvvz7ClK5CNRShosgcdVSwRpiivKZ2CqQRlmTqpMBe+PYEtE9HLIHfQeXFU1dLYmo7UhVh3hYshfGCVYBJElI 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; SFS:(4636009)(39860400002)(136003)(396003)(376002)(366004)(346002)(66946007)(66446008)(64756008)(6506007)(66476007)(76116006)(66556008)(7696005)(52536014)(83380400001)(53546011)(33656002)(26005)(9686003)(2906002)(5660300002)(8676002)(55016002)(71200400001)(8936002)(30864003)(110136005)(186003)(86362001)(478600001)(316002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: bDTP8uSxXv/AUkMLsjP5JKGrxjVC1ouVocGOUp+ytM2ofvneS4qM5/ioET3JRB8H7AQ4AyBiiLub67aoZ3Byt9XBjpA8x9/Cc2UYvSzPKz7b5MhCHfRI5tXoa256Yj0v8EZFxSFAc3aT32sLOckHRc0hAgyZV3UGrauVTw7LQq/L0MyjSxt1FQramMDHTmTno+Gm/EyJcBpJmPxGbXXRd/i0v5pH+gQF523/PiluYtLbQDHdUJnzLty18+wCMEEx80d4igJUZJmYOPnZXewJxuyE5DgTVMQpyKW+rdg6NTCF4hwX++KjKPHbGQTBVTWGJ9mbTPMI6tsVssfg61/Ain4YsuK0OLYW/u3OB+1DoaRgCM6Idn2M3n4iAGArb9H8Qu4NYlq+g+zywKcaCjY1Kz+aUpaEl3WTIH0cRxACWwYSfLaocX6DyviyGfDXmmUf3CWJze8ZdTeBP4p/FiFTSRqfFoj2DzDjxzuKGMRX8Pb+Z3AS/5SFyPGr0O0RMrZ/S/q+tVdW6qKAPpQ3DMkgLwm7wKidm3lGZTxjH2bWYE26VX7xGWaQZNjEHzx0dLlOJFWBlrEK2+GKczKwYhKDw0lyyAEH01PmWq9IPE4ISlfJIkKzZqI+jijbHfZww58yNQ2rfUUezo7qCptmNkQNiQ== 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: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d2a6f60-d612-4993-1dd2-08d8645209e2 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2020 08:31:18.7695 (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: lLJh2N2OUwyqZUvZeE8NdQDsp/u7akwo+RTedomjRK2x/sTknzPNkTb+k2xQKC4oe3WCUAgUgWdhDb0H9WiGzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3933 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v2 8/8] net/virtio: introduce Vhost-vDPA backend 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" SGkgTWF4aW1lLA0KDQpJIHNlZSB0aGVyZSdzIGEgY29tcGlsZSBpc3N1ZSBpbiBwYXRjaHdvcmsu DQoNCkluIHZob3N0X3ZkcGFfZG1hX3VubWFwLCBsZW4gaXMgc2l6ZV90LiBBbmQgeW91IHVzZSAn MFVMTCAtMScgb3V0c2lkZS4gSW4gaTY4NiwNClVMTCBpcyA2NCBiaXQgYnV0IHNpemVfdCBpcyAz MiBiaXQuIEFsdGhvdWdoIC0xIGlzIGFsbCBGIGFuZCB0aGUgY29kZSBsb2dpYyBpcyBmaW5lDQp0 byBjb252ZXJ0IDY0ICcxJ3MgdG8gMzIgJzEncywgdGhlIGNvbXBpbGVyIHdpbGwgdHJlYXQgaXQg YXMgYW4gZXJyb3I/DQoNClRoYW5rcyENCkNoZW5ibyANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQu Y29tPg0KPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyNSwgMjAyMCA4OjMxIFBNDQo+IFRvOiBk ZXZAZHBkay5vcmc7IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT47IEZ1LCBQYXRy aWNrDQo+IDxwYXRyaWNrLmZ1QGludGVsLmNvbT47IGFtb3Jlbm96QHJlZGhhdC5jb20NCj4gQ2M6 IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFN1YmplY3Q6 IFtQQVRDSCB2MiA4LzhdIG5ldC92aXJ0aW86IGludHJvZHVjZSBWaG9zdC12RFBBIGJhY2tlbmQN Cj4gDQo+IHZob3N0LXZEUEEgaXMgYSBuZXcgdmlydGlvIGJhY2tlbmQgdHlwZSBpbnRyb2R1Y2Vk IGJ5IHZEUEEga2VybmVsDQo+IGZyYW1ld29yaywgd2hpY2ggcHJvdmlkZXMgYWJzdHJ1Y3Rpb24g dG8gdGhlIHZEUEEgZGV2aWNlcyBhbmQNCj4gZXhwb3NlcyBhbiB1bmlmaWVkIGNvbnRyb2wgaW50 ZXJmYWNlIHRocm91Z2ggYSBjaGFyIGRldi4NCj4gDQo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0 IHRvIHRoZSB2aG9zdC12RFBBIGJhY2tlbmQuIEFzIHNpbWlsYXIgdG8NCj4gdGhlIGV4aXN0aW5n IHZob3N0IGtlcm5lbCBiYWNrZW5kLCBhIHNldCBvZiB2aXJ0aW9fdXNlciBvcHMgd2VyZQ0KPiBp bnRyb2R1Y2VkIGZvciB2aG9zdC12RFBBIGJhY2tlbmQgdG8gaGFuZGxlIGRldmljZSBzcGVjaWZp YyBvcGVyYXRpb25zDQo+IHN1Y2ggYXM6DQo+ICAtIGRldmljZSBzZXR1cA0KPiAgLSBpb2N0bCBt ZXNzYWdlIGhhbmRsaW5nDQo+ICAtIHF1ZXVlIHBhaXIgZW5hYmxpbmcNCj4gIC0gZG1hIG1hcC91 bm1hcA0KPiB2RFBBIHJlbGV2YW50IGlvY3RsIGNvZGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgYXJl IGFsc28gZGVmaW5lZCBpbg0KPiB0aGlzIHBhdGNoLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF4 aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gLS0tDQo+ICBkcml2 ZXJzL25ldC92aXJ0aW8vbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZHJp dmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0LmggICAgICAgIHwgICAxICsNCj4gIGRy aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF92ZHBhLmMgICB8IDI5OCArKysrKysr KysrKysrKysrKysNCj4gIC4uLi9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rl di5jICB8ICAgNiArDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspDQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X3Zk cGEuYw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby9tZXNvbi5idWlsZA0K PiBiL2RyaXZlcnMvbmV0L3ZpcnRpby9tZXNvbi5idWlsZA0KPiBpbmRleCAzZmQ2MDUxZjRiLi5l YWVkNDYzNzNkIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vbWVzb24uYnVpbGQN Cj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL21lc29uLmJ1aWxkDQo+IEBAIC00Miw2ICs0Miw3 IEBAIGlmIGlzX2xpbnV4DQo+ICAJCSd2aXJ0aW9fdXNlci92aG9zdF9rZXJuZWwuYycsDQo+ICAJ CSd2aXJ0aW9fdXNlci92aG9zdF9rZXJuZWxfdGFwLmMnLA0KPiAgCQkndmlydGlvX3VzZXIvdmhv c3RfdXNlci5jJywNCj4gKwkJJ3ZpcnRpb191c2VyL3Zob3N0X3ZkcGEuYycsDQo+ICAJCSd2aXJ0 aW9fdXNlci92aXJ0aW9fdXNlcl9kZXYuYycpDQo+ICAJZGVwcyArPSBbJ2J1c192ZGV2J10NCj4g IGVuZGlmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhv c3QuaA0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdC5oDQo+IGluZGV4 IDJlNzE5OTVhNzkuLjIxMGEzNzA0ZTcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fdXNlci92aG9zdC5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f dXNlci92aG9zdC5oDQo+IEBAIC0xMTMsNSArMTEzLDYgQEAgc3RydWN0IHZpcnRpb191c2VyX2Jh Y2tlbmRfb3BzIHsNCj4gDQo+ICBleHRlcm4gc3RydWN0IHZpcnRpb191c2VyX2JhY2tlbmRfb3Bz IHZpcnRpb19vcHNfdXNlcjsNCj4gIGV4dGVybiBzdHJ1Y3QgdmlydGlvX3VzZXJfYmFja2VuZF9v cHMgdmlydGlvX29wc19rZXJuZWw7DQo+ICtleHRlcm4gc3RydWN0IHZpcnRpb191c2VyX2JhY2tl bmRfb3BzIHZpcnRpb19vcHNfdmRwYTsNCj4gDQo+ICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF92ZHBhLmMNCj4gYi9kcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRwYS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAwMDAuLmQ1OTJjYTg4MTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRwYS5jDQo+IEBAIC0wLDAg KzEsMjk4IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ ICsgKiBDb3B5cmlnaHQoYykgMjAyMCBSZWQgSGF0IEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaW5j bHVkZSA8c3lzL2lvY3RsLmg+DQo+ICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQo+ICsjaW5jbHVk ZSA8c3lzL3N0YXQuaD4NCj4gKyNpbmNsdWRlIDxmY250bC5oPg0KPiArI2luY2x1ZGUgPHVuaXN0 ZC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX21lbW9yeS5oPg0KPiArDQo+ICsjaW5jbHVkZSAi dmhvc3QuaCINCj4gKyNpbmNsdWRlICJ2aXJ0aW9fdXNlcl9kZXYuaCINCj4gKw0KPiArLyogdmhv c3Qga2VybmVsICYgdmRwYSBpb2N0bHMgKi8NCj4gKyNkZWZpbmUgVkhPU1RfVklSVElPIDB4QUYN Cj4gKyNkZWZpbmUgVkhPU1RfR0VUX0ZFQVRVUkVTIF9JT1IoVkhPU1RfVklSVElPLCAweDAwLCBf X3U2NCkNCj4gKyNkZWZpbmUgVkhPU1RfU0VUX0ZFQVRVUkVTIF9JT1coVkhPU1RfVklSVElPLCAw eDAwLCBfX3U2NCkNCj4gKyNkZWZpbmUgVkhPU1RfU0VUX09XTkVSIF9JTyhWSE9TVF9WSVJUSU8s IDB4MDEpDQo+ICsjZGVmaW5lIFZIT1NUX1JFU0VUX09XTkVSIF9JTyhWSE9TVF9WSVJUSU8sIDB4 MDIpDQo+ICsjZGVmaW5lIFZIT1NUX1NFVF9NRU1fVEFCTEUgX0lPVyhWSE9TVF9WSVJUSU8sIDB4 MDMsIHZvaWQgKikNCj4gKyNkZWZpbmUgVkhPU1RfU0VUX0xPR19CQVNFIF9JT1coVkhPU1RfVklS VElPLCAweDA0LCBfX3U2NCkNCj4gKyNkZWZpbmUgVkhPU1RfU0VUX0xPR19GRCBfSU9XKFZIT1NU X1ZJUlRJTywgMHgwNywgaW50KQ0KPiArI2RlZmluZSBWSE9TVF9TRVRfVlJJTkdfTlVNIF9JT1co VkhPU1RfVklSVElPLCAweDEwLCBzdHJ1Y3QNCj4gdmhvc3RfdnJpbmdfc3RhdGUpDQo+ICsjZGVm aW5lIFZIT1NUX1NFVF9WUklOR19BRERSIF9JT1coVkhPU1RfVklSVElPLCAweDExLCBzdHJ1Y3QN Cj4gdmhvc3RfdnJpbmdfYWRkcikNCj4gKyNkZWZpbmUgVkhPU1RfU0VUX1ZSSU5HX0JBU0UgX0lP VyhWSE9TVF9WSVJUSU8sIDB4MTIsIHN0cnVjdA0KPiB2aG9zdF92cmluZ19zdGF0ZSkNCj4gKyNk ZWZpbmUgVkhPU1RfR0VUX1ZSSU5HX0JBU0UgX0lPV1IoVkhPU1RfVklSVElPLCAweDEyLCBzdHJ1 Y3QNCj4gdmhvc3RfdnJpbmdfc3RhdGUpDQo+ICsjZGVmaW5lIFZIT1NUX1NFVF9WUklOR19LSUNL IF9JT1coVkhPU1RfVklSVElPLCAweDIwLCBzdHJ1Y3QNCj4gdmhvc3RfdnJpbmdfZmlsZSkNCj4g KyNkZWZpbmUgVkhPU1RfU0VUX1ZSSU5HX0NBTEwgX0lPVyhWSE9TVF9WSVJUSU8sIDB4MjEsIHN0 cnVjdA0KPiB2aG9zdF92cmluZ19maWxlKQ0KPiArI2RlZmluZSBWSE9TVF9TRVRfVlJJTkdfRVJS IF9JT1coVkhPU1RfVklSVElPLCAweDIyLCBzdHJ1Y3QNCj4gdmhvc3RfdnJpbmdfZmlsZSkNCj4g KyNkZWZpbmUgVkhPU1RfTkVUX1NFVF9CQUNLRU5EIF9JT1coVkhPU1RfVklSVElPLCAweDMwLCBz dHJ1Y3QNCj4gdmhvc3RfdnJpbmdfZmlsZSkNCj4gKyNkZWZpbmUgVkhPU1RfVkRQQV9HRVRfREVW SUNFX0lEIF9JT1IoVkhPU1RfVklSVElPLCAweDcwLCBfX3UzMikNCj4gKyNkZWZpbmUgVkhPU1Rf VkRQQV9HRVRfU1RBVFVTIF9JT1IoVkhPU1RfVklSVElPLCAweDcxLCBfX3U4KQ0KPiArI2RlZmlu ZSBWSE9TVF9WRFBBX1NFVF9TVEFUVVMgX0lPVyhWSE9TVF9WSVJUSU8sIDB4NzIsIF9fdTgpDQo+ ICsjZGVmaW5lIFZIT1NUX1ZEUEFfU0VUX1ZSSU5HX0VOQUJMRQlfSU9XKFZIT1NUX1ZJUlRJTywg MHg3NSwgXA0KPiArCQkJCQkgICAgIHN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSkNCj4gKw0KPiAr c3RhdGljIHVpbnQ2NF90IHZob3N0X3JlcV91c2VyX3RvX3ZkcGFbXSA9IHsNCj4gKwlbVkhPU1Rf VVNFUl9TRVRfT1dORVJdID0gVkhPU1RfU0VUX09XTkVSLA0KPiArCVtWSE9TVF9VU0VSX1JFU0VU X09XTkVSXSA9IFZIT1NUX1JFU0VUX09XTkVSLA0KPiArCVtWSE9TVF9VU0VSX1NFVF9GRUFUVVJF U10gPSBWSE9TVF9TRVRfRkVBVFVSRVMsDQo+ICsJW1ZIT1NUX1VTRVJfR0VUX0ZFQVRVUkVTXSA9 IFZIT1NUX0dFVF9GRUFUVVJFUywNCj4gKwlbVkhPU1RfVVNFUl9TRVRfVlJJTkdfQ0FMTF0gPSBW SE9TVF9TRVRfVlJJTkdfQ0FMTCwNCj4gKwlbVkhPU1RfVVNFUl9TRVRfVlJJTkdfTlVNXSA9IFZI T1NUX1NFVF9WUklOR19OVU0sDQo+ICsJW1ZIT1NUX1VTRVJfU0VUX1ZSSU5HX0JBU0VdID0gVkhP U1RfU0VUX1ZSSU5HX0JBU0UsDQo+ICsJW1ZIT1NUX1VTRVJfR0VUX1ZSSU5HX0JBU0VdID0gVkhP U1RfR0VUX1ZSSU5HX0JBU0UsDQo+ICsJW1ZIT1NUX1VTRVJfU0VUX1ZSSU5HX0FERFJdID0gVkhP U1RfU0VUX1ZSSU5HX0FERFIsDQo+ICsJW1ZIT1NUX1VTRVJfU0VUX1ZSSU5HX0tJQ0tdID0gVkhP U1RfU0VUX1ZSSU5HX0tJQ0ssDQo+ICsJW1ZIT1NUX1VTRVJfU0VUX01FTV9UQUJMRV0gPSBWSE9T VF9TRVRfTUVNX1RBQkxFLA0KPiArCVtWSE9TVF9VU0VSX1NFVF9TVEFUVVNdID0gVkhPU1RfVkRQ QV9TRVRfU1RBVFVTLA0KPiArCVtWSE9TVF9VU0VSX0dFVF9TVEFUVVNdID0gVkhPU1RfVkRQQV9H RVRfU1RBVFVTLA0KPiArCVtWSE9TVF9VU0VSX1NFVF9WUklOR19FTkFCTEVdID0gVkhPU1RfVkRQ QV9TRVRfVlJJTkdfRU5BQkxFLA0KPiArfTsNCj4gKw0KPiArLyogbm8gYWxpZ25tZW50IHJlcXVp cmVtZW50ICovDQo+ICtzdHJ1Y3Qgdmhvc3RfaW90bGJfbXNnIHsNCj4gKwl1aW50NjRfdCBpb3Zh Ow0KPiArCXVpbnQ2NF90IHNpemU7DQo+ICsJdWludDY0X3QgdWFkZHI7DQo+ICsjZGVmaW5lIFZI T1NUX0FDQ0VTU19STyAgICAgIDB4MQ0KPiArI2RlZmluZSBWSE9TVF9BQ0NFU1NfV08gICAgICAw eDINCj4gKyNkZWZpbmUgVkhPU1RfQUNDRVNTX1JXICAgICAgMHgzDQo+ICsJdWludDhfdCBwZXJt Ow0KPiArI2RlZmluZSBWSE9TVF9JT1RMQl9NSVNTICAgICAgICAgICAxDQo+ICsjZGVmaW5lIFZI T1NUX0lPVExCX1VQREFURSAgICAgICAgIDINCj4gKyNkZWZpbmUgVkhPU1RfSU9UTEJfSU5WQUxJ REFURSAgICAgMw0KPiArI2RlZmluZSBWSE9TVF9JT1RMQl9BQ0NFU1NfRkFJTCAgICA0DQo+ICsJ dWludDhfdCB0eXBlOw0KPiArfTsNCj4gKw0KPiArI2RlZmluZSBWSE9TVF9JT1RMQl9NU0dfVjIg MHgyDQo+ICsNCj4gK3N0cnVjdCB2aG9zdF9tc2cgew0KPiArCXVpbnQzMl90IHR5cGU7DQo+ICsJ dWludDMyX3QgcmVzZXJ2ZWQ7DQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3Qgdmhvc3RfaW90bGJf bXNnIGlvdGxiOw0KPiArCQl1aW50OF90IHBhZGRpbmdbNjRdOw0KPiArCX07DQo+ICt9Ow0KPiAr DQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF92ZHBhX2RtYV9tYXAoc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2LCB2b2lkICphZGRyLA0KPiArCQkJCSAgdWludDY0X3QgaW92YSwgc2l6ZV90IGxl bikNCj4gK3sNCj4gKwlzdHJ1Y3Qgdmhvc3RfbXNnIG1zZyA9IHt9Ow0KPiArDQo+ICsJbXNnLnR5 cGUgPSBWSE9TVF9JT1RMQl9NU0dfVjI7DQo+ICsJbXNnLmlvdGxiLnR5cGUgPSBWSE9TVF9JT1RM Ql9VUERBVEU7DQo+ICsJbXNnLmlvdGxiLmlvdmEgPSBpb3ZhOw0KPiArCW1zZy5pb3RsYi51YWRk ciA9ICh1aW50NjRfdCkodWludHB0cl90KWFkZHI7DQo+ICsJbXNnLmlvdGxiLnNpemUgPSBsZW47 DQo+ICsJbXNnLmlvdGxiLnBlcm0gPSBWSE9TVF9BQ0NFU1NfUlc7DQo+ICsNCj4gKwlpZiAod3Jp dGUoZGV2LT52aG9zdGZkLCAmbXNnLCBzaXplb2YobXNnKSkgIT0gc2l6ZW9mKG1zZykpIHsNCj4g KwkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNlbmQgSU9UTEIgdXBkYXRlICglcykiLA0K PiArCQkJCXN0cmVycm9yKGVycm5vKSk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArdmhvc3RfdmRwYV9kbWFf dW5tYXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LCBfX3J0ZV91bnVzZWQgdm9pZCAqYWRk ciwNCj4gKwkJCQkgIHVpbnQ2NF90IGlvdmEsIHNpemVfdCBsZW4pDQo+ICt7DQo+ICsJc3RydWN0 IHZob3N0X21zZyBtc2cgPSB7fTsNCj4gKw0KPiArCW1zZy50eXBlID0gVkhPU1RfSU9UTEJfTVNH X1YyOw0KPiArCW1zZy5pb3RsYi50eXBlID0gVkhPU1RfSU9UTEJfSU5WQUxJREFURTsNCj4gKwlt c2cuaW90bGIuaW92YSA9IGlvdmE7DQo+ICsJbXNnLmlvdGxiLnNpemUgPSBsZW47DQo+ICsNCj4g KwlpZiAod3JpdGUoZGV2LT52aG9zdGZkLCAmbXNnLCBzaXplb2YobXNnKSkgIT0gc2l6ZW9mKG1z ZykpIHsNCj4gKwkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNlbmQgSU9UTEIgaW52YWxp ZGF0ZSAoJXMpIiwNCj4gKwkJCQlzdHJlcnJvcihlcnJubykpOw0KPiArCQlyZXR1cm4gLTE7DQo+ ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKw0KPiArc3RhdGljIGludA0K PiArdmhvc3RfdmRwYV9tYXBfY29udGlnKGNvbnN0IHN0cnVjdCBydGVfbWVtc2VnX2xpc3QgKm1z bCwNCj4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9tZW1zZWcgKm1zLCBzaXplX3QgbGVuLCB2b2lkICph cmcpDQo+ICt7DQo+ICsJc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2ID0gYXJnOw0KPiArDQo+ ICsJaWYgKG1zbC0+ZXh0ZXJuYWwpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJcmV0dXJuIHZo b3N0X3ZkcGFfZG1hX21hcChkZXYsIG1zLT5hZGRyLCBtcy0+aW92YSwgbGVuKTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludA0KPiArdmhvc3RfdmRwYV9tYXAoY29uc3Qgc3RydWN0IHJ0ZV9tZW1z ZWdfbGlzdCAqbXNsLCBjb25zdCBzdHJ1Y3QgcnRlX21lbXNlZw0KPiAqbXMsDQo+ICsJCXZvaWQg KmFyZykNCj4gK3sNCj4gKwlzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYgPSBhcmc7DQo+ICsN Cj4gKwkvKiBza2lwIGV4dGVybmFsIG1lbW9yeSB0aGF0IGlzbid0IGEgaGVhcCAqLw0KPiArCWlm IChtc2wtPmV4dGVybmFsICYmICFtc2wtPmhlYXApDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJ Lyogc2tpcCBhbnkgc2VnbWVudHMgd2l0aCBpbnZhbGlkIElPVkEgYWRkcmVzc2VzICovDQo+ICsJ aWYgKG1zLT5pb3ZhID09IFJURV9CQURfSU9WQSkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwkv KiBpZiBJT1ZBIG1vZGUgaXMgVkEsIHdlJ3ZlIGFscmVhZHkgbWFwcGVkIHRoZSBpbnRlcm5hbCBz ZWdtZW50cyAqLw0KPiArCWlmICghbXNsLT5leHRlcm5hbCAmJiBydGVfZWFsX2lvdmFfbW9kZSgp ID09IFJURV9JT1ZBX1ZBKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXJldHVybiB2aG9zdF92 ZHBhX2RtYV9tYXAoZGV2LCBtcy0+YWRkciwgbXMtPmlvdmEsIG1zLT5sZW4pOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF92ZHBhX2RtYV9tYXBfYWxsKHN0cnVjdCB2aXJ0aW9f dXNlcl9kZXYgKmRldikNCj4gK3sNCj4gKwl2aG9zdF92ZHBhX2RtYV91bm1hcChkZXYsIDAsIDBV TEwsIDBVTEwgLSAxKTsNCj4gKw0KPiArCWlmIChydGVfZWFsX2lvdmFfbW9kZSgpID09IFJURV9J T1ZBX1ZBKSB7DQo+ICsJCS8qIHdpdGggSU9WQSBhcyBWQSBtb2RlLCB3ZSBjYW4gZ2V0IGF3YXkg d2l0aCBtYXBwaW5nDQo+IGNvbnRpZ3VvdXMNCj4gKwkJICogY2h1bmtzIHJhdGhlciB0aGFuIGdv aW5nIHBhZ2UtYnktcGFnZS4NCj4gKwkJICovDQo+ICsJCWludCByZXQgPSBydGVfbWVtc2VnX2Nv bnRpZ193YWxrX3RocmVhZF91bnNhZmUoDQo+ICsJCQkJdmhvc3RfdmRwYV9tYXBfY29udGlnLCBk ZXYpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJLyogd2UgaGF2ZSB0 byBjb250aW51ZSB0aGUgd2FsayBiZWNhdXNlIHdlJ3ZlIHNraXBwZWQgdGhlDQo+ICsJCSAqIGV4 dGVybmFsIHNlZ21lbnRzIGR1cmluZyB0aGUgY29uZmlnIHdhbGsuDQo+ICsJCSAqLw0KPiArCX0N Cj4gKwlyZXR1cm4gcnRlX21lbXNlZ193YWxrX3RocmVhZF91bnNhZmUodmhvc3RfdmRwYV9tYXAs IGRldik7DQo+ICt9DQo+ICsNCj4gKy8qIHdpdGggYmVsb3cgZmVhdHVyZXMsIHZob3N0IHZkcGEg ZG9lcyBub3QgbmVlZCB0byBkbyB0aGUgY2hlY2tzdW0gYW5kDQo+IFRTTywNCj4gKyAqIHRoZXNl IGluZm8gd2lsbCBiZSBwYXNzZWQgdG8gdmlydGlvX3VzZXIgdGhyb3VnaCB2aXJ0aW8gbmV0IGhl YWRlci4NCj4gKyAqLw0KPiArI2RlZmluZSBWSE9TVF9WRFBBX0dVRVNUX09GRkxPQURTX01BU0sJ XA0KPiArCSgoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfR1VFU1RfQ1NVTSkgfAlcDQo+ICsJICgxVUxM IDw8IFZJUlRJT19ORVRfRl9HVUVTVF9UU080KSB8CVwNCj4gKwkgKDFVTEwgPDwgVklSVElPX05F VF9GX0dVRVNUX1RTTzYpIHwJXA0KPiArCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfR1VFU1RfRUNO KSAgfAlcDQo+ICsJICgxVUxMIDw8IFZJUlRJT19ORVRfRl9HVUVTVF9VRk8pKQ0KPiArDQo+ICsj ZGVmaW5lIFZIT1NUX1ZEUEFfSE9TVF9PRkZMT0FEU19NQVNLCQlcDQo+ICsJKCgxVUxMIDw8IFZJ UlRJT19ORVRfRl9IT1NUX1RTTzQpIHwJXA0KPiArCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfSE9T VF9UU082KSB8CVwNCj4gKwkgKDFVTEwgPDwgVklSVElPX05FVF9GX0NTVU0pKQ0KPiArDQo+ICtz dGF0aWMgaW50DQo+ICt2aG9zdF92ZHBhX2lvY3RsKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRl diwNCj4gKwkJICAgZW51bSB2aG9zdF91c2VyX3JlcXVlc3QgcmVxLA0KPiArCQkgICB2b2lkICph cmcpDQo+ICt7DQo+ICsJaW50IHJldCA9IC0xOw0KPiArCXVpbnQ2NF90IHJlcV92ZHBhOw0KPiAr DQo+ICsJUE1EX0RSVl9MT0coSU5GTywgIiVzIiwgdmhvc3RfbXNnX3N0cmluZ3NbcmVxXSk7DQo+ ICsNCj4gKwlyZXFfdmRwYSA9IHZob3N0X3JlcV91c2VyX3RvX3ZkcGFbcmVxXTsNCj4gKw0KPiAr CWlmIChyZXFfdmRwYSA9PSBWSE9TVF9TRVRfTUVNX1RBQkxFKQ0KPiArCQlyZXR1cm4gdmhvc3Rf dmRwYV9kbWFfbWFwX2FsbChkZXYpOw0KPiArDQo+ICsJaWYgKHJlcV92ZHBhID09IFZIT1NUX1NF VF9GRUFUVVJFUykgew0KPiArCQkvKiBXT1JLQVJPVU5EICovDQo+ICsJCSoodWludDY0X3QgKilh cmcgfD0gMVVMTCA8PCBWSVJUSU9fRl9JT01NVV9QTEFURk9STTsNCj4gKw0KPiArCQkvKiBNdWx0 aXF1ZXVlIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdyAqLw0KPiArCQkqKHVpbnQ2NF90ICopYXJnICY9 IH4oMVVMTCA8PCBWSVJUSU9fTkVUX0ZfTVEpOw0KPiArCX0NCj4gKw0KPiArCXN3aXRjaCAocmVx X3ZkcGEpIHsNCj4gKwljYXNlIFZIT1NUX1NFVF9WUklOR19OVU06DQo+ICsJY2FzZSBWSE9TVF9T RVRfVlJJTkdfQUREUjoNCj4gKwljYXNlIFZIT1NUX1NFVF9WUklOR19CQVNFOg0KPiArCWNhc2Ug VkhPU1RfR0VUX1ZSSU5HX0JBU0U6DQo+ICsJY2FzZSBWSE9TVF9TRVRfVlJJTkdfS0lDSzoNCj4g KwljYXNlIFZIT1NUX1NFVF9WUklOR19DQUxMOg0KPiArCQlQTURfRFJWX0xPRyhERUJVRywgInZo b3N0ZmQ9JWQsIGluZGV4PSV1IiwNCj4gKwkJCSAgICBkZXYtPnZob3N0ZmQsICoodW5zaWduZWQg aW50ICopYXJnKTsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJYnJlYWs7DQo+ICsJ fQ0KPiArDQo+ICsJcmV0ID0gaW9jdGwoZGV2LT52aG9zdGZkLCByZXFfdmRwYSwgYXJnKTsNCj4g KwlpZiAocmV0IDwgMCkNCj4gKwkJUE1EX0RSVl9MT0coRVJSLCAiJXMgZmFpbGVkOiAlcyIsDQo+ ICsJCQkgICAgdmhvc3RfbXNnX3N0cmluZ3NbcmVxXSwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKw0K PiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICogU2V0IHVwIGVudmlyb25t ZW50IHRvIHRhbGsgd2l0aCBhIHZob3N0IHZkcGEgYmFja2VuZC4NCj4gKyAqDQo+ICsgKiBAcmV0 dXJuDQo+ICsgKiAgIC0gKC0xKSBpZiBmYWlsIHRvIHNldCB1cDsNCj4gKyAqICAgLSAoPj0wKSBp ZiBzdWNjZXNzZnVsLg0KPiArICovDQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF92ZHBhX3NldHVw KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gK3sNCj4gKwl1aW50MzJfdCBkaWQgPSAo dWludDMyX3QpLTE7DQo+ICsNCj4gKwlkZXYtPnZob3N0ZmQgPSBvcGVuKGRldi0+cGF0aCwgT19S RFdSKTsNCj4gKwlpZiAoZGV2LT52aG9zdGZkIDwgMCkgew0KPiArCQlQTURfRFJWX0xPRyhFUlIs ICJGYWlsZWQgdG8gb3BlbiAlczogJXNcbiIsDQo+ICsJCQkJZGV2LT5wYXRoLCBzdHJlcnJvcihl cnJubykpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGlvY3RsKGRldi0+ dmhvc3RmZCwgVkhPU1RfVkRQQV9HRVRfREVWSUNFX0lELCAmZGlkKSA8IDAgfHwNCj4gKwkJCWRp ZCAhPSBWSVJUSU9fSURfTkVUV09SSykgew0KPiArCQlQTURfRFJWX0xPRyhFUlIsICJJbnZhbGlk IHZkcGEgZGV2aWNlIElEOiAldVxuIiwgZGlkKTsNCj4gKwkJcmV0dXJuIC0xOw0KPiArCX0NCj4g Kw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF92ZHBh X2VuYWJsZV9xdWV1ZV9wYWlyKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gKwkJCSAg ICAgICB1aW50MTZfdCBwYWlyX2lkeCwNCj4gKwkJCSAgICAgICBpbnQgZW5hYmxlKQ0KPiArew0K PiArCWludCBpOw0KPiArDQo+ICsJaWYgKGRldi0+cXBfZW5hYmxlZFtwYWlyX2lkeF0gPT0gZW5h YmxlKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCAyOyArK2kpIHsN Cj4gKwkJc3RydWN0IHZob3N0X3ZyaW5nX3N0YXRlIHN0YXRlID0gew0KPiArCQkJLmluZGV4ID0g cGFpcl9pZHggKiAyICsgaSwNCj4gKwkJCS5udW0gICA9IGVuYWJsZSwNCj4gKwkJfTsNCj4gKw0K PiArCQlpZiAodmhvc3RfdmRwYV9pb2N0bChkZXYsIFZIT1NUX1VTRVJfU0VUX1ZSSU5HX0VOQUJM RSwgJnN0YXRlKSkNCj4gKwkJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwlkZXYtPnFwX2Vu YWJsZWRbcGFpcl9pZHhdID0gZW5hYmxlOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK3N0cnVjdCB2aXJ0aW9fdXNlcl9iYWNrZW5kX29wcyB2aXJ0aW9fb3BzX3ZkcGEgPSB7DQo+ ICsJLnNldHVwID0gdmhvc3RfdmRwYV9zZXR1cCwNCj4gKwkuc2VuZF9yZXF1ZXN0ID0gdmhvc3Rf dmRwYV9pb2N0bCwNCj4gKwkuZW5hYmxlX3FwID0gdmhvc3RfdmRwYV9lbmFibGVfcXVldWVfcGFp ciwNCj4gKwkuZG1hX21hcCA9IHZob3N0X3ZkcGFfZG1hX21hcCwNCj4gKwkuZG1hX3VubWFwID0g dmhvc3RfdmRwYV9kbWFfdW5tYXAsDQo+ICt9Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv dmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rldi5jDQo+IGIvZHJpdmVycy9uZXQvdmly dGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rldi5jDQo+IGluZGV4IDgxMjU3YTM5OTYuLmE1 YmExNGQwNmEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92 aXJ0aW9fdXNlcl9kZXYuYw0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIv dmlydGlvX3VzZXJfZGV2LmMNCj4gQEAgLTM4OSw2ICszODksMTIgQEAgdmlydGlvX3VzZXJfZGV2 X3NldHVwKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJCQlkZXYtPnZob3N0ZmRz W3FdID0gLTE7DQo+ICAJCQkJZGV2LT50YXBmZHNbcV0gPSAtMTsNCj4gIAkJCX0NCj4gKwkJfSBl bHNlIGlmIChkZXYtPmJhY2tlbmRfdHlwZSA9PQ0KPiArCQkJCVZJUlRJT19VU0VSX0JBQ0tFTkRf VkhPU1RfVkRQQSkgew0KPiArCQkJZGV2LT5vcHMgPSAmdmlydGlvX29wc192ZHBhOw0KPiArCQl9 IGVsc2Ugew0KPiArCQkJUE1EX0RSVl9MT0coRVJSLCAiVW5rbm93biBiYWNrZW5kIHR5cGUiKTsN Cj4gKwkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCX0NCj4gDQo+IC0tDQo+IDIuMjYuMg0KDQo=