From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=linux.dev (client-ip=188.165.223.204; helo=out2.migadu.com; envelope-from=martin.lau@linux.dev; receiver=) 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=rzRxXnsC Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by mail.toke.dk (Postfix) with ESMTPS id 198A79C2C5E for ; Wed, 16 Nov 2022 19:20:24 +0100 (CET) Message-ID: <3e1ac848-cf51-91e6-94b9-7ca8028f9677@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1668622823; 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=T0+aYWqJwduIcdfUn0eX1FtVAYprjudBJMKtsp16fJ4=; b=rzRxXnsC16qlng92gS4PMnFz1B0VCkjtKud4dS1Io4ZezXwyFdcMJV2bR5hO29oKSXQXXN U0N3s6mUzerT8CxumTB3kmBpy1vreF+M8FO/plFHfvAsTATOVm9WTcp7I7Si6Rf/tGCVCc ECcX5PS0zDAXJ0qSilTVKsuvrwLo3Js= Date: Wed, 16 Nov 2022 10:20:18 -0800 MIME-Version: 1.0 Content-Language: en-US To: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= References: <20221115030210.3159213-1-sdf@google.com> <20221115030210.3159213-6-sdf@google.com> <87h6z0i449.fsf@toke.dk> <8735ajet05.fsf@toke.dk> <6374854883b22_5d64b208e3@john.notmuch> <34f89a95-a79e-751c-fdd2-93889420bf96@linux.dev> <878rkbjjnp.fsf@toke.dk> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau In-Reply-To: <878rkbjjnp.fsf@toke.dk> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_OUT Message-ID-Hash: 4562UPILSHPVLVPZRPQWSHEIJHE7CLTN X-Message-ID-Hash: 4562UPILSHPVLVPZRPQWSHEIJHE7CLTN 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: Stanislav Fomichev , bpf@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, song@kernel.org, yhs@fb.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org, John Fastabend X-Mailman-Version: 3.3.6 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf-next 05/11] veth: Support rx timestamp metadata for xdp List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTEvMTYvMjIgMjowOCBBTSwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOg0KPiBN YXJ0aW4gS2FGYWkgTGF1IDxtYXJ0aW4ubGF1QGxpbnV4LmRldj4gd3JpdGVzOg0KPiANCj4+IE9u IDExLzE1LzIyIDEwOjM4IFBNLCBKb2huIEZhc3RhYmVuZCB3cm90ZToNCj4+Pj4+Pj4+ICtzdGF0 aWMgdm9pZCB2ZXRoX3Vucm9sbF9rZnVuYyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUz MiBmdW5jX2lkLA0KPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBi cGZfcGF0Y2ggKnBhdGNoKQ0KPj4+Pj4+Pj4gK3sNCj4+Pj4+Pj4+ICsgICAgIGlmIChmdW5jX2lk ID09IHhkcF9tZXRhZGF0YV9rZnVuY19pZChYRFBfTUVUQURBVEFfS0ZVTkNfUlhfVElNRVNUQU1Q X1NVUFBPUlRFRCkpIHsNCj4+Pj4+Pj4+ICsgICAgICAgICAgICAgLyogcmV0dXJuIHRydWU7ICov DQo+Pj4+Pj4+PiArICAgICAgICAgICAgIGJwZl9wYXRjaF9hcHBlbmQocGF0Y2gsIEJQRl9NT1Y2 NF9JTU0oQlBGX1JFR18wLCAxKSk7DQo+Pj4+Pj4+PiArICAgICB9IGVsc2UgaWYgKGZ1bmNfaWQg PT0geGRwX21ldGFkYXRhX2tmdW5jX2lkKFhEUF9NRVRBREFUQV9LRlVOQ19SWF9USU1FU1RBTVAp KSB7DQo+Pj4+Pj4+PiArICAgICAgICAgICAgIC8qIHJldHVybiBrdGltZV9nZXRfbW9ub19mYXN0 X25zKCk7ICovDQo+Pj4+Pj4+PiArICAgICAgICAgICAgIGJwZl9wYXRjaF9hcHBlbmQocGF0Y2gs IEJQRl9FTUlUX0NBTEwoa3RpbWVfZ2V0X21vbm9fZmFzdF9ucykpOw0KPj4+Pj4+Pj4gKyAgICAg fQ0KPj4+Pj4+Pj4gK30NCj4+Pj4+Pj4NCj4+Pj4+Pj4gU28gdGhlc2UgbG9vayByZWFzb25hYmxl IGVub3VnaCwgYnV0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIHNvbWUgZXhhbXBsZXMNCj4+Pj4+Pj4g b2Yga2Z1bmMgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QganVzdCBCUEZfQ0FMTCB0byBhIGtl cm5lbCBmdW5jdGlvbg0KPj4+Pj4+PiAod2l0aCB0aG9zZSBoZWxwZXIgd3JhcHBlcnMgd2Ugd2Vy ZSBkaXNjdXNzaW5nIGJlZm9yZSkuDQo+Pj4+Pj4NCj4+Pj4+PiBMZXQncyBtYXliZSBhZGQgdGhl bSBpZi93aGVuIG5lZWRlZCBhcyB3ZSBhZGQgbW9yZSBtZXRhZGF0YSBzdXBwb3J0Pw0KPj4+Pj4+ IHhkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2tiIGhhcyBhbiBleGFtcGxlLCBhbmQgcmZjIDEvMiBo YXZlIG1vcmUNCj4+Pj4+PiBleGFtcGxlcywgc28gaXQgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSB0 byByZXN1cnJlY3QgdGhlbSBiYWNrIGF0IHNvbWUNCj4+Pj4+PiBwb2ludD8NCj4+Pj4+DQo+Pj4+ PiBXZWxsLCB0aGUgcmVhc29uIEkgYXNrZWQgZm9yIHRoZW0gaXMgdGhhdCBJIHRoaW5rIGhhdmlu ZyB0byBtYWludGFpbiB0aGUNCj4+Pj4+IEJQRiBjb2RlIGdlbmVyYXRpb24gaW4gdGhlIGRyaXZl cnMgaXMgcHJvYmFibHkgdGhlIGJpZ2dlc3QgZHJhd2JhY2sgb2YNCj4+Pj4+IHRoZSBrZnVuYyBh cHByb2FjaCwgc28gaXQgd291bGQgYmUgZ29vZCB0byBiZSByZWxhdGl2ZWx5IHN1cmUgdGhhdCB3 ZQ0KPj4+Pj4gY2FuIG1hbmFnZSB0aGF0IGNvbXBsZXhpdHkgKHZpYSBoZWxwZXJzKSBiZWZvcmUg d2UgY29tbWl0IHRvIHRoaXMgOikNCj4+Pj4NCj4+Pj4gUmlnaHQsIGFuZCBJJ3ZlIGFkZGVkIGEg YnVuY2ggb2YgZXhhbXBsZXMgaW4gdjIgcmZjIHNvIHdlIGNhbiBqdWRnZQ0KPj4+PiB3aGV0aGVy IHRoYXQgY29tcGxleGl0eSBpcyBtYW5hZ2VhYmxlIG9yIG5vdCA6LSkNCj4+Pj4gRG8geW91IHdh bnQgbWUgdG8gYWRkIHRob3NlIHdyYXBwZXJzIHlvdSd2ZSBiYWNrIHdpdGhvdXQgYW55IHJlYWwg dXNlcnM/DQo+Pj4+IEJlY2F1c2UgSSBoYWQgdG8gcmVtb3ZlIG15IHZldGggdHN0YW1wIGFjY2Vz c29ycyBkdWUgdG8gSm9obi9KZXNwZXINCj4+Pj4gb2JqZWN0aW9uczsgSSBjYW4gbWF5YmUgYnJp bmcgc29tZSBvZiB0aGlzIGJhY2sgZ2F0ZWQgYnkgc29tZQ0KPj4+PiBzdGF0aWNfYnJhbmNoIHRv IGF2b2lkIHRoZSBmYXN0cGF0aCBjb3N0Pw0KPj4+DQo+Pj4gSSBtaXNzZWQgdGhlIGNvbnRleHQg YSBiaXQgd2hhdCBkaWQgeW91IG1lYW4gIndvdWxkIGJlIGdvb2QgdG8gc2VlIHNvbWUNCj4+PiBl eGFtcGxlcyBvZiBrZnVuYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkb24ndCBqdXN0IEJQRl9DQUxM IHRvIGEga2VybmVsDQo+Pj4gZnVuY3Rpb24iPyBJbiB0aGlzIGNhc2UgZG8geW91IG1lYW4gQlBG IGNvZGUgZGlyZWN0bHkgd2l0aG91dCB0aGUgY2FsbD8NCj4+Pg0KPj4+IEVhcmx5IG9uIEkgdGhv dWdodCB3ZSBzaG91bGQganVzdCBleHBvc2UgdGhlIHJ4X2Rlc2NyaXB0b3Igd2hpY2ggd291bGQN Cj4+PiBiZSByb3VnaGx5IHRoZSBzYW1lIHJpZ2h0PyAoZGlmZmVyZW5jZSBiZWluZyBjb2RlIGVt YmVkZGVkIGluIGRyaXZlciB2cw0KPj4+IGEgbGliKSBUcm91YmxlIEkgcmFuIGludG8gaXMgZHJp dmVyIGNvZGUgdXNpbmcgc2VxbG9ja190IGFuZCBtdXRleHMNCj4+PiB3aGljaCB3YXNuJ3QgYXMg c3RyYWlnaHQgZm9yd2FyZCBhcyB0aGUgc2ltcGxlciBqdXN0IHJlYWQgaXQgZnJvbQ0KPj4+IHRo ZSBkZXNjcmlwdG9yLiBGb3IgZXhhbXBsZSBpbiBtbHggZ2V0dGluZyB0aGUgdHMgd291bGQgYmUg ZWFzeSBmcm9tDQo+Pj4gQlBGIHdpdGggdGhlIG1seDRfY3FlIHN0cnVjdCBleHBvc2VkDQo+Pj4N Cj4+PiB1NjQgbWx4NF9lbl9nZXRfY3FlX3RzKHN0cnVjdCBtbHg0X2NxZSAqY3FlKQ0KPj4+IHsN Cj4+PiAgICAgICAgICAgdTY0IGhpLCBsbzsNCj4+PiAgICAgICAgICAgc3RydWN0IG1seDRfdHNf Y3FlICp0c19jcWUgPSAoc3RydWN0IG1seDRfdHNfY3FlICopY3FlOw0KPj4+DQo+Pj4gICAgICAg ICAgIGxvID0gKHU2NCliZTE2X3RvX2NwdSh0c19jcWUtPnRpbWVzdGFtcF9sbyk7DQo+Pj4gICAg ICAgICAgIGhpID0gKCh1NjQpYmUzMl90b19jcHUodHNfY3FlLT50aW1lc3RhbXBfaGkpICsgIWxv KSA8PCAxNjsNCj4+Pg0KPj4+ICAgICAgICAgICByZXR1cm4gaGkgfCBsbzsNCj4+PiB9DQo+Pj4N Cj4+PiBidXQgY29udmVydGluZyB0aGF0IHRvIG5zZWMgaXMgYSBiaXQgYW5ub3lpbmcsDQo+Pj4N Cj4+PiB2b2lkIG1seDRfZW5fZmlsbF9od3RzdGFtcHMoc3RydWN0IG1seDRfZW5fZGV2ICptZGV2 LA0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBza2Jfc2hhcmVkX2h3 dHN0YW1wcyAqaHd0cywNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgdGlt ZXN0YW1wKQ0KPj4+IHsNCj4+PiAgICAgICAgICAgdW5zaWduZWQgaW50IHNlcTsNCj4+PiAgICAg ICAgICAgdTY0IG5zZWM7DQo+Pj4NCj4+PiAgICAgICAgICAgZG8gew0KPj4+ICAgICAgICAgICAg ICAgICAgIHNlcSA9IHJlYWRfc2VxYmVnaW4oJm1kZXYtPmNsb2NrX2xvY2spOw0KPj4+ICAgICAg ICAgICAgICAgICAgIG5zZWMgPSB0aW1lY291bnRlcl9jeWMydGltZSgmbWRldi0+Y2xvY2ssIHRp bWVzdGFtcCk7DQo+Pj4gICAgICAgICAgIH0gd2hpbGUgKHJlYWRfc2VxcmV0cnkoJm1kZXYtPmNs b2NrX2xvY2ssIHNlcSkpOw0KPj4+DQo+Pj4gICAgICAgICAgIG1lbXNldChod3RzLCAwLCBzaXpl b2Yoc3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzKSk7DQo+Pj4gICAgICAgICAgIGh3dHMtPmh3 dHN0YW1wID0gbnNfdG9fa3RpbWUobnNlYyk7DQo+Pj4gfQ0KPj4+DQo+Pj4gSSB0aGluayB0aGUg bnNlYyBpcyB3aGF0IHlvdSByZWFsbHkgd2FudC4NCj4+Pg0KPj4+IFdpdGggYWxsIHRoZSBkcml2 ZXJzIGRvaW5nIHNsaWdodGx5IGRpZmZlcmVudCBvcHMgd2Ugd291bGQgaGF2ZQ0KPj4+IHRvIGNy ZWF0ZSByZWFkX3NlcWJlZ2luLCByZWFkX3NlcXJldHJ5LCBtdXRleF9sb2NrLCAuLi4gdG8gZ2V0 DQo+Pj4gYXQgbGVhc3QgdGhlIG1seCBhbmQgaWNlIGRyaXZlcnMgaXQgbG9va3MgbGlrZSB3ZSB3 b3VsZCBuZWVkIHNvbWUNCj4+PiBtb3JlIEJQRiBwcmltaXRpdmVzL2hlbHBlcnMuIExvb2tzIGxp a2Ugc29tZSBtb3JlIHdvcmsgaXMgbmVlZGVkDQo+Pj4gb24gaWNlIGRyaXZlciB0aG91Z2ggdG8g Z2V0IHJ4IHRzdGFtcHMgb24gYWxsIHBhY2tldHMuDQo+Pj4NCj4+PiBBbnl3YXlzIHRoaXMgY29u dmluY2VkIG1lIHJlYWwgZGV2aWNlcyB3aWxsIHByb2JhYmx5IHVzZSBCUEZfQ0FMTA0KPj4+IGFu ZCBub3QgQlBGIGluc25zIGRpcmVjdGx5Lg0KPj4NCj4+IFNvbWUgb2YgdGhlIG1seDUgcGF0aCBs b29rcyBsaWtlIHRoaXM6DQo+Pg0KPj4gI2RlZmluZSBSRUFMX1RJTUVfVE9fTlMoaGksIGxvdykg KCgodTY0KWhpKSAqIE5TRUNfUEVSX1NFQyArICgodTY0KWxvdykpDQo+Pg0KPj4gc3RhdGljIGlu bGluZSBrdGltZV90IG1seDVfcmVhbF90aW1lX2N5YzJ0aW1lKHN0cnVjdCBtbHg1X2Nsb2NrICpj bG9jaywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHU2NCB0aW1lc3RhbXApDQo+PiB7DQo+PiAgICAgICAgICAgdTY0IHRpbWUgPSBSRUFMX1RJTUVf VE9fTlModGltZXN0YW1wID4+IDMyLCB0aW1lc3RhbXAgJiAweEZGRkZGRkZGKTsNCj4+DQo+PiAg ICAgICAgICAgcmV0dXJuIG5zX3RvX2t0aW1lKHRpbWUpOw0KPj4gfQ0KPj4NCj4+IElmIHNvbWUg aGludHMgYXJlIGhhcmRlciB0byBnZXQsIHRoZW4ganVzdCBkb2luZyBhIGtmdW5jIGNhbGwgaXMg YmV0dGVyLg0KPiANCj4gU3VyZSwgYnV0IGlmIHdlIGVuZCB1cCBoYXZpbmcgYSBmdWxsIGZ1bmN0 aW9uIGNhbGwgZm9yIGV2ZXJ5IGZpZWxkIGluDQo+IHRoZSBtZXRhZGF0YSwgdGhhdCB3aWxsIGVu ZCB1cCBoYXZpbmcgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXBhY3QNCj4gb24gdGhlIFhE UCBkYXRhIHBhdGggKHRoaW5raW5nIG1vc3RseSBhYm91dCB0aGUgc2tiIG1ldGFkYXRhIGNhc2Ug aGVyZSwNCj4gd2hpY2ggd2lsbCBjb2xsZWN0IHNldmVyYWwgYml0cyBvZiBtZXRhZGF0YSkuDQo+ IA0KPj4gY3N1bSBtYXkgaGF2ZSBhIGJldHRlciBjaGFuY2UgdG8gaW5saW5lPw0KDQpJdCB3aWxs IGJlIHVzZWZ1bCBpZiB0aGUgc2tiX21ldGFkYXRhIGNhbiBnZXQgYXQgbGVhc3Qgb25lIG1vcmUg ZmllbGQgbGlrZSBjc3VtIA0Kb3Igdmxhbi4NCg0KPiANCj4gWXVwLCBJIGFncmVlLiBJbmNsdWRp bmcgdGhhdCBhbHNvIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJlbmNobWFyayB0aGlzDQo+IHNlcmll cyBhZ2FpbnN0IEplc3BlcidzOyB3aGljaCBJIHRoaW5rIHdlIHNob3VsZCBkZWZpbml0ZWx5IGJl IGRvaW5nDQo+IGJlZm9yZSBtZXJnaW5nIHRoaXMuDQoNCklmIHRoZSBoaW50IG5lZWRzIGEgbG9j ayB0byBvYnRhaW4gaXQsIGl0IGlzIG5vdCBjaGVhcCB0byBiZWdpbiB3aXRoIHJlZ2FyZGxlc3Mg DQpvZiBrZnVuYyBvciBub3QuICBBbHNvLCB0aGVyZSBpcyBicGZfeGRwX21ldGFkYXRhX3J4X3Rp bWVzdGFtcF9zdXBwb3J0ZWQoKSANCmJlZm9yZSBkb2luZyB0aGUgYnBmX3hkcF9tZXRhZGF0YV9y eF90aW1lc3RhbXAoKS4NCg0KVGhpcyBzZXQgZ2l2ZXMgdGhlIHhkcCBwcm9nIGEgZmxleGlibGUg d2F5IHRvIGF2b2lkIGdldHRpbmcgYWxsIGhpbnRzIChzb21lIG9mIA0KdGhlbSByZXF1aXJlIGEg bG9jaykgaWYgYWxsIHRoZSB4ZHAgcHJvZyBuZWVkcyBpcyBhIGNzdW0uICBpbW8sIGdpdmluZyB0 aGlzIA0KZmxleGliaWxpdHkgdG8gdGhlIHhkcCBwcm9nIGlzIHRoZSBpbXBvcnRhbnQgdGhpbmcg Zm9yIHRoaXMgc2V0IGluIHRlcm1zIG9mIA0KcGVyZm9ybWFuY2UuDQoNCj4gDQo+PiBSZWdhcmRs ZXNzLCBCUEYgaW4tbGluaW5nIGlzIGEgd2VsbCBzb2x2ZWQgcHJvYmxlbSBhbmQgdXNlZCBpbiBt YW55DQo+PiBicGYgaGVscGVycyBhbHJlYWR5LCBzbyB0aGVyZSBhcmUgbWFueSBleGFtcGxlcyBp biB0aGUga2VybmVsLiBJIGRvbid0DQo+PiB0aGluayBpdCBpcyBuZWNlc3NhcnkgdG8gYmxvY2sg dGhpcyBzZXJpZXMgYmVjYXVzZSBvZiBtaXNzaW5nIHNvbWUNCj4+IGhlbHBlciB3cmFwcGVycyBm b3IgaW5saW5pbmcuIFRoZSBkcml2ZXIgY2FuIGFsd2F5cyBzdGFydCB3aXRoIHRoZQ0KPj4gc2lt cGxlciBrZnVuYyBjYWxsIGZpcnN0IGFuZCBvcHRpbWl6ZSBsYXRlciBpZiBzb21lIGhpbnRzIGZy b20gdGhlDQo+PiBkcml2ZXJzIGFsbG93IGl0Lg0KPiANCj4gV2VsbCwgInNvbHZlZCIgaW4gdGhl IHNlbnNlIG9mICJ0aGVyZSBhcmUgYSBmZXcgaGFuZGZ1bHMgb2YgY29yZSBCUEYNCj4gcGVvcGxl IHdobyBrbm93IGhvdyB0byBkbyBpdCIuIE15IGNvbmNlcm4gaXMgdGhhdCB3ZSdsbCBlbmQgdXAg d2l0aA0KPiBlaXRoZXIgdGhlIEJQRiBkZXZzIGhhdmluZyB0byBtYWludGFpbiBhbGwgdGhlc2Ug Yml0cyBvZiBCUEYgYnl0ZSBjb2RlDQo+IGluIGFsbCB0aGUgZHJpdmVyczsgb3IgZHJpdmVycyBq dXN0IHB1bnRpbmcgdG8gcmVndWxhciBmdW5jdGlvbiBjYWxscw0KPiBiZWNhdXNlIHRoZSBpbmxp bmluZyBpcyB0b28gY29tcGxpY2F0ZWQsIHdpdGggc3ViLXBhciBwZXJmb3JtYW5jZSBhcyBwZXIN Cj4gdGhlIGFib3ZlLiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBqdXN0IGhhbmQtd2F2ZSB0aGlz IGF3YXkgYXMgInNvbHZlZCIsDQo+IGJ1dCByYXRoZXIgdHJlYXQgdGhpcyBhcyBhbiBpbnRlZ3Jh bCBwYXJ0IG9mIHRoZSBpbml0aWFsIHNlcmllcy4NCg0KSW4gdGVybXMgb2YgY29tcGxleGl0eS9t YWludGFpbmFiaWxpdHksIEkgZG9uJ3QgdGhpbmsgdGhlIGRyaXZlciBuZWVkcyB0byBpbmxpbmUg DQpsaWtlIGh1bmRyZWRzIG9mIGJwZiBpbnNuIGZvciBhIGhpbnQgd2hpY2ggaXMgYWxyZWFkeSBh IGdvb2Qgc2lnbmFsIHRoYXQgaXQgDQpzaG91bGQganVzdCBjYWxsIGtmdW5jLiAgRm9yIGEgc2lt cGxlIGhpbnQsIHhkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2tiKCkgaXMgYSANCmdvb2QgZXhhbXBs ZSB0byBzdGFydCB3aXRoIGFuZCBJIGFtIG5vdCBzdXJlIGhvdyBtdWNoIGEgaGVscGVyIHdyYXBw ZXIgY2FuIGRvIHRvIA0Kc2ltcGxpZnkgdGhpbmdzIGZ1cnRoZXIgc2luY2UgZWFjaCBkcml2ZXIg aW5saW5lIGNvZGUgaXMgZ29pbmcgdG8gYmUgZGlmZmVyZW50Lg0KDQpUaGUgY29tbXVuaXR5J3Mg cmV2aWV3IHdpbGwgZGVmaW5pdGVseSBiZSB1c2VmdWwgZm9yIHRoZSBmaXJzdCBmZXcgZHJpdmVy cyB3aGVuIA0KdGhlIGRyaXZlciBjaGFuZ2VzIGlzIHBvc3RlZCB0byB0aGUgbGlzdCwgYW5kIHRo ZSBsYXR0ZXIgZHJpdmVycyB3aWxsIGhhdmUgDQplYXNpZXIgdGltZSB0byBmb2xsb3cgbGlrZSB0 aGUgeGRwIHdhcyBpbml0aWFsbHkgaW50cm9kdWNlZCB0byB0aGUgZmV3IGRyaXZlcnMgDQpmaXJz dC4gIFdoZW4gdGhlcmUgYXJlIHRoaW5ncyB0byByZWZhY3RvciBhZnRlciBlbm91Z2ggZHJpdmVy cyBzdXBwb3J0aW5nIGl0LCANCnRoYXQgd2lsbCBiZSBhIGJldHRlciB0aW1lIHRvIHJldmlzaXQu DQo=