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 9C03EA0350; Sun, 21 Jun 2020 08:26:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7CB2E1BFC5; Sun, 21 Jun 2020 08:26:07 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150074.outbound.protection.outlook.com [40.107.15.74]) by dpdk.org (Postfix) with ESMTP id 48C7B1BFC1 for ; Sun, 21 Jun 2020 08:26:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UwVd8SO/P01xzxxrJ1vDpUSbs0FlNTMUjo+v8Gf56ffZzBICKlen2W2Xa/bVyKvDv+iuGfte7/iyWSiPp4DdDIlxIGZBw/vC/UYaNOlZacu6kYAVYLZEq4FsI9NSYqcXvmnSrLjFLxBoZLigMKNlw4ytQysz7QGbWP7snxaVxO3XLOcLcc4YKN+UgXy4y6meXZ5x+iEMD0WRAxFdI42BEmcKvz5c86PGyJd7vRpQwYHqBd6GxduRO4rQhiMELgFznZ7ZVkXIN/USrcyDnh0kTNk0jC5qlmDvbLb5qJd75kmisaLuYdVUEHay7KfWILFflcvzkEK7fPfOy/vVt5XF0A== 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=GOXvu1V6GVp6Bq0monkPLh9Bcb/36VsTjUY1tB61WNY=; b=i59OFtqVWczGecvX5jDuL0vaJXP3fWt3PDKwtlFLFw9qFb4eYc504uedSIvklYSWaOhfCCqrnIYno+EwFmpD30EZfQVGPpHancEnWGlqDt18ktrp/3pHQasxYlFAlddm3dDjbozKGN9AdI6vOJ9WavRfSBV1YAchDO8u/hb5LRDSThi8UbJmKFNR3wgie1P+GbAHVwk7pxXHDxFxu7h/xMLEH4Rqt7Z44gCtUxY6qT5idoT4DciPdKve7LOZy+coxXN1280irvpRlXQ8XzzxV70YFzKqv+pYacl5Cs4wV5Xvm6+A0K25iOfOMiKDv7VPQF5BKc/ZMTMVO7PvutXIsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GOXvu1V6GVp6Bq0monkPLh9Bcb/36VsTjUY1tB61WNY=; b=hT2SdQFGXOF6ykMCdjlWm9F9FHHnzygcMPhwMsjYdaOuQXVbKciHWUG0rObqzklXCqoNw1jhJ9AOFJe6ND/X5ijvov2JYRgSmSrPZiofPDW4eWmy1h6HmTUyx7QonD98mXc+xMQflHx7IH+pia4Vh3/3pM61Degrg91SZlJOlDk= Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com (2603:10a6:208:f::11) by AM0PR0502MB4081.eurprd05.prod.outlook.com (2603:10a6:208:11::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Sun, 21 Jun 2020 06:26:04 +0000 Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998]) by AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998%7]) with mapi id 15.20.3109.026; Sun, 21 Jun 2020 06:26:04 +0000 From: Matan Azrad To: Maxime Coquelin , Xiao Wang CC: "dev@dpdk.org" Thread-Topic: [PATCH v1 1/4] vhost: support host notifier queue configuration Thread-Index: AQHWRgUpY2v0R5iI30uc66Xg3pUh66jf62hAgAAM7QCAAqPbIA== Date: Sun, 21 Jun 2020 06:26:04 +0000 Message-ID: References: <1592497686-433697-1-git-send-email-matan@mellanox.com> <1592497686-433697-2-git-send-email-matan@mellanox.com> In-Reply-To: Accept-Language: en-US, he-IL 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=mellanox.com; x-originating-ip: [77.124.38.174] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 867aef0d-1aaa-4b8c-611c-08d815abf999 x-ms-traffictypediagnostic: AM0PR0502MB4081: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 04410E544A x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cwen/cw1/s5Z95ELPTvy06pnaKddRg8KgS18mJL+lXSxpCtA2AgfpCIr+p3qvO5Bxy2m4S3ItfAYNqsmwdPB1usYNclxgoVm3T80CMNIbC8Mg2dCZZy8DJtNasAm+prZOE37KypdVYBkTS9x6gShJUaGbyFb9r2AIVSBj5bBWf8PLMZNVaBnIuZLtrHBGIaZm3SHDFKLeC1QKUGolHBQFROaTFzUHP4ikDE8/0YkUaCRdp81T4zTAQ79bC+fjinp9iibQ718xJqzlNmFxQ2NkAC6PnKhlZ4MrkXGplf2g10e6AeFzyephBtw9g1k1h3ZU/2o3ShSBR+8eLwEGyk8FA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB4019.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(396003)(39850400004)(346002)(376002)(366004)(71200400001)(5660300002)(52536014)(64756008)(76116006)(66946007)(8676002)(8936002)(66476007)(110136005)(316002)(66446008)(66556008)(9686003)(33656002)(26005)(86362001)(2906002)(55016002)(4326008)(186003)(6506007)(478600001)(53546011)(7696005)(83380400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: VMqRalFd0GdxBaYQBvt8i3i2LtARTSySZQu9nIX7FlfnNMw4CJ9yImPwS8Gu4WZQxG2nUbrm3h5k1UN/xrV2QFBuwLpSgheb3yLqOMn4006Bgln/apTp58d3xtmPnOiCuHwf8xG4bl7uiU6OU05U2P7xlHCIv8fLT8IokIfZngTvcNIRFJIFkSSDMLTYSxr+Bl2UOBuWCAHargO0bG37ZCzjXeWcm9dQZN21sIYvme5luadZnZ3Ga19TJtCD3rfPL7lZ96EmhwtmR7tptDbdNXO8DaGaR/d9A6KvUAmTrpnS/+h8cdpDXf5o2eIA9I6nbTC1UOV8RSl4tb0vh+DFdalNTR4vSkcMCp8EM24Y2GSBDPaeNFZrE7r4RmgGEaM3FKjaCPxQboueKlyTLxFVKD+QrJHk9uIpi91XD5RRI3Idzlzs4VCjJn/xcLmYoPuhipFOL7ikR2YLwRjSH5QdOxlf3vGAlA7TvNcLoPDNgPY= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 867aef0d-1aaa-4b8c-611c-08d815abf999 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jun 2020 06:26:04.3225 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KX7VnbkRqL5etOyZuTEcLCQ6kdOgLMbbpqrQ+SiJtAXiNTiN2vT8i9HAUkOQuaG3nGz+FuTrKKDJySeDWaIXNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB4081 Subject: Re: [dpdk-dev] [PATCH v1 1/4] vhost: support host notifier queue configuration 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" SGkgTWF4aW1lDQoNCkZyb206IE1heGltZSBDb3F1ZWxpbjoNCj4gT24gNi8xOS8yMCAzOjI4IFBN LCBNYXRhbiBBenJhZCB3cm90ZToNCj4gPg0KPiA+DQo+ID4gRnJvbTogTWF4aW1lIENvcXVlbGlu Og0KPiA+PiBPbiA2LzE4LzIwIDY6MjggUE0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+Pj4gQXMg YW4gYXJyYW5nZW1lbnQgdG8gcGVyIHF1ZXVlIG9wZXJhdGlvbnMgaW4gdGhlIHZEUEEgZGV2aWNl IGl0IGlzDQo+ID4+PiBuZWVkZWQgdG8gY2hhbmdlIHRoZSBuZXh0IGV4cGVyaW1lbnRhbCBBUEk6 DQo+ID4+Pg0KPiA+Pj4gVGhlIEFQSSBgYHJ0ZV92aG9zdF9ob3N0X25vdGlmaWVyX2N0cmxgYCB3 YXMgY2hhbmdlZCB0byBiZSBwZXIgcXVldWUNCj4gPj4+IGluc3RlYWQgb2YgcGVyIGRldmljZS4N Cj4gPj4+DQo+ID4+PiBBIGBxaWRgIHBhcmFtZXRlciB3YXMgYWRkZWQgdG8gdGhlIEFQSSBhcmd1 bWVudHMgbGlzdC4NCj4gPj4+DQo+ID4+PiBTZXR0aW5nIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIHZh bHVlIFZIT1NUX1FVRVVFX0FMTCB3aWxsIGNvbmZpZ3VyZQ0KPiA+Pj4gdGhlIGhvc3Qgbm90aWZp ZXIgdG8gYWxsIHRoZSBkZXZpY2UgcXVldWVzIGFzIGRvbmUgYmVmb3JlIHRoaXMgcGF0Y2guDQo+ ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogTWF0YW4gQXpyYWQgPG1hdGFuQG1lbGxhbm94LmNv bT4NCj4gPj4+IC0tLQ0KPiA+Pj4gIGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjBfMDgu cnN0IHwgIDIgKysNCj4gPj4+ICBkcml2ZXJzL3ZkcGEvaWZjL2lmY3ZmX3ZkcGEuYyAgICAgICAg ICB8ICA2ICsrKy0tLQ0KPiA+Pj4gIGRyaXZlcnMvdmRwYS9tbHg1L21seDVfdmRwYS5jICAgICAg ICAgIHwgIDUgKysrLS0NCj4gPj4+ICBsaWIvbGlicnRlX3Zob3N0L3J0ZV92ZHBhLmggICAgICAg ICAgICB8ICA4ICsrKysrKy0tDQo+ID4+PiAgbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaCAg ICAgICAgICAgfCAgMiArKw0KPiA+Pj4gIGxpYi9saWJydGVfdmhvc3Qvdmhvc3QuaCAgICAgICAg ICAgICAgIHwgIDMgLS0tDQo+ID4+PiAgbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMgICAg ICAgICAgfCAxOCArKysrKysrKysrKysrKy0tLS0NCj4gPj4+ICA3IGZpbGVzIGNoYW5nZWQsIDMw IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQg YS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzA4LnJzdA0KPiA+Pj4gYi9kb2MvZ3Vp ZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzA4LnJzdA0KPiA+Pj4gaW5kZXggYmExNmQzYi4uOTcz Mjk1OSAxMDA2NDQNCj4gPj4+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjBf MDgucnN0DQo+ID4+PiArKysgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzA4LnJz dA0KPiA+Pj4gQEAgLTExMSw2ICsxMTEsOCBAQCBBUEkgQ2hhbmdlcw0KPiA+Pj4gICAgIEFsc28s IG1ha2Ugc3VyZSB0byBzdGFydCB0aGUgYWN0dWFsIHRleHQgYXQgdGhlIG1hcmdpbi4NCj4gPj4+ DQo+ID4+DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KPiA+Pj4NCj4gPj4+ICsqIHZob3N0OiBUaGUgQVBJIG9mIGBgcnRlX3Zob3N0 X2hvc3Rfbm90aWZpZXJfY3RybGBgIHdhcyBjaGFuZ2VkIHRvDQo+ID4+PiArYmUgcGVyDQo+ID4+ PiArICBxdWV1ZSBhbmQgbm90IHBlciBkZXZpY2UsIGEgcWlkIHBhcmFtZXRlciB3YXMgYWRkZWQg dG8gdGhlDQo+ID4+PiArYXJndW1lbnRzDQo+ID4+IGxpc3QuDQo+ID4+Pg0KPiA+Pj4gIEFCSSBD aGFuZ2VzDQo+ID4+PiAgLS0tLS0tLS0tLS0NCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zk cGEvaWZjL2lmY3ZmX3ZkcGEuYw0KPiA+Pj4gYi9kcml2ZXJzL3ZkcGEvaWZjL2lmY3ZmX3ZkcGEu YyBpbmRleCBlYzk3MTc4Li4zMzY4MzdhIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy92ZHBh L2lmYy9pZmN2Zl92ZHBhLmMNCj4gPj4+ICsrKyBiL2RyaXZlcnMvdmRwYS9pZmMvaWZjdmZfdmRw YS5jDQo+ID4+PiBAQCAtODM5LDcgKzgzOSw3IEBAIHN0cnVjdCBpbnRlcm5hbF9saXN0IHsNCj4g Pj4+ICAJdmRwYV9pZmN2Zl9zdG9wKGludGVybmFsKTsNCj4gPj4+ICAJdmRwYV9kaXNhYmxlX3Zm aW9faW50cihpbnRlcm5hbCk7DQo+ID4+Pg0KPiA+Pj4gLQlyZXQgPSBydGVfdmhvc3RfaG9zdF9u b3RpZmllcl9jdHJsKHZpZCwgZmFsc2UpOw0KPiA+Pj4gKwlyZXQgPSBydGVfdmhvc3RfaG9zdF9u b3RpZmllcl9jdHJsKHZpZCwgVkhPU1RfUVVFVUVfQUxMLCBmYWxzZSk7DQo+ID4+PiAgCWlmIChy ZXQgJiYgcmV0ICE9IC1FTk9UU1VQKQ0KPiA+Pj4gIAkJZ290byBlcnJvcjsNCj4gPj4+DQo+ID4+ PiBAQCAtODU4LDcgKzg1OCw3IEBAIHN0cnVjdCBpbnRlcm5hbF9saXN0IHsNCj4gPj4+ICAJaWYg KHJldCkNCj4gPj4+ICAJCWdvdG8gc3RvcF92ZjsNCj4gPj4+DQo+ID4+PiAtCXJ0ZV92aG9zdF9o b3N0X25vdGlmaWVyX2N0cmwodmlkLCB0cnVlKTsNCj4gPj4+ICsJcnRlX3Zob3N0X2hvc3Rfbm90 aWZpZXJfY3RybCh2aWQsIFZIT1NUX1FVRVVFX0FMTCwgdHJ1ZSk7DQo+ID4+Pg0KPiA+Pj4gIAlp bnRlcm5hbC0+c3dfZmFsbGJhY2tfcnVubmluZyA9IHRydWU7DQo+ID4+Pg0KPiA+Pj4gQEAgLTg5 Myw3ICs4OTMsNyBAQCBzdHJ1Y3QgaW50ZXJuYWxfbGlzdCB7DQo+ID4+PiAgCXJ0ZV9hdG9taWMz Ml9zZXQoJmludGVybmFsLT5kZXZfYXR0YWNoZWQsIDEpOw0KPiA+Pj4gIAl1cGRhdGVfZGF0YXBh dGgoaW50ZXJuYWwpOw0KPiA+Pj4NCj4gPj4+IC0JaWYgKHJ0ZV92aG9zdF9ob3N0X25vdGlmaWVy X2N0cmwodmlkLCB0cnVlKSAhPSAwKQ0KPiA+Pj4gKwlpZiAocnRlX3Zob3N0X2hvc3Rfbm90aWZp ZXJfY3RybCh2aWQsIFZIT1NUX1FVRVVFX0FMTCwgdHJ1ZSkgIT0gMCkNCj4gPj4+ICAJCURSVl9M T0coTk9USUNFLCAidkRQQSAoJWQpOiBzb2Z0d2FyZSByZWxheSBpcyB1c2VkLiIsIGRpZCk7DQo+ ID4+Pg0KPiA+Pj4gIAlyZXR1cm4gMDsNCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEv bWx4NS9tbHg1X3ZkcGEuYw0KPiA+Pj4gYi9kcml2ZXJzL3ZkcGEvbWx4NS9tbHg1X3ZkcGEuYyBp bmRleCA5ZTc1OGI2Li44ZWExMzAwIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy92ZHBhL21s eDUvbWx4NV92ZHBhLmMNCj4gPj4+ICsrKyBiL2RyaXZlcnMvdmRwYS9tbHg1L21seDVfdmRwYS5j DQo+ID4+PiBAQCAtMTQ3LDcgKzE0Nyw4IEBADQo+ID4+PiAgCWludCByZXQ7DQo+ID4+Pg0KPiA+ Pj4gIAlpZiAocHJpdi0+ZGlyZWN0X25vdGlmaWVyKSB7DQo+ID4+PiAtCQlyZXQgPSBydGVfdmhv c3RfaG9zdF9ub3RpZmllcl9jdHJsKHByaXYtPnZpZCwgZmFsc2UpOw0KPiA+Pj4gKwkJcmV0ID0g cnRlX3Zob3N0X2hvc3Rfbm90aWZpZXJfY3RybChwcml2LT52aWQsDQo+ID4+IFZIT1NUX1FVRVVF X0FMTCwNCj4gPj4+ICsJCQkJCQkgICBmYWxzZSk7DQo+ID4+PiAgCQlpZiAocmV0ICE9IDApIHsN Cj4gPj4+ICAJCQlEUlZfTE9HKElORk8sICJEaXJlY3QgSFcgbm90aWZpZXIgRkQgY2Fubm90IGJl ICINCj4gPj4+ICAJCQkJImRlc3Ryb3llZCBmb3IgZGV2aWNlICVkOiAlZC4iLCBwcml2LT52aWQs DQo+ID4+IHJldCk7IEBAIC0xNTUsNyArMTU2LDcNCj4gPj4+IEBADQo+ID4+PiAgCQl9DQo+ID4+ PiAgCQlwcml2LT5kaXJlY3Rfbm90aWZpZXIgPSAwOw0KPiA+Pj4gIAl9DQo+ID4+PiAtCXJldCA9 IHJ0ZV92aG9zdF9ob3N0X25vdGlmaWVyX2N0cmwocHJpdi0+dmlkLCB0cnVlKTsNCj4gPj4+ICsJ cmV0ID0gcnRlX3Zob3N0X2hvc3Rfbm90aWZpZXJfY3RybChwcml2LT52aWQsIFZIT1NUX1FVRVVF X0FMTCwNCj4gPj4+ICt0cnVlKTsNCj4gPj4+ICAJaWYgKHJldCAhPSAwKQ0KPiA+Pj4gIAkJRFJW X0xPRyhJTkZPLCAiRGlyZWN0IEhXIG5vdGlmaWVyIEZEIGNhbm5vdCBiZSBjb25maWd1cmVkDQo+ ID4+IGZvciINCj4gPj4+ICAJCQkiIGRldmljZSAlZDogJWQuIiwgcHJpdi0+dmlkLCByZXQpOyBk aWZmIC0tZ2l0DQo+ID4+PiBhL2xpYi9saWJydGVfdmhvc3QvcnRlX3ZkcGEuaCBiL2xpYi9saWJy dGVfdmhvc3QvcnRlX3ZkcGEuaCBpbmRleA0KPiA+Pj4gZWNiM2Q5MS4uMmRiNTM2YyAxMDA2NDQN Cj4gPj4+IC0tLSBhL2xpYi9saWJydGVfdmhvc3QvcnRlX3ZkcGEuaA0KPiA+Pj4gKysrIGIvbGli L2xpYnJ0ZV92aG9zdC9ydGVfdmRwYS5oDQo+ID4+PiBAQCAtMjAyLDIyICsyMDIsMjYgQEAgc3Ry dWN0IHJ0ZV92ZHBhX2RldmljZSAqICBpbnQNCj4gPj4+IHJ0ZV92ZHBhX2dldF9kZXZpY2VfbnVt KHZvaWQpOw0KPiA+Pj4NCj4gPj4+ICsjZGVmaW5lIFZIT1NUX1FVRVVFX0FMTCBWSE9TVF9NQVhf VlJJTkcNCj4gPj4+ICsNCj4gPj4+ICAvKioNCj4gPj4+ICAgKiBAd2FybmluZw0KPiA+Pj4gICAq IEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGlj ZQ0KPiA+Pj4gICAqDQo+ID4+PiAtICogRW5hYmxlL0Rpc2FibGUgaG9zdCBub3RpZmllciBtYXBw aW5nIGZvciBhIHZkcGEgcG9ydC4NCj4gPj4+ICsgKiBFbmFibGUvRGlzYWJsZSBob3N0IG5vdGlm aWVyIG1hcHBpbmcgZm9yIGEgdmRwYSBxdWV1ZS4NCj4gPj4+ICAgKg0KPiA+Pj4gICAqIEBwYXJh bSB2aWQNCj4gPj4+ICAgKiAgdmhvc3QgZGV2aWNlIGlkDQo+ID4+PiAgICogQHBhcmFtIGVuYWJs ZQ0KPiA+Pj4gICAqICB0cnVlIGZvciBob3N0IG5vdGlmaWVyIG1hcCwgZmFsc2UgZm9yIGhvc3Qg bm90aWZpZXIgdW5tYXANCj4gPj4+ICsgKiBAcGFyYW0gcWlkDQo+ID4+PiArICogIHZob3N0IHF1 ZXVlIGlkLCBWSE9TVF9RVUVVRV9BTEwgdG8gY29uZmlndXJlIGFsbCB0aGUgZGV2aWNlDQo+ID4+ PiArIHF1ZXVlcw0KPiA+PiBJIHdvdWxkIHByZWZlciB0d28gQVBJcyB0aGF0IHBhc3NpbmcgYSBz cGVjaWFsIElEIHRoYXQgbWVhbnMgYWxsIHF1ZXVlczoNCj4gPj4NCj4gPj4gcnRlX3Zob3N0X2hv c3Rfbm90aWZpZXJfY3RybChpbnQgdmlkLCB1aW50MTZfdCBxaWQsIGJvb2wgZW5hYmxlKTsNCj4g Pj4gcnRlX3Zob3N0X2hvc3Rfbm90aWZpZXJfY3RybF9hbGwoaW50IHZpZCwgYm9vbCBlbmFibGUp Ow0KPiA+Pg0KPiA+PiBJIHRoaW5rIGl0IGlzIGNsZWFyZXIgZm9yIHRoZSB1c2VyIG9mIHRoZSBB UEkuDQo+ID4+IE9yIGlmIHlvdSB0aGluayBhbiBleHRyYSBBUEkgaXMgb3ZlcmtpbGwsIGp1c3Qg bGV0IHRoZSBkcml2ZXIgbG9vcCBvbg0KPiA+PiBhbGwgdGhlIHF1ZXVlcy4NCj4gPg0KPiA+IFdl IGhhdmUgYSBsb3Qgb2Ygb3B0aW9ucyBoZXJlIHdpdGggcHJvcyBhbmQgY29ucy4NCj4gPiBJIHRv b2sgdGhlIHJ0ZV9ldGhfZGV2X2NhbGxiYWNrX3JlZ2lzdGVyIHN0eWxlLg0KPiANCj4gT2ssIEkg ZGlkbid0IGxvb2tlZCBhdCB0aGlzIGNvZGUuDQo+IA0KPiA+IEl0IGlzIGxlc3MgaW50cnVzaXZl IHdpdGggbWluaW11bSBjb2RlIGNoYW5nZS4NCj4gPg0KPiA+IEknbSBub3Qgc3VyZSB3aGF0IGlz IHRoZSBjbGVhcmVzdCBvcHRpb24gYnV0IHRoZSBjdXJyZW50IHN1Z2dlc3Rpb24gaXMNCj4gPiB3 ZWxsIGRlZmluZWQgYW5kIGFsbG93cyB0byBjb25maWd1cmUgYWxsIHRoZSBxdWV1ZXMgdG9vLg0K PiA+DQo+ID4gTGV0IG1lIGtub3cgd2hhdCB5b3UgcHJlZmVyLi4uLg0KPiANCj4gSSBwZXJzb25h bGx5IGRvbid0IGxpa2UgdGhlIHN0eWxlLCBidXQgSSBjYW4gbGl2ZSB3aXRoIGl0IGlmIHlvdSBw cmVmZXIgZG9pbmcgaXQgbGlrZQ0KPiB0aGF0Lg0KPiANCj4gSWYgeW91IGRvIGl0IHRoYXQgd2F5 LCB5b3Ugd2lsbCBoYXZlIHRvIHJlbmFtZSBWSE9TVF9RVUVVRV9BTEwgdG8NCj4gUlRFX1ZIT1NU X1FVRVVFX0FMTCwgVkhPU1RfTUFYX1ZSSU5HICB0byBSVEVfVkhPU1RfTUFYX1ZSSU5HDQo+IGFu ZCBWSE9TVF9NQVhfUVVFVUVfUEFJUlMgdG8gUlRFX1ZIT1NUX01BWF9RVUVVRV9QQUlSUyBhcyBp dA0KPiB3aWxsIGJlY29tZSBwYXJ0IG9mIHRoZSBBQkkuDQo+IA0KPiBOb3QgdGhhdCBpdCBhbHNv IG1lYW5zIHRoYXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBpbmNyZWFzZSB0aGUgbWF4aW11bQ0KPiBu dW1iZXIgb2YgcmluZ3Mgd2l0aG91dCBicmVha2luZyB0aGUgQUJJLg0KDQpXaGF0J3MgYWJvdXQg ZGVmaW5pbmcgUlRFX1ZIT1NUX1FVRVVFX0FMTCBhcyBVSU5UMTZfTUFYPw0KDQo+ID4+PiAgICog QHJldHVybg0KPiA+Pj4gICAqICAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUNCj4gPj4+ICAg Ki8NCj4gPj4+ICBfX3J0ZV9leHBlcmltZW50YWwNCj4gPj4+ICBpbnQNCj4gPj4+IC1ydGVfdmhv c3RfaG9zdF9ub3RpZmllcl9jdHJsKGludCB2aWQsIGJvb2wgZW5hYmxlKTsNCj4gPj4+ICtydGVf dmhvc3RfaG9zdF9ub3RpZmllcl9jdHJsKGludCB2aWQsIHVpbnQxNl90IHFpZCwgYm9vbCBlbmFi bGUpOw0KPiA+Pj4NCj4gPj4+ICAvKioNCj4gPg0KDQo=