From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out2.migadu.com (out2.migadu.com [IPv6:2001:41d0:2:aacc::]) by mail.toke.dk (Postfix) with ESMTPS id CB07A9B1651 for ; Tue, 1 Nov 2022 18:31:26 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=rXflmn5O Message-ID: <752afbbb-1a14-3dad-53d0-35bb32632c91@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1667323885; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ol7d/SLJ6X6mg36SiC0ZeRFUpUzT12EE9bBK6pbc9MQ=; b=rXflmn5Oiq9pgFgx3WqwuPIIxh8sIrA/eqYpZc4X4RsOVgcstXbLvd9qGoxOTPFJ0SJZnd uP4NVFaaqFtrkDSRNyoNaVD1McC3Z+eHSfhXc79pDHufoUpf3ZXYVprgM6VLkqfiPiGzv5 JDWiN0jaoxl0OlVi0AZs0dUpOhc4qXE= Date: Tue, 1 Nov 2022 10:31:19 -0700 MIME-Version: 1.0 Content-Language: en-US To: Stanislav Fomichev References: <20221027200019.4106375-1-sdf@google.com> <635bfc1a7c351_256e2082f@john.notmuch> <20221028110457.0ba53d8b@kernel.org> <635c62c12652d_b1ba208d0@john.notmuch> <20221028181431.05173968@kernel.org> <5aeda7f6bb26b20cb74ef21ae9c28ac91d57fae6.camel@siemens.com> <875yg057x1.fsf@toke.dk> <663fb4f4-04b7-5c1f-899c-bdac3010f073@meta.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau In-Reply-To: Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_OUT Message-ID-Hash: RVPP7TRT27WPOWQWOM4TOG46UF47YFJY X-Message-ID-Hash: RVPP7TRT27WPOWQWOM4TOG46UF47YFJY X-MailFrom: martin.lau@linux.dev X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , "Bezdeka, Florian" , "kuba@kernel.org" , "john.fastabend@gmail.com" , "alexandr.lobakin@intel.com" , "anatoly.burakov@intel.com" , "song@kernel.org" , "Deric, Nemanja" , "andrii@kernel.org" , "Kiszka, Jan" , "magnus.karlsson@gmail.com" , "willemb@google.com" , "ast@kernel.org" , "brouer@redhat.com" , "yhs@fb.com" , "kpsingh@kernel.org" , "daniel@iogearbox.net" , "bpf@vger.kernel.org" , "mtahhan@redhat.com" , "xdp-hints@xdp-project.net" , "netdev@vger.kernel.org" , "jolsa@kernel.org" , "haoluo@google.com" , Yonghong Song X-Mailman-Version: 3.3.5 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next 0/5] xdp: hints via kfuncs List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTAvMzEvMjIgMzowOSBQTSwgU3RhbmlzbGF2IEZvbWljaGV2IHdyb3RlOg0KPiBPbiBNb24s IE9jdCAzMSwgMjAyMiBhdCAxMjozNiBQTSBZb25naG9uZyBTb25nIDx5aHNAbWV0YS5jb20+IHdy b3RlOg0KPj4NCj4+DQo+Pg0KPj4gT24gMTAvMzEvMjIgODoyOCBBTSwgVG9rZSBIw7hpbGFuZC1K w7hyZ2Vuc2VuIHdyb3RlOg0KPj4+ICJCZXpkZWthLCBGbG9yaWFuIiA8Zmxvcmlhbi5iZXpkZWth QHNpZW1lbnMuY29tPiB3cml0ZXM6DQo+Pj4NCj4+Pj4gSGkgYWxsLA0KPj4+Pg0KPj4+PiBJIHdh cyBjbG9zZWx5IGZvbGxvd2luZyB0aGlzIGRpc2N1c3Npb24gZm9yIHNvbWUgdGltZSBub3cuIFNl ZW1zIHdlDQo+Pj4+IHJlYWNoZWQgdGhlIHBvaW50IHdoZXJlIGl0J3MgZ2V0dGluZyBpbnRlcmVz dGluZyBmb3IgbWUuDQo+Pj4+DQo+Pj4+IE9uIEZyaSwgMjAyMi0xMC0yOCBhdCAxODoxNCAtMDcw MCwgSmFrdWIgS2ljaW5za2kgd3JvdGU6DQo+Pj4+PiBPbiBGcmksIDI4IE9jdCAyMDIyIDE2OjE2 OjE3IC0wNzAwIEpvaG4gRmFzdGFiZW5kIHdyb3RlOg0KPj4+Pj4+Pj4gQW5kIGl0J3MgYWN0dWFs bHkgaGFyZGVyIHRvIGFic3RyYWN0IGF3YXkgaW50ZXIgSFcgZ2VuZXJhdGlvbg0KPj4+Pj4+Pj4g ZGlmZmVyZW5jZXMgaWYgdGhlIHVzZXIgc3BhY2UgY29kZSBoYXMgdG8gaGFuZGxlIGFsbCBvZiBp dC4NCj4+Pj4+Pg0KPj4+Pj4+IEkgZG9uJ3Qgc2VlIGhvdyBpdHMgYW55IGhhcmRlciBpbiBwcmFj dGljZSB0aG91Z2g/DQo+Pj4+Pg0KPj4+Pj4gWW91IG5lZWQgdG8gZmluZCBvdXQgd2hhdCBIVy9G Vy9jb25maWcgeW91J3JlIHJ1bm5pbmcsIHJpZ2h0Pw0KPj4+Pj4gQW5kIGFsbCB5b3UgaGF2ZSBp cyBhIHBvaW50ZXIgdG8gYSBibG9iIG9mIHVua25vd24gdHlwZS4NCj4+Pj4+DQo+Pj4+PiBUYWtl IHRpbWVzdGFtcHMgZm9yIGV4YW1wbGUsIHNvbWUgTklDcyBzdXBwb3J0IGFkanVzdGluZyB0aGUg UEhDDQo+Pj4+PiBvciBkb2luZyBTVyBjb3JyZWN0aW9ucyAod2l0aCBkaWZmZXJlbnQgdmVyc2lv bnMgb2YgaHcvZncvc2VydmVyDQo+Pj4+PiBwbGF0Zm9ybXMgYmVpbmcgY2FwYWJsZSBvZiBib3Ro L29uZS9uZWl0aGVyKS4NCj4+Pj4+DQo+Pj4+PiBTdXJlIHlvdSBjYW4gZXh0cmFjdCBhbGwgdGhp cyBpbmZvIHdpdGggdHJhY2luZyBhbmQgY2FyZWZ1bA0KPj4+Pj4gaW5zcGVjdGlvbiB2aWEgdUFQ SS4gQnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIF9lYXNpZXJfLg0KPj4+Pj4gQW5kIHRoZSB2ZW5k b3JzIGNhbid0IHJ1biB0aGUgcmVzdWx0cyB0aHJ1IHRoZWlyIHZhbGlkYXRpb24NCj4+Pj4+IChm b3Igd2hhdGV2ZXIgdGhhdCdzIHdvcnRoKS4NCj4+Pj4+DQo+Pj4+Pj4+IEkndmUgaGFkIHRoZSBz YW1lIGNvbmNlcm46DQo+Pj4+Pj4+DQo+Pj4+Pj4+IFVudGlsIHdlIGhhdmUgc29tZSB1c2Vyc3Bh Y2UgbGlicmFyeSB0aGF0IGFic3RyYWN0cyBhbGwgdGhlc2UgZGV0YWlscywNCj4+Pj4+Pj4gaXQn cyBub3QgcmVhbGx5IGNvbnZlbmllbnQgdG8gdXNlLiBJSVVDLCB3aXRoIGEga3B0ciwgSSdkIGdl dCBhIGJsb2INCj4+Pj4+Pj4gb2YgZGF0YSBhbmQgSSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGNv ZGUgYW5kIHNlZSB3aGF0IHBhcnRpY3VsYXIgdHlwZQ0KPj4+Pj4+PiBpdCByZXByZXNlbnRzIGZv ciBteSBwYXJ0aWN1bGFyIGRldmljZSBhbmQgaG93IHRoZSBkYXRhIEkgbmVlZCBpcw0KPj4+Pj4+ PiByZXByZXNlbnRlZCB0aGVyZS4gVGhlcmUgYXJlIGFsc28gdGhlc2UgImlmIHRoaXMgaXMgZGV2 aWNlIHYxIC0+IHVzZQ0KPj4+Pj4+PiB2MSBkZXNjcmlwdG9yIGZvcm1hdDsgaWYgaXQncyBhIHYy LT51c2UgdGhpcyBhbm90aGVyIHN0cnVjdDsgZXRjIg0KPj4+Pj4+PiBjb21wbGV4aXRpZXMgdGhh dCB3ZSdsbCBiZSBwdXNoaW5nIG9udG8gdGhlIHVzZXJzLiBXaXRoIGtmdW5jcywgd2UgcHV0DQo+ Pj4+Pj4+IHRoaXMgYnVyZGVuIG9uIHRoZSBkcml2ZXIgZGV2ZWxvcGVycywgYnV0IEkgYWdyZWUg dGhhdCB0aGUgZHJhd2JhY2sNCj4+Pj4+Pj4gaGVyZSBpcyB0aGF0IHdlIGFjdHVhbGx5IGhhdmUg dG8gd2FpdCBmb3IgdGhlIGltcGxlbWVudGF0aW9ucyB0byBjYXRjaA0KPj4+Pj4+PiB1cC4NCj4+ Pj4+Pg0KPj4+Pj4+IEkgYWdyZWUgd2l0aCBldmVyeXRoaW5nIHRoZXJlLCB5b3Ugd2lsbCBnZXQg YSBibG9iIG9mIGRhdGEgYW5kIHRoZW4NCj4+Pj4+PiB3aWxsIG5lZWQgdG8ga25vdyB3aGF0IGZp ZWxkIHlvdSB3YW50IHRvIHJlYWQgdXNpbmcgQlRGLiBCdXQsIHdlDQo+Pj4+Pj4gYWxyZWFkeSBk byB0aGlzIGZvciBCUEYgcHJvZ3JhbXMgYWxsIG92ZXIgdGhlIHBsYWNlIHNvIGl0cyBub3QgYSBi aWcNCj4+Pj4+PiBsaWZ0IGZvciB1cy4gQWxsIG90aGVyIEJQRiB0cmFjaW5nL29ic2VydmFiaWxp dHkgcmVxdWlyZXMgdGhlIHNhbWUNCj4+Pj4+PiBsb2dpYy4gSSB0aGluayB1c2VycyBvZiBCUEYg aW4gZ2VuZXJhbCBwZXJoYXBzIFhEUC90YyBhcmUgdGhlIG9ubHkNCj4+Pj4+PiBwbGFjZSBsZWZ0 IHRvIHdyaXRlIEJQRiBwcm9ncmFtcyB3aXRob3V0IHRoaW5raW5nIGFib3V0IEJURiBhbmQNCj4+ Pj4+PiBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLg0KPj4+Pj4+DQo+Pj4+Pj4gQnV0LCB3aXRoIHBy b3Bvc2VkIGtwdHIgdGhlIGNvbXBsZXhpdHkgbGl2ZXMgaW4gdXNlcnNwYWNlIGFuZCBjYW4gYmUN Cj4+Pj4+PiBmaXhlZCwgYWRkZWQsIHVwZGF0ZWQgd2l0aG91dCBoYXZpbmcgdG8gYm90aGVyIHdp dGgga2VybmVsIHVwZGF0ZXMsIGV0Yy4NCj4+Pj4+PiAgIEZyb20gbXkgcG9pbnQgb2YgdmlldyBv ZiBzdXBwb3J0aW5nIENpbGl1bSBpdHMgYSB3aW4gYW5kIG11Y2ggcHJlZmVycmVkDQo+Pj4+Pj4g dG8gaGF2aW5nIHRvIGRlYWwgd2l0aCBkcml2ZXIgb3duZXJzIG9uIGFsbCBjbG91ZCB2ZW5kb3Jz LCBkaXN0cmlidXRpb25zLA0KPj4+Pj4+IGFuZCBzbyBvbi4NCj4+Pj4+Pg0KPj4+Pj4+IElmIHZl bmRvciB1cGRhdGVzIGZpcm13YXJlIHdpdGggbmV3IGZpZWxkcyBJIGdldCB0aG9zZSBpbW1lZGlh dGVseS4NCj4+Pj4+DQo+Pj4+PiBDb252ZXJzZWx5IGl0J3MgYSB2YWxpZCBjb25jZXJuIHRoYXQg dGhvc2Ugd2hvICpkbyogYWN0dWFsbHkgdXBkYXRlDQo+Pj4+PiB0aGVpciBrZXJuZWwgcmVndWxh cmx5IHdpbGwgaGF2ZSBtb3JlIHRoaW5ncyB0byB3b3JyeSBhYm91dC4NCj4+Pj4+DQo+Pj4+Pj4+ IEpha3ViIG1lbnRpb25zIEZXIGFuZCBJIGhhdmVuJ3QgZXZlbiB0aG91Z2h0IGFib3V0IHRoYXQ7 IHNvIHllYWgsIGJwZg0KPj4+Pj4+PiBwcm9ncmFtcyBtaWdodCBoYXZlIHRvIHRha2UgYSBsb3Qg b2Ygb3RoZXIgc3RhdGUgaW50byBjb25zaWRlcmF0aW9uDQo+Pj4+Pj4+IHdoZW4gcGFyc2luZyB0 aGUgZGVzY3JpcHRvcnM7IGFsbCB0aG9zZSBkZXRhaWxzIGRvIHNlZW0gbGlrZSB0aGV5DQo+Pj4+ Pj4+IGJlbG9uZyB0byB0aGUgZHJpdmVyIGNvZGUuDQo+Pj4+Pj4NCj4+Pj4+PiBJIHdvdWxkIHBy ZWZlciB0byBhdm9pZCBiZWluZyBzdHVjayBvbiByZXF1aXJpbmcgZHJpdmVyIHdyaXRlcnMgdG8N Cj4+Pj4+PiBiZSBpbnZvbHZlZC4gV2l0aCBqdXN0IGEga3B0ciBJIGNhbiBzdXBwb3J0IHRoZSBk ZXZpY2UgYW5kIGFueQ0KPj4+Pj4+IGZpcndtYXJlIHZlcnNpb25zIHdpdGhvdXQgcmVxdWlyaW5n IGhlbHAuDQo+Pj4+Pg0KPj4+Pj4gMSkgd2hlcmUgYXJlIHlvdSBnZXR0aW5nIGFsbCB0aG9zZSBI VyAvIEZXIHNwZWNzIDpTDQo+Pj4+PiAyKSBtYXliZSAqeW91KiBjYW4gYnV0IHlvdSdyZSBub3Qg ZXhhY3RseSBub3QgYW4gZXgtZHJpdmVyIGRldmVsb3BlciA6Uw0KPj4+Pj4NCj4+Pj4+Pj4gRmVl bCBmcmVlIHRvIHNlbmQgaXQgZWFybHkgd2l0aCBqdXN0IGEgaGFuZGZ1bCBvZiBkcml2ZXJzIGlt cGxlbWVudGVkOw0KPj4+Pj4+PiBJJ20gbW9yZSBpbnRlcmVzdGVkIGFib3V0IGJwZi9hZl94ZHAv dXNlciBhcGkgc3Rvcnk7IGlmIHdlIGhhdmUgc29tZQ0KPj4+Pj4+PiBuaWNlIHNhbXBsZS90ZXN0 IGNhc2UgdGhhdCBzaG93cyBob3cgdGhlIG1ldGFkYXRhIGNhbiBiZSB1c2VkLCB0aGF0DQo+Pj4+ Pj4+IG1pZ2h0IHB1c2ggdXMgY2xvc2VyIHRvIHRoZSBhZ3JlZW1lbnQgb24gdGhlIGJlc3Qgd2F5 IHRvIHByb2NlZWQuDQo+Pj4+Pj4NCj4+Pj4+PiBJJ2xsIHRyeSB0byBkbyBhIGludGVsIGFuZCBt bHggaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgY3Jvc3Mgc2VjdGlvbi4NCj4+Pj4+PiBJIGhhdmUg YSBnb29kIGNvbGxlY3Rpb24gb2YgbmljcyBoZXJlIHNvIHNob3VsZCBiZSBhYmxlIHRvIHNob3cg YQ0KPj4+Pj4+IGNvdXBsZSBmaXJtd2FyZSB2ZXJzaW9ucy4gSXQgY291bGQgYmUgZmluZSBJIHRo aW5rIHRvIGhhdmUgdGhlIHJhdw0KPj4+Pj4+IGtwdHIgYWNjZXNzIGFuZCB0aGVuIGFsc28ga2Z1 bmNzIGZvciBzb21lIHRoaW5ncyBwZXJoYXBzLg0KPj4+Pj4+DQo+Pj4+Pj4+PiBJJ2QgcHJlZmVy IGlmIHdlIGxlZnQgdGhlIGRvb3Igb3BlbiBmb3IgbmV3IHZlbmRvcnMuIFB1bnRpbmcgZGVzY3Jp cHRvcg0KPj4+Pj4+Pj4gcGFyc2luZyB0byB1c2VyIHNwYWNlIHdpbGwgaW5kZWVkIHJlc3VsdCBp biB3aGF0IHlvdSBqdXN0IHNhaWQgLSBtYWpvcg0KPj4+Pj4+Pj4gdmVuZG9ycyBhcmUgc3VwcG9y dGVkIGFuZCB0aGF0J3MgaXQuDQo+Pj4+Pj4NCj4+Pj4+PiBJJ20gbm90IHN1cmUgYWJvdXQgd2h5 IGl0IHdvdWxkIG1ha2UgaXQgaGFyZGVyIGZvciBuZXcgdmVuZG9ycz8gSSB0aGluaw0KPj4+Pj4+ IHRoZSBvcHBvc2l0ZSwNCj4+Pj4+DQo+Pj4+PiBUQkggSSdtIG9ubHkgcmVwbHlpbmcgdG8gdGhl IGVtYWlsIGJlY2F1c2Ugb2YgdGhlIGFib3ZlIHBhcnQgOikNCj4+Pj4+IEkgdGhvdWdodCB0aGlz IHdvdWxkIGJlIHNlbGYgZXZpZGVudCwgYnV0IEkgZ3Vlc3Mgb3VyIHBlcnNwZWN0aXZlcw0KPj4+ Pj4gYXJlIGRpZmZlcmVudC4NCj4+Pj4+DQo+Pj4+PiBQZXJoYXBzIHlvdSBsb29rIGF0IGl0IGZy b20gdGhlIHBlcnNwZWN0aXZlIG9mIFNXIHJ1bm5pbmcgb24gc29tZW9uZQ0KPj4+Pj4gZWxzZSdz IGNsb3VkLCBhbiBiZWluZyBhYmxlIHRvIG1vdmUgdG8gYW5vdGhlciBjbG91ZCwgd2l0aG91dCBo YXZpbmcNCj4+Pj4+IHRvIHdvcnJ5IGlmIGZlYXR1cmUgWCBpcyBhdmFpbGFibGUgaW4geGRwIG9y IGp1c3Qgc2tiLg0KPj4+Pj4NCj4+Pj4+IEkgbG9vayBhdCBpdCBmcm9tIHRoZSBwZXJzcGVjdGl2 ZSBvZiBtYWludGFpbmluZyBhIGNsb3VkLCB3aXRoIHBlb3BsZQ0KPj4+Pj4gd3JpdGluZyByYW5k b20gWERQIGFwcGxpY2F0aW9ucy4gSWYgSSBzd2FwIGEgTklDIGZyb20gYW4gaW5jdW1iZW50IHRv IGENCj4+Pj4+IChzdXBlcmlvcikgc3RhcnR1cCwgYW5kIGNsb3VkIHVzZXJzIGFyZSBtZXNzaW5n IHdpdGggcmF3IGRlc2NyaXB0b3IgLQ0KPj4+Pj4gSSdkIG5lZWQgdG8gZ28gZmluZCBldmVyeSBY RFAgcHJvZ3JhbSBvdXQgdGhlcmUgYW5kIG1ha2Ugc3VyZSBpdA0KPj4+Pj4gdW5kZXJzdGFuZHMg dGhlIG5ldyBkZXNjcmlwdG9ycy4NCj4+Pj4NCj4+Pj4gSGVyZSBpcyBhbm90aGVyIHBlcnNwZWN0 aXZlOg0KPj4+Pg0KPj4+PiBBcyBBRl9YRFAgYXBwbGljYXRpb24gZGV2ZWxvcGVyIEkgZG9uJ3Qg d2FuJ3QgdG8gZGVhbCB3aXRoIHRoZQ0KPj4+PiB1bmRlcmx5aW5nIGhhcmR3YXJlIGluIGRldGFp bC4gSSBsaWtlIHRvIHJlcXVlc3QgYSBmZWF0dXJlIGZyb20gdGhlIE9TDQo+Pj4+IChpbiB0aGlz IGNhc2UgcngvdHggdGltZXN0YW1waW5nKS4gSWYgdGhlIGZlYXR1cmUgaXMgYXZhaWxhYmxlIEkg d2lsbA0KPj4+PiBzaW1wbHkgdXNlIGl0LCBpZiBub3QgSSBtaWdodCBoYXZlIHRvIHdvcmsgYXJv dW5kIGl0IC0gbWF5YmUgYnkgZmFsbGluZw0KPj4+PiBiYWNrIHRvIFNXIHRpbWVzdGFtcGluZy4N Cj4+Pj4NCj4+Pj4gQWxsIHBhcnRzIG9mIG15IGFwcGxpY2F0aW9uIChCUEYgcHJvZ3JhbSBpbmNs dWRlZCkgc2hvdWxkIG5vdCBiZQ0KPj4+PiBvcHRpbWl6ZWQvYWRqdXN0ZWQgZm9yIGFsbCB0aGUg ZGlmZmVyZW50IEhXIHZhcmlhbnRzIG91dCB0aGVyZS4NCj4+Pg0KPj4+IFllcywgYWJzb2x1dGVs eSBhZ3JlZWQuIEFic3RyYWN0aW5nIGF3YXkgdGhvc2Uga2luZHMgb2YgaGFyZHdhcmUNCj4+PiBk aWZmZXJlbmNlcyBpcyB0aGUgd2hvbGUgKnBvaW50KiBvZiBoYXZpbmcgYW4gT1MvZHJpdmVyIG1v ZGVsLiBJLmUuLA0KPj4+IGl0J3Mgd2hhdCB0aGUga2VybmVsIGlzIHRoZXJlIGZvciEgSWYgcGVv cGxlIHdhbnQgdG8gYnlwYXNzIHRoYXQgYW5kIGdldA0KPj4+IGRpcmVjdCBhY2Nlc3MgdG8gdGhl IGhhcmR3YXJlLCB0aGV5IGNhbiBhbHJlYWR5IGRvIHRoYXQgYnkgdXNpbmcgRFBESy4NCj4+Pg0K Pj4+IFNvIGluIG90aGVyIHdvcmRzLCAxMDAlIGFncmVlZCB0aGF0IHdlIHNob3VsZCBub3QgZXhw ZWN0IHRoZSBCUEYNCj4+PiBkZXZlbG9wZXJzIHRvIGRlYWwgd2l0aCBoYXJkd2FyZSBkZXRhaWxz IGFzIHdvdWxkIGJlIHJlcXVpcmVkIHdpdGggYQ0KPj4+IGtwdHItYmFzZWQgaW50ZXJmYWNlLg0K Pj4+DQo+Pj4gQXMgZm9yIHRoZSBrZnVuYy1iYXNlZCBpbnRlcmZhY2UsIEkgdGhpbmsgaXQgc2hv d3Mgc29tZSBwcm9taXNlLg0KPj4+IEV4cG9zaW5nIGEgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcyB0 byByZXRyaWV2ZSBpbmRpdmlkdWFsIG1ldGFkYXRhIGl0ZW1zDQo+Pj4gaW5zdGVhZCBvZiBhIHN0 cnVjdCBsYXlvdXQgaXMgc29ydGEgY29tcGFyYWJsZSBpbiB0ZXJtcyBvZiBkZXZlbG9wZXIgVUkN Cj4+PiBhY2Nlc3NpYmlsaXR5IGV0YyAoSU1PKS4NCj4+DQo+PiBMb29rcyBsaWtlIHRoZXJlIGFy ZSBxdWl0ZSBzb21lIHVzZSBjYXNlcyBmb3IgaHdfdGltZXN0YW1wLg0KPj4gRG8geW91IHRoaW5r IHdlIGNvdWxkIGFkZCBpdCB0byB0aGUgdWFwaSBsaWtlIHN0cnVjdCB4ZHBfbWQ/DQo+Pg0KPj4g VGhlIGZvbGxvd2luZyBpcyB0aGUgY3VycmVudCB4ZHBfbWQ6DQo+PiBzdHJ1Y3QgeGRwX21kIHsN Cj4+ICAgICAgICAgICBfX3UzMiBkYXRhOw0KPj4gICAgICAgICAgIF9fdTMyIGRhdGFfZW5kOw0K Pj4gICAgICAgICAgIF9fdTMyIGRhdGFfbWV0YTsNCj4+ICAgICAgICAgICAvKiBCZWxvdyBhY2Nl c3MgZ28gdGhyb3VnaCBzdHJ1Y3QgeGRwX3J4cV9pbmZvICovDQo+PiAgICAgICAgICAgX191MzIg aW5ncmVzc19pZmluZGV4OyAvKiByeHEtPmRldi0+aWZpbmRleCAqLw0KPj4gICAgICAgICAgIF9f dTMyIHJ4X3F1ZXVlX2luZGV4OyAgLyogcnhxLT5xdWV1ZV9pbmRleCAgKi8NCj4+DQo+PiAgICAg ICAgICAgX191MzIgZWdyZXNzX2lmaW5kZXg7ICAvKiB0eHEtPmRldi0+aWZpbmRleCAqLw0KPj4g fTsNCj4+DQo+PiBXZSBjb3VsZCBhZGQgIF9fdTY0IGh3X3RpbWVzdGFtcCB0byB0aGUgeGRwX21k IHNvIHVzZXINCj4+IGNhbiBqdXN0IGRvIHhkcF9tZC0+aHdfdGltZXN0YW1wIHRvIGdldCB0aGUg dmFsdWUuDQo+PiB4ZHBfbWQtPmh3X3RpbWVzdGFtcCA9PSAwIG1lYW5zIGh3X3RpbWVzdGFtcCBp cyBub3QNCj4+IGF2YWlsYWJsZS4NCj4+DQo+PiBJbnNpZGUgdGhlIGtlcm5lbCwgdGhlIGN0eCBy ZXdyaXRlciBjYW4gZ2VuZXJhdGUgY29kZQ0KPj4gdG8gY2FsbCBkcml2ZXIgc3BlY2lmaWMgZnVu Y3Rpb24gdG8gcmV0cmlldmUgdGhlIGRhdGEuDQo+IA0KPiBJZiB0aGUgZHJpdmVyIGdlbmVyYXRl cyB0aGUgY29kZSB0byByZXRyaWV2ZSB0aGUgZGF0YSwgaG93J3MgdGhhdA0KPiBkaWZmZXJlbnQg ZnJvbSB0aGUga2Z1bmMgYXBwcm9hY2g/DQo+IFRoZSBvbmx5IGRpZmZlcmVuY2UgSSBzZWUgaXMg dGhhdCBpdCB3b3VsZCBiZSBhIG1vcmUgc3Ryb25nIFVBUEkgdGhhbg0KPiB0aGUga2Z1bmNzPw0K DQpBbm90aGVyIHRoaW5nIG1heSBiZSB3b3J0aCBjb25zaWRlcmluZywgc29tZSBoaW50cyBmb3Ig c29tZSBIVy9kcml2ZXIgbWF5IGJlIA0KaGFyZGVyIChvciBtYXkgbm90IHdvcnRoKSB0byB1bnJv bGwvaW5saW5lLiAgRm9yIGV4YW1wbGUsIEkgc2VlIGRyaXZlciBpcyBkb2luZyANCnNwaW5fbG9j a19iaCB3aGlsZSBnZXR0aW5nIHRoZSBod3RzdGFtcC4gIEZvciB0aGlzIGNhc2UsIGtlZXAgY2Fs bGluZyBhIGtmdW5jIA0KYW5kIGF2b2lkIHRoZSB1bnJvbGwvaW5saW5lIG1heSBiZSB0aGUgcmln aHQgdGhpbmcgdG8gZG8uDQoNCj4gDQo+PiBUaGUga2Z1bmMgYXBwcm9hY2ggY2FuIGJlIHVzZWQg dG8gKmxlc3MqIGNvbW1vbiB1c2UgY2FzZXM/DQo+IA0KPiBXaGF0J3MgdGhlIGFkdmFudGFnZSBv ZiBoYXZpbmcgdHdvIGFwcHJvYWNoZXMgd2hlbiBvbmUgY2FuIGNvdmVyDQo+IGNvbW1vbiBhbmQg dW5jb21tb24gY2FzZXM/DQo+IA0KPj4+IFRoZXJlIGFyZSB0aHJlZSBtYWluIGRyYXdiYWNrcywg QUZBSUNUOg0KPj4+DQo+Pj4gMS4gSXQgcmVxdWlyZXMgZHJpdmVyIGRldmVsb3BlcnMgdG8gd3Jp dGUgYW5kIG1haW50YWluIHRoZSBjb2RlIHRoYXQNCj4+PiBnZW5lcmF0ZXMgdGhlIHVucm9sbGVk IEJQRiBieXRlY29kZSB0byBhY2Nlc3MgdGhlIG1ldGFkYXRhIGZpZWxkcywgd2hpY2gNCj4+PiBp cyBhIG5vbi10cml2aWFsIGFtb3VudCBvZiBjb21wbGV4aXR5LiBNYXliZSB0aGlzIGNhbiBiZSBh YnN0cmFjdGVkIGF3YXkNCj4+PiB3aXRoIHNvbWUgaW50ZXJuYWwgaGVscGVycyB0aG91Z2ggKGxp a2UsIGUuZy4sIGENCj4+PiBicGZfeGRwX21ldGFkYXRhX2NvcHlfdTY0KGRzdCwgc3JjLCBvZmZz ZXQpIGhlbHBlciB3aGljaCB3b3VsZCBzcGl0IG91dA0KPj4+IHRoZSByZXF1aXJlZCBKTVAvTU9W L0xEWCBpbnN0cnVjdGlvbnM/DQo+Pj4NCj4+PiAyLiBBRl9YRFAgcHJvZ3JhbXMgd29uJ3QgYmUg YWJsZSB0byBhY2Nlc3MgdGhlIG1ldGFkYXRhIHdpdGhvdXQgdXNpbmcgYQ0KPj4+IGN1c3RvbSBY RFAgcHJvZ3JhbSB0aGF0IGNhbGxzIHRoZSBrZnVuY3MgYW5kIHB1dHMgdGhlIGRhdGEgaW50byB0 aGUNCj4+PiBtZXRhZGF0YSBhcmVhLiBXZSBjb3VsZCBzb2x2ZSB0aGlzIHdpdGggc29tZSBjb2Rl IGluIGxpYnhkcCwgdGhvdWdoOyBpZg0KPj4+IHRoaXMgY29kZSBjYW4gYmUgbWFkZSBnZW5lcmlj IGVub3VnaCAoc28gaXQganVzdCBkdW1wcyB0aGUgYXZhaWxhYmxlDQo+Pj4gbWV0YWRhdGEgZnVu Y3Rpb25zIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIGF0IGxvYWQgdGltZSksIGl0IG1heSBiZQ0K Pj4+IHBvc3NpYmxlIHRvIG1ha2UgaXQgZ2VuZXJpYyBlbm91Z2ggdGhhdCBpdCB3aWxsIGJlIGZv cndhcmQtY29tcGF0aWJsZQ0KPj4+IHdpdGggbmV3IHZlcnNpb25zIG9mIHRoZSBrZXJuZWwgdGhh dCBhZGQgbmV3IGZpZWxkcywgd2hpY2ggc2hvdWxkDQo+Pj4gYWxsZXZpYXRlIEZsb3JpYW4ncyBj b25jZXJuIGFib3V0IGtlZXBpbmcgdGhpbmdzIGluIHN5bmMuDQo+Pj4NCj4+PiAzLiBJdCB3aWxs IG1ha2UgaXQgaGFyZGVyIHRvIGNvbnN1bWUgdGhlIG1ldGFkYXRhIHdoZW4gYnVpbGRpbmcgU0tC cy4gSQ0KPj4+IHRoaW5rIHRoZSBDUFVNQVAgYW5kIHZldGggdXNlIGNhc2VzIGFyZSBhbHNvIHF1 aXRlIGltcG9ydGFudCwgYW5kIHRoYXQNCj4+PiB3ZSB3YW50IG1ldGFkYXRhIHRvIGJlIGF2YWls YWJsZSBmb3IgYnVpbGRpbmcgU0tCcyBpbiB0aGlzIHBhdGguIE1heWJlDQo+Pj4gdGhpcyBjYW4g YmUgcmVzb2x2ZWQgYnkgaGF2aW5nIGEgY29udmVuaWVudCBrZnVuYyBmb3IgdGhpcyB0aGF0IGNh biBiZQ0KPj4+IHVzZWQgZm9yIHByb2dyYW1zIGRvaW5nIHN1Y2ggcmVkaXJlY3RzLiBFLmcuLCB5 b3UgY291bGQganVzdCBjYWxsDQo+Pj4geGRwX2NvcHlfbWV0YWRhdGFfZm9yX3NrYigpIGJlZm9y ZSBkb2luZyB0aGUgYnBmX3JlZGlyZWN0LCBhbmQgdGhhdA0KPj4+IHdvdWxkIHJlY3Vyc2l2ZWx5 IGV4cGFuZCBpbnRvIGFsbCB0aGUga2Z1bmMgY2FsbHMgbmVlZGVkIHRvIGV4dHJhY3QgdGhlDQo+ Pj4gbWV0YWRhdGEgc3VwcG9ydGVkIGJ5IHRoZSBTS0IgcGF0aD8NCj4+Pg0KPj4+IC1Ub2tlDQo+ Pj4NCg0K