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 87FC2A04B5; Thu, 1 Oct 2020 10:43:02 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6AD5D1C224; Thu, 1 Oct 2020 10:43:01 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 98DFA1C11F for ; Thu, 1 Oct 2020 10:42:58 +0200 (CEST) IronPort-SDR: 4oFkseCBhIg1uAmDGVwSokYZfmUXn8JcCx/vj7HP8nwx1RGUoStis5uS+p69KfECIWNakeVMce sMeB8IO6HvoQ== X-IronPort-AV: E=McAfee;i="6000,8403,9760"; a="161904729" X-IronPort-AV: E=Sophos;i="5.77,323,1596524400"; d="scan'208";a="161904729" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Oct 2020 01:42:57 -0700 IronPort-SDR: mEzvrvAN8qckJLNIpTTl+qE09PW19ckj/fuC6piPHU5xvJUAkT9Uxpf7Qop8/ZFbnf/UtEmg2y /9O/Jsc/Gedg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,323,1596524400"; d="scan'208";a="514618916" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga006.fm.intel.com with ESMTP; 01 Oct 2020 01:42:57 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 1 Oct 2020 01:42:57 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 1 Oct 2020 01:42:56 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 1 Oct 2020 01:42:56 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Thu, 1 Oct 2020 01:42:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NN2k3nQ/o8jtnjvXCHov+yIwN4pSayxQQP+9J/z/v1+Wi+vMKSM/bJUmigIOtZnbqQ0Rg4NTH0l5KCVDVNHsBtm9SUIMdpr2OTkofGVx4koxJ3bMztp27l3EhUp9Lqg09RtoCUg5isttYXJTAP7Hpfasv7CxCObRGmt9VJDud1+WjGbrA8bb69nszKcu/NFJOMWiGeRskJnx1q8dxybjhptPrd9JjbpPg8DoZz3dDZz2owCivXwGRKzFaPrn1sf4OjcHdMig2kjG6fsLXcazbou05e84VlFX+wTbLTz95qNCA4Xn0+17KGU6k/iFzBzTUmobQma+RqHKYmEF+6xtBQ== 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=IWCSrnLU6/J7qYGr22rJrbVK1QY1ulnC5WN/SMZDFhE=; b=bE4vziFBm8nmQwE4LBKZ6KDMyBYCbNBam5UGmSqXe4wnlud4zygFZ1vt4osm8fNiremXWFOTJHWwOOvsBDmZrhEtlVnP2G+khpiqYapJRgWHcQKikicNlXHqSPNDtDG4gvK59ZhdbOUDmyYlXmNpqYT+d1k3tdFnr/FSxHJHwNwGL+ylpSXJr/1ZZJ8eYLAExsUw3fUaygyqxcmX4iL0hPweqW1xx8HJ/lTE1gZ1KPBdnfp4wP/hkLeDfjkYtVgafkJ9D6oQLyUNkCoITUsD7/zpANgq9yUjoRQ+DAVRKX7b8qiiMHg2VqyC38KmfKRKN2NRvrPJntLLrCm2MriYgA== 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=IWCSrnLU6/J7qYGr22rJrbVK1QY1ulnC5WN/SMZDFhE=; b=StiJzaLtZgjvNNj9GEX+LEqoFSdaWZzenZ4/DxHekjvakVio/YS6k+DCpPw7D1Tx6BG8THVNz3PIH+kOjv6fgc61VFAXLNTOry7fsEkiUC8nqth3VxoUw1ZJjSHVmZi1MxkbL6mK+sBIxUE70iMyNoy/jQDyqHH+THn48CXWlYI= Received: from BL0PR11MB3043.namprd11.prod.outlook.com (2603:10b6:208:33::19) by BL0PR11MB3219.namprd11.prod.outlook.com (2603:10b6:208:61::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.25; Thu, 1 Oct 2020 08:42:49 +0000 Received: from BL0PR11MB3043.namprd11.prod.outlook.com ([fe80::11fa:a7fe:329d:9239]) by BL0PR11MB3043.namprd11.prod.outlook.com ([fe80::11fa:a7fe:329d:9239%5]) with mapi id 15.20.3433.032; Thu, 1 Oct 2020 08:42:49 +0000 From: "Zhang, Roy Fan" To: Maxime Coquelin , "Xia, Chenbo" , "Liu, Changpeng" , "dev@dpdk.org" CC: "matan@mellanox.com" , "Zawadzki, Tomasz" , "Yigit, Ferruh" Thread-Topic: [dpdk-dev] [PATCH] vhost: return ready when at least 1 vring is configured Thread-Index: AQHWlmojl+zDDeRl5UGA47Zp7KQYjKl/v1DQgAC8HoCAANbMAIAADRiQgAEESwCAAAIogIAABm2AgAAEGvA= Date: Thu, 1 Oct 2020 08:42:49 +0000 Message-ID: References: <1598944057-32690-1-git-send-email-changpeng.liu@intel.com> <8e0e8343-4e85-71f3-8c85-07eb1cff6079@redhat.com> <06542643-cc20-5e3e-26ae-7100005dc97d@redhat.com> <24b547af-2cda-36db-cb66-e5523d169556@redhat.com> <0f8b9daf-3ed7-0ede-8c0c-f2a1bcef9ca4@redhat.com> <42d0c319-314f-80ea-f3d7-21eaf567c2fa@redhat.com> <30e718ae-5b06-cd9a-63d5-34977f1df56c@redhat.com> In-Reply-To: Accept-Language: zh-Hans-HK, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-reaction: no-action dlp-product: dlpe-windows 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: [95.44.220.85] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 43808732-8e60-4a22-c117-08d865e5fa44 x-ms-traffictypediagnostic: BL0PR11MB3219: 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:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4TB7joSv2rlyEVMhX9fz56siLWT6A3ubM+WgxSp8ArUJolrJrSwrbomvpaV7sVf8Ir6LiXV/wE4d1J1UlmNYhCUQ5rUYUGrq+OJY/TvNIT/6BAIC6iOVuKF+y08VYEj8ny5A0nxq2mJ585E0YxjBtT8B1RhNDntcvT5Els+uvxdftLULYcpAM7pEWiCROLuvHQIByVkQb6ICNgRp1T0r1razijP8l7B/7RZVc25NWdgi1SFDv+dV58Q33IWT/75BjOXAruw1rx0PYi8lOxGsxMNNmdEObZ8IGgF2MqtykwOG4/my0GFI776ojP83werAcwvVPvzx5EnonP+SorNqKGq5UzVlgjBjdWm4w7J4M5Zn1fzoHuUnaUUv5/S2wITV x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR11MB3043.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(376002)(346002)(136003)(396003)(76116006)(66946007)(186003)(8676002)(71200400001)(478600001)(7696005)(53546011)(6506007)(26005)(8936002)(9686003)(55016002)(33656002)(110136005)(52536014)(2906002)(66446008)(4326008)(5660300002)(66476007)(66556008)(86362001)(107886003)(54906003)(64756008)(316002)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: eDiywc9GNHkhWJw2WGq4ryUjkeXRnuV4os9dVRYyB8th/ZWTYwvDckryOTuoze5gmqgc4YkdVTCxEfy+n6UK/XfEAXZHda0xxqORW26HAx1Rk+IpWq90p+1jm3N5DMO1cLJ+FW8BErRaJ81i0E1RLly3aGeN196NRT8NBuNz/dVRj8MBMU5fnsvLUch6OyMFt/FUWt21JAdanskttHGRm4D/9D3/1dVZZVpMtseWDUfdy16hIa70gp7IDU9Ry1jExzfax6TSjP+VLNvIC+XQfzu6jXx621hRcOZSu9Zg5IYaTmFti41HaqJnobqD4Qjlic6kuanc/TO1upy4v0mDP9hhH0gb0gtGB+s8aHAOA/ZxAB/U9gl75e3DisWwf0d7hncHXH3oWarabLRXfCvpYU+onnsRtVr5yquF0hT9ScxE8CbaGjXbtqf/f7+e9i9HSPgf3gsnIpGN/7f2P9FnymtuUl9zDo75dJPivLjotsM5hMdVbemCoaoycknai6m5y1W7Ph0NuADkDEJ8E1RNv38aO+fEGwuu83Gew4MlvQ3SM16miDUsG34upvX75s6/pEDrJcq700CgQ/A19uK3PGS7LSR6xQu6f3e0XJq4s8NcFLG4Q0QGqKnAbrr/X2k0dQM+F1BVg0pRlVVIEPaoog== 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: BL0PR11MB3043.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43808732-8e60-4a22-c117-08d865e5fa44 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Oct 2020 08:42:49.1302 (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: hIKPAs48BBYZg7sc1ht5QL04yWw5hjF249fLun0uunU/3Qk3NdCN58r2J6sH9PY1KSd+M+LoeL03uMqW/nIS6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3219 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] vhost: return ready when at least 1 vring is configured 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" SGkgTWF4aW1lLA0KDQpZZXMgSSB0b3RhbGx5IG1pc3NlZC4gU29ycnkgYWJvdXQgdGhhdC4NCldp bGwgdHJ5IHRoaXMgd2F5LiBTaG91bGQgd29yay4gVGhhbmtzIGEgbG90Lg0KDQpSZWdhcmRzLA0K RmFuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVl bGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9jdG9i ZXIgMSwgMjAyMCA5OjI2IEFNDQo+IFRvOiBaaGFuZywgUm95IEZhbiA8cm95LmZhbi56aGFuZ0Bp bnRlbC5jb20+OyBYaWEsIENoZW5ibw0KPiA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+OyBMaXUsIENo YW5ncGVuZyA8Y2hhbmdwZW5nLmxpdUBpbnRlbC5jb20+Ow0KPiBkZXZAZHBkay5vcmcNCj4gQ2M6 IG1hdGFuQG1lbGxhbm94LmNvbTsgWmF3YWR6a2ksIFRvbWFzeiA8dG9tYXN6Lnphd2FkemtpQGlu dGVsLmNvbT47DQo+IFlpZ2l0LCBGZXJydWggPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gdmhvc3Q6IHJldHVybiByZWFkeSB3aGVuIGF0 IGxlYXN0IDEgdnJpbmcgaXMNCj4gY29uZmlndXJlZA0KPiANCj4gSGkgRmFuLA0KPiANCj4gT24g MTAvMS8yMCAxMDowNyBBTSwgWmhhbmcsIFJveSBGYW4gd3JvdGU6DQo+ID4gSGkgTWF4aW1lLA0K PiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IE1heGltZSBD b3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+IFNlbnQ6IFRodXJzZGF5 LCBPY3RvYmVyIDEsIDIwMjAgODo1NSBBTQ0KPiA+PiBUbzogWmhhbmcsIFJveSBGYW4gPHJveS5m YW4uemhhbmdAaW50ZWwuY29tPjsgWGlhLCBDaGVuYm8NCj4gPj4gPGNoZW5iby54aWFAaW50ZWwu Y29tPjsgTGl1LCBDaGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPjsNCj4gPj4gZGV2 QGRwZGsub3JnDQo+ID4+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFphd2FkemtpLCBUb21hc3oN Cj4gPHRvbWFzei56YXdhZHpraUBpbnRlbC5jb20+Ow0KPiA+PiBZaWdpdCwgRmVycnVoIDxmZXJy dWgueWlnaXRAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hd IHZob3N0OiByZXR1cm4gcmVhZHkgd2hlbiBhdCBsZWFzdCAxIHZyaW5nDQo+IGlzDQo+ID4+IGNv bmZpZ3VyZWQNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4gT24gOS8zMC8yMCA2OjM3IFBNLCBaaGFu ZywgUm95IEZhbiB3cm90ZToNCj4gPj4+IEhpIENoZW5ibyBhbmQgTWF4aW1lLA0KPiA+Pj4NCj4g Pj4+IFRoYW5rcyBmb3IgcmVwbHlpbmcgdGhlIGVtYWlsLg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4g PG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiA+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgU2Vw dGVtYmVyIDMwLCAyMDIwIDQ6MzcgUE0NCj4gPj4+PiBUbzogWGlhLCBDaGVuYm8gPGNoZW5iby54 aWFAaW50ZWwuY29tPjsgWmhhbmcsIFJveSBGYW4NCj4gPj4+PiA8cm95LmZhbi56aGFuZ0BpbnRl bC5jb20+OyBMaXUsIENoYW5ncGVuZw0KPiA8Y2hhbmdwZW5nLmxpdUBpbnRlbC5jb20+Ow0KPiA+ Pj4+IGRldkBkcGRrLm9yZw0KPiA+Pj4+IENjOiBtYXRhbkBtZWxsYW5veC5jb207IFphd2Fkemtp LCBUb21hc3oNCj4gPj4gPHRvbWFzei56YXdhZHpraUBpbnRlbC5jb20+Ow0KPiA+Pj4+IFlpZ2l0 LCBGZXJydWggPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+DQo+ID4+Pj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIXSB2aG9zdDogcmV0dXJuIHJlYWR5IHdoZW4gYXQgbGVhc3QgMQ0KPiB2 cmluZw0KPiA+PiBpcw0KPiA+Pj4+IGNvbmZpZ3VyZWQNCj4gPj4+Pg0KPiA+Pj4+IEhpLA0KPiA+ Pj4+DQo+ID4+Pj4gT24gOS8zMC8yMCA0OjQ4IEFNLCBYaWEsIENoZW5ibyB3cm90ZToNCj4gPj4+ Pj4gSGkgRmFuICYgTWF4aW1lLA0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIGFtIHRoaW5raW5nIHRoYXQg c2hvdWxkIHdlIG1vdmUgc2V0X2ZlYXR1cmVzIG91dHNpZGUgb2YNCj4gbmV3X2RldmljZQ0KPiA+ Pj4+IGNhbGxiYWNrDQo+ID4+Pj4+IGZvciBjcnlwdG8gZGV2aWNlPyBJIHNlZSB0aGF0IG5ldCBh bmQgYmxrIGRldmljZXMgYm90aCBzZXQgZmVhdHVyZXMNCj4gPj4gYmV0d2Vlbg0KPiA+Pj4+IHJl Z2lzdGVyDQo+ID4+Pj4+IGFuZCBzdGFydCwgYW5kIHBlcnNvbmFsbHkgSSB0aGluayB0aGlzIG1h a2VzIHNlbnNlIHRoYXQgZGV2aWNlIGZlYXR1cmVzDQo+ID4+IGFyZQ0KPiA+Pj4+IHNldA0KPiA+ Pj4+PiBiZWZvcmUgZGV2aWNlIHN0YXJ0IGFuZCByZWFkeS4gSG93IGRvIHlvdSB0aGluayDwn5iK Pw0KPiA+Pj4NCj4gPj4+IFRoZSByZWFzb24gaXQgaXMgc2V0IGluc2lkZSBydGVfdmhvc3RfY3J5 cHRvX2NyZWF0ZSgpIGlzIGxvZ2ljYWxseSBzcGVha2luZw0KPiA+Pj4gdGhlIHVzZXIgc2hvdWxk bid0IGV4cGVjdCB0byBoYXZlIHRvIHNldCB0aGUgZmVhdHVyZSBmbGFncyBldmVuIGFmdGVyIHRo ZQ0KPiA+PiBjcmVhdGUNCj4gPj4+IGZ1bmN0aW9uIGlzIGNhbGxlZCAtIGFuZCB3aGF0IEkga25v dyBpbiB0aGUgYXBwbGljYXRpb24gdGhlIG9ubHkgd2F5IHRvDQo+IGtub3cNCj4gPj4gdGhlDQo+ ID4+PiB2aWQgZm9yIHRoZSBmaXJzdCB0aW1lIGlzIHdoZW4gbmV3X2RldmljZSgpIGlzIGludm9r ZWQuIFNvIGlmIHRoZXJlIGlzIGF3YXkNCj4gdG8NCj4gPj4ga25vdw0KPiA+Pj4gdGhlIHZpZCBi ZWZvcmUgbmV3X2RldmljZSgpIGlzIGludm9rZWQgSSBhbSBoYXBweSB0byBjaGFuZ2UgdGhlIHNh bXBsZQ0KPiA+PiBhcHAuDQo+ID4+DQo+ID4+IEkgdGhpbmsgdGhlIFZob3N0LWNyeXB0byBBUEkg c2hvdWxkIGJlIGZpeGVkLg0KPiA+PiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgaXQgaXMgc3RpbGwg ZXhwZXJpbWVudGFsLCBzbyB3ZSBjYW4gZml4IGl0IHdpdGhvdXQNCj4gPj4gd29ycmllcyAoQlRX LCBleGNlcHQgdGhlIERQREsgZXhhbXBsZSwgYXJlIHRoZXJlIG90aGVyIGFwcGxpY2F0aW9uDQo+ IHVzaW5nDQo+ID4+IHRoZSBWaG9zdC1jcnlwdG8gQVBJPykuDQo+ID4+DQo+ID4+IFRoZSAubmV3 X2RldmljZSgpIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBWaXJ0aW8gZGV2aWNlIGlzIHJl YWR5LA0KPiA+PiBtZWFuaW5nIHdoZW4gdGhlIGJhY2tlbmQgY2FuIHN0YXJ0IHByb2Nlc3Npbmcg dGhlIHZpcnRxdWV1ZXMuIFNvDQo+IGZlYXR1cmUNCj4gPj4gbmVnb3RpYXRpb24gc2hvdWxkIGhh dmUgdGFrZW4gcGxhY2UgYmVmb3JlIHRoYXQuDQo+ID4+DQo+ID4+IEknbSBzdXJwcmlzZWQgaXQg d29ya2VkIGJlZm9yZSwgYmVjYXVzZSBkb2Vzbid0IHRoZSBmZWF0dXJlcyBuZWdvdGlhdGlvbg0K PiA+PiB0YWtlcyBwbGFjZSBiZWZvcmUgdGhlIG1lbW9yeSB0YWJsZSBhcmUgc2V0PyBJZiBzbywg aG93IGNhbiB0aGUgZmlyc3QNCj4gPj4gdmlydHF1ZXVlIGNhbiBiZSB0ZXN0ZWQgYXMgcmVhZHkg aWYgdGhlIHZyaW5nIGFkZHJlc3MgaXMgbm90IHNldD8NCj4gPj4NCj4gPj4gT25lIG90aGVyIGlz c3VlIGhlcmUsIHdoaWNoIGlzIHRyaWdnZXJpbmcgdGhlIGlzc3VlIGlzIHRoYXQgZ2l2ZW4gaG93 DQo+ID4+IHRoZSByZWdpc3RyYXRpb24gaXMgZG9uZSwgVklSVElPX0RFVl9CVUlMVElOX1ZJUlRJ T19ORVQgZmxhZyBpcyBzZXQgZm9yDQo+ID4+IFZob3N0LWNyeXB0bywgd2hpY2ggc2hvdWxkbid0 IGhhcHBlbi4gRXZlbiBiZWZvcmUgbGFzdCByZWxlYXNlIHJld29yaywNCj4gPj4geW91IHNob3Vs ZCBoYXZlIGZhY2VkIGlzc3VlcyB3aGVuIG1vcmUgdGhhbiAyIHF1ZXVlcyB3aGVyZSBpbiB1c2Vk Og0KPiA+Pg0KPiA+DQo+ID4gVmhvc3QtY3J5cHRvIHdhcyBub3Qgd29ya2luZyBzaW5jZSAyMC4w NS4gQ2hhbmdwZW5nJ3MgcGF0Y2ggd2hpY2ggc2V0IHRoZQ0KPiA+IE51bWJlciBvZiBxdWV1ZXMg dG8gb25lIG1hZGUgaXQgd29ya2luZyBhZ2FpbiBzbyB3ZSB3YWl0ZWQgaXQgbWVyZ2VkLg0KPiAN Cj4gQnV0IHRoZSBwYXRjaCBpbnRyb2R1Y2luZyB0aGUgcmVncmVzc2lvbiB3YXMgaW50cm9kdWNl ZCBpbiB2MjAuMDgsIEknbQ0KPiBjb25mdXNlZC4NCj4gDQo+ID4gSG93ZXZlciB0aGUgcGF0Y2gg d2FzIHJlamVjdGVkIGJ5IHlvdS4NCj4gDQo+IEluZGVlZCwgSSByZWplY3RlZCB0aGUgcGF0Y2gg YmVjYXVzZSBpdCB3b3VsZCBicmVhayBuZXQgYmFja2VuZHMuDQo+ID4gSSBzdXBwb3NlIHRoZXJl IGlzIGFub3RoZXIgd2F5IC0gYWRkaW5nIGEgbmV3IEFQSSBjYWxsZWQNCj4gPiAicnRlX3Zob3N0 X2NyeXB0b19zZXRfZmVhdHVyZShjb25zdCBjaGFyICpzb2NrZXQpIiBzbyB3ZSBkb24ndCBoYXZl IHRvDQo+ID4gcmVseSBvbiBydGVfdmhvc3RfY3J5cHRvX2NyZWF0ZSgpIHRvIHNldCB0aGUgZmVh dHVyZSBmbGFncw0KPiA+DQo+ID4gd2hhdCBkbyB5b3UgdGhpbms/DQo+IA0KPiBUaGUgc2V0X2Zl YXR1cmVzIHRoaW5nIGlzIGp1c3QgYW5vdGhlciBwcm9ibGVtLiBUaGUgbWFpbiBwcm9ibGVtIGlz IHRoYXQNCj4gVklSVElPX0RFVl9CVUlMVElOX1ZJUlRJT19ORVQgZ2V0cyBzZXQgZm9yIGNyeXB0 byBiYWNrZW5kLCB3aGljaCBkb2VzDQo+IG5vdCBtYWtlIHNlbnNlLg0KPiANCj4gSSBwcm9wb3Nl ZCBhIGZpeCBiZWxvdyB0byBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBidWlsdGlu IG5ldA0KPiBhbmQgY3J5cHRvIGJhY2tlbmRzIGJlbG93LCBidXQgSSB0aGluayB5b3UgbWlzc2Vk IGl0LiBQbGVhc2UgY2hlY2sNCj4gYmVsb3cuDQo+IA0KPiA+IFJlZ2FyZHMsDQo+ID4gRmFuDQo+ ID4NCj4gPj4gc3RhdGljIGludA0KPiA+PiB2aG9zdF91c2VyX3NldF9mZWF0dXJlcyhzdHJ1Y3Qg dmlydGlvX25ldCAqKnBkZXYsIHN0cnVjdCBWaG9zdFVzZXJNc2cNCj4gPj4gKm1zZywNCj4gPj4g CQkJaW50IG1haW5fZmQgX19ydGVfdW51c2VkKQ0KPiA+PiB7DQo+ID4+IC4uLg0KPiA+PiAJaWYg KChkZXYtPmZsYWdzICYgVklSVElPX0RFVl9CVUlMVElOX1ZJUlRJT19ORVQpICYmDQo+ID4+IAkg ICAgIShkZXYtPmZlYXR1cmVzICYgKDFVTEwgPDwgVklSVElPX05FVF9GX01RKSkpIHsNCj4gPj4g CQkvKg0KPiA+PiAJCSAqIFJlbW92ZSBhbGwgYnV0IGZpcnN0IHF1ZXVlIHBhaXIgaWYgTVEgaGFz bid0IGJlZW4NCj4gPj4gCQkgKiBuZWdvdGlhdGVkLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGUg ZGV2aWNlIGlzIG5vdA0KPiA+PiAJCSAqIHJ1bm5pbmcgYXQgdGhpcyBzdGFnZS4NCj4gPj4gCQkg Ki8NCj4gPj4gCQl3aGlsZSAoZGV2LT5ucl92cmluZyA+IDIpIHsNCj4gPj4gCQkJc3RydWN0IHZo b3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ID4+DQo+ID4+IAkJCXZxID0gZGV2LT52aXJ0cXVldWVbLS1k ZXYtPm5yX3ZyaW5nXTsNCj4gPj4gCQkJaWYgKCF2cSkNCj4gPj4gCQkJCWNvbnRpbnVlOw0KPiA+ Pg0KPiA+PiAJCQlkZXYtPnZpcnRxdWV1ZVtkZXYtPm5yX3ZyaW5nXSA9IE5VTEw7DQo+ID4+IAkJ CWNsZWFudXBfdnEodnEsIDEpOw0KPiA+PiAJCQljbGVhbnVwX3ZxX2luZmxpZ2h0KGRldiwgdnEp Ow0KPiA+PiAJCQlmcmVlX3ZxKGRldiwgdnEpOw0KPiA+PiAJCX0NCj4gPj4gCX0NCj4gPj4NCj4g Pj4gQXMgVklSVElPX05FVF9GX01RIGlzIG5ldmVyIG5lZ290aWF0ZWQgd2l0aCBjcnlwdG8gZGV2 aWNlcywgaXQgbWVhbnMNCj4geW91DQo+ID4+IGNhbiBub3QgaGF2ZSBtb3JlIHRoYW4gdHdvIHF1 ZXVlcy4NCj4gPj4NCj4gPj4+Pg0KPiA+Pj4+IEluZGVlZCwgd2UgY2Fubm90IGNvbnNpZGVyIHRo ZSBkZXZpY2UgdG8gYmUgcmVhZHkgKGFuZCBzbyBjYWxsDQo+ID4+Pj4gLm5ld19kZXZpY2UgY2Fs bGJhY2spIGlmIGZlYXR1cmVzIGhhdmVuJ3QgYmVlbiBuZWdvdGlhdGVkLg0KPiA+Pj4+DQo+ID4+ Pj4gSSBhZ3JlZSwgcnRlX3Zob3N0X2RyaXZlcl9zZXRfZmVhdHVyZXMoKSBoYXMgdG8gYmUgY2Fs bGVkIGJlZm9yZQ0KPiA+Pj4+IC5uZXdfZGV2aWNlKCksIGFuZCB0aGF0J3MgdGhlIHJlYXNvbiB3 aHkgaXQgdGFrZXMgc29ja2V0J3MgcGF0aCBhbmQgbm90DQo+ID4+Pj4gdmlkIGFzIGlucHV0Lg0K PiA+Pj4NCj4gPj4+IERpZmZlcmVudCB0aGFuIHZob3N0X2Jsaywgdmhvc3RfY3J5cHRvIGxpZXMg aW4gdGhlIGxpYnJhcnkgYW5kIG5lZWRzIHRvIGJlDQo+ID4+PiBhYmxlIHRvIGJlIHRyZWF0ZWQg ZXZlbmx5IGFzIHZpcnRpb19uZXQuIFdpdGhvdXQgdGhlIG5ld19kZXZpY2UoKSBjYWxsaW5nDQo+ ID4+PiBydGVfdmhvc3RfY3J5cHRvX2NyZWF0ZSgpIHRoZSBmZWF0dXJlIGZsYWcgY2Fubm90IGJl IHNldC4gV2l0aG91dA0KPiBzZXR0aW5nDQo+ID4+PiB0aGUgZmVhdHVyZSBmbGFnIHRoZSBkZXZp Y2UgaXMgYWx3YXlzIHRyZWF0ZWQgYXMgdmlydGlvX25ldCBkZXZpY2UsIGhlbmNlDQo+IGl0DQo+ ID4+PiBjYW5ub3QgcGFzcyB0aGUgdmlydGlvX2lzX3JlYWR5KCkgY2hlY2sgYXMgdGhlIG51bWJl ciBvZiBxdWV1ZXMgdmlydGlvDQo+ID4+PiBjcnlwdCB1c2VzIGlzIG9ubHkgMSBpbnN0ZWFkIG9m IDIgKHJlcXVpcmVkIGJ5IHZpcnRpb19uZXQpLg0KPiA+Pg0KPiA+PiBPSywgc28gd2UgYXJlIGFs aWduZWQsIHdlIG5lZWQgdG8gZmluZCBhIHByb3BlciBzb2x1dGlvbi4gSSB0aGluayB5b3UNCj4g Pj4gbmVlZCBhIHNwZWNpZmljIGRyaXZlciBzdGFydCBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IHNl dA0KPiA+PiBWSVJUSU9fREVWX0JVSUxUSU5fVklSVElPX05FVC4NCj4gPj4NCj4gPj4gRmlyc3Qg d2UgY2FuIGNoYW5nZSB0aGF0IFZJUlRJT19ERVZfQlVJTFRJTl9WSVJUSU9fTkVUIGZsYWcgIGJ5 IGEgbmV3DQo+ID4+IGZpZWxkIGluIHRoZSBkZXZpY2Ugd2l0aG91dCBicmVha2luZyB0aGUgQVBJ Og0KPiA+Pg0KPiA+PiBlbnVtIHZpcnRpb19iYWNrZW5kX3R5cGUgew0KPiA+PiAJVklSVElPX0RF Vl9VTktOT1dOID0gMCwgLyogTGlrZWx5IGV4dGVybmFsICovDQo+ID4+ICAJVklSVElPX0RFVl9C VUlMVElOX05FVCwNCj4gPj4gCVZJUlRJT19ERVZfQlVJTFRJTl9DUllQVE8sDQo+ID4+IH07DQo+ ID4+DQo+ID4+IHN0cnVjdCB2aXJ0aW9fbmV0IHsNCj4gPj4gLi4uDQo+ID4+IAllbnVtIHZpcnRp b19iYWNrZW5kX3R5cGUgdHlwZTsNCj4gPj4gfTsNCj4gPj4NCj4gPj4NCj4gPj4gVGhlbiwgaW50 cm9kdWNlIGEgbmV3IEFQSSB0byBzdGFydCBjcnlwdG8gYmFja2VuZCB0aGF0IHdvdWxkIGJlIGNh bGxlZA0KPiA+PiBpbnN0ZWFkIG9mIHJ0ZV92aG9zdF9kcml2ZXJfc3RhcnQoKToNCj4gPj4NCj4g Pj4gaW50DQo+ID4+IHJ0ZV92aG9zdF9jcnlwdG9fZHJpdmVyX3N0YXJ0KGNvbnN0IGNoYXIgKnBh dGgpDQo+ID4+IHsNCj4gPj4NCj4gPj4gCXJldHVybiB2aG9zdF9kcml2ZXJfc3RhcnQocGF0aCwg VklSVElPX0RFVl9CVUlMVElOX0NSWVBUTyk7DQo+ID4+IH0NCj4gPj4NCj4gPj4NCj4gPj4gaW50 DQo+ID4+IHJ0ZV92aG9zdF9kcml2ZXJfc3RhcnQoY29uc3QgY2hhciAqcGF0aCkNCj4gPj4gew0K PiA+Pg0KPiA+PiAJcmV0dXJuIHZob3N0X2RyaXZlcl9zdGFydChwYXRoLCBWSVJUSU9fREVWX0JV SUxUSU5fTkVUKTsNCj4gPj4gfQ0KPiA+Pg0KPiA+PiBBbmQgdGhlbiBwcm9wYWdhdGUgdGhlIGlu Zm8gZG93biB0byB2aG9zdF9uZXdfZGV2aWNlKCkuDQo+ID4+DQo+ID4+IERvZXMgdGhhdCBtYWtl IHNlbnNlPw0KPiANCj4gTm90ZSB0aGF0IGl0IGRvZXMgbm90IGZpeCB0aGUgc2V0X2ZlYXR1cmUg dGhpbmcsIHdoaWNoIHdvdWxkIGFsc28gbmVlZA0KPiB0byBiZSBmaXhlZC4gQnV0IGl0IHNob3Vs ZCByZXZlcnQgdGhlIGJlaGF2aW91ciBmb3IgY3J5cHRvIGJhY2tlbmRzIGJhY2sNCj4gdG8gcHJl LXYyMC4wOCwgYXMgQ2hhbmdwZW5nIHBhdGNoIGRpZC4NCj4gDQo+ID4+IE5vdGUgdGhhdCBpc3N1 ZSBoYXMgYmVlbiByZXBvcnRlZCBkdXJpbmcgdjIwLjExIGN5Y2xlIHdhcyBpdCB3YXMNCj4gPj4g aW50cm9kdWNlZCBpbiB2MjAuMDguIEl0IG1lYW5zIGl0IGhhcyBub3QgYmVlbiB0ZXN0ZWQuIERv ZXMgSW50ZWwgUUUgaGFzDQo+ID4+IHNvbWUgVmhvc3QgY3J5cHRvIHRlc3RzPw0KPiANCj4gDQo+ ID4+IFRoYW5rcywNCj4gPj4gTWF4aW1lDQoNCg==