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 D794FA052B; Wed, 29 Jul 2020 04:06:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 392494C93; Wed, 29 Jul 2020 04:06:03 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id CA28CF04 for ; Wed, 29 Jul 2020 04:06:01 +0200 (CEST) IronPort-SDR: jThaQXPbgfv1Uu+HwW6E7CvUMqSQgMfemVYTohCx5b9sYEKUg+XVVknPA1DCuUpeXzvbnj3sOx JuIAnn00VikA== X-IronPort-AV: E=McAfee;i="6000,8403,9696"; a="130904819" X-IronPort-AV: E=Sophos;i="5.75,408,1589266800"; d="scan'208";a="130904819" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2020 19:06:00 -0700 IronPort-SDR: NxhFB6eEpagX2KBrugP5wYMrd+Jdiv6LFbRsQswBUxEgX2K4tdSPJFAZkYAFzdXv2aGJ+W/oVv AINMC9cBLoiA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,408,1589266800"; d="scan'208";a="328514797" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jul 2020 19:06:00 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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, 28 Jul 2020 19:06:00 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 28 Jul 2020 19:06:00 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.171) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 19:05:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I168zVH/6rLodfSAgmYn99CR3Hkc1hbVLmp9KBWiPPmYHqhrgB/QeWMYE651wZdMFLcMCWcuzdy5q0RBSB5bl48mwSEMnu/n59viQ4yGcmehQILc6djCRoNZuUPYh8bVSds7aefLBEdd1V5E6UQhAzo7gqP3wQZShMJQ4kn9K9fVaX0Yyp+zmuA0u1ZuJSbP6UorS4N8Uvn0OPPFjJlP1+Bj/nozQe2yRCwBM7iSTxZI0RB/MzvOCrBXWFtpl+TcMfjIyrkGAY2WRxB7T0w3c+9EMRuoz/Q77jS/5DrJ51qPSGRub3S4MPi2s6notd4USFqXmLnfdgwhqJiEn7Q5IA== 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=LmTgtsYgDLUDAmjEvYKDuWLiD+23fFes/HJlunSdrP0=; b=Mlkwk0vz/6xJ0QA9Ta67joKWs2kj1LfO2NQ7X0iphKQD3l+SSopwYr77OYm2LaDOr2kjyhoKLUje3A5y/OzFYz969SKBhLJEqw4JU7bDX1QR3jn9c+onTMHrHKq+fI4aBXlFIKZdSMrRuMhqI6rwftmMQqCMSSEuPtFUFUHi2BLGYiu/7XgsGzFDFvI2q98WwoXvf7AMb7DYanP9cVe7t+CFZFCwUIdNTOTPHsUXFRPPs3igKt1dFBocUgKviiDDxCOF49Tn6fVv2vgIDHHa0sfryqc6SEYv5vAnzW17UstIMlOrILOU0i/i9KhqIxISyUnBs2xLADpRkHHTBPgW7g== 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=LmTgtsYgDLUDAmjEvYKDuWLiD+23fFes/HJlunSdrP0=; b=fgv7CmpJJvU02Fzn3yvn/itgnxfDgzUBrrMlDdjQIkVt9kvYNE++nFlAij/FCYVhECETHk60xokO4JLa4BEDWKkduUfvFS4Ry9pBGOdjQ679EgqDH9mmdyWVXxDBzu87VU0BeQNmOOE+39PpOvDdoVnXLJ5nUErBi+wx77Illd0= Received: from DM5PR1101MB2169.namprd11.prod.outlook.com (2603:10b6:4:51::14) by DM6PR11MB4364.namprd11.prod.outlook.com (2603:10b6:5:201::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.24; Wed, 29 Jul 2020 02:05:48 +0000 Received: from DM5PR1101MB2169.namprd11.prod.outlook.com ([fe80::d96a:61:33a9:9036]) by DM5PR1101MB2169.namprd11.prod.outlook.com ([fe80::d96a:61:33a9:9036%12]) with mapi id 15.20.3216.033; Wed, 29 Jul 2020 02:05:48 +0000 From: "Fu, Patrick" To: Maxime Coquelin , "dev@dpdk.org" , "Xia, Chenbo" Thread-Topic: [PATCH v4] vhost: fix async copy fail on multi-page buffers Thread-Index: AQHWZI+lPkPkeAD5aEK64SRswX9uOakdBF+AgADCWvCAAAj7MA== Date: Wed, 29 Jul 2020 02:05:48 +0000 Message-ID: References: <20200720025242.3066787-1-patrick.fu@intel.com> <20200728032851.3704083-1-patrick.fu@intel.com> <113e052d-8d6e-a0d4-2218-5a022e2497ee@redhat.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action 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.198.147.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c54bd1c6-c8bb-498e-59f5-08d83363e9a1 x-ms-traffictypediagnostic: DM6PR11MB4364: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:751; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eZafqo+/Ih0mG4oLL6IlOVG3ZaZdyLd0vhKESssTSC4gB8SyGJRyOoAXcKyyN8dd+kGyHoNKzZug6EzJG1jE4xGdeTuiRJFK3gOCFH1bF3HoaI2XVufsPCYSVEUbdn1g3hmfTCNy4pFI5CRL4HUVWGHS9uLGcyNvFtJi6uBFwyDX9M9JTYfZJTVKgEfNNQ/liWHjBaSimsh9Rk6e+6Y/XYgShqgUB9RsLky3FCspNL+oxI1ZOMleHqSsUl4zb/pJ9NwzNUR/oKKCqqIkEdghM8FAxSZ/HV1MdZC0LCDwguPVuMDgwBrFtSlQHyI5JyYoiJr/7Dkm3DLhmVHIq49Gcw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR1101MB2169.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(346002)(376002)(366004)(136003)(396003)(2906002)(8936002)(66556008)(186003)(316002)(66446008)(478600001)(76116006)(55016002)(7696005)(64756008)(26005)(2940100002)(9686003)(8676002)(66476007)(6636002)(6506007)(33656002)(53546011)(83380400001)(5660300002)(86362001)(66946007)(71200400001)(110136005)(52536014); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: Mo8WXiqR9uQeQeiHzvL4hY5qdLyO2ZMNOqiwjqzrRMxYYx6oakGah5ScaoQZaj707698bjyKp/krMmDkUlhy/SD6PNxqycsxPs6v6gp9A9KXcH81S5rxf5V0ow20Qzlmxmd64aSV1MxWgwc7zGkXYjwUyyuhoXpfDO1AnyvcT46x7bEIRbIH775RveLMwWZtOJT+MfBzm0eEgWfZBhe06tXP77po5/dSBYbisu1mrf9B+gLsslJVYg9Mrnda/Hij4DbDv5UiXzq98ZKhNwaUi7H84a4JSBzbKnrUMIKGahpHHokdOEOchrHhjA8SAhTIC7YuQhcp9aPqysYeL8vYmS7w+cOQGULHNoRhLqnM/wZMjhgHJUTvB5xRGsSI02UncEJSENzhf/V3ivofUoFiadkgZ9BiL+RleiC2mPyckn4HzT1tZzm6TQ/aEh2Y+nJm1ZEMDKriCkcUA/VntV5ODS1sOsTR/H8OJU86Ul/De4rAKD3sp83WMGnXDABnvCyE 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: DM5PR1101MB2169.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c54bd1c6-c8bb-498e-59f5-08d83363e9a1 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2020 02:05:48.5740 (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: tdkuAy8pEtwkbd4JE/vG581VNqlq7QZWgP/g07igXZbpR4h/l1vMLDXC4vyetlXCozE4vlG4LMVfPOgYX3Ldzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4364 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v4] vhost: fix async copy fail on multi-page buffers 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZ1LCBQ YXRyaWNrDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAyOSwgMjAyMCA5OjQwIEFNDQo+IFRvOiAn TWF4aW1lIENvcXVlbGluJyA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+OyBkZXZAZHBkay5v cmc7IFhpYSwNCj4gQ2hlbmJvIDxDaGVuYm8uWGlhQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6 IFtQQVRDSCB2NF0gdmhvc3Q6IGZpeCBhc3luYyBjb3B5IGZhaWwgb24gbXVsdGktcGFnZSBidWZm ZXJzDQo+IA0KPiBIaSBNYXhpbWUsDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4N Cj4gPiBTZW50OiBUdWVzZGF5LCBKdWx5IDI4LCAyMDIwIDk6NTUgUE0NCj4gPiBUbzogRnUsIFBh dHJpY2sgPHBhdHJpY2suZnVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBYaWEsIENoZW5ibw0K PiA+IDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0XSB2 aG9zdDogZml4IGFzeW5jIGNvcHkgZmFpbCBvbiBtdWx0aS1wYWdlDQo+ID4gYnVmZmVycw0KPiA+ DQo+ID4NCj4gPg0KPiA+IE9uIDcvMjgvMjAgNToyOCBBTSwgcGF0cmljay5mdUBpbnRlbC5jb20g d3JvdGU6DQo+ID4gPiBGcm9tOiBQYXRyaWNrIEZ1IDxwYXRyaWNrLmZ1QGludGVsLmNvbT4NCj4g PiA+DQo+ID4gPiBBc3luYyBjb3B5IGZhaWxzIHdoZW4gc2luZ2xlIHJpbmcgYnVmZmVyIHZlY3Rv ciBpcyBzcGxpdGVkIG9uDQo+ID4gPiBtdWx0aXBsZSBwaHlzaWNhbCBwYWdlcy4gVGhpcyBoYXBw ZW5zIGJlY2F1c2UgY3VycmVudCBocGEgYWRkcmVzcw0KPiA+ID4gdHJhbnNsYXRpb24gZnVuY3Rp b24gZG9lc24ndCBoYW5kbGUgbXVsdGktcGFnZSBidWZmZXJzLiBBIG5ldyBncGEgdG8NCj4gPiA+ IGhwYSBhZGRyZXNzIGNvbnZlcnNpb24gZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgdGhlIGhwYSBv biB0aGUgZmlyc3QNCj4gPiA+IGhpdHRpbmcgaG9zdCBwYWdlcywgaXMgaW1wbGVtZW50ZWQgaW4g dGhpcyBwYXRjaC4gQXN5bmMgZGF0YSBwYXRoDQo+ID4gPiByZWN1cnNpdmVseSBjYWxscyB0aGlz IG5ldyBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBtdWx0aS1zZWdtZW50cw0KPiA+ID4gYXN5bmMg Y29weSBkZXNjcmlwdG9yIGZvciByaW5nIGJ1ZmZlcnMgY3Jvc3NpbmcgcGh5c2ljYWwgcGFnZSBi b3VuZGFyaWVzLg0KPiA+ID4NCj4gPiA+IEZpeGVzOiBjZDY3NjBkYTEwNzYgKCJ2aG9zdDogaW50 cm9kdWNlIGFzeW5jIGVucXVldWUgZm9yIHNwbGl0DQo+ID4gPiByaW5nIikNCj4gPiA+DQo+ID4g PiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIEZ1IDxwYXRyaWNrLmZ1QGludGVsLmNvbT4NCj4gPiA+ IC0tLQ0KPiA+ID4gdjI6DQo+ID4gPiAgLSBjaGFuZ2UgY29tbWl0IG1lc3NhZ2UgYW5kIHRpdGxl DQo+ID4gPiAgLSB2MSBwYXRjaCB1c2VkIENQVSB0byBjb3B5IG11bHRpLXBhZ2UgYnVmZmVyczsg djIgcGF0Y2ggc3BsaXQgdGhlDQo+ID4gPiBjb3B5IGludG8gbXVsdGlwbGUgYXN5bmMgY29weSBz ZWdtZW50cyB3aGVuZXZlciBwb3NzaWJsZQ0KPiA+ID4NCj4gPiA+IHYzOg0KPiA+ID4gIC0gYWRk ZWQgZml4bGluZQ0KPiA+ID4NCj4gPiA+IHY0Og0KPiA+ID4gIC0gZml4IG1pc3MgdHJhbnNsYXRp b24gb2YgdGhlIGdwYSB3aGljaCBpcyB0aGUgc2FtZSBsZW5ndGggd2l0aCBob3N0DQo+ID4gPiAg ICBwYWdlIHNpemUNCj4gPiA+DQo+ID4gPiAgbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oICAgICAg fCA1MA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gIGxpYi9s aWJydGVfdmhvc3QvdmlydGlvX25ldC5jIHwgNDAgKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LQ0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25z KC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25l dC5jDQo+ID4gPiBiL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25ldC5jIGluZGV4IDk1YTBiYzE5 Zi4uMTI0YTMzYTEwIDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV92aG9zdC92aXJ0aW9f bmV0LmMNCj4gPiA+ICsrKyBiL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25ldC5jDQo+ID4gPiBA QCAtOTgwLDYgKzk4MCw3IEBAIGFzeW5jX21idWZfdG9fZGVzYyhzdHJ1Y3QgdmlydGlvX25ldCAq ZGV2LA0KPiA+ID4gc3RydWN0DQo+ID4gdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gPiA+ICAJc3Ry dWN0IGJhdGNoX2NvcHlfZWxlbSAqYmF0Y2hfY29weSA9IHZxLT5iYXRjaF9jb3B5X2VsZW1zOw0K PiA+ID4gIAlzdHJ1Y3QgdmlydGlvX25ldF9oZHJfbXJnX3J4YnVmIHRtcF9oZHIsICpoZHIgPSBO VUxMOw0KPiA+ID4gIAlpbnQgZXJyb3IgPSAwOw0KPiA+ID4gKwl1aW50NjRfdCBtYXBwZWRfbGVu Ow0KPiA+ID4NCj4gPiA+ICAJdWludDMyX3QgdGxlbiA9IDA7DQo+ID4gPiAgCWludCB0dmVjX2lk eCA9IDA7DQo+ID4gPiBAQCAtMTA3MiwyNCArMTA3MywzMSBAQCBhc3luY19tYnVmX3RvX2Rlc2Mo c3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiA+IHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZx LA0KPiA+ID4NCj4gPiA+ICAJCWNweV9sZW4gPSBSVEVfTUlOKGJ1Zl9hdmFpbCwgbWJ1Zl9hdmFp bCk7DQo+ID4gPg0KPiA+ID4gLQkJaWYgKHVubGlrZWx5KGNweV9sZW4gPj0gY3B5X3RocmVzaG9s ZCkpIHsNCj4gPiA+IC0JCQlocGEgPSAodm9pZCAqKSh1aW50cHRyX3QpZ3BhX3RvX2hwYShkZXYs DQo+ID4gPiAtCQkJCQlidWZfaW92YSArIGJ1Zl9vZmZzZXQsIGNweV9sZW4pOw0KPiA+ID4gKwkJ d2hpbGUgKHVubGlrZWx5KGNweV9sZW4gJiYgY3B5X2xlbiA+PSBjcHlfdGhyZXNob2xkKSkgew0K PiA+ID4gKwkJCWhwYSA9ICh2b2lkICopKHVpbnRwdHJfdClncGFfdG9fZmlyc3RfaHBhKGRldiwN Cj4gPiA+ICsJCQkJCWJ1Zl9pb3ZhICsgYnVmX29mZnNldCwNCj4gPiA+ICsJCQkJCWNweV9sZW4s ICZtYXBwZWRfbGVuKTsNCj4gPiA+DQo+ID4gPiAtCQkJaWYgKHVubGlrZWx5KCFocGEpKSB7DQo+ ID4gPiAtCQkJCWVycm9yID0gLTE7DQo+ID4gPiAtCQkJCWdvdG8gb3V0Ow0KPiA+ID4gLQkJCX0N Cj4gPiA+ICsJCQlpZiAodW5saWtlbHkoIWhwYSB8fCBtYXBwZWRfbGVuIDwgY3B5X3RocmVzaG9s ZCkpDQo+ID4gPiArCQkJCWJyZWFrOw0KPiA+ID4NCj4gPiA+ICAJCQlhc3luY19maWxsX3ZlYyhz cmNfaW92ZWMgKyB0dmVjX2lkeCwNCj4gPiA+ICAJCQkJKHZvaWQgKikodWludHB0cl90KXJ0ZV9w a3RtYnVmX2lvdmFfb2Zmc2V0KG0sDQo+ID4gPiAtCQkJCQkJbWJ1Zl9vZmZzZXQpLCBjcHlfbGVu KTsNCj4gPiA+ICsJCQkJbWJ1Zl9vZmZzZXQpLCAoc2l6ZV90KW1hcHBlZF9sZW4pOw0KPiA+ID4N Cj4gPiA+IC0JCQlhc3luY19maWxsX3ZlYyhkc3RfaW92ZWMgKyB0dmVjX2lkeCwgaHBhLCBjcHlf bGVuKTsNCj4gPiA+ICsJCQlhc3luY19maWxsX3ZlYyhkc3RfaW92ZWMgKyB0dmVjX2lkeCwNCj4g PiA+ICsJCQkJCWhwYSwgKHNpemVfdCltYXBwZWRfbGVuKTsNCj4gPiA+DQo+ID4gPiAtCQkJdGxl biArPSBjcHlfbGVuOw0KPiA+ID4gKwkJCXRsZW4gKz0gKHVpbnQzMl90KW1hcHBlZF9sZW47DQo+ ID4gPiArCQkJY3B5X2xlbiAtPSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPiA+ICsJCQltYnVm X2F2YWlsICAtPSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPiA+ICsJCQltYnVmX29mZnNldCAr PSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPiA+ICsJCQlidWZfYXZhaWwgIC09ICh1aW50MzJf dCltYXBwZWRfbGVuOw0KPiA+ID4gKwkJCWJ1Zl9vZmZzZXQgKz0gKHVpbnQzMl90KW1hcHBlZF9s ZW47DQo+ID4gPiAgCQkJdHZlY19pZHgrKzsNCj4gPiA+IC0JCX0gZWxzZSB7DQo+ID4gPiArCQl9 DQo+ID4gPiArDQo+ID4gPiArCQlpZiAobGlrZWx5KGNweV9sZW4pKSB7DQo+ID4gPiAgCQkJaWYg KHVubGlrZWx5KHZxLT5iYXRjaF9jb3B5X25iX2VsZW1zID49IHZxLT5zaXplKSkgew0KPiA+ID4g IAkJCQlydGVfbWVtY3B5KA0KPiA+ID4gIAkJCQkodm9pZCAqKSgodWludHB0cl90KShidWZfYWRk ciArIGJ1Zl9vZmZzZXQpKSwNCj4gPiBAQCAtMTExMiwxMA0KPiA+ID4gKzExMjAsMTIgQEAgYXN5 bmNfbWJ1Zl90b19kZXNjKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdA0KPiA+IHZob3N0 X3ZpcnRxdWV1ZSAqdnEsDQo+ID4gPiAgCQkJfQ0KPiA+ID4gIAkJfQ0KPiA+ID4NCj4gPiA+IC0J CW1idWZfYXZhaWwgIC09IGNweV9sZW47DQo+ID4gPiAtCQltYnVmX29mZnNldCArPSBjcHlfbGVu Ow0KPiA+ID4gLQkJYnVmX2F2YWlsICAtPSBjcHlfbGVuOw0KPiA+ID4gLQkJYnVmX29mZnNldCAr PSBjcHlfbGVuOw0KPiA+ID4gKwkJaWYgKGNweV9sZW4pIHsNCj4gPiA+ICsJCQltYnVmX2F2YWls ICAtPSBjcHlfbGVuOw0KPiA+ID4gKwkJCW1idWZfb2Zmc2V0ICs9IGNweV9sZW47DQo+ID4gPiAr CQkJYnVmX2F2YWlsICAtPSBjcHlfbGVuOw0KPiA+ID4gKwkJCWJ1Zl9vZmZzZXQgKz0gY3B5X2xl bjsNCj4gPiA+ICsJCX0NCj4gPg0KPiA+IElzIHRoYXQgcmVhbGx5IG5lY2Vzc2FyeSB0byBjaGVj ayBpZiBjb3B5IGxlbmd0aCBpcyBub3QgMD8NCj4gPg0KPiBUaGUgaW50ZW5zaW9uIGlzIHRvIG9w dGltaXplIGZvciB0aGUgY2FzZSB0aGF0IHJpbmcgYnVmZmVycyBhcmUgTk9UIHNwbGl0ICh3aGlj aA0KPiBzaG91bGQgYmUgdGhlIG1vc3QgY29tbW9uIGNhc2UpLiBJbiB0aGF0IGNhc2UsIGNweV9s ZW4gd2lsbCBiZSB6ZXJvIGFuZCBieQ0KPiB0aGlzICJpZiIgc3RhdGVtZW50IHdlIGNhbiBzYXZl IGNvdXBsZSBvZiBjeWNsZXMuIFdpdGggdGhhdCBzYWlkLCB0aGUgYWN0dWFsDQo+IGRpZmZlcmVu Y2UgaXMgbWlub3IuIEknbSBvcGVuIHdpdGggZWl0aGVyIGFkZGluZyBhbiAidW5saWtlbHkiIHRv IHRoZSAiaWYiLCBvcg0KPiByZW1vdmluZyB0aGlzIHRoZSAiaWYiLiBXb3VsZCBsaWtlIHRvIGhl YXIgeW91ciBvcHRpb24gYW5kIHN1Ym1pdCBtb2RpZmllZA0KPiBwYXRjaC4NCj4gDQoNCkkgaGF2 ZSBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoZSBjYXNlIChjb21iaW5lIHRoaXMgImlmIiBsb2dp YyB3aXRoIHRoZSBwcmV2aW91cyBvbmUpLiANClBsZWFzZSByZXZpZXcgbXkgdjUgcGF0Y2ggZm9y IHRoZSBjb2RlIGNoYW5nZS4NCg0KVGhhbmtzLA0KDQpQYXRyaWNrDQoNCg==