From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 65EB341B1D; Sun, 27 Aug 2023 17:40:41 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DDBA04025E; Sun, 27 Aug 2023 17:40:40 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 8C2214025D for ; Sun, 27 Aug 2023 17:40:39 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 419D72058A; Sun, 27 Aug 2023 17:40:37 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [RFC] cache guard Date: Sun, 27 Aug 2023 17:40:33 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D87B49@smartserver.smartshare.dk> In-Reply-To: <5a56c531-5d5c-777b-c1ea-dbcc25009220@lysator.liu.se> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC] cache guard Thread-Index: AdnY7hkeii6Sa9mtRJmwzFie0t1lAgABSG6A References: <98CBD80474FA8B44BF855DF32C47DC35D87B39@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87B3A@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87B47@smartserver.smartshare.dk> <5a56c531-5d5c-777b-c1ea-dbcc25009220@lysator.liu.se> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "Bruce Richardson" Cc: , , , , , X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0N Cj4gU2VudDogU3VuZGF5LCAyNyBBdWd1c3QgMjAyMyAxNS41NQ0KPiANCj4gT24gMjAyMy0wOC0y NyAxMDozNCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gK0NDIEhvbm5hcHBhIGFuZCBLb25z dGFudGluLCBSaW5nIGxpYiBtYWludGFpbmVycw0KPiA+ICtDQyBNYXR0aWFzLCBQUk5HIGxpYiBt YWludGFpbmVyDQo+ID4NCj4gPj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNvbiBbbWFpbHRvOmJydWNl LnJpY2hhcmRzb25AaW50ZWwuY29tXQ0KPiA+PiBTZW50OiBGcmlkYXksIDI1IEF1Z3VzdCAyMDIz IDExLjI0DQo+ID4+DQo+ID4+IE9uIEZyaSwgQXVnIDI1LCAyMDIzIGF0IDExOjA2OjAxQU0gKzAy MDAsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4gK0NDIG1lbXBvb2wgbWFpbnRhaW5lcnMN Cj4gPj4+DQo+ID4+Pj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNvbiBbbWFpbHRvOmJydWNlLnJpY2hh cmRzb25AaW50ZWwuY29tXQ0KPiA+Pj4+IFNlbnQ6IEZyaWRheSwgMjUgQXVndXN0IDIwMjMgMTAu MjMNCj4gPj4+Pg0KPiA+Pj4+IE9uIEZyaSwgQXVnIDI1LCAyMDIzIGF0IDA4OjQ1OjEyQU0gKzAy MDAsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+PiBCcnVjZSwNCj4gPj4+Pj4NCj4gPj4+ Pj4gV2l0aCB0aGlzIHBhdGNoIFsxXSwgaXQgaXMgbm90ZWQgdGhhdCB0aGUgcmluZyBwcm9kdWNl ciBhbmQNCj4gPj4gY29uc3VtZXIgZGF0YQ0KPiA+Pj4+IHNob3VsZCBub3QgYmUgb24gYWRqYWNl bnQgY2FjaGUgbGluZXMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBbMV06DQo+ID4+Pj4NCj4gPj4NCj4gaHR0cHM6Ly9naXQuZHBkay5vcmcvZHBkay9jb21taXQv bGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nLmg/aWQ9ZDlmMGQzYTFmDQo+ID4+IGZkNGI2Ng0KPiA+ Pj4+IGU3NTQ4NWNjOGI2M2I5YWVkZmJkZmU4YjANCj4gPj4+Pj4NCj4gPj4+Pj4gKEl0J3Mgb2J2 aW91cyB0aGF0IHRoZXkgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGNhY2hlIGxpbmUsIGJlY2F1c2UN Cj4gPj4gdGhleSBhcmUNCj4gPj4+PiBhY2Nlc3NlZCBieSB0d28gZGlmZmVyZW50IHRocmVhZHMu KQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBJbnR1aXRpdmVseSwgSSB3b3VsZCB0aGluayB0aGF0IGhhdmlu ZyB0aGVtIG9uIGRpZmZlcmVudCBjYWNoZQ0KPiA+PiBsaW5lcyB3b3VsZA0KPiA+Pj4+IHN1ZmZp Y2UuIFdoeSBkb2VzIGhhdmluZyBhbiBlbXB0eSBjYWNoZSBsaW5lIGJldHdlZW4gdGhlbSBtYWtl IGENCj4gPj4gZGlmZmVyZW5jZT8NCj4gPj4+Pj4NCj4gPj4+Pj4gQW5kIGRvZXMgaXQgbmVlZCB0 byBiZSBhbiBlbXB0eSBjYWNoZSBsaW5lPyBPciBkb2VzIGl0IHN1ZmZpY2UNCj4gPj4gaGF2aW5n IHRoZQ0KPiA+Pj4+IHNlY29uZCBzdHJ1Y3R1cmUgc3RhcnQgYXQgdHdvIGNhY2hlIGxpbmVzIGFm dGVyIHRoZSBzdGFydCBvZiB0aGUNCj4gPj4gZmlyc3QNCj4gPj4+PiBzdHJ1Y3R1cmUgKGUuZy4g aWYgdGhlIHNpemUgb2YgdGhlIGZpcnN0IHN0cnVjdHVyZSBpcyB0d28gY2FjaGUNCj4gPj4gbGlu ZXMpPw0KPiA+Pj4+Pg0KPiA+Pj4+PiBJJ20gYXNraW5nIGJlY2F1c2UgdGhlIHNhbWUgcHJpbmNp cGxlIG1pZ2h0IGFwcGx5IHRvIG90aGVyIGNvZGUNCj4gPj4gdG9vLg0KPiA+Pj4+Pg0KPiA+Pj4+ IEhpIE1vcnRlbiwNCj4gPj4+Pg0KPiA+Pj4+IHRoaXMgd2FzIHNvbWV0aGluZyB3ZSBkaXNjb3Zl cmVkIHdoZW4gd29ya2luZyBvbiB0aGUgZGlzdHJpYnV0b3INCj4gPj4gbGlicmFyeS4NCj4gPj4+ PiBJZiB3ZSBoYXZlIGNhY2hlbGluZXMgcGVyIGNvcmUgd2hlcmUgdGhlcmUgaXMgaGVhdnkgYWNj ZXNzLCBoYXZpbmcNCj4gPj4gc29tZQ0KPiA+Pj4+IGNhY2hlbGluZXMgYXMgYSBnYXAgYmV0d2Vl biB0aGUgY29udGVudCBjYWNoZWxpbmVzIGNhbiBoZWxwDQo+ID4+IHBlcmZvcm1hbmNlLiBXZQ0K PiA+Pj4+IGJlbGlldmUgdGhpcyBoZWxwcyBkdWUgdG8gYXZvaWRpbmcgaXNzdWVzIHdpdGggdGhl IEhXIHByZWZldGNoZXJzDQo+ID4+IChlLmcuDQo+ID4+Pj4gYWRqYWNlbnQgY2FjaGVsaW5lIHBy ZWZldGNoZXIpIGJyaW5naW5nIGluIHRoZSBzZWNvbmQgY2FjaGVsaW5lDQo+ID4+Pj4gc3BlY3Vs YXRpdmVseSB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkb25lIG9uIHRoZSBmaXJzdCBsaW5lLg0KPiA+ Pj4NCj4gPj4+IEkgZ3Vlc3NlZCB0aGF0IGl0IGhhZCBzb21ldGhpbmcgdG8gZG8gd2l0aCBzcGVj dWxhdGl2ZSBwcmVmZXRjaGluZywNCj4gPj4gYnV0IHdhc24ndCBzdXJlLiBHb29kIHRvIGdldCBj b25maXJtYXRpb24sIGFuZCB0aGF0IGl0IGhhcyBhDQo+IG1lYXN1cmVhYmxlDQo+ID4+IGVmZmVj dCBzb21ld2hlcmUuIFZlcnkgaW50ZXJlc3RpbmchDQo+ID4+Pg0KPiA+Pj4gTkI6IE1vcmUgY29t bWVudHMgaW4gdGhlIHJpbmcgbGliIGFib3V0IHN0dWZmIGxpa2UgdGhpcyB3b3VsZCBiZQ0KPiBu aWNlLg0KPiA+Pj4NCj4gPj4+IFNvLCBmb3IgdGhlIG1lbXBvb2wgbGliLCB3aGF0IGRvIHlvdSB0 aGluayBhYm91dCBhcHBseWluZyB0aGUgc2FtZQ0KPiA+PiB0ZWNobmlxdWUgdG8gdGhlIHJ0ZV9t ZW1wb29sX2RlYnVnX3N0YXRzIHN0cnVjdHVyZSAod2hpY2ggaXMgYW4gYXJyYXkNCj4gPj4gaW5k ZXhlZCBwZXIgbGNvcmUpLi4uIFR3byBhZGphY2VudCBsY29yZXMgaGVhdmlseSBhY2Nlc3Npbmcg dGhlaXINCj4gbG9jYWwNCj4gPj4gbWVtcG9vbCBjYWNoZXMgc2VlbXMgbGlrZWx5IHRvIG1lLiBC dXQgaG93IGhlYXZ5IGRvZXMgdGhlIGFjY2VzcyBuZWVkDQo+IHRvDQo+ID4+IGJlIGZvciB0aGlz IHRlY2huaXF1ZSB0byBiZSByZWxldmFudD8NCj4gPj4+DQo+ID4+DQo+ID4+IE5vIGlkZWEgaG93 IGhlYXZ5IHRoZSBhY2Nlc3NlcyBuZWVkIHRvIGJlIGZvciB0aGlzIHRvIGhhdmUgYQ0KPiBub3Rp Y2FibGUNCj4gPj4gZWZmZWN0LiBGb3IgdGhpbmdzIGxpa2UgZGVidWcgc3RhdHMsIEkgd29uZGVy IGhvdyB3b3J0aHdoaWxlIG1ha2luZw0KPiBzdWNoDQo+ID4+IGENCj4gPj4gY2hhbmdlIHdvdWxk IGJlLCBidXQgdGhlbiBhZ2FpbiwgYW55IGNoYW5nZSB3b3VsZCBoYXZlIHZlcnkgbG93DQo+IGlt cGFjdA0KPiA+PiB0b28NCj4gPj4gaW4gdGhhdCBjYXNlLg0KPiA+DQo+ID4gSSBqdXN0IHRyaWVk IGFkZGluZyBwYWRkaW5nIHRvIHNvbWUgb2YgdGhlIGhvdCBzdHJ1Y3R1cmVzIGluIG91ciBvd24N Cj4gYXBwbGljYXRpb24sIGFuZCBvYnNlcnZlZCBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGlt cHJvdmVtZW50IGZvcg0KPiB0aG9zZS4NCj4gPg0KPiA+IFNvIEkgdGhpbmsgdGhpcyB0ZWNobmlx dWUgc2hvdWxkIGhhdmUgaGlnaGVyIHZpc2liaWxpdHkgaW4gRFBESyBieQ0KPiBhZGRpbmcgYSBu ZXcgY2FjaGUgbWFjcm8gdG8gcnRlX2NvbW1vbi5oOg0KPiA+DQo+ID4gLyoqDQo+ID4gICAqIEVt cHR5IGNhY2hlIGxpbmUsIHRvIGd1YXJkIGFnYWluc3Qgc3BlY3VsYXRpdmUgcHJlZmV0Y2hpbmcu DQo+ID4gICAqDQo+IA0KPiAidG8gZ3VhcmQgYWdhaW5zdCBmYWxzZSBzaGFyaW5nLWxpa2UgZWZm ZWN0cyBvbiBzeXN0ZW1zIHdpdGggYQ0KPiBuZXh0LU4tbGluZXMgaGFyZHdhcmUgcHJlZmV0Y2hl ciINCj4gDQo+ID4gICAqIFVzZSBhcyBzcGFjaW5nIGJldHdlZW4gZGF0YSBhY2Nlc3NlZCBieSBk aWZmZXJlbnQgbGNvcmVzLA0KPiA+ICAgKiB0byBwcmV2ZW50IGNhY2hlIHRocmFzaGluZyBvbiBD UFVzIHdpdGggc3BlY3VsYXRpdmUgcHJlZmV0Y2hpbmcuDQo+ID4gICAqLw0KPiA+ICNkZWZpbmUg UlRFX0NBQ0hFX0dVQVJEKG5hbWUpIGNoYXINCj4gY2FjaGVfZ3VhcmRfIyNuYW1lW1JURV9DQUNI RV9MSU5FX1NJWkVdIF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4NCj4gDQo+IFlvdSBjb3VsZCBo YXZlIGEgbWFjcm8gd2hpY2ggc3BlY2lmaWVkIGhvdyBtdWNoIGd1YXJkaW5nIHRoZXJlIG5lZWRz IHRvDQo+IGJlLCBpZGVhbGx5IGRlZmluZWQgb24gYSBwZXItQ1BVIGJhc2lzLiAoVGhlc2UgdGhp bmdzIGhhcyBub3RoaW5nIHRvIGRvDQo+IHdpdGggdGhlIElTQSwgYnV0IGV2ZXJ5dGhpbmcgdG8g ZG8gd2l0aCB0aGUgaW1wbGVtZW50YXRpb24uKQ0KPiANCj4gSSdtIG5vdCBzdXJlIE4gaXMgYWx3 YXlzIDEuDQo+IA0KPiBTbyB0aGUgZ3VhcmQgcGFkZGluZyBzaG91bGQgYmUgUlRFX0NBQ0hFX0xJ TkVfU0laRSAqDQo+IFJURV9DQUNIRV9HVUFSRF9MSU5FUyBieXRlcywgYW5kIHdyYXAgdGhlIHdo b2xlIHRoaW5nIGluDQo+ICNpZiBSVEVfQ0FDSEVfR1VBUkRfTElORVMgPiAwDQo+ICNlbmRpZg0K PiANCj4gLi4uc28geW91IGNhbiBkaXNhYmxlIHRoaXMgKGN1dGUhKSBoYWNrIChvbiBjdXN0b20g RFBESyBidWlsZHMpIGluIGNhc2UNCj4geW91IGhhdmUgZGlzYWJsZWQgaGFyZHdhcmUgcHJlZmV0 Y2hpbmcsIHdoaWNoIHNlZW1zIGdlbmVyYWxseSB0byBiZSBhDQo+IGdvb2QgaWRlYSBmb3IgcGFj a2V0IHByb2Nlc3NpbmcgdHlwZSBhcHBsaWNhdGlvbnMuDQo+IA0KPiAuLi53aGljaCBsZWFkcyBt ZSB0byBhbm90aGVyIHN1Z2dlc3Rpb25zOiBhZGQgYSBub3RlIG9uIGRpc2FibGluZw0KPiBoYXJk d2FyZSBwcmVmZXRjaGluZyBpbiB0aGUgb3B0aW1pemF0aW9uIGd1aWRlLg0KPiANCj4gU2VlbXMg bGlrZSBhIHZlcnkgZ29vZCBpZGVhIHRvIGhhdmUgdGhpcyBpbiA8cnRlX2NvbW1vbi5oPiwgYW5k DQo+IG90aGVyd2lzZSBtYWtlIHRoaXMgaXNzdWUgdmlzaWJsZSBhbmQga25vd24uDQoNCkdvb2Qg cG9pbnRzLCBNYXR0aWFzIQ0KDQpJIGFsc28gcHJlZmVyIHRoZSBuYW1lLWxlc3MgbWFjcm8geW91 IHN1Z2dlc3RlZCBiZWxvdy4NCg0KU28sIHRoaXMgZ2V0cyBhZGRlZCB0byBydGVfY29tbW9uLmg6 DQoNCi8qKg0KICogRW1wdHkgY2FjaGUgbGluZXMsIHRvIGd1YXJkIGFnYWluc3QgZmFsc2Ugc2hh cmluZy1saWtlIGVmZmVjdHMNCiAqIG9uIHN5c3RlbXMgd2l0aCBhIG5leHQtTi1saW5lcyBoYXJk d2FyZSBwcmVmZXRjaGVyLg0KICoNCiAqIFVzZSBhcyBzcGFjaW5nIGJldHdlZW4gZGF0YSBhY2Nl c3NlZCBieSBkaWZmZXJlbnQgbGNvcmVzLA0KICogdG8gcHJldmVudCBjYWNoZSB0aHJhc2hpbmcg b24gaGFyZHdhcmUgd2l0aCBzcGVjdWxhdGl2ZSBwcmVmZXRjaGluZy4NCiAqLw0KI2lmIFJURV9D QUNIRV9HVUFSRF9MSU5FUyA+IDANCiNkZWZpbmUgX1JURV9DQUNIRV9HVUFSRF9IRUxQRVIyKHVu aXF1ZSkgXA0KICAgICAgICBjaGFyIGNhY2hlX2d1YXJkXyAjIyB1bmlxdWVbUlRFX0NBQ0hFX0xJ TkVfU0laRSAqIFJURV9DQUNIRV9HVUFSRF9MSU5FU10gXA0KICAgICAgICBfX3J0ZV9jYWNoZV9h bGlnbmVkOw0KI2RlZmluZSBfUlRFX0NBQ0hFX0dVQVJEX0hFTFBFUjEodW5pcXVlKSBfUlRFX0NB Q0hFX0dVQVJEX0hFTFBFUjIodW5pcXVlKQ0KI2RlZmluZSBSVEVfQ0FDSEVfR1VBUkQgX1JURV9D QUNIRV9HVUFSRF9IRUxQRVIxKF9fQ09VTlRFUl9fKQ0KI2Vsc2UNCiNkZWZpbmUgUlRFX0NBQ0hF X0dVQVJEDQojZW5kaWYNCg0KQW5kIGEgbGluZSBpbiAvY29uZmlnL3g4Ni9tZXNvbi5idWlsZCBm b3IgeDg2IGFyY2hpdGVjdHVyZToNCg0KICBkcGRrX2NvbmYuc2V0KCdSVEVfQ0FDSEVfTElORV9T SVpFJywgNjQpDQorIGRwZGtfY29uZi5zZXQoJ1JURV9DQUNIRV9HVUFSRF9MSU5FUycsIDEpDQoN CkkgZG9uJ3Qga25vdyBhYm91dCB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgYW5kIGltcGxlbWVudGF0 aW9ucywgc28gd2Ugc2hvdWxkIHByb2JhYmx5IHVzZSBhIGRlZmF1bHQgb2YgMSwgbWF0Y2hpbmcg dGhlIGV4aXN0aW5nIGd1YXJkIHNpemUgaW4gdGhlIHJpbmcgbGliLg0KDQpAQnJ1Y2UsIEkgaG9w ZSB5b3UgY2FuIGhlbHAgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBwYXJ0IG9mIHRoaXMuDQoNCj4g DQo+ID4gVG8gYmUgdXNlZCBsaWtlIHRoaXM6DQo+ID4NCj4gPiBzdHJ1Y3QgcnRlX3Jpbmcgew0K PiA+IAljaGFyIG5hbWVbUlRFX1JJTkdfTkFNRVNJWkVdIF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+ ID4gCS8qKjwgTmFtZSBvZiB0aGUgcmluZy4gKi8NCj4gPiAJaW50IGZsYWdzOyAgICAgICAgICAg ICAgIC8qKjwgRmxhZ3Mgc3VwcGxpZWQgYXQgY3JlYXRpb24uICovDQo+ID4gCWNvbnN0IHN0cnVj dCBydGVfbWVtem9uZSAqbWVtem9uZTsNCj4gPiAJCQkvKio8IE1lbXpvbmUsIGlmIGFueSwgY29u dGFpbmluZyB0aGUgcnRlX3JpbmcgKi8NCj4gPiAJdWludDMyX3Qgc2l6ZTsgICAgICAgICAgIC8q KjwgU2l6ZSBvZiByaW5nLiAqLw0KPiA+IAl1aW50MzJfdCBtYXNrOyAgICAgICAgICAgLyoqPCBN YXNrIChzaXplLTEpIG9mIHJpbmcuICovDQo+ID4gCXVpbnQzMl90IGNhcGFjaXR5OyAgICAgICAv Kio8IFVzYWJsZSBzaXplIG9mIHJpbmcgKi8NCj4gPg0KPiA+IC0JY2hhciBwYWQwIF9fcnRlX2Nh Y2hlX2FsaWduZWQ7IC8qKjwgZW1wdHkgY2FjaGUgbGluZSAqLw0KPiA+ICsJUlRFX0NBQ0hFX0dV QVJEKHByb2QpOyAgLyoqPCBJc29sYXRlIHByb2R1Y2VyIHN0YXR1cy4gKi8NCg0KKwlSVEVfQ0FD SEVfR1VBUkQ7DQoNCk5vdGU6IENvbW1lbnRpbmcgYW5vbnltb3VzIGNhY2hlIGd1YXJkIGZpZWxk cyBzZWVtcyBzb21ld2hhdCBzdXBlcmZsdW91cywgYW5kIHdvdWxkIGxhcmdlbHkgYmUgYSBjb3B5 IG9mIHRoZSBnZW5lcmFsIFJURV9DQUNIRV9HVUFSRCBkZXNjcmlwdGlvbiBhbnl3YXksIHNvIEkg aGF2ZSByZW1vdmVkIHRoZSBjb21tZW50cy4gDQoNCj4gPg0KPiA+IAkvKiogUmluZyBwcm9kdWNl ciBzdGF0dXMuICovDQo+ID4gCXVuaW9uIHsNCj4gPiAJCXN0cnVjdCBydGVfcmluZ19oZWFkdGFp bCBwcm9kOw0KPiA+IAkJc3RydWN0IHJ0ZV9yaW5nX2h0c19oZWFkdGFpbCBodHNfcHJvZDsNCj4g PiAJCXN0cnVjdCBydGVfcmluZ19ydHNfaGVhZHRhaWwgcnRzX3Byb2Q7DQo+ID4gCX0gIF9fcnRl X2NhY2hlX2FsaWduZWQ7DQo+ID4NCj4gPiAtCWNoYXIgcGFkMSBfX3J0ZV9jYWNoZV9hbGlnbmVk OyAvKio8IGVtcHR5IGNhY2hlIGxpbmUgKi8NCj4gPiArCVJURV9DQUNIRV9HVUFSRChib3RoKTsg IC8qKjwgSXNvbGF0ZSBwcm9kdWNlciBmcm9tIGNvbnN1bWVyLiAqLw0KDQorCVJURV9DQUNIRV9H VUFSRDsNCg0KPiA+DQo+ID4gCS8qKiBSaW5nIGNvbnN1bWVyIHN0YXR1cy4gKi8NCj4gPiAJdW5p b24gew0KPiA+IAkJc3RydWN0IHJ0ZV9yaW5nX2hlYWR0YWlsIGNvbnM7DQo+ID4gCQlzdHJ1Y3Qg cnRlX3JpbmdfaHRzX2hlYWR0YWlsIGh0c19jb25zOw0KPiA+IAkJc3RydWN0IHJ0ZV9yaW5nX3J0 c19oZWFkdGFpbCBydHNfY29uczsNCj4gPiAJfSAgX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPg0K PiA+IC0JY2hhciBwYWQyIF9fcnRlX2NhY2hlX2FsaWduZWQ7IC8qKjwgZW1wdHkgY2FjaGUgbGlu ZSAqLw0KPiA+ICsJUlRFX0NBQ0hFX0dVQVJEKGNvbnMpOyAgLyoqPCBJc29sYXRlIGNvbnN1bWVy IHN0YXR1cy4gKi8NCg0KKwlSVEVfQ0FDSEVfR1VBUkQ7DQoNCj4gPiB9Ow0KPiA+DQo+ID4NCj4g PiBBbmQgZm9yIHRoZSBtZW1wb29sIGxpYnJhcnk6DQo+ID4NCj4gPiAjaWZkZWYgUlRFX0xJQlJU RV9NRU1QT09MX1NUQVRTDQo+ID4gLyoqDQo+ID4gICAqIEEgc3RydWN0dXJlIHRoYXQgc3RvcmVz IHRoZSBtZW1wb29sIHN0YXRpc3RpY3MgKHBlci1sY29yZSkuDQo+ID4gICAqIE5vdGU6IENhY2hl IHN0YXRzIChwdXRfY2FjaGVfYnVsay9vYmpzLCBnZXRfY2FjaGVfYnVsay9vYmpzKSBhcmUNCj4g bm90DQo+ID4gICAqIGNhcHR1cmVkIHNpbmNlIHRoZXkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBv dGhlciBzdGF0cy4NCj4gPiAgICogRm9yIGV4YW1wbGU6IHB1dF9jYWNoZV9vYmpzID0gcHV0X29i anMgLSBwdXRfY29tbW9uX3Bvb2xfb2Jqcy4NCj4gPiAgICovDQo+ID4gc3RydWN0IHJ0ZV9tZW1w b29sX2RlYnVnX3N0YXRzIHsNCj4gPiAJdWludDY0X3QgcHV0X2J1bGs7ICAgICAgICAgICAgIC8q KjwgTnVtYmVyIG9mIHB1dHMuICovDQo+ID4gCXVpbnQ2NF90IHB1dF9vYmpzOyAgICAgICAgICAg ICAvKio8IE51bWJlciBvZiBvYmplY3RzIHN1Y2Nlc3NmdWxseQ0KPiBwdXQuICovDQo+ID4gCXVp bnQ2NF90IHB1dF9jb21tb25fcG9vbF9idWxrOyAvKio8IE51bWJlciBvZiBidWxrcyBlbnF1ZXVl ZCBpbg0KPiBjb21tb24gcG9vbC4gKi8NCj4gPiAJdWludDY0X3QgcHV0X2NvbW1vbl9wb29sX29i anM7IC8qKjwgTnVtYmVyIG9mIG9iamVjdHMgZW5xdWV1ZWQgaW4NCj4gY29tbW9uIHBvb2wuICov DQo+ID4gCXVpbnQ2NF90IGdldF9jb21tb25fcG9vbF9idWxrOyAvKio8IE51bWJlciBvZiBidWxr cyBkZXF1ZXVlZCBmcm9tDQo+IGNvbW1vbiBwb29sLiAqLw0KPiA+IAl1aW50NjRfdCBnZXRfY29t bW9uX3Bvb2xfb2JqczsgLyoqPCBOdW1iZXIgb2Ygb2JqZWN0cyBkZXF1ZXVlZA0KPiBmcm9tIGNv bW1vbiBwb29sLiAqLw0KPiA+IAl1aW50NjRfdCBnZXRfc3VjY2Vzc19idWxrOyAgICAgLyoqPCBT dWNjZXNzZnVsIGFsbG9jYXRpb24gbnVtYmVyLg0KPiAqLw0KPiA+IAl1aW50NjRfdCBnZXRfc3Vj Y2Vzc19vYmpzOyAgICAgLyoqPCBPYmplY3RzIHN1Y2Nlc3NmdWxseQ0KPiBhbGxvY2F0ZWQuICov DQo+ID4gCXVpbnQ2NF90IGdldF9mYWlsX2J1bGs7ICAgICAgICAvKio8IEZhaWxlZCBhbGxvY2F0 aW9uIG51bWJlci4gKi8NCj4gPiAJdWludDY0X3QgZ2V0X2ZhaWxfb2JqczsgICAgICAgIC8qKjwg T2JqZWN0cyB0aGF0IGZhaWxlZCB0byBiZQ0KPiBhbGxvY2F0ZWQuICovDQo+ID4gCXVpbnQ2NF90 IGdldF9zdWNjZXNzX2Jsa3M7ICAgICAvKio8IFN1Y2Nlc3NmdWwgYWxsb2NhdGlvbiBudW1iZXIN Cj4gb2YgY29udGlndW91cyBibG9ja3MuICovDQo+ID4gCXVpbnQ2NF90IGdldF9mYWlsX2Jsa3M7 ICAgICAgICAvKio8IEZhaWxlZCBhbGxvY2F0aW9uIG51bWJlciBvZg0KPiBjb250aWd1b3VzIGJs b2Nrcy4gKi8NCj4gPiArCVJURV9DQUNIRV9HVUFSRChkZWJ1Z19zdGF0cyk7ICAvKio8IElzb2xh dGlvbiBiZXR3ZWVuIGxjb3Jlcy4gKi8NCg0KKwlSVEVfQ0FDSEVfR1VBUkQ7DQoNCj4gPiB9IF9f cnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4gI2VuZGlmDQo+ID4NCj4gPiBzdHJ1Y3QgcnRlX21lbXBv b2wgew0KPiA+ICAgWy4uLl0NCj4gPiAjaWZkZWYgUlRFX0xJQlJURV9NRU1QT09MX1NUQVRTDQo+ ID4gCS8qKiBQZXItbGNvcmUgc3RhdGlzdGljcy4NCj4gPiAJICoNCj4gPiAJICogUGx1cyBvbmUs IGZvciB1bnJlZ2lzdGVyZWQgbm9uLUVBTCB0aHJlYWRzLg0KPiA+IAkgKi8NCj4gPiAJc3RydWN0 IHJ0ZV9tZW1wb29sX2RlYnVnX3N0YXRzIHN0YXRzW1JURV9NQVhfTENPUkUgKyAxXTsNCj4gPiAj ZW5kaWYNCj4gPiB9ICBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPiA+DQo+ID4NCj4gPiBJdCBhbHNv IHNlZW1zIHJlbGV2YW50IGZvciB0aGUgUFJORyBsaWJyYXJ5Og0KPiA+DQo+ID4gL2xpYi9lYWwv Y29tbW9uL3J0ZV9yYW5kb20uYzoNCj4gPg0KPiA+IHN0cnVjdCBydGVfcmFuZF9zdGF0ZSB7DQo+ ID4gCXVpbnQ2NF90IHoxOw0KPiA+IAl1aW50NjRfdCB6MjsNCj4gPiAJdWludDY0X3QgejM7DQo+ ID4gCXVpbnQ2NF90IHo0Ow0KPiA+IAl1aW50NjRfdCB6NTsNCj4gPiArCVJURV9DQUNIRV9HVUFS RCh6KTsNCg0KKwlSVEVfQ0FDSEVfR1VBUkQ7DQoNCj4gPiB9IF9fcnRlX2NhY2hlX2FsaWduZWQ7 DQo+ID4NCj4gDQo+IFllcy4NCj4gDQo+IFNob3VsZCB0aGVyZSBiZSB0d28gY2FjaGUgZ3VhcmQg bWFjcm9zPyBPbmUgcGFyYW1ldGVyLWZyZWUNCj4gUlRFX0NBQ0hFX0dVQVJEIGFuZCBhIFJURV9D QUNIRV9OQU1FRF9HVUFSRChuYW1lKSBtYWNybz8NCj4gDQo+IE1heWJlIGl0J3MgYmV0dGVyIGp1 c3QgdG8ga2VlcCB0aGUgc2luZ2xlIG1hY3JvLCBidXQgaGF2ZSBhIGNvbnZlbnRpb24NCj4gd2l0 aCBzb21lIGdlbmVyaWMgbmFtZSAoaS5lLiwgbm90ICd6JyBhYm92ZSkgZm9yIHRoZSBndWFyZCBm aWVsZCwgbGlrZQ0KPiAnY2FjaGVfZ3VhcmQnIG9yIGp1c3QgJ2d1YXJkJy4gSGF2aW5nIHVuaXF1 ZSBuYW1lIG1ha2VzIG5vIHNlbnNlLCBleGNlcHQNCj4gaW4gcmFyZSBjYXNlcyB3aGVyZSB5b3Ug bmVlZCBtdWx0aXBsZSBndWFyZCBsaW5lcyBwZXIgc3RydWN0Lg0KDQpUaGVyZSBpcyBubyBuZWVk IHRvIGFjY2VzcyB0aGVzZSBmaWVsZHMsIHNvIGxldCdzIHVzZSBhdXRvLWdlbmVyYXRlZCB1bmlx dWUgbmFtZXMsIGFuZCBub3Qgb2ZmZXIgYW4gQVBJIHdpdGggYSBuYW1lLiBUaGlzIGFsc28gbWFr ZXMgdGhlIEFQSSBhcyBzaW1wbGUgYXMgcG9zc2libGUuDQoNCj4gDQo+ID4gLyogT25lIGluc3Rh bmNlIGVhY2ggZm9yIGV2ZXJ5IGxjb3JlIGlkLWVxdWlwcGVkIHRocmVhZCwgYW5kIG9uZQ0KPiA+ ICAgKiBhZGRpdGlvbmFsIGluc3RhbmNlIHRvIGJlIHNoYXJlZCBieSBhbGwgb3RoZXJzIHRocmVh ZHMgKGkuZS4sIGFsbA0KPiA+ICAgKiB1bnJlZ2lzdGVyZWQgbm9uLUVBTCB0aHJlYWRzKS4NCj4g PiAgICovDQo+ID4gc3RhdGljIHN0cnVjdCBydGVfcmFuZF9zdGF0ZSByYW5kX3N0YXRlc1tSVEVf TUFYX0xDT1JFICsgMV07DQo+ID4NCg==