From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavan Nikhilesh Bhagavatula Subject: Re: [EXT] Re: [PATCH v2 2/2] eal: roundup tsc frequency when estimating it Date: Sat, 16 Mar 2019 18:27:12 +0000 Message-ID: <59ed1ade5c9c63519eddbe6d33fb307abff5167e.camel@marvell.com> References: <20181129083138.23029-1-pbhagavatula@caviumnetworks.com> <20190316070302.32432-1-pbhagavatula@marvell.com> <20190316070302.32432-2-pbhagavatula@marvell.com> <86480C64-4ECD-4F4D-968E-5716D02D7D83@intel.com> <3e56d8dbbddfde0c48a26c6257af9c43a42f99dd.camel@marvell.com> <96FB992B-82D4-4B5D-97B1-5E255DD0621F@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "stephen@networkplumber.org" , "thomas@monjalon.net" , "dev@dpdk.org" , Jerin Jacob Kollanukkaran To: "keith.wiles@intel.com" Return-path: Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 983A51BE0 for ; Sat, 16 Mar 2019 19:27:24 +0100 (CET) In-Reply-To: Content-Language: en-US Content-ID: <71754025A5D6784FAD5FB7860758E1A7@namprd18.prod.outlook.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gU2F0LCAyMDE5LTAzLTE2IGF0IDE4OjIyICswMDAwLCBXaWxlcywgS2VpdGggd3JvdGU6DQo+ ID4gT24gTWFyIDE2LCAyMDE5LCBhdCAxMjo1NiBQTSwgUGF2YW4gTmlraGlsZXNoIEJoYWdhdmF0 dWxhIDwNCj4gPiBwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+IHdyb3RlOg0KPiA+IA0KPiA+IE9u IFNhdCwgMjAxOS0wMy0xNiBhdCAxNzoxOCArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3RlOg0KPiA+ ID4gPiBPbiBNYXIgMTYsIDIwMTksIGF0IDEwOjA2IEFNLCBQYXZhbiBOaWtoaWxlc2ggQmhhZ2F2 YXR1bGEgPA0KPiA+ID4gPiBwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+IHdyb3RlOg0KPiA+ID4g PiANCj4gPiA+ID4gT24gU2F0LCAyMDE5LTAzLTE2IGF0IDE0OjQyICswMDAwLCBXaWxlcywgS2Vp dGggd3JvdGU6DQo+ID4gPiA+ID4gPiBPbiBNYXIgMTYsIDIwMTksIGF0IDI6MDMgQU0sIFBhdmFu IE5pa2hpbGVzaCBCaGFnYXZhdHVsYSA8DQo+ID4gPiA+ID4gPiBwYmhhZ2F2YXR1bGFAbWFydmVs bC5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBGcm9tOiBQYXZhbiBOaWto aWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gV2hlbiBlc3RpbWF0aW5nIHRzYyBmcmVxdWVuY3kgdXNpbmcgc2xlZXAvZ2V0dGltZSByb3Vu ZCBpdA0KPiA+ID4gPiA+ID4gdXANCj4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiB0aGUNCj4g PiA+ID4gPiA+IG5lYXJlc3QgbXVsdGlwbGUgb2YgMTBNaHogZm9yIG1vcmUgYWNjdXJhY3kuDQo+ ID4gPiANCj4gPiA+IEhvdyBkb2VzIHJvdW5kaW5nIHVwIHRoZSBUU0MgdmFsdWUgYmVjb21lIG1v cmUgYWNjdXJhdGUsIElmIHRoZQ0KPiA+ID4gdmFsdWUNCj4gPiA+IGlzIDEgY3ljbGVzIG1vcmUg dGhlbiBpdCBzaG91bGQgYmUgdGhlbiB5b3VyIG1hY3JvIHdvdWxkIHJvdW5kDQo+ID4gPiBkb3du DQo+ID4gPiBhbmQgaWYgaXQgaXMgMSBjeWNsZSBncmVhdGVyIHRoYW4gMUU3IGl0IHdvdWxkIHJv dW5kIHVwLg0KPiA+IA0KPiA+IEV4YW1wbGUgaW4gY2FzZSBvZiBSVEVfQVJNX0VBTF9SRFRTQ19V U0VfUE1VIGVuYWJsZWQgDQo+ID4gDQo+ID4gQmVmb3JlIHJvdW5kdXAgOiAxNDAwMDAwOTc5DQo+ ID4gQWZ0ZXIgcm91bmR1cCA6IDE0MDAwMDAwMDANCj4gPiBFQUw6IFRTQyBmcmVxdWVuY3kgaXMg fjE0MDAwMDAwMDAgSHoNCj4gPiANCj4gPiANCj4gPiBCZWZvcmUgcm91bmR1cCA6IDEzOTk5OTkw NjANCj4gPiBBZnRlciByb3VuZHVwIDogMTQwMDAwMDAwMA0KPiA+IEVBTDogVFNDIGZyZXF1ZW5j eSBpcyB+MTQwMDAwMDAwMCBIeg0KPiA+IA0KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUGF2 YW4gTmlraGlsZXNoIDxwYmhhZ2F2YXR1bGFAbWFydmVsbC5jb20+DQo+ID4gPiA+ID4gPiAtLS0N Cj4gPiA+ID4gPiA+IFVzZWZ1bCBpbiBjYXNlIG9mIEFSTTY0IGlmIHdlIGVuYWJsZQ0KPiA+ID4g PiA+ID4gUlRFX0FSTV9FQUxfUkRUU0NfVVNFX1BNVSwNCj4gPiA+ID4gPiA+IGdldF90c2NfZnJl cV9hcmNoKCkgd2lsbCByZXR1cm4gMCBhcyB0aGVyZSBpcyBubw0KPiA+ID4gPiA+ID4gaW5zdHJ1 Y3Rpb24gdG8NCj4gPiA+ID4gPiA+IGRldGVybWluZQ0KPiA+ID4gPiA+ID4gdGhlIGNsayBvZiBQ TVUgYW5kIGVhbCBmYWxscyBiYWNrIHRvIHNsZWVwKDEpLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl90aW1lci5jIHwgNCArKy0tDQo+ ID4gPiA+ID4gPiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX3RpbWVyLmMgIHwgMiAr LQ0KPiA+ID4gPiA+ID4gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pDQo+ID4gPiANCj4gPiA+IEl0IGFwcGVhcnMgeW91IGRpZCBub3QgdXNlIHRoZSBoZWFk IG9mIHRoZSBtYXN0ZXIgYXMgbGludXhhcHAgaXMNCj4gPiA+IG5vdw0KPiA+ID4ganVzdCBsaW51 eCBhbmQgZnJlZWJzZGFwcCBpcyBmcmVlYnNkLiBZb3UgbmVlZCB0byByZWJhc2UgdG8gdGhlDQo+ ID4gPiBoZWFkDQo+ID4gPiBvZiBtYXN0ZXIgYW5kIHNlbmQgYSBuZXcgdmVyc2lvbi4NCj4gPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl90aW1l ci5jDQo+ID4gPiA+ID4gPiBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX3RpbWVy LmMNCj4gPiA+ID4gPiA+IGluZGV4IGRjZjI2YmZlYS4uMTM1OGJiZWQwIDEwMDY0NA0KPiA+ID4g PiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fdGltZXIuYw0KPiA+ ID4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fdGltZXIuYw0K PiA+ID4gPiA+ID4gQEAgLTY5LDcgKzY5LDcgQEAgZXN0aW1hdGVfdHNjX2ZyZXEodm9pZCkNCj4g PiA+ID4gPiA+IAkvKiBhc3N1bWUgdGhhdCB0aGUgc2xlZXAoMSkgd2lsbCBzbGVlcCBmb3IgMSBz ZWNvbmQgKi8NCj4gPiA+ID4gPiA+IAl1aW50NjRfdCBzdGFydCA9IHJ0ZV9yZHRzYygpOw0KPiA+ ID4gPiA+ID4gCXNsZWVwKDEpOw0KPiA+ID4gPiA+ID4gLQlyZXR1cm4gcnRlX3JkdHNjKCkgLSBz dGFydDsNCj4gPiA+ID4gPiA+ICsJcmV0dXJuIFJURV9BTElHTl9NVUxfTkVBUihydGVfcmR0c2Mo KSAtIHN0YXJ0LCAxRTcpOw0KPiA+ID4gDQo+ID4gPiBUaGUgMUU3IGlzIGEgbWFnaWMgbnVtYmVy IGNvbnZlcnQgdGhpcyB0byBhIG1lYW5pbmdmdWwgZGVmaW5lLg0KPiA+IA0KPiA+IDFFNyB+IDEw TWh6IHdpbGwgY29udmVydCB0byBhIG1hY3JvLg0KPiA+IA0KPiA+ID4gPiA+ID4gfQ0KPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiB2b2lkDQo+ID4gPiA+ID4gPiBAQCAtODMsNyArODMsNyBAQCBz ZXRfdHNjX2ZyZXEodm9pZCkNCj4gPiA+ID4gPiA+IAlpZiAoIWZyZXEpDQo+ID4gPiA+ID4gPiAJ CWZyZXEgPSBlc3RpbWF0ZV90c2NfZnJlcSgpOw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAt CVJURV9MT0coREVCVUcsIEVBTCwgIlRTQyBmcmVxdWVuY3kgaXMgfiUiIFBSSXU2NCAiDQo+ID4g PiA+ID4gPiBLSHpcbiIsIGZyZXENCj4gPiA+ID4gPiA+IC8gMTAwMCk7DQo+ID4gPiA+ID4gPiAr CVJURV9MT0coSU5GTywgRUFMLCAiVFNDIGZyZXF1ZW5jeSBpcyB+JSIgUFJJdTY0ICINCj4gPiA+ ID4gPiA+IEh6XG4iLCBmcmVxKTsNCj4gPiA+ID4gPiA+IAllYWxfdHNjX3Jlc29sdXRpb25faHog PSBmcmVxOw0KPiA+ID4gPiANCj4gPiA+ID4gSSBtaXNzZWQgdGhpcyBsb2cgd2lsbCByZW1vdmUg aXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gPiB9DQo+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2VhbC9saW51eGFwcC9l YWwvZWFsX3RpbWVyLmMNCj4gPiA+ID4gPiA+IGIvbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFs L2VhbF90aW1lci5jDQo+ID4gPiA+ID4gPiBpbmRleCBiYzhmMDUxOTkuLjg2NGQ2ZWYyOSAxMDA2 NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2xpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfdGlt ZXIuYw0KPiA+ID4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFsL2VhbF90 aW1lci5jDQo+ID4gPiA+ID4gPiBAQCAtMjQ4LDcgKzI0OCw3IEBAIGdldF90c2NfZnJlcSh2b2lk KQ0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAJCWRvdWJsZSBzZWNzID0gKGRvdWJsZSlucy9O U19QRVJfU0VDOw0KPiA+ID4gPiA+ID4gCQl0c2NfaHogPSAodWludDY0X3QpKChlbmQgLSBzdGFy dCkvc2Vjcyk7DQo+ID4gPiA+ID4gPiAtCQlyZXR1cm4gdHNjX2h6Ow0KPiA+ID4gPiA+ID4gKwkJ cmV0dXJuIFJURV9BTElHTl9NVUxfTkVBUih0c2NfaHosIDFFNyk7DQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gTWF5YmUgSSBtaXNzZWQgYW4gZW1haWwgYWJvdXQgdGhpcywgYnV0IHdoeSB3b3VsZCBJ IHdhbnQgdGhlDQo+ID4gPiA+ID4gVFNDDQo+ID4gPiA+ID4gaHoNCj4gPiA+ID4gPiByb3VuZGVk IGhlcmU/IEkgZG8gbm90IG1pbmQgdGhlIG1hY3JvIGp1c3QgdGhlIGZhY3QgdGhhdCB3ZQ0KPiA+ ID4gPiA+IGFyZQ0KPiA+ID4gPiA+IGNoYW5naW5nIFRTQyBoeiB2YWx1ZS4gSWYgdGhlIFRTQyB2 YWx1ZSBpcyB3cm9uZyB0aGVuIHdlIG5lZWQNCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+IGZpeA0K PiA+ID4gPiA+IHRoZSB2YWx1ZSwgYnV0IEkgZG8gbm90IHNlZSBpdCBiZWluZyB3cm9uZyBoZXJl Lg0KPiA+ID4gPiANCj4gPiA+ID4gU2luY2UgaW4gdGhpcyBmdW5jdGlvbiBuYW5vc2xlZXAgbWln aHQgbm90IGJlIGN5Y2xlIGFjY3VyYXRlIHdlDQo+ID4gPiA+IG5lZWQgdG8NCj4gPiA+ID4gcm91 bmQgaXQgdXAuDQo+ID4gPiA+IA0KPiA+ID4gPiBQbGVhc2Ugbm90ZSB0aGF0IGVzdGltYXRpb24g b25seSBhcHBsaWVzDQo+ID4gPiA+IHdoZW4gIGdldF90c2NfZnJlcV9hcmNoKCkNCj4gPiA+ID4g ZmFpbHMuIGkuZSB0aGVyZSBpcyBubyBDUFUgaW5zdHJ1Y3Rpb24gdGhhdCBzcGVjaWZpZXMgdGhl DQo+ID4gPiA+IGN5Yy9zZWMuDQo+ID4gPiA+IA0KPiA+ID4gPiBBcyBJIG1lbnRpb25lZCBpbiB0 aGUgcGF0Y2ggbm90ZXMNCj4gPiA+ID4gIlVzZWZ1bCBpbiBjYXNlIG9mIEFSTTY0IGlmIHdlIGVu YWJsZQ0KPiA+ID4gPiBSVEVfQVJNX0VBTF9SRFRTQ19VU0VfUE1VLA0KPiA+ID4gPiBnZXRfdHNj X2ZyZXFfYXJjaCgpIHdpbGwgcmV0dXJuIDAgYXMgdGhlcmUgaXMgbm8gaW5zdHJ1Y3Rpb24gdG8N Cj4gPiA+ID4gZGV0ZXJtaW5lIHRoZSBjbG9jayBvZiBQTVUgYW5kIGVhbCBmYWxscyBiYWNrIHRv DQo+ID4gPiA+IHNsZWVwKDEpL25hbm9zbGVlcC7igJ0gDQo+ID4gPiANCj4gPiA+IE9LLCBJIGxv b2tlZCBhdCB0aGUgY2hhbmdlcyBhbmQgdGhlIGNvZGUgZm9yIHNldHRpbmcgdGhlIFRTQw0KPiA+ ID4gYWdhaW4uIEkNCj4gPiA+IHdvdWxkIGhhdmUgbm90IGhhbmRsZWQgdGhlIHNldHRpbmcgb2Yg VFNDIGluIHRoZSB3YXkgaXQgd2FzIGRvbmUsDQo+ID4gPiBidXQNCj4gPiA+IHRoYXQgaXMgbm90 IHlvdXIgcHJvYmxlbS4gSSBhZ3JlZSB0aGUgY2hhbmdlcyBkbyBsb29rIG9rLCB0aGUNCj4gPiA+ IG9ubHkNCj4gPiA+IHByb2JsZW0gSSBoYXZlIGlzIHRoZSBuZXcgbWFjcm8gd2lsbCByb3VuZHVw IG9yIGRvd24gZGVwZW5kaW5nIG9uDQo+ID4gPiB0aGUNCj4gPiA+IHZhbHVlLiBJbiB5b3VyIHN0 YXRlbWVudCB5b3UgYXJlIHdhbnRpbmcgdG8gcm91bmR1cCB0aGUgdmFsdWVzLg0KPiA+ID4gDQo+ ID4gPiBJZiB0aGUgc2xlZXAvbmFub3NsZWVwIGlzIGxlc3MgdGhhbiBhIHNlY29uZCBmb3Igc29t ZSByZWFzb24sDQo+ID4gPiB0aGVuDQo+ID4gPiB5b3VyIG1hY3JvIHdvdWxkIHJvdW5kIGl0IGRv d24gaXMgdGhhdCB3aGF0IHdlIHdhbnRlZD8gSSBndWVzcyBteQ0KPiA+ID4gcG9pbnQgaXMgeW91 IGFyZSBhc3N1bWluZyB0aGUgVFNDIGNhbGN1bGF0aW9uIHdpbGwgYWx3YXlzIGJlIGxlc3MNCj4g PiA+IHRoYW4gYSBzZWNvbmQgKHdpdGggc2xlZXApIGFuZCB0aGUgbWFjcm8gd291bGQgcm91bmQg dXAgZGVwZW5kaW5nDQo+ID4gPiBvbg0KPiA+ID4gdGhlIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcg dGhlIHNsZWVwL25hbm9zbGVlcC4NCj4gPiA+IA0KPiA+ID4gSSB3YXMgcGxheWluZyB3aXRoIHRo ZXNlIE1VTCBtYWNyb3MgYW5kIEkgYW0gbm90IHN1cmUgdGhleSBkbw0KPiA+ID4gd2hhdCB3ZQ0K PiA+ID4gZXhwZWN0IGluIHRoZSBjYXNlIG9mIHRoZSBtdWx0aXBsZSB2YWx1ZSBpcyBtdWNoIGNs b3NlciB0byB0aGUNCj4gPiA+IHZhbHVlDQo+ID4gPiBwYXNzZWQuDQo+ID4gPiANCj4gPiA+IElm IHdlIGhhdmUgYSB2ID0gMTAwMDEgYW5kIG11bHRpcGxlIHRvIDEwMDAgd2UgaGF2ZSB0aGUNCj4g PiA+IGZvbGxvd2luZzoNCj4gPiA+IA0KPiA+ID4gUlRFX0FMSUdOX01VTF9DRUlMKDEwMDAxLCAx MDAwKQ0KPiA+ID4gCSgxMDAwMSArICgxMDAwIC0gMSkpIC8gKDEwMDAgKiAxMDAwKQ0KPiA+ICgo MTAwMDEgKyAoMTAwMCAtIDEpKSAvIDEwMDApICogMTAwMA0KPiA+ID4gCSgxMDAwMSArIDk5OSkg ICAgICAgIC8gMTAwMDAwMA0KPiA+ID4gCTIwMDAwICAgICAgICAgICAgICAgIC8gMTAwMDAwMA0K PiA+ID4gUmVzdWx0OiAwDQo+ID4gDQo+ID4gKCgxMDAwMSArICgxMDAwIC0gMSkgLyAxMDAwKSAq IDEwMDANCj4gPiAoKDEwMDAxICsgOTk5KSAvIDEwMDApICogMTAwMA0KPiA+ICgxMTAwMC8xMDAw KSAqIDEwMDANCj4gPiAxMSAqIDEwMDAgDQo+ID4gDQo+ID4gUmVzdWx0IDogMTEwMDANCj4gPiAN Cj4gPiA+IFJURV9BTElHTl9NVUxfRkxPT1IoMTAwMDEsIDEwMDApDQo+ID4gPiAJKDEwMDAxIC8g KDEwMDAgKiAxMDAwKSkNCj4gPiAoMTAwMDEgLyAxMDAwKSAqIDEwMDANCj4gPiA+IAkoMTAwMDEg LyAxMDAwMDAwKQ0KPiA+ID4gUmVzdWx0OiAwDQo+ID4gMTAuMDAxICogMTAwMA0KPiA+IA0KPiA+ IFJlc3VsdCA6IDEwMDAwDQo+IA0KPiBPb29wcywgdG9vIG1hbnkgcGFyYW5zIGFuZCBtaXNzZWQg aXQuDQo+IA0KPiBUaGVuIHdlIGNhbiBnZXQgYSBuZXcgdmVyc2lvbiBhbmQgdGhhdCBzaG91bGQg YmUgT0suDQoNCll1cCwgdGhhbmtzIGZvciByZXZpZXdpbmcgOi0pLg0KDQo+IA0KPiBJIHdpbGwg YWRkIG15ICQwLjAyIHRoZW46DQo+IA0KPiBSZXZpZXdlZC1ieTogS2VpdGggV2lsZXM8a2VpdGgu d2lsZXM+DQo+IA0KPiA+ID4gVW5sZXNzIEkgYW0gd3JvbmcgaGVyZSB0aGUgdmFsdWUgdiBtdXN0 IGJlIG92ZXIgYSAxLDAwMCwwMDAgdG8NCj4gPiA+IG1ha2UNCj4gPiA+IHRoZXNlIG1hY3JvcyB3 b3JrIG9yIHRoZSB2YWx1ZSB2IHRvIGJlIGdyZWF0ZXIgdGhhbiAobXVsICogbXVsKQ0KPiA+ID4g aW4NCj4gPiA+IGFsbCBjYXNlcyBvciB6ZXJvIGlzIHRoZSByZXN1bHQuIEl0IG1heSB3b3JrIGZv ciB0aGUgVFNDIHZhbHVlcw0KPiA+ID4gYXMgd2UNCj4gPiA+IGFyZSB1c2luZyBhIHNtYWxsIG11 bCB2YWx1ZSBjb21wYXJlZCB0byB0aGUgVFNDIHZhbHVlLiBJZiBEUERLDQo+ID4gPiB3YXMNCj4g PiA+IHBvcnRlZCB0byBhIHNsb3dlciBtYWNoaW5lIGl0IGNvdWxkIGJlIGFsc28gemVyby4NCj4g PiANCj4gPiBVbmxlc3Mgd2UgaGF2ZSBtYWNoaW5lcyB0aGF0IHJ1biBhdCBmcmVxIDwgMTBNaHog dGhpcyBzY2hlbWUgd2lsbA0KPiA+IGFsd2F5cyB3b3JrLg0KPiA+IElmIHdlIGhhdmUgc3VjaCBt YWNoaW5lcyBsZXRzIGhvcGUgdGhhdCB0aGV5IGhhdmUgYSBDUFUgaW5zdHJ1Y3Rpb24NCj4gPiB0 aGF0IHRlbGxzIHVzIHRoZSBjeWMvc2VjLg0KPiA+IA0KPiA+ID4gSSB0aGluayB3ZSBuZWVkIHRv IGZpeCB0aGUgbWFjcm9zIGFuZCByZXRoaW5rIGhvdyBUU0MgaXMgc2V0DQo+ID4gPiBoZXJlLg0K PiA+ID4gDQo+ID4gPiA+ID4gPiAJfQ0KPiA+ID4gPiA+ID4gI2VuZGlmDQo+ID4gPiA+ID4gPiAJ cmV0dXJuIDA7DQo+ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gMi4yMS4wDQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBSZWdhcmRzLA0KPiA+ID4gPiA+IEtlaXRoDQo+ID4g PiANCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiBLZWl0aA0KPiA+ID4gDQo+ID4gDQo+ID4gUmVnYXJk cywNCj4gPiBQYXZhbi4NCj4gDQo+IFJlZ2FyZHMsDQo+IEtlaXRoDQo+IA0K