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=dG9sN65Z Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by mail.toke.dk (Postfix) with ESMTPS id 87C4D9B7EC6 for ; Thu, 10 Nov 2022 01:13:30 +0100 (CET) Message-ID: <32f81955-8296-6b9a-834a-5184c69d3aac@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1668039206; 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=vLEQMr5xey9DSbV240J6JL84gTapdODnvS9HWj85ESk=; b=dG9sN65ZHlrOmxtIgpwZHz4KiD1caJZenbddP4+992i/dR5LzUSpFhSiy9er/kAFUZSDIO MaOod+rNf9cCSLZEwQf4i8X+T0mClSa/CzJqs4VMGvE8OQhdvot2eVcpg36V1s7FArTg8x R1Shy8V470c1WjsyJXAZgMqX5madT5A= Date: Wed, 9 Nov 2022 16:13:17 -0800 MIME-Version: 1.0 To: Stanislav Fomichev References: <20221104032532.1615099-1-sdf@google.com> <20221104032532.1615099-7-sdf@google.com> <187e89c3-d7de-7bec-c72e-d9d6eb5bcca0@linux.dev> <9a8fefe4-2fcb-95b7-cda0-06509feee78e@linux.dev> <6f57370f-7ec3-07dd-54df-04423cab6d1f@linux.dev> <87leokz8lq.fsf@toke.dk> <5a23b856-88a3-a57a-2191-b673f4160796@linux.dev> Content-Language: en-US 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: JGYHIHNJH3E64FS6LMW6ORRJ3VT3AP6M X-Message-ID-Hash: JGYHIHNJH3E64FS6LMW6ORRJ3VT3AP6M 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?= , ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, song@kernel.org, yhs@fb.com, john.fastabend@gmail.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, bpf@vger.kernel.org X-Mailman-Version: 3.3.6 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next v2 06/14] xdp: Carry over xdp metadata into skb context List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTEvOS8yMiAxOjMzIFBNLCBTdGFuaXNsYXYgRm9taWNoZXYgd3JvdGU6DQo+IE9uIFdlZCwg Tm92IDksIDIwMjIgYXQgMTA6MjIgQU0gTWFydGluIEthRmFpIExhdSA8bWFydGluLmxhdUBsaW51 eC5kZXY+IHdyb3RlOg0KPj4NCj4+IE9uIDExLzkvMjIgMzoxMCBBTSwgVG9rZSBIw7hpbGFuZC1K w7hyZ2Vuc2VuIHdyb3RlOg0KPj4+IFNuaXBwaW5nIGEgYml0IG9mIGNvbnRleHQgdG8gcmVwbHkg dG8gdGhpcyBiaXQ6DQo+Pj4NCj4+Pj4+Pj4gQ2FuIHRoZSB4ZHAgcHJvZyBzdGlsbCBjaGFuZ2Ug dGhlIG1ldGFkYXRhIHRocm91Z2ggeGRwLT5kYXRhX21ldGE/IHRiaCwgSSBhbSBub3QNCj4+Pj4+ Pj4gc3VyZSBpdCBpcyBzb2xpZCBlbm91Z2ggYnkgYXNraW5nIHRoZSB4ZHAgcHJvZyBub3QgdG8g dXNlIHRoZSBzYW1lIHJhbmRvbSBudW1iZXINCj4+Pj4+Pj4gaW4gaXRzIG93biBtZXRhZGF0YSAr IG5vdCB0byBjaGFuZ2UgdGhlIG1ldGFkYXRhIHRocm91Z2ggeGRwLT5kYXRhX21ldGEgYWZ0ZXIN Cj4+Pj4+Pj4gY2FsbGluZyBicGZfeGRwX21ldGFkYXRhX2V4cG9ydF90b19za2IoKS4NCj4+Pj4+ Pg0KPj4+Pj4+IFdoYXQgZG8geW91IHRoaW5rIHRoZSB1c2VjYXNlIGhlcmUgbWlnaHQgYmU/IE9y IGFyZSB5b3Ugc3VnZ2VzdGluZyB3ZQ0KPj4+Pj4+IHJlamVjdCBmdXJ0aGVyIGFjY2VzcyB0byBk YXRhX21ldGEgYWZ0ZXINCj4+Pj4+PiBicGZfeGRwX21ldGFkYXRhX2V4cG9ydF90b19za2Igc29t ZWhvdz8NCj4+Pj4+Pg0KPj4+Pj4+IElmIHdlIHdhbnQgdG8gbGV0IHRoZSBwcm9ncmFtcyBvdmVy cmlkZSBzb21lIG9mIHRoaXMNCj4+Pj4+PiBicGZfeGRwX21ldGFkYXRhX2V4cG9ydF90b19za2Io KSBtZXRhZGF0YSwgaXQgZmVlbHMgbGlrZSB3ZSBjYW4gYWRkDQo+Pj4+Pj4gbW9yZSBrZnVuY3Mg aW5zdGVhZCBvZiBleHBvc2luZyB0aGUgbGF5b3V0Pw0KPj4+Pj4+DQo+Pj4+Pj4gYnBmX3hkcF9t ZXRhZGF0YV9leHBvcnRfdG9fc2tiKGN0eCk7DQo+Pj4+Pj4gYnBmX3hkcF9tZXRhZGF0YV9leHBv cnRfc2tiX2hhc2goY3R4LCAxMjM0KTsNCj4+Pg0KPj4+IFRoZXJlIGFyZSBzZXZlcmFsIHVzZSBj YXNlcyBmb3IgbmVlZGluZyB0byBhY2Nlc3MgdGhlIG1ldGFkYXRhIGFmdGVyDQo+Pj4gY2FsbGlu ZyBicGZfeGRwX21ldGRhdGFfZXhwb3J0X3RvX3NrYigpOg0KPj4+DQo+Pj4gLSBBY2Nlc3Npbmcg dGhlIG1ldGFkYXRhIGFmdGVyIHJlZGlyZWN0IChpbiBhIGNwdW1hcCBvciBkZXZtYXAgcHJvZ3Jh bSwNCj4+PiAgICAgb3Igb24gYSB2ZXRoIGRldmljZSkNCj4+PiAtIFRyYW5zZmVycmluZyB0aGUg cGFja2V0K21ldGFkYXRhIHRvIEFGX1hEUA0KPj4gZndpdywgdGhlIHhkcCBwcm9nIGNvdWxkIGFs c28gYmUgbW9yZSBzZWxlY3RpdmUgYW5kIG9ubHkgc3RvcmVzIG9uZSBvZiB0aGUgaGludHMNCj4+ IGluc3RlYWQgb2YgdGhlIHdob2xlICdzdHJ1Y3QgeGRwX3RvX3NrYl9tZXRhZGF0YScuDQo+Pg0K Pj4+IC0gUmV0dXJuaW5nIFhEUF9QQVNTLCBidXQgYWNjZXNzaW5nIHNvbWUgb2YgdGhlIG1ldGFk YXRhIGZpcnN0ICh3aGV0aGVyDQo+Pj4gICAgIHRvIHJlYWQgb3IgY2hhbmdlIGl0KQ0KPj4+DQo+ Pj4gVGhlIGxhc3Qgb25lIGNvdWxkIGJlIHNvbHZlZCBieSBjYWxsaW5nIGFkZGl0aW9uYWwga2Z1 bmNzLCBidXQgdGhhdA0KPj4+IHdvdWxkIGJlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkaXJl Y3RseSBlZGl0aW5nIHRoZSBzdHJ1Y3Qgd2hpY2gNCj4+PiB3aWxsIGJlIGNhY2hlLWhvdCBhZnRl ciB0aGUgaGVscGVyIHJldHVybnMuDQo+Pg0KPj4gWWVhaCwgaXQgaXMgbW9yZSBlZmZpY2llbnQg dG8gZGlyZWN0bHkgd3JpdGUgaWYgcG9zc2libGUuICBJIHRoaW5rIHRoaXMgc2V0DQo+PiBhbGxv d3MgdGhlIGRpcmVjdCByZWFkaW5nIGFuZCB3cml0aW5nIGFscmVhZHkgdGhyb3VnaCBkYXRhX21l dGEgKGFzIGEgX3U4ICopLg0KPj4NCj4+Pg0KPj4+IEFuZCB5ZWFoLCB0aGlzIHdpbGwgYWxsb3cg dGhlIFhEUCBwcm9ncmFtIHRvIGluamVjdCBhcmJpdHJhcnkgbWV0YWRhdGENCj4+PiBpbnRvIHRo ZSBuZXRzdGFjazsgYnV0IGl0IGNhbiBhbHJlYWR5IGluamVjdCBhcmJpdHJhcnkgKnBhY2tldCog ZGF0YQ0KPj4+IGludG8gdGhlIHN0YWNrLCBzbyBub3Qgc3VyZSBpZiB0aGlzIGlzIG11Y2ggb2Yg YW4gYWRkaXRpb25hbCByaXNrPyBJZiBpdA0KPj4+IGRvZXMgbGVhZCB0byB0cml2aWFsIGNyYXNo ZXMsIHdlIHNob3VsZCBwcm9iYWJseSBoYXJkZW4gdGhlIHN0YWNrDQo+Pj4gYWdhaW5zdCB0aGF0 Pw0KPj4+DQo+Pj4gQXMgZm9yIHRoZSByYW5kb20gbnVtYmVyLCBKZXNwZXIgYW5kIEkgZGlzY3Vz c2VkIHJlcGxhY2luZyB0aGlzIHdpdGggdGhlDQo+Pj4gc2FtZSBCVEYtSUQgc2NoZW1lIHRoYXQg aGUgd2FzIHVzaW5nIGluIGhpcyBwYXRjaCBzZXJpZXMuIEkuZS4sIGluc3RlYWQNCj4+PiBvZiBq dXN0IHB1dHRpbmcgaW4gYSByYW5kb20gbnVtYmVyLCB3ZSBpbnNlcnQgdGhlIEJURiBJRCBvZiB0 aGUgbWV0YWRhdGENCj4+PiBzdHJ1Y3QgYXQgdGhlIGVuZCBvZiBpdC4gVGhpcyB3aWxsIGFsbG93 IHVzIHRvIHN1cHBvcnQgbXVsdGlwbGUNCj4+PiBkaWZmZXJlbnQgZm9ybWF0cyBpbiB0aGUgZnV0 dXJlIChub3QganVzdCBjaGFuZ2luZyB0aGUgbGF5b3V0LCBidXQNCj4+PiBoYXZpbmcgbXVsdGlw bGUgc2ltdWx0YW5lb3VzIGZvcm1hdHMgaW4gdGhlIHNhbWUga2VybmVsIGltYWdlKSwgaW4gY2Fz ZQ0KPj4+IHdlIHJ1biBvdXQgb2Ygc3BhY2UuDQo+Pg0KPj4gVGhpcyBzZWVtcyBhIGJpdCBoeXBv dGhldGljYWwuICBIb3cgbXVjaCBoZWFkcm9vbSBkb2VzIGl0IHVzdWFsbHkgaGF2ZSBmb3IgdGhl DQo+PiB4ZHAgcHJvZz8gIFBvdGVudGlhbGx5IHRoZSBoaW50cyBjYW4gdXNlIGFsbCB0aGUgcmVt YWluaW5nIHNwYWNlIGxlZnQgYWZ0ZXIgdGhlDQo+PiBoZWFkZXIgZW5jYXAgYW5kIHRoZSBjdXJy ZW50IGJwZl94ZHBfYWRqdXN0X21ldGEoKSB1c2FnZT8NCj4+DQo+Pj4NCj4+PiBXZSBzaG91bGQg cHJvYmFibHkgYWxzbyBoYXZlIGEgZmxhZyBzZXQgb24gdGhlIHhkcF9mcmFtZSBzbyB0aGUgc3Rh Y2sNCj4+PiBrbm93cyB0aGF0IHRoZSBtZXRhZGF0YSBhcmVhIGNvbnRhaW5zIHJlbGV2YW50LXRv LXNrYiBkYXRhLCB0byBndWFyZA0KPj4+IGFnYWluc3QgYW4gWERQIHByb2dyYW0gYWNjaWRlbnRh bGx5IGhpdHRpbmcgdGhlICJtYWdpYyBudW1iZXIiIChCVEZfSUQpDQo+Pj4gaW4gdW5yZWxhdGVk IHN0dWZmIGl0IHB1dHMgaW50byB0aGUgbWV0YWRhdGEgYXJlYS4NCj4+DQo+PiBZZWFoLCBJIHRo aW5rIGhhdmluZyBhIGZsYWcgaXMgdXNlZnVsLiAgVGhlIGZsYWcgd2lsbCBiZSBzZXQgYXQgeGRw X2J1ZmYgYW5kDQo+PiB0aGVuIHRyYW5zZmVyIHRvIHRoZSB4ZHBfZnJhbWU/DQo+Pg0KPj4+DQo+ Pj4+IEFmdGVyIHJlLXJlYWRpbmcgcGF0Y2ggNiwgaGF2ZSBhbm90aGVyIHF1ZXN0aW9uLiBUaGUg J3ZvaWQNCj4+Pj4gYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2tiKCk7JyBmdW5jdGlvbiBz aWduYXR1cmUuIFNob3VsZCBpdCBhdA0KPj4+PiBsZWFzdCByZXR1cm4gb2svZXJyPyBvciBldmVu IHJldHVybiBhICdzdHJ1Y3QgeGRwX3RvX3NrYl9tZXRhZGF0YSAqJw0KPj4+PiBwb2ludGVyIGFu ZCB0aGUgeGRwIHByb2cgY2FuIGRpcmVjdGx5IHJlYWQgKG9yIGV2ZW4gd3JpdGUpIGl0Pw0KPj4+ DQo+Pj4gSG1tLCBJJ20gbm90IHN1cmUgcmV0dXJuaW5nIGEgZmFpbHVyZSBtYWtlcyBzZW5zZT8g RmFpbHVyZSB0byByZWFkIG9uZQ0KPj4+IG9yIG1vcmUgZmllbGRzIGp1c3QgbWVhbnMgdGhhdCB0 aG9zZSBmaWVsZHMgd2lsbCBub3QgYmUgcG9wdWxhdGVkPyBXZQ0KPj4+IHNob3VsZCBwcm9iYWJs eSBoYXZlIGEgZmxhZ3MgZmllbGQgaW5zaWRlIHRoZSBtZXRhZGF0YSBzdHJ1Y3QgaXRzZWxmIHRv DQo+Pj4gaW5kaWNhdGUgd2hpY2ggZmllbGRzIGFyZSBzZXQgb3Igbm90LCBidXQgSSdtIG5vdCBz dXJlIHJldHVybmluZyBhbg0KPj4+IGVycm9yIHZhbHVlIGFkZHMgYW55dGhpbmc/IFJldHVybmlu ZyBhIHBvaW50ZXIgdG8gdGhlIG1ldGFkYXRhIGZpZWxkDQo+Pj4gbWlnaHQgYmUgY29udmVuaWVu dCBmb3IgdXNlcnMgKGl0IHdvdWxkIGp1c3QgYmUgYW4gYWxpYXMgdG8gdGhlDQo+Pj4gZGF0YV9t ZXRhIHBvaW50ZXIsIGJ1dCB0aGUgdmVyaWZpZXIgY291bGQga25vdyBpdHMgc2l6ZSwgc28gdGhl IHByb2dyYW0NCj4+PiBkb2Vzbid0IGhhdmUgdG8gYm91bmRzIGNoZWNrIGl0KS4NCj4+DQo+PiBJ ZiBzb21lIGhpbnRzIGFyZSBub3QgYXZhaWxhYmxlLCB0aG9zZSBoaW50cyBzaG91bGQgYmUgaW5p dGlhbGl6ZWQgdG8NCj4+IDAvQ0hFQ0tTVU1fTk9ORS8uLi5ldGMuICBUaGUgeGRwIHByb2cgbmVl ZHMgYSBkaXJlY3Qgd2F5IHRvIHRlbGwgaGFyZCBmYWlsdXJlDQo+PiB3aGVuIGl0IGNhbm5vdCB3 cml0ZSB0aGUgbWV0YSBhcmVhIGJlY2F1c2Ugb2Ygbm90IGVub3VnaCBzcGFjZS4gIENvbXBhcmlu Zw0KPj4geGRwLT5kYXRhX21ldGEgd2l0aCB4ZHAtPmRhdGEgYXMgYSBzaWRlIGVmZmVjdCBpcyBu b3QgaW50dWl0aXZlLg0KPj4NCj4+IEl0IGlzIG1vcmUgdGhhbiBzYXZpbmcgdGhlIGJvdW5kIGNo ZWNrLiAgV2l0aCB0eXBlIGluZm8gb2YgJ3N0cnVjdA0KPj4geGRwX3RvX3NrYl9tZXRhZGF0YSAq JywgdGhlIHZlcmlmaWVyIGNhbiBkbyBtb3JlIGNoZWNrcyBsaWtlIHJlYWRpbmcgaW4gdGhlDQo+ PiBtaWRkbGUgb2YgYW4gaW50ZWdlciBtZW1iZXIuICBUaGUgdmVyaWZpZXIgY291bGQgYWxzbyBs aW1pdCB3cml0ZSBhY2Nlc3Mgb25seSB0bw0KPj4gYSBmZXcgc3RydWN0J3MgbWVtYmVycyBpZiBp dCBpcyBuZWVkZWQuDQo+Pg0KPj4gVGhlIHJldHVybmluZyAnc3RydWN0IHhkcF90b19za2JfbWV0 YWRhdGEgKicgc2hvdWxkIG5vdCBiZSBhbiBhbGlhcyB0byB0aGUNCj4+IHhkcC0+ZGF0YV9tZXRh LiAgVGhleSBzaG91bGQgYWN0dWFsbHkgcG9pbnQgdG8gZGlmZmVyZW50IGxvY2F0aW9ucyBpbiB0 aGUNCj4+IGhlYWRyb29tLiAgYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRfdG9fc2tiKCkgc2V0cyBh IGZsYWcgaW4geGRwX2J1ZmYuDQo+PiB4ZHAtPmRhdGFfbWV0YSB3b24ndCBiZSBjaGFuZ2VkIGFu ZCBrZWVwcyBwb2ludGluZyB0byB0aGUgbGFzdA0KPj4gYnBmX3hkcF9hZGp1c3RfbWV0YSgpIGxv Y2F0aW9uLiAgVGhlIGtlcm5lbCB3aWxsIGtub3cgaWYgdGhlcmUgaXMNCj4+IHhkcF90b19za2Jf bWV0YWRhdGEgYmVmb3JlIHRoZSB4ZHAtPmRhdGFfbWV0YSB3aGVuIHRoYXQgYml0IGlzIHNldCBp biB0aGUNCj4+IHhkcF97YnVmZixmcmFtZX0uICBXb3VsZCBpdCB3b3JrPw0KPj4NCj4+Pg0KPj4+ PiBBIHJlbGF0ZWQgcXVlc3Rpb24sIHdoeSAnc3RydWN0IHhkcF90b19za2JfbWV0YWRhdGEnIG5l ZWRzDQo+Pj4+IF9fcmFuZG9taXplX2xheW91dD8NCj4+Pg0KPj4+IFRoZSBfX3JhbmRvbWl6ZV9s YXlvdXQgdGhpbmcgaXMgdGhlcmUgdG8gZm9yY2UgQlBGIHByb2dyYW1zIHRvIHVzZSBDTy1SRQ0K Pj4+IHRvIGFjY2VzcyB0aGUgZmllbGQuIFRoaXMgaXMgdG8gYXZvaWQgdGhlIHN0cnVjdCBsYXlv dXQgYWNjaWRlbnRhbGx5DQo+Pj4gb3NzaWZ5aW5nIGJlY2F1c2UgcGVvcGxlIGluIHByYWN0aWNl IHJlbHkgb24gYSBwYXJ0aWN1bGFyIGxheW91dCwgZXZlbg0KPj4+IHRob3VnaCB3ZSB0ZWxsIHRo ZW0gdG8gdXNlIENPLVJFLiBUaGVyZSBhcmUgbG90cyBvZiBleGFtcGxlcyBvZiB0aGlzDQo+Pj4g aGFwcGVuaW5nIGluIG90aGVyIGRvbWFpbnMgKElQIGhlYWRlciBvcHRpb25zLCBUQ1Agb3B0aW9u cywgZXRjKSwgYW5kDQo+Pj4gX19yYW5kb21pemVfbGF5b3V0IHNlZW1lZCBsaWtlIGEgbmVhdCB0 cmljayB0byBlbmZvcmNlIENPLVJFIHVzYWdlIDopDQo+Pg0KPj4gSSBhbSBub3Qgc3VyZSBpZiBp dCBpcyBuZWNlc3Nhcnkgb3IgaGVscGZ1bCB0byBvbmx5IGVuZm9yY2UgX19yYW5kb21pemVfbGF5 b3V0DQo+PiBpbiAnc3RydWN0IHhkcF90b19za2JfbWV0YWRhdGEnLiAgVGhlcmUgYXJlIG90aGVy IENPLVJFIHVzZSBjYXNlcyAodHJhY2luZyBhbmQNCj4+IG5vbiB0cmFjaW5nKSB0aGF0IGFscmVh ZHkgaGF2ZSBkaXJlY3QgYWNjZXNzIChyZWFkaW5nIGFuZC9vciB3cml0aW5nKSB0byBvdGhlcg0K Pj4ga2VybmVsIHN0cnVjdHVyZXMuDQo+Pg0KPj4gSXQgaXMgbW9yZSBpbXBvcnRhbnQgZm9yIHRo ZSB2ZXJpZmllciB0byBzZWUgdGhlIHhkcCBwcm9nIGFjY2Vzc2luZyBpdCBhcyBhDQo+PiAnc3Ry dWN0IHhkcF90b19za2JfbWV0YWRhdGEgKicgaW5zdGVhZCBvZiB4ZHAtPmRhdGFfbWV0YSB3aGlj aCBpcyBhIF9fdTggKiBzbw0KPj4gdGhhdCB0aGUgdmVyaWZpZXIgY2FuIGVuZm9yY2UgdGhlIHJ1 bGVzIG9mIGFjY2Vzcy4NCj4+DQo+Pj4NCj4+Pj4+Pj4gRG9lcyB4ZHBfdG9fc2tiX21ldGFkYXRh IGhhdmUgYSB1c2UgY2FzZSBmb3IgWERQX1BBU1MgKGxpa2UgcGF0Y2ggNykgb3IgdGhlDQo+Pj4+ Pj4+IHhkcF90b19za2JfbWV0YWRhdGEgY2FuIGJlIGxpbWl0ZWQgdG8gWERQX1JFRElSRUNUIG9u bHk/DQo+Pj4+Pj4NCj4+Pj4+PiBYRFBfUEFTUyBjYXNlcyB3aGVyZSB3ZSBjb252ZXJ0IHhkcF9i dWZmIGludG8gc2tiIGluIHRoZSBkcml2ZXJzIHJpZ2h0DQo+Pj4+Pj4gbm93IHVzdWFsbHkgaGF2 ZSBDIGNvZGUgdG8gbWFudWFsbHkgcHVsbCBvdXQgdGhlIG1ldGFkYXRhIChvdXQgb2YgaHcNCj4+ Pj4+PiBkZXNjKSBhbmQgcHV0IGl0IGludG8gc2tiLg0KPj4+Pj4+DQo+Pj4+Pj4gU28sIGN1cnJl bnRseSwgaWYgd2UncmUgY2FsbGluZyBicGZfeGRwX21ldGFkYXRhX2V4cG9ydF90b19za2IoKSBm b3INCj4+Pj4+PiBYRFBfUEFTUywgd2UncmUgZG9pbmcgYSBkb3VibGUgYW1vdW50IG9mIHdvcms6 DQo+Pj4+Pj4gc2tiX21ldGFkYXRhX2ltcG9ydF9mcm9tX3hkcCBmaXJzdCwgdGhlbiBjdXN0b20g ZHJpdmVyIGNvZGUgc2Vjb25kLg0KPj4+Pj4+DQo+Pj4+Pj4gSW4gdGhlb3J5LCBtYXliZSB3ZSBz aG91bGQgY29tcGxldGVseSBza2lwIGRyaXZlcnMgY3VzdG9tIHBhcnNpbmcgd2hlbg0KPj4+Pj4+ IHRoZXJlIGlzIGEgcHJvZyB3aXRoIEJQRl9GX1hEUF9IQVNfTUVUQURBVEE/DQo+Pj4+Pj4gVGhl biBib3RoIHhkcC0+c2tiIHBhdGhzIChYRFBfUEFTUytYRFBfUkVESVJFQ1QpIHdpbGwgYmUgYnBm LWRyaXZlbg0KPj4+Pj4+IGFuZCB3b24ndCByZXF1aXJlIGFueSBtZW50YWwgd29yayAocGx1cywg dGhlIGRyaXZlcnMgd29uJ3QgaGF2ZSB0bw0KPj4+Pj4+IGNhcmUgZWl0aGVyIGluIHRoZSBmdXR1 cmUpLg0KPj4+Pj4+ICAgID4gV0RZVD8NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4gWWVhaCwgbm90IHN1 cmUgaWYgaXQgY2FuIHNvbGVseSBkZXBlbmQgb24gQlBGX0ZfWERQX0hBU19NRVRBREFUQSBidXQg aXQgbWFrZXMNCj4+Pj4+IHNlbnNlIHRvIG9ubHkgdXNlIHRoZSBoaW50cyAoaWYgZXZlciB3cml0 dGVuKSBmcm9tIHhkcCBwcm9nIGVzcGVjaWFsbHkgaWYgaXQNCj4+Pj4+IHdpbGwgZXZlbnR1YWxs eSBzdXBwb3J0IHhkcCBwcm9nIGNoYW5naW5nIHNvbWUgb2YgdGhlIGhpbnRzIGluIHRoZSBmdXR1 cmUuICBGb3INCj4+Pj4+IG5vdywgSSB0aGluayBlaXRoZXIgd2F5IGlzIGZpbmUgc2luY2UgdGhl eSBhcmUgdGhlIHNhbWUgYW5kIHRoZSB4ZHAgcHJvZyBpcyBzb3J0DQo+Pj4+PiBvZiBkb2luZyBl eHRyYSB1bm5lY2Vzc2FyeSB3b3JrIGFueXdheSBieSBjYWxsaW5nDQo+Pj4+PiBicGZfeGRwX21l dGFkYXRhX2V4cG9ydF90b19za2IoKSB3aXRoIFhEUF9QQVNTIGFuZCBrbm93aW5nIG5vdGhpbmcg Y2FuIGJlDQo+Pj4+PiBjaGFuZ2VkIG5vdy4NCj4+Pg0KPj4+IEkgYWdyZWUgaXQgd291bGQgYmUg YmVzdCBpZiB0aGUgZHJpdmVycyBhbHNvIHVzZSB0aGUgWERQIG1ldGFkYXRhIChpZg0KPj4+IHBy ZXNlbnQpIG9uIFhEUF9QQVNTLiBMb25nZXIgdGVybSBteSBob3BlIGlzIHdlIGNhbiBtYWtlIHRo ZSBYRFANCj4+PiBtZXRhZGF0YSBzdXBwb3J0IHRoZSBvbmx5IHRoaW5nIGRyaXZlcnMgbmVlZCB0 byBpbXBsZW1lbnQgKGkuZS4sIGhhdmUNCj4+PiB0aGUgc3RhY2sgY2FsbCBpbnRvIHRoYXQgY29k ZSBldmVuIHdoZW4gbm8gWERQIHByb2dyYW0gaXMgbG9hZGVkKSwgYnV0DQo+Pj4gZm9yIG5vdyBq dXN0IGZvciBjb25zaXN0ZW5jeSAoYW5kIGFsbG93aW5nIHRoZSBYRFAgcHJvZ3JhbSB0byB1cGRh dGUgdGhlDQo+Pj4gbWV0YWRhdGEpLCB3ZSBzaG91bGQgcHJvYmFibHkgYXQgbGVhc3QgY29uc3Vt ZSBpdCBvbiBYRFBfUEFTUy4NCj4+Pg0KPj4+IC1Ub2tlDQo+Pj4NCj4gDQo+IE5vdCB0byBkZXJh aWwgdGhlIGRpc2N1c3Npb24gKGxlZnQgdGhlIGxhc3QgbWVzc2FnZSBpbnRhY3Qgb24gdG9wLA0K PiBmZWVsIGZyZWUgdG8gY29udGludWUpLCBidXQgdG8gc3VtbWFyaXplLiBUaGUgcHJvcG9zZWQg Y2hhbmdlcyBzZWVtIHRvDQo+IGJlOg0KPiANCj4gMS4gYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRf dG9fc2tiKCkgc2hvdWxkIHJldHVybiBwb2ludGVyIHRvICJzdHJ1Y3QNCj4geGRwX3RvX3NrYl9t ZXRhZGF0YSINCj4gICAgLSBUaGlzIHNob3VsZCBsZXQgYnBmIHByb2dyYW1zIGNoYW5nZSB0aGUg bWV0YWRhdGEgcGFzc2VkIHRvIHRoZSBza2INCj4gDQo+IDIuICJzdHJ1Y3QgeGRwX3RvX3NrYl9t ZXRhZGF0YSIgc2hvdWxkIGhhdmUgaXRzIGJ0Zl9pZCBhcyB0aGUgZmlyc3QNCj4gX191MzIgbWVt YmVyIChhbmQgcmVtb3ZlIHRoZSBtYWdpYykNCj4gICAgLSBUaGlzIGlzIGZvciB0aGUgcmVkaXJl Y3QgY2FzZSB3aGVyZSB0aGUgZW5kIHVzZXJzLCBpbmNsdWRpbmcNCj4gQUZfWERQLCBjYW4gcGFy c2UgdGhpcyBtZXRhZGF0YSBmcm9tIGJ0Zl9pZA0KDQpJIHRoaW5rIFRva2UncyBpZGVhIGlzIHRv IHB1dCB0aGUgYnRmX2lkIGF0IHRoZSBlbmQgb2YgeGRwX3RvX3NrYl9tZXRhZGF0YS4gIEkgDQpj YW4gc2VlIHdoeSB0aGUgZW5kIGlzIG5lZWRlZCBmb3IgdGhlIHVzZXJzcGFjZSBBRl9YRFAgYmVj YXVzZSwgYWZhaWN0LCBBRl9YRFAgDQpyeF9kZXNjIGN1cnJlbnRseSBjYW5ub3QgdGVsbCBpZiB0 aGVyZSBpcyBtZXRhZGF0YSB3cml0dGVuIGJ5IHRoZSB4ZHAgcHJvZyBvciANCm5vdC4gIEhvd2V2 ZXIsIGlmIHRoZSAnaGFzX3NrYl9tZXRhZGF0YScgYml0IGNhbiBhbHNvIGJlIHBhc3NlZCB0byB0 aGUgQUZfWERQIA0KcnhfZGVzYy0+b3B0aW9ucywgdGhlIGJ0Zl9pZCBtYXkgYXMgd2VsbCBiZSBu b3QgbmVlZGVkIG5vdy4gIEhvd2V2ZXIsIHRoZSBidGZfaWQgDQphbmQgb3RoZXIgZnV0dXJlIG5l dyBtZW1iZXJzIGNhbiBiZSBhZGRlZCB0byB0aGUgeGRwX3RvX3NrYl9tZXRhZGF0YSBsYXRlciBp ZiANCnRoZXJlIGlzIGEgbmVlZC4NCg0KRm9yIHRoZSBrZXJuZWwgYW5kIHhkcCBwcm9nLCBhIGJp dCBpbiB0aGUgeGRwLT5mbGFncyBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCB0byANCnRoZSB4ZHBf dG9fc2tiX21ldGFkYXRhLiAgVGhlIHhkcCBwcm9nIHdpbGwgdXNlIENPLVJFIHRvIGFjY2VzcyB0 aGUgbWVtYmVycyBpbiANCnhkcF90b19za2JfbWV0YWRhdGEuDQoNCj4gICAgLSBUaGlzLCBob3dl dmVyLCBpcyBub3QgYWxsIHRoZSBtZXRhZGF0YSB0aGF0IHRoZSBkZXZpY2UgY2FuDQo+IHN1cHBv cnQsIGJ1dCBhIG11Y2ggbmFycm93ZXIgc2V0IHRoYXQgdGhlIGtlcm5lbCBpcyBleHBlY3RlZCB0 byB1c2UNCj4gZm9yIHNrYiBjb25zdHJ1Y3Rpb24NCj4gDQo+IDMuIF9fcmFuZG9taXplX2xheW91 dCBpc24ndCByZWFsbHkgaGVscGluZywgQ08tUkUgd2lsbCB0cmlnZ2VyDQo+IHJlZ2FyZGxlc3M7 IG1heWJlIG9ubHkgdGhlIGNhc2Ugd2hlcmUgaXQgbWF0dGVycyBpcyBwcm9iYWJseSBBRl9YRFAs DQo+IHNvIHN0aWxsIHVzZWZ1bD8NCj4gDQo+IDQuIFRoZSBwcmVzZW5jZSBvZiB0aGUgbWV0YWRh dGEgZ2VuZXJhdGVkIGJ5DQo+IGJwZl94ZHBfbWV0YWRhdGFfZXhwb3J0X3RvX3NrYiBzaG91bGQg YmUgaW5kaWNhdGVkIGJ5IGEgZmxhZyBpbg0KPiB4ZHBfe2J1ZmYsZnJhbWV9LT5mbGFncw0KPiAg ICAtIEFzc3VtaW5nIGV4cG9zaW5nIGl0IHZpYSB4ZHBfbWQtPmhhc19za2JfbWV0YWRhdGEgaXMg b2s/DQoNCnByb2JhYmx5IF9fYnBmX21kX3B0cihzdHJ1Y3QgeGRwX3RvX3NrYl9tZXRhZGF0YSAq LCBza2JfbWV0YWRhdGEpIGFuZCB0aGUgdHlwZSANCndpbGwgYmUgUFRSX1RPX0JURl9JRF9PUl9O VUxMLg0KDQo+ICAgIC0gU2luY2UgdGhlIHByb2dyYW1zIHByb2JhYmx5IG5lZWQgdG8gZG8gdGhl IGZvbGxvd2luZzoNCj4gDQo+ICAgIGlmICh4ZHBfbWQtPmhhc19za2JfbWV0YWRhdGEpIHsNCj4g ICAgICBhY2Nlc3MvY2hhbmdlIHNrYiBtZXRhZGF0YSBieSBkb2luZyBzdHJ1Y3QgeGRwX3RvX3Nr Yl9tZXRhZGF0YSAqcA0KPiA9IGRhdGFfbWV0YTsNCg0KYW5kIGRpcmVjdGx5IGFjY2Vzcy9jaGFu Z2UgeGRwLT5za2JfbWV0YWRhdGEgaW5zdGVhZCBvZiB1c2luZyB4ZHAtPmRhdGFfbWV0YS4NCg0K PiAgICB9IGVsc2Ugew0KPiAgICAgIHVzZSBrZnVuY3MNCj4gICAgfQ0KPiANCj4gNS4gU3VwcG9y dCB0aGUgY2FzZSB3aGVyZSB3ZSBrZWVwIHByb2dyYW0ncyBtZXRhZGF0YSBhbmQga2VybmVsJ3MN Cj4geGRwX3RvX3NrYl9tZXRhZGF0YQ0KPiAgICAtIHNrYl9tZXRhZGF0YV9pbXBvcnRfZnJvbV94 ZHAoKSB3aWxsICJjb25zdW1lIiBpdCBieSBtZW0tbW92aW5nIHRoZQ0KPiByZXN0IG9mIHRoZSBt ZXRhZGF0YSBvdmVyIGl0IGFuZCBhZGp1c3RpbmcgdGhlIGhlYWRyb29tDQoNCkkgd2FzIHRoaW5r aW5nIHRoZSBrZXJuZWwncyB4ZHBfdG9fc2tiX21ldGFkYXRhIGlzIGFsd2F5cyBiZWZvcmUgdGhl IHByb2dyYW0ncyANCm1ldGFkYXRhLiAgeGRwIHByb2cgc2hvdWxkIHVzdWFsbHkgd29yayBpbiB0 aGlzIG9yZGVyIGFsc286IHJlYWQvd3JpdGUgaGVhZGVycywgDQp3cml0ZSBpdHMgb3duIG1ldGFk YXRhLCBjYWxsIGJwZl94ZHBfbWV0YWRhdGFfZXhwb3J0X3RvX3NrYigpLCBhbmQgcmV0dXJuIA0K WERQX1BBU1MvWERQX1JFRElSRUNULiAgV2hlbiBpdCBpcyBYRFBfUEFTUywgdGhlIGtlcm5lbCBq dXN0IG5lZWRzIHRvIHBvcCB0aGUgDQp4ZHBfdG9fc2tiX21ldGFkYXRhIGFuZCBwYXNzIHRoZSBy ZW1haW5pbmcgcHJvZ3JhbSdzIG1ldGFkYXRhIHRvIHRoZSBicGYtdGMuDQoNCkZvciB0aGUga2Vy bmVsIGFuZCB4ZHAgcHJvZywgSSBkb24ndCB0aGluayBpdCBtYXR0ZXJzIHdoZXJlIHRoZSANCnhk cF90b19za2JfbWV0YWRhdGEgaXMuICBIb3dldmVyLCB0aGUgeGRwLT5kYXRhX21ldGEgKHByb2dy YW0ncyBtZXRhZGF0YSkgaGFzIHRvIA0KYmUgYmVmb3JlIHhkcC0+ZGF0YSBiZWNhdXNlIG9mIHRo ZSBjdXJyZW50IGRhdGFfbWV0YSBhbmQgZGF0YSBjb21wYXJpc29uIHVzYWdlIA0KaW4gdGhlIHhk cCBwcm9nLg0KDQpUaGUgb3JkZXIgb2YgdGhlIGtlcm5lbCdzIHhkcF90b19za2JfbWV0YWRhdGEg YW5kIHRoZSBwcm9ncmFtJ3MgbWV0YWRhdGEgDQpwcm9iYWJseSBvbmx5IG1hdHRlcnMgdG8gdGhl IHVzZXJzcGFjZSBBRl9YRFAuICBIb3dldmVyLCBJIGRvbid0IHNlZSBob3cgQUZfWERQIA0Kc3Vw cG9ydHMgdGhlIHByb2dyYW0ncyBtZXRhZGF0YSBub3cuICBhZmFpY3QsIGl0IGNhbiBvbmx5IHdv cmsgbm93IGlmIHRoZXJlIGlzIA0Kc29tZSBzb3J0IG9mIGNvbnRyYWN0IGJldHdlZW4gdGhlbSBv ciB0aGUgQUZfWERQIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgdGhlIA0KcHJvZ3JhbSdzIG1ldGFk YXRhLiAgRWl0aGVyIHdheSwgd2UgY2FuIGRvIHRoZSBtZW0tbW92aW5nIG9ubHkgZm9yIEFGX1hE UCBhbmQgaXQgDQpzaG91bGQgYmUgYSBubyBvcCBpZiB0aGVyZSBpcyBubyBwcm9ncmFtJ3MgbWV0 YWRhdGE/ICBUaGlzIGJlaGF2aW9yIGNvdWxkIGFsc28gDQpiZSBjb25maWd1cmFibGUgdGhyb3Vn aCBzZXRzb2Nrb3B0Pw0KDQpUaGFua3MgZm9yIHRoZSBzdW1tYXJ5IQ0KDQo+IA0KPiANCj4gSSB0 aGluayB0aGUgYWJvdmUgc29sdmVzIGFsbCB0aGUgY2FzZXMgVG9rZSBwb2ludHMgdG8/DQo+IA0K PiBhKSBBY2Nlc3NpbmcgdGhlIG1ldGFkYXRhIGFmdGVyIHJlZGlyZWN0IChpbiBhIGNwdW1hcCBv ciBkZXZtYXANCj4gcHJvZ3JhbSwgb3Igb24gYSB2ZXRoIGRldmljZSkNCj4gICAgLSBvbmx5IGEg c21hbGwgeGRwX3RvX3NrYl9tZXRhZGF0YSBzdWJzZXQgd2lsbCB3b3JrIG91dCBvZiB0aGUgYm94 DQo+IGlmZiB0aGUgcmVkaXJlY3R0b3IgY2FsbHMgYnBmX3hkcF9tZXRhZGF0YV9leHBvcnRfdG9f c2tiOyBmb3IgdGhlIHJlc3QNCj4gdGhlIHByb2dzIHdpbGwgaGF2ZSB0byBhZ3JlZSBvbiB0aGUg bGF5b3V0LCByaWdodD8NCj4gDQo+IGIpIFRyYW5zZmVycmluZyB0aGUgcGFja2V0K21ldGFkYXRh IHRvIEFGX1hEUA0KPiAgICAtIGhlcmUsIGFnYWluLCB0aGUgQUZfWERQIGNvbnN1bWVyIHdpbGwg aGF2ZSB0byBlaXRoZXIgZXhwZWN0DQo+IHhkcF90b19za2JfbWV0YWRhdGEgd2l0aCBhIHNtYWxs ZXIgc2V0IG9mIHNrYi1yZWxhdGVkIG1ldGFkYXRhLCBvcg0KPiB3aWxsIGhhdmUgdG8gbWFrZSBz dXJlIHRoZSBwcm9kdWNlciBidWlsZHMgYSBjdXN0b20gbGF5b3V0IHVzaW5nDQo+IGtmdW5jczsg dGhlcmUgaXMgYWxzbyBubyBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgeGRwX3RvX3NrYl9tZXRh ZGF0YQ0KPiBpcyB0aGVyZSBvciBub3Q7IHRoZSBjb25zdW1lciB3aWxsIGhhdmUgdG8gdGVzdCBi dGZfaWQgYXQgdGhlIHJpZ2h0DQo+IG9mZnNldA0KPiANCj4gYykgUmV0dXJuaW5nIFhEUF9QQVNT LCBidXQgYWNjZXNzaW5nIHNvbWUgb2YgdGhlIG1ldGFkYXRhIGZpcnN0DQo+ICh3aGV0aGVyIHRv IHJlYWQgb3IgY2hhbmdlIGl0KQ0KPiAgICAtIGNhbiByZWFkIHZpYSBrZnVuY3MsIGNhbiBjaGFu Z2UgdmlhDQo+IGJwZl94ZHBfbWV0YWRhdGFfZXhwb3J0X3RvX3NrYigpOyBtLT54eXo9YWJjOw0K PiANCj4gQW55dGhpbmcgSSdtIG1pc3Npbmc/DQoNCg==