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 C87BE41B26; Mon, 28 Aug 2023 08:32:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5D1704026D; Mon, 28 Aug 2023 08:32:52 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id CBFAD4021E for ; Mon, 28 Aug 2023 08:32:51 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 993F6206BB; Mon, 28 Aug 2023 08:32:51 +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: Mon, 28 Aug 2023 08:32:48 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D87B4A@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC] cache guard Thread-Index: AdnZNiemrht4VdDxQ4W2CYAIMSnbwwAQSpqA References: <98CBD80474FA8B44BF855DF32C47DC35D87B39@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87B3A@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87B47@smartserver.smartshare.dk> <5a56c531-5d5c-777b-c1ea-dbcc25009220@lysator.liu.se> <98CBD80474FA8B44BF855DF32C47DC35D87B49@smartserver.smartshare.dk> 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 Cj4gU2VudDogTW9uZGF5LCAyOCBBdWd1c3QgMjAyMyAwMC4zMQ0KPiANCj4gT24gMjAyMy0wOC0y NyAxNzo0MCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+IEZyb206IE1hdHRpYXMgUsO2bm5i bG9tIFttYWlsdG86aG9mb3JzQGx5c2F0b3IubGl1LnNlXQ0KPiA+PiBTZW50OiBTdW5kYXksIDI3 IEF1Z3VzdCAyMDIzIDE1LjU1DQo+ID4+DQo+ID4+IE9uIDIwMjMtMDgtMjcgMTA6MzQsIE1vcnRl biBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4gK0NDIEhvbm5hcHBhIGFuZCBLb25zdGFudGluLCBSaW5n IGxpYiBtYWludGFpbmVycw0KPiA+Pj4gK0NDIE1hdHRpYXMsIFBSTkcgbGliIG1haW50YWluZXIN Cj4gPj4+DQo+ID4+Pj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNvbiBbbWFpbHRvOmJydWNlLnJpY2hh cmRzb25AaW50ZWwuY29tXQ0KPiA+Pj4+IFNlbnQ6IEZyaWRheSwgMjUgQXVndXN0IDIwMjMgMTEu MjQNCj4gPj4+Pg0KPiA+Pj4+IE9uIEZyaSwgQXVnIDI1LCAyMDIzIGF0IDExOjA2OjAxQU0gKzAy MDAsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+PiArQ0MgbWVtcG9vbCBtYWludGFpbmVy cw0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNvbiBbbWFpbHRvOmJydWNl LnJpY2hhcmRzb25AaW50ZWwuY29tXQ0KPiA+Pj4+Pj4gU2VudDogRnJpZGF5LCAyNSBBdWd1c3Qg MjAyMyAxMC4yMw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIEZyaSwgQXVnIDI1LCAyMDIzIGF0IDA4 OjQ1OjEyQU0gKzAyMDAsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+Pj4+IEJydWNlLA0K PiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gV2l0aCB0aGlzIHBhdGNoIFsxXSwgaXQgaXMgbm90ZWQgdGhh dCB0aGUgcmluZyBwcm9kdWNlciBhbmQNCj4gPj4+PiBjb25zdW1lciBkYXRhDQo+ID4+Pj4+PiBz aG91bGQgbm90IGJlIG9uIGFkamFjZW50IGNhY2hlIGxpbmVzLCBmb3IgcGVyZm9ybWFuY2UgcmVh c29ucy4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFsxXToNCj4gPj4+Pj4+DQo+ID4+Pj4NCj4gPj4g aHR0cHM6Ly9naXQuZHBkay5vcmcvZHBkay9jb21taXQvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5n Lmg/aWQ9ZDlmMGQzYTFmDQo+ID4+Pj4gZmQ0YjY2DQo+ID4+Pj4+PiBlNzU0ODVjYzhiNjNiOWFl ZGZiZGZlOGIwDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAoSXQncyBvYnZpb3VzIHRoYXQgdGhleSBj YW5ub3Qgc2hhcmUgdGhlIHNhbWUgY2FjaGUgbGluZSwgYmVjYXVzZQ0KPiA+Pj4+IHRoZXkgYXJl DQo+ID4+Pj4+PiBhY2Nlc3NlZCBieSB0d28gZGlmZmVyZW50IHRocmVhZHMuKQ0KPiA+Pj4+Pj4+ DQo+ID4+Pj4+Pj4gSW50dWl0aXZlbHksIEkgd291bGQgdGhpbmsgdGhhdCBoYXZpbmcgdGhlbSBv biBkaWZmZXJlbnQgY2FjaGUNCj4gPj4+PiBsaW5lcyB3b3VsZA0KPiA+Pj4+Pj4gc3VmZmljZS4g V2h5IGRvZXMgaGF2aW5nIGFuIGVtcHR5IGNhY2hlIGxpbmUgYmV0d2VlbiB0aGVtIG1ha2UgYQ0K PiA+Pj4+IGRpZmZlcmVuY2U/DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBBbmQgZG9lcyBpdCBuZWVk IHRvIGJlIGFuIGVtcHR5IGNhY2hlIGxpbmU/IE9yIGRvZXMgaXQgc3VmZmljZQ0KPiA+Pj4+IGhh dmluZyB0aGUNCj4gPj4+Pj4+IHNlY29uZCBzdHJ1Y3R1cmUgc3RhcnQgYXQgdHdvIGNhY2hlIGxp bmVzIGFmdGVyIHRoZSBzdGFydCBvZiB0aGUNCj4gPj4+PiBmaXJzdA0KPiA+Pj4+Pj4gc3RydWN0 dXJlIChlLmcuIGlmIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBzdHJ1Y3R1cmUgaXMgdHdvIGNhY2hl DQo+ID4+Pj4gbGluZXMpPw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSdtIGFza2luZyBiZWNhdXNl IHRoZSBzYW1lIHByaW5jaXBsZSBtaWdodCBhcHBseSB0byBvdGhlciBjb2RlDQo+ID4+Pj4gdG9v Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+PiBIaSBNb3J0ZW4sDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gdGhp cyB3YXMgc29tZXRoaW5nIHdlIGRpc2NvdmVyZWQgd2hlbiB3b3JraW5nIG9uIHRoZSBkaXN0cmli dXRvcg0KPiA+Pj4+IGxpYnJhcnkuDQo+ID4+Pj4+PiBJZiB3ZSBoYXZlIGNhY2hlbGluZXMgcGVy IGNvcmUgd2hlcmUgdGhlcmUgaXMgaGVhdnkgYWNjZXNzLCBoYXZpbmcNCj4gPj4+PiBzb21lDQo+ ID4+Pj4+PiBjYWNoZWxpbmVzIGFzIGEgZ2FwIGJldHdlZW4gdGhlIGNvbnRlbnQgY2FjaGVsaW5l cyBjYW4gaGVscA0KPiA+Pj4+IHBlcmZvcm1hbmNlLiBXZQ0KPiA+Pj4+Pj4gYmVsaWV2ZSB0aGlz IGhlbHBzIGR1ZSB0byBhdm9pZGluZyBpc3N1ZXMgd2l0aCB0aGUgSFcgcHJlZmV0Y2hlcnMNCj4g Pj4+PiAoZS5nLg0KPiA+Pj4+Pj4gYWRqYWNlbnQgY2FjaGVsaW5lIHByZWZldGNoZXIpIGJyaW5n aW5nIGluIHRoZSBzZWNvbmQgY2FjaGVsaW5lDQo+ID4+Pj4+PiBzcGVjdWxhdGl2ZWx5IHdoZW4g YW4gb3BlcmF0aW9uIGlzIGRvbmUgb24gdGhlIGZpcnN0IGxpbmUuDQo+ID4+Pj4+DQo+ID4+Pj4+ IEkgZ3Vlc3NlZCB0aGF0IGl0IGhhZCBzb21ldGhpbmcgdG8gZG8gd2l0aCBzcGVjdWxhdGl2ZSBw cmVmZXRjaGluZywNCj4gPj4+PiBidXQgd2Fzbid0IHN1cmUuIEdvb2QgdG8gZ2V0IGNvbmZpcm1h dGlvbiwgYW5kIHRoYXQgaXQgaGFzIGENCj4gPj4gbWVhc3VyZWFibGUNCj4gPj4+PiBlZmZlY3Qg c29tZXdoZXJlLiBWZXJ5IGludGVyZXN0aW5nIQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBOQjogTW9yZSBj b21tZW50cyBpbiB0aGUgcmluZyBsaWIgYWJvdXQgc3R1ZmYgbGlrZSB0aGlzIHdvdWxkIGJlDQo+ ID4+IG5pY2UuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNvLCBmb3IgdGhlIG1lbXBvb2wgbGliLCB3aGF0 IGRvIHlvdSB0aGluayBhYm91dCBhcHBseWluZyB0aGUgc2FtZQ0KPiA+Pj4+IHRlY2huaXF1ZSB0 byB0aGUgcnRlX21lbXBvb2xfZGVidWdfc3RhdHMgc3RydWN0dXJlICh3aGljaCBpcyBhbiBhcnJh eQ0KPiA+Pj4+IGluZGV4ZWQgcGVyIGxjb3JlKS4uLiBUd28gYWRqYWNlbnQgbGNvcmVzIGhlYXZp bHkgYWNjZXNzaW5nIHRoZWlyDQo+ID4+IGxvY2FsDQo+ID4+Pj4gbWVtcG9vbCBjYWNoZXMgc2Vl bXMgbGlrZWx5IHRvIG1lLiBCdXQgaG93IGhlYXZ5IGRvZXMgdGhlIGFjY2VzcyBuZWVkDQo+ID4+ IHRvDQo+ID4+Pj4gYmUgZm9yIHRoaXMgdGVjaG5pcXVlIHRvIGJlIHJlbGV2YW50Pw0KPiA+Pj4+ Pg0KPiA+Pj4+DQo+ID4+Pj4gTm8gaWRlYSBob3cgaGVhdnkgdGhlIGFjY2Vzc2VzIG5lZWQgdG8g YmUgZm9yIHRoaXMgdG8gaGF2ZSBhDQo+ID4+IG5vdGljYWJsZQ0KPiA+Pj4+IGVmZmVjdC4gRm9y IHRoaW5ncyBsaWtlIGRlYnVnIHN0YXRzLCBJIHdvbmRlciBob3cgd29ydGh3aGlsZSBtYWtpbmcN Cj4gPj4gc3VjaA0KPiA+Pj4+IGENCj4gPj4+PiBjaGFuZ2Ugd291bGQgYmUsIGJ1dCB0aGVuIGFn YWluLCBhbnkgY2hhbmdlIHdvdWxkIGhhdmUgdmVyeSBsb3cNCj4gPj4gaW1wYWN0DQo+ID4+Pj4g dG9vDQo+ID4+Pj4gaW4gdGhhdCBjYXNlLg0KPiA+Pj4NCj4gPj4+IEkganVzdCB0cmllZCBhZGRp bmcgcGFkZGluZyB0byBzb21lIG9mIHRoZSBob3Qgc3RydWN0dXJlcyBpbiBvdXIgb3duDQo+ID4+ IGFwcGxpY2F0aW9uLCBhbmQgb2JzZXJ2ZWQgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXBy b3ZlbWVudCBmb3INCj4gPj4gdGhvc2UuDQo+ID4+Pg0KPiA+Pj4gU28gSSB0aGluayB0aGlzIHRl Y2huaXF1ZSBzaG91bGQgaGF2ZSBoaWdoZXIgdmlzaWJpbGl0eSBpbiBEUERLIGJ5DQo+ID4+IGFk ZGluZyBhIG5ldyBjYWNoZSBtYWNybyB0byBydGVfY29tbW9uLmg6DQo+ID4+Pg0KPiA+Pj4gLyoq DQo+ID4+PiAgICAqIEVtcHR5IGNhY2hlIGxpbmUsIHRvIGd1YXJkIGFnYWluc3Qgc3BlY3VsYXRp dmUgcHJlZmV0Y2hpbmcuDQo+ID4+PiAgICAqDQo+ID4+DQo+ID4+ICJ0byBndWFyZCBhZ2FpbnN0 IGZhbHNlIHNoYXJpbmctbGlrZSBlZmZlY3RzIG9uIHN5c3RlbXMgd2l0aCBhDQo+ID4+IG5leHQt Ti1saW5lcyBoYXJkd2FyZSBwcmVmZXRjaGVyIg0KPiA+Pg0KPiA+Pj4gICAgKiBVc2UgYXMgc3Bh Y2luZyBiZXR3ZWVuIGRhdGEgYWNjZXNzZWQgYnkgZGlmZmVyZW50IGxjb3JlcywNCj4gPj4+ICAg ICogdG8gcHJldmVudCBjYWNoZSB0aHJhc2hpbmcgb24gQ1BVcyB3aXRoIHNwZWN1bGF0aXZlIHBy ZWZldGNoaW5nLg0KPiA+Pj4gICAgKi8NCj4gPj4+ICNkZWZpbmUgUlRFX0NBQ0hFX0dVQVJEKG5h bWUpIGNoYXINCj4gPj4gY2FjaGVfZ3VhcmRfIyNuYW1lW1JURV9DQUNIRV9MSU5FX1NJWkVdIF9f cnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4+Pg0KPiA+Pg0KPiA+PiBZb3UgY291bGQgaGF2ZSBhIG1h Y3JvIHdoaWNoIHNwZWNpZmllZCBob3cgbXVjaCBndWFyZGluZyB0aGVyZSBuZWVkcyB0bw0KPiA+ PiBiZSwgaWRlYWxseSBkZWZpbmVkIG9uIGEgcGVyLUNQVSBiYXNpcy4gKFRoZXNlIHRoaW5ncyBo YXMgbm90aGluZyB0byBkbw0KPiA+PiB3aXRoIHRoZSBJU0EsIGJ1dCBldmVyeXRoaW5nIHRvIGRv IHdpdGggdGhlIGltcGxlbWVudGF0aW9uLikNCj4gPj4NCj4gPj4gSSdtIG5vdCBzdXJlIE4gaXMg YWx3YXlzIDEuDQo+ID4+DQo+ID4+IFNvIHRoZSBndWFyZCBwYWRkaW5nIHNob3VsZCBiZSBSVEVf Q0FDSEVfTElORV9TSVpFICoNCj4gPj4gUlRFX0NBQ0hFX0dVQVJEX0xJTkVTIGJ5dGVzLCBhbmQg d3JhcCB0aGUgd2hvbGUgdGhpbmcgaW4NCj4gPj4gI2lmIFJURV9DQUNIRV9HVUFSRF9MSU5FUyA+ IDANCj4gPj4gI2VuZGlmDQo+ID4+DQo+ID4+IC4uLnNvIHlvdSBjYW4gZGlzYWJsZSB0aGlzIChj dXRlISkgaGFjayAob24gY3VzdG9tIERQREsgYnVpbGRzKSBpbiBjYXNlDQo+ID4+IHlvdSBoYXZl IGRpc2FibGVkIGhhcmR3YXJlIHByZWZldGNoaW5nLCB3aGljaCBzZWVtcyBnZW5lcmFsbHkgdG8g YmUgYQ0KPiA+PiBnb29kIGlkZWEgZm9yIHBhY2tldCBwcm9jZXNzaW5nIHR5cGUgYXBwbGljYXRp b25zLg0KPiA+Pg0KPiA+PiAuLi53aGljaCBsZWFkcyBtZSB0byBhbm90aGVyIHN1Z2dlc3Rpb25z OiBhZGQgYSBub3RlIG9uIGRpc2FibGluZw0KPiA+PiBoYXJkd2FyZSBwcmVmZXRjaGluZyBpbiB0 aGUgb3B0aW1pemF0aW9uIGd1aWRlLg0KPiA+Pg0KPiA+PiBTZWVtcyBsaWtlIGEgdmVyeSBnb29k IGlkZWEgdG8gaGF2ZSB0aGlzIGluIDxydGVfY29tbW9uLmg+LCBhbmQNCj4gPj4gb3RoZXJ3aXNl IG1ha2UgdGhpcyBpc3N1ZSB2aXNpYmxlIGFuZCBrbm93bi4NCj4gPg0KPiA+IEdvb2QgcG9pbnRz LCBNYXR0aWFzIQ0KPiA+DQo+ID4gSSBhbHNvIHByZWZlciB0aGUgbmFtZS1sZXNzIG1hY3JvIHlv dSBzdWdnZXN0ZWQgYmVsb3cuDQo+ID4NCj4gPiBTbywgdGhpcyBnZXRzIGFkZGVkIHRvIHJ0ZV9j b21tb24uaDoNCj4gPg0KPiA+IC8qKg0KPiA+ICAgKiBFbXB0eSBjYWNoZSBsaW5lcywgdG8gZ3Vh cmQgYWdhaW5zdCBmYWxzZSBzaGFyaW5nLWxpa2UgZWZmZWN0cw0KPiA+ICAgKiBvbiBzeXN0ZW1z IHdpdGggYSBuZXh0LU4tbGluZXMgaGFyZHdhcmUgcHJlZmV0Y2hlci4NCj4gPiAgICoNCj4gPiAg ICogVXNlIGFzIHNwYWNpbmcgYmV0d2VlbiBkYXRhIGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBsY29y ZXMsDQo+ID4gICAqIHRvIHByZXZlbnQgY2FjaGUgdGhyYXNoaW5nIG9uIGhhcmR3YXJlIHdpdGgg c3BlY3VsYXRpdmUgcHJlZmV0Y2hpbmcuDQo+ID4gICAqLw0KPiA+ICNpZiBSVEVfQ0FDSEVfR1VB UkRfTElORVMgPiAwDQo+ID4gI2RlZmluZSBfUlRFX0NBQ0hFX0dVQVJEX0hFTFBFUjIodW5pcXVl KSBcDQo+ID4gICAgICAgICAgY2hhciBjYWNoZV9ndWFyZF8gIyMgdW5pcXVlW1JURV9DQUNIRV9M SU5FX1NJWkUgKg0KPiBSVEVfQ0FDSEVfR1VBUkRfTElORVNdIFwNCj4gPiAgICAgICAgICBfX3J0 ZV9jYWNoZV9hbGlnbmVkOw0KPiA+ICNkZWZpbmUgX1JURV9DQUNIRV9HVUFSRF9IRUxQRVIxKHVu aXF1ZSkgX1JURV9DQUNIRV9HVUFSRF9IRUxQRVIyKHVuaXF1ZSkNCj4gPiAjZGVmaW5lIFJURV9D QUNIRV9HVUFSRCBfUlRFX0NBQ0hFX0dVQVJEX0hFTFBFUjEoX19DT1VOVEVSX18pDQo+ID4gI2Vs c2UNCj4gPiAjZGVmaW5lIFJURV9DQUNIRV9HVUFSRA0KPiA+ICNlbmRpZg0KPiA+DQo+IA0KPiBT ZWVtcyBsaWtlIGEgZ29vZCBzb2x1dGlvbi4gSSB0aG91Z2h0IGFzIGZhciBhcyB1c2luZyBfX0xJ TkVfXyB0byBidWlsZA0KPiBhIHVuaXF1ZSBuYW1lLCBidXQgX19DT1VOVEVSX18gaXMgbXVjaCBj bGVhbmVyLCBwcm92aWRlZCBpdCdzIGF2YWlsYWJsZQ0KPiBpbiByZWxldmFudCBjb21waWxlcnMu IChJdCdzIG5vdCBpbiBDMTEuKQ0KDQpJIGNvbnNpZGVyZWQgX19MSU5FX18gdG9vLCBidXQgY2Ft ZSB0byB0aGUgc2FtZSBjb25jbHVzaW9uLi4uIF9fQ09VTlRFUl9fIGlzIGNsZWFuZXIgZm9yIHRo aXMgcHVycG9zZS4NCg0KQW5kIHNpbmNlIF9fQ09VTlRFUl9fIGlzIGJlaW5nIHVzZWQgZWxzZXdo ZXJlIGluIERQREssIEkgYXNzdW1lIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIGhlcmUgdG9vLg0K DQpJZiBpdCB0dXJucyBvdXQgY2F1c2luZyBwcm9ibGVtcywgd2UgY2FuIGVhc2lseSBzd2l0Y2gg dG8gX19MSU5FX18gaW5zdGVhZC4NCg0KPiANCj4gU2hvdWxkIHRoZSBzZW1pY29sb24gYmUgaW5j bHVkZWQgb3Igbm90IGluIEhFTFBFUjI/IElmIGxlZnQgb3V0LCBhDQo+IGxvbmVseSAiOyIgd2ls bCBiZSBsZWZ0IGZvciBSVEVfQ0FDSEVfR1VBUkRfTElORVMgPT0gMCwgYnV0IEkgZG9uJ3QNCj4g dGhpbmsgdGhhdCBpcyBhIHByb2JsZW0uDQoNCkkgdGVzdGVkIGl0IG9uIEdvZGJvbHQsIGFuZCB0 aGUgbG9uZWx5ICI7IiBpbiBhIHN0cnVjdCBkaWRuJ3Qgc2VlbSB0byBiZSBhIHByb2JsZW0uDQoN CldpdGggdGhlIHNlbWljb2xvbiBpbiBIRUxQRVIyLCB0aGVyZSB3aWxsIGJlIGEgbG9uZWx5ICI7 IiBpbiB0aGUgc3RydWN0IGluIGJvdGggY2FzZXMsIGkuZS4gd2l0aCBhbmQgd2l0aG91dCBjYWNo ZSBndWFyZHMgZW5hYmxlZC4NCg0KPiANCj4gSSBkb24ndCBzZWUgd2h5IF9fcnRlX2NhY2hlX2Fs aWduZWQgaXMgbmVlZGVkIGhlcmUuIFRoZSBhZGphY2VudCBzdHJ1Y3QNCj4gbXVzdCBiZSBjYWNo ZS1saW5lIGFsaWduZWQuIE1heWJlIGl0IG1ha2VzIGl0IG1vcmUgcmVhZGFibGUsIGhhdmluZyB0 aGUNCj4gZXhwbGljaXQgZ3VhcmQgcGFkZGluZyBzdGFydGluZyBhdCB0aGUgc3RhcnQgb2YgdGhl IGFjdHVhbCBndWFyZCBjYWNoZQ0KPiBsaW5lcywgcmF0aGVyIHRoYW4gcG90ZW50aWFsbHkgYXQg c29tZSBlYXJsaWVyIHBvaW50IGJlZm9yZSwgYW5kIGhhdmluZw0KPiBub24tZ3VhcmQgcGFkZGlu ZyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgKGZyb20gX19ydGVfY2FjaGVfYWxpZ25lZCBvbg0K PiB0aGUgc3RydWN0IGxldmVsKS4NCg0KSGF2aW5nIGJvdGggX19ydGVfY2FjaGVfYWxpZ25lZCBh bmQgdGhlIGNoYXIgYXJyYXkgd2l0aCBmdWxsIGNhY2hlIGxpbmVzIGVuc3VyZXMgdGhhdCB0aGUg Z3VhcmQgZmllbGQgaXRzZWxmIGlzIG9uIGl0cyBvd24gc2VwYXJhdGUgY2FjaGUgbGluZSwgcmVn YXJkbGVzcyBvZiB0aGUgb3JnYW5pemF0aW9uIG9mIGFkamFjZW50IGZpZWxkcyBpbiB0aGUgc3Ry dWN0LiBFLmcuIHRoaXMgd2lsbCBhbHNvIHdvcms6DQoNCnN0cnVjdCB0ZXN0IHsNCiAgICBjaGFy IHg7DQogICAgUlRFX0NBQ0hFX0dVQVJEOw0KICAgIGNoYXIgeTsNCn07DQoNCj4gDQo+ID4gQW5k IGEgbGluZSBpbiAvY29uZmlnL3g4Ni9tZXNvbi5idWlsZCBmb3IgeDg2IGFyY2hpdGVjdHVyZToN Cj4gPg0KPiA+ICAgIGRwZGtfY29uZi5zZXQoJ1JURV9DQUNIRV9MSU5FX1NJWkUnLCA2NCkNCj4g PiArIGRwZGtfY29uZi5zZXQoJ1JURV9DQUNIRV9HVUFSRF9MSU5FUycsIDEpDQo+ID4NCj4gPiBJ IGRvbid0IGtub3cgYWJvdXQgdmFyaW91cyBhcmNoaXRlY3R1cmVzIGFuZCBpbXBsZW1lbnRhdGlv bnMsIHNvIHdlIHNob3VsZA0KPiBwcm9iYWJseSB1c2UgYSBkZWZhdWx0IG9mIDEsIG1hdGNoaW5n IHRoZSBleGlzdGluZyBndWFyZCBzaXplIGluIHRoZSByaW5nIGxpYi4NCj4gPg0KPiA+IEBCcnVj ZSwgSSBob3BlIHlvdSBjYW4gaGVscCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHBhcnQgb2YgdGhp cy4NCj4gPg0KPiA+Pg0KPiA+Pj4gVG8gYmUgdXNlZCBsaWtlIHRoaXM6DQo+ID4+Pg0KPiA+Pj4g c3RydWN0IHJ0ZV9yaW5nIHsNCj4gPj4+IAljaGFyIG5hbWVbUlRFX1JJTkdfTkFNRVNJWkVdIF9f cnRlX2NhY2hlX2FsaWduZWQ7DQo+ID4+PiAJLyoqPCBOYW1lIG9mIHRoZSByaW5nLiAqLw0KPiA+ Pj4gCWludCBmbGFnczsgICAgICAgICAgICAgICAvKio8IEZsYWdzIHN1cHBsaWVkIGF0IGNyZWF0 aW9uLiAqLw0KPiA+Pj4gCWNvbnN0IHN0cnVjdCBydGVfbWVtem9uZSAqbWVtem9uZTsNCj4gPj4+ IAkJCS8qKjwgTWVtem9uZSwgaWYgYW55LCBjb250YWluaW5nIHRoZSBydGVfcmluZyAqLw0KPiA+ Pj4gCXVpbnQzMl90IHNpemU7ICAgICAgICAgICAvKio8IFNpemUgb2YgcmluZy4gKi8NCj4gPj4+ IAl1aW50MzJfdCBtYXNrOyAgICAgICAgICAgLyoqPCBNYXNrIChzaXplLTEpIG9mIHJpbmcuICov DQo+ID4+PiAJdWludDMyX3QgY2FwYWNpdHk7ICAgICAgIC8qKjwgVXNhYmxlIHNpemUgb2Ygcmlu ZyAqLw0KPiA+Pj4NCj4gPj4+IC0JY2hhciBwYWQwIF9fcnRlX2NhY2hlX2FsaWduZWQ7IC8qKjwg ZW1wdHkgY2FjaGUgbGluZSAqLw0KPiA+Pj4gKwlSVEVfQ0FDSEVfR1VBUkQocHJvZCk7ICAvKio8 IElzb2xhdGUgcHJvZHVjZXIgc3RhdHVzLiAqLw0KPiA+DQo+ID4gKwlSVEVfQ0FDSEVfR1VBUkQ7 DQo+ID4NCj4gPiBOb3RlOiBDb21tZW50aW5nIGFub255bW91cyBjYWNoZSBndWFyZCBmaWVsZHMg c2VlbXMgc29tZXdoYXQgc3VwZXJmbHVvdXMsDQo+IGFuZCB3b3VsZCBsYXJnZWx5IGJlIGEgY29w eSBvZiB0aGUgZ2VuZXJhbCBSVEVfQ0FDSEVfR1VBUkQgZGVzY3JpcHRpb24gYW55d2F5LA0KPiBz byBJIGhhdmUgcmVtb3ZlZCB0aGUgY29tbWVudHMuDQo+ID4NCj4gPj4+DQo+ID4+PiAJLyoqIFJp bmcgcHJvZHVjZXIgc3RhdHVzLiAqLw0KPiA+Pj4gCXVuaW9uIHsNCj4gPj4+IAkJc3RydWN0IHJ0 ZV9yaW5nX2hlYWR0YWlsIHByb2Q7DQo+ID4+PiAJCXN0cnVjdCBydGVfcmluZ19odHNfaGVhZHRh aWwgaHRzX3Byb2Q7DQo+ID4+PiAJCXN0cnVjdCBydGVfcmluZ19ydHNfaGVhZHRhaWwgcnRzX3By b2Q7DQo+ID4+PiAJfSAgX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPj4+DQo+ID4+PiAtCWNoYXIg cGFkMSBfX3J0ZV9jYWNoZV9hbGlnbmVkOyAvKio8IGVtcHR5IGNhY2hlIGxpbmUgKi8NCj4gPj4+ ICsJUlRFX0NBQ0hFX0dVQVJEKGJvdGgpOyAgLyoqPCBJc29sYXRlIHByb2R1Y2VyIGZyb20gY29u c3VtZXIuICovDQo+ID4NCj4gPiArCVJURV9DQUNIRV9HVUFSRDsNCj4gPg0KPiA+Pj4NCj4gPj4+ IAkvKiogUmluZyBjb25zdW1lciBzdGF0dXMuICovDQo+ID4+PiAJdW5pb24gew0KPiA+Pj4gCQlz dHJ1Y3QgcnRlX3JpbmdfaGVhZHRhaWwgY29uczsNCj4gPj4+IAkJc3RydWN0IHJ0ZV9yaW5nX2h0 c19oZWFkdGFpbCBodHNfY29uczsNCj4gPj4+IAkJc3RydWN0IHJ0ZV9yaW5nX3J0c19oZWFkdGFp bCBydHNfY29uczsNCj4gPj4+IAl9ICBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPiA+Pj4NCj4gPj4+ IC0JY2hhciBwYWQyIF9fcnRlX2NhY2hlX2FsaWduZWQ7IC8qKjwgZW1wdHkgY2FjaGUgbGluZSAq Lw0KPiA+Pj4gKwlSVEVfQ0FDSEVfR1VBUkQoY29ucyk7ICAvKio8IElzb2xhdGUgY29uc3VtZXIg c3RhdHVzLiAqLw0KPiA+DQo+ID4gKwlSVEVfQ0FDSEVfR1VBUkQ7DQo+ID4NCj4gPj4+IH07DQo+ ID4+Pg0KPiA+Pj4NCj4gPj4+IEFuZCBmb3IgdGhlIG1lbXBvb2wgbGlicmFyeToNCj4gPj4+DQo+ ID4+PiAjaWZkZWYgUlRFX0xJQlJURV9NRU1QT09MX1NUQVRTDQo+ID4+PiAvKioNCj4gPj4+ICAg ICogQSBzdHJ1Y3R1cmUgdGhhdCBzdG9yZXMgdGhlIG1lbXBvb2wgc3RhdGlzdGljcyAocGVyLWxj b3JlKS4NCj4gPj4+ICAgICogTm90ZTogQ2FjaGUgc3RhdHMgKHB1dF9jYWNoZV9idWxrL29ianMs IGdldF9jYWNoZV9idWxrL29ianMpIGFyZQ0KPiA+PiBub3QNCj4gPj4+ICAgICogY2FwdHVyZWQg c2luY2UgdGhleSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIG90aGVyIHN0YXRzLg0KPiA+Pj4gICAg KiBGb3IgZXhhbXBsZTogcHV0X2NhY2hlX29ianMgPSBwdXRfb2JqcyAtIHB1dF9jb21tb25fcG9v bF9vYmpzLg0KPiA+Pj4gICAgKi8NCj4gPj4+IHN0cnVjdCBydGVfbWVtcG9vbF9kZWJ1Z19zdGF0 cyB7DQo+ID4+PiAJdWludDY0X3QgcHV0X2J1bGs7ICAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9m IHB1dHMuICovDQo+ID4+PiAJdWludDY0X3QgcHV0X29ianM7ICAgICAgICAgICAgIC8qKjwgTnVt YmVyIG9mIG9iamVjdHMgc3VjY2Vzc2Z1bGx5DQo+ID4+IHB1dC4gKi8NCj4gPj4+IAl1aW50NjRf dCBwdXRfY29tbW9uX3Bvb2xfYnVsazsgLyoqPCBOdW1iZXIgb2YgYnVsa3MgZW5xdWV1ZWQgaW4N Cj4gPj4gY29tbW9uIHBvb2wuICovDQo+ID4+PiAJdWludDY0X3QgcHV0X2NvbW1vbl9wb29sX29i anM7IC8qKjwgTnVtYmVyIG9mIG9iamVjdHMgZW5xdWV1ZWQgaW4NCj4gPj4gY29tbW9uIHBvb2wu ICovDQo+ID4+PiAJdWludDY0X3QgZ2V0X2NvbW1vbl9wb29sX2J1bGs7IC8qKjwgTnVtYmVyIG9m IGJ1bGtzIGRlcXVldWVkIGZyb20NCj4gPj4gY29tbW9uIHBvb2wuICovDQo+ID4+PiAJdWludDY0 X3QgZ2V0X2NvbW1vbl9wb29sX29ianM7IC8qKjwgTnVtYmVyIG9mIG9iamVjdHMgZGVxdWV1ZWQN Cj4gPj4gZnJvbSBjb21tb24gcG9vbC4gKi8NCj4gPj4+IAl1aW50NjRfdCBnZXRfc3VjY2Vzc19i dWxrOyAgICAgLyoqPCBTdWNjZXNzZnVsIGFsbG9jYXRpb24gbnVtYmVyLg0KPiA+PiAqLw0KPiA+ Pj4gCXVpbnQ2NF90IGdldF9zdWNjZXNzX29ianM7ICAgICAvKio8IE9iamVjdHMgc3VjY2Vzc2Z1 bGx5DQo+ID4+IGFsbG9jYXRlZC4gKi8NCj4gPj4+IAl1aW50NjRfdCBnZXRfZmFpbF9idWxrOyAg ICAgICAgLyoqPCBGYWlsZWQgYWxsb2NhdGlvbiBudW1iZXIuICovDQo+ID4+PiAJdWludDY0X3Qg Z2V0X2ZhaWxfb2JqczsgICAgICAgIC8qKjwgT2JqZWN0cyB0aGF0IGZhaWxlZCB0byBiZQ0KPiA+ PiBhbGxvY2F0ZWQuICovDQo+ID4+PiAJdWludDY0X3QgZ2V0X3N1Y2Nlc3NfYmxrczsgICAgIC8q KjwgU3VjY2Vzc2Z1bCBhbGxvY2F0aW9uIG51bWJlcg0KPiA+PiBvZiBjb250aWd1b3VzIGJsb2Nr cy4gKi8NCj4gPj4+IAl1aW50NjRfdCBnZXRfZmFpbF9ibGtzOyAgICAgICAgLyoqPCBGYWlsZWQg YWxsb2NhdGlvbiBudW1iZXIgb2YNCj4gPj4gY29udGlndW91cyBibG9ja3MuICovDQo+ID4+PiAr CVJURV9DQUNIRV9HVUFSRChkZWJ1Z19zdGF0cyk7ICAvKio8IElzb2xhdGlvbiBiZXR3ZWVuIGxj b3Jlcy4gKi8NCj4gPg0KPiA+ICsJUlRFX0NBQ0hFX0dVQVJEOw0KPiA+DQo+ID4+PiB9IF9fcnRl X2NhY2hlX2FsaWduZWQ7DQo+ID4+PiAjZW5kaWYNCj4gPj4+DQo+ID4+PiBzdHJ1Y3QgcnRlX21l bXBvb2wgew0KPiA+Pj4gICAgWy4uLl0NCj4gPj4+ICNpZmRlZiBSVEVfTElCUlRFX01FTVBPT0xf U1RBVFMNCj4gPj4+IAkvKiogUGVyLWxjb3JlIHN0YXRpc3RpY3MuDQo+ID4+PiAJICoNCj4gPj4+ IAkgKiBQbHVzIG9uZSwgZm9yIHVucmVnaXN0ZXJlZCBub24tRUFMIHRocmVhZHMuDQo+ID4+PiAJ ICovDQo+ID4+PiAJc3RydWN0IHJ0ZV9tZW1wb29sX2RlYnVnX3N0YXRzIHN0YXRzW1JURV9NQVhf TENPUkUgKyAxXTsNCj4gPj4+ICNlbmRpZg0KPiA+Pj4gfSAgX19ydGVfY2FjaGVfYWxpZ25lZDsN Cj4gPj4+DQo+ID4+Pg0KPiA+Pj4gSXQgYWxzbyBzZWVtcyByZWxldmFudCBmb3IgdGhlIFBSTkcg bGlicmFyeToNCj4gPj4+DQo+ID4+PiAvbGliL2VhbC9jb21tb24vcnRlX3JhbmRvbS5jOg0KPiA+ Pj4NCj4gPj4+IHN0cnVjdCBydGVfcmFuZF9zdGF0ZSB7DQo+ID4+PiAJdWludDY0X3QgejE7DQo+ ID4+PiAJdWludDY0X3QgejI7DQo+ID4+PiAJdWludDY0X3QgejM7DQo+ID4+PiAJdWludDY0X3Qg ejQ7DQo+ID4+PiAJdWludDY0X3QgejU7DQo+ID4+PiArCVJURV9DQUNIRV9HVUFSRCh6KTsNCj4g Pg0KPiA+ICsJUlRFX0NBQ0hFX0dVQVJEOw0KPiA+DQo+ID4+PiB9IF9fcnRlX2NhY2hlX2FsaWdu ZWQ7DQo+ID4+Pg0KPiA+Pg0KPiA+PiBZZXMuDQo+ID4+DQo+ID4+IFNob3VsZCB0aGVyZSBiZSB0 d28gY2FjaGUgZ3VhcmQgbWFjcm9zPyBPbmUgcGFyYW1ldGVyLWZyZWUNCj4gPj4gUlRFX0NBQ0hF X0dVQVJEIGFuZCBhIFJURV9DQUNIRV9OQU1FRF9HVUFSRChuYW1lKSBtYWNybz8NCj4gPj4NCj4g Pj4gTWF5YmUgaXQncyBiZXR0ZXIganVzdCB0byBrZWVwIHRoZSBzaW5nbGUgbWFjcm8sIGJ1dCBo YXZlIGEgY29udmVudGlvbg0KPiA+PiB3aXRoIHNvbWUgZ2VuZXJpYyBuYW1lIChpLmUuLCBub3Qg J3onIGFib3ZlKSBmb3IgdGhlIGd1YXJkIGZpZWxkLCBsaWtlDQo+ID4+ICdjYWNoZV9ndWFyZCcg b3IganVzdCAnZ3VhcmQnLiBIYXZpbmcgdW5pcXVlIG5hbWUgbWFrZXMgbm8gc2Vuc2UsIGV4Y2Vw dA0KPiA+PiBpbiByYXJlIGNhc2VzIHdoZXJlIHlvdSBuZWVkIG11bHRpcGxlIGd1YXJkIGxpbmVz IHBlciBzdHJ1Y3QuDQo+ID4NCj4gPiBUaGVyZSBpcyBubyBuZWVkIHRvIGFjY2VzcyB0aGVzZSBm aWVsZHMsIHNvIGxldCdzIHVzZSBhdXRvLWdlbmVyYXRlZCB1bmlxdWUNCj4gbmFtZXMsIGFuZCBu b3Qgb2ZmZXIgYW4gQVBJIHdpdGggYSBuYW1lLiBUaGlzIGFsc28gbWFrZXMgdGhlIEFQSSBhcyBz aW1wbGUgYXMNCj4gcG9zc2libGUuDQo+ID4NCj4gPj4NCj4gPj4+IC8qIE9uZSBpbnN0YW5jZSBl YWNoIGZvciBldmVyeSBsY29yZSBpZC1lcXVpcHBlZCB0aHJlYWQsIGFuZCBvbmUNCj4gPj4+ICAg ICogYWRkaXRpb25hbCBpbnN0YW5jZSB0byBiZSBzaGFyZWQgYnkgYWxsIG90aGVycyB0aHJlYWRz IChpLmUuLCBhbGwNCj4gPj4+ICAgICogdW5yZWdpc3RlcmVkIG5vbi1FQUwgdGhyZWFkcykuDQo+ ID4+PiAgICAqLw0KPiA+Pj4gc3RhdGljIHN0cnVjdCBydGVfcmFuZF9zdGF0ZSByYW5kX3N0YXRl c1tSVEVfTUFYX0xDT1JFICsgMV07DQo+ID4+Pg0K