From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mail.toke.dk (Postfix) with ESMTPS id EFD2E8B46F0 for ; Wed, 8 Sep 2021 15:28:30 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=LhZ2dxvj DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1631107708; 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=5+VIlgjhY3E7eDD9E9D8fJWbDOsIe3FwECfQXT25Vd0=; b=LhZ2dxvj+S3bbBvkWe3aHAGrDGleBfSR6Hq+wlfgCPbsCAGxfAQ25iWLLjXcalN8L2ZQ0E kuwGTnbDNXkwWCO7VUCWq6dTiteGFnzQsyoNtIxisvVcnK0XkZXUFnBiRQ9Wf8ZM2RmxD6 Ij0RbeJHTlJfbNh4MMSZDKII2DTNmdc= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-567-fIqGC7x6OW-w-R3Q-9b7DQ-1; Wed, 08 Sep 2021 09:28:25 -0400 X-MC-Unique: fIqGC7x6OW-w-R3Q-9b7DQ-1 Received: by mail-lf1-f70.google.com with SMTP id d10-20020ac24c8a000000b003dce50ea2c4so872697lfl.0 for ; Wed, 08 Sep 2021 06:28:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:cc:subject:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=5+VIlgjhY3E7eDD9E9D8fJWbDOsIe3FwECfQXT25Vd0=; b=EeGaMlMABDJxWuyjfLC6oTAQHp+mcLhSZA9gFnK0mJGiGgamBnAA/APrQRoHhNDixA BWUmRJ1MCQbN9FBGssjcVfyRkJeHog5OLFLolP0m5efXhReQXCZqNMJwh3fnzrNv1vt4 TLssiGdDXOC+2Qgd+PFEjzhkio0HMwufNBOqSbOl1G2i+XjHIwdQARGU0ghxo/kBSps5 TYbOL1i9MjDiUB4YX99EbW6WGiujFspR0vxDMTQ9QSjFuFLPkvlfyNe7AMnSdD7uT0JN Yx7KIUlSmum4nggkIsT3Qts7pjhEuPwnFB7YBc0A9iTO/t3+ufiTXgxVYKTZMNlPcj2y Tw9w== X-Gm-Message-State: AOAM531TWM1Kso4OGowO0R83+Aw2veyo+1rDNpARmn0o5DO278utH6GJ 6dDpFR0NL/6d7q7PIZKNF/kj8N++mbMqFtrgDTgATSL+NU3JCgE8J4p6nrB5N4jvr8XOOyPUt8p ybMqA4jPZCq8I+v4eBNk0 X-Received: by 2002:ac2:5dc8:: with SMTP id x8mr2654564lfq.31.1631107704003; Wed, 08 Sep 2021 06:28:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxescUHN6ctZpnLvgAbYXMnZlUccnRD99JUNbOSDvunE5Yx2rw80rDAHOTCMYDwJs2p7AtJ0A== X-Received: by 2002:ac2:5dc8:: with SMTP id x8mr2654539lfq.31.1631107703464; Wed, 08 Sep 2021 06:28:23 -0700 (PDT) Received: from [192.168.42.238] (87-59-106-155-cable.dk.customer.tdc.net. [87.59.106.155]) by smtp.gmail.com with ESMTPSA id g5sm191702lfv.202.2021.09.08.06.28.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Sep 2021 06:28:22 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Subject: Re: XDP-hints: Howto support multiple BTF types per packet basis? To: Michal Swiatkowski , Jesper Dangaard Brouer References: <60b6cf5b6505e_38d6d208d8@john-XPS-13-9370.notmuch> <20210602091837.65ec197a@kicinski-fedora-PC1C0HJN.hsd1.ca.comcast.net> <874kdqqfnm.fsf@toke.dk> <87mtrfmoyh.fsf@toke.dk> <8735snvjp7.fsf@toke.dk> <190d8d21-f11d-bb83-58aa-08e86e0006d9@redhat.com> Message-ID: <936bfbdf-e194-b676-d28a-acf526120155@redhat.com> Date: Wed, 8 Sep 2021 15:28:21 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jbrouer@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Language: en-US Content-Transfer-Encoding: base64 Message-ID-Hash: Y3OCPUOHYWWJAXL4WTTIMXK7OHVLXTKP X-Message-ID-Hash: Y3OCPUOHYWWJAXL4WTTIMXK7OHVLXTKP X-MailFrom: jbrouer@redhat.com 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: brouer@redhat.com, =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , Jakub Kicinski , John Fastabend , Andrii Nakryiko , BPF-dev-list , Magnus Karlsson , William Tu , xdp-hints@xdp-project.net, Zaremba Larysa , Jiri Olsa X-Mailman-Version: 3.3.4 Precedence: list List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAwNy8wOS8yMDIxIDA4LjI3LCBNaWNoYWwgU3dpYXRrb3dza2kgd3JvdGU6DQo+IE9uIFRo dSwgU2VwIDAyLCAyMDIxIGF0IDExOjE3OjQzQU0gKzAyMDAsIEplc3BlciBEYW5nYWFyZCBCcm91 ZXIgd3JvdGU6DQo+Pg0KPj4NCj4+IE9uIDAyLzA5LzIwMjEgMDQuNDksIE1pY2hhbCBTd2lhdGtv d3NraSB3cm90ZToNCj4+PiBPbiBGcmksIEp1bCAwOSwgMjAyMSBhdCAxMjo1NzowOFBNICswMjAw LCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6DQo+Pj4+IE1pY2hhbCBTd2lhdGtvd3Nr aSA8bWljaGFsLnN3aWF0a293c2tpQGxpbnV4LmludGVsLmNvbT4gd3JpdGVzOg0KPj4+Pg0KPj4+ Pj4+IEkgd291bGQgZXhwZWN0IHRoYXQgdGhlIHByb2dyYW0gd291bGQgZGVjaWRlIGFoZWFkLW9m LXRpbWUgd2hpY2ggQlRGIElEcw0KPj4+Pj4+IGl0IHN1cHBvcnRzLCBieSBzb21ldGhpbmcgbGlr ZSBpbmNsdWRpbmcgdGhlIHJlbGV2YW50IHN0cnVjdHMgZnJvbQ0KPj4+Pj4+IHZtbGludXguaC4g QW5kIHRoZW4gd2UgbmVlZCB0aGUgQlRGIElEIGVuY29kZWQgaW50byB0aGUgcGFja2V0IG1ldGFk YXRhDQo+Pj4+Pj4gYXMgd2VsbCwgc28gdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBjaGVjayBhdCBy dW4tdGltZSB3aGljaCBkcml2ZXIgdGhlDQo+Pj4+Pj4gcGFja2V0IGNhbWUgZnJvbSAoc2luY2Ug YSBwYWNrZXQgY2FuIGJlIHJlZGlyZWN0ZWQsIHNvIHlvdSBtYXkgZW5kIHVwDQo+Pj4+Pj4gaGF2 aW5nIHRvIGRlYWwgd2l0aCBtdWx0aXBsZSBmb3JtYXRzIGluIHRoZSBzYW1lIFhEUCBwcm9ncmFt KS4NCj4+Pj4+Pg0KPj4+Pj4+IFdoaWNoIHdvdWxkIGFsbG93IHlvdSB0byB3cml0ZSBjb2RlIGxp a2U6DQo+Pj4+Pj4NCj4+Pj4+PiBpZiAoY3R4LT5oYXNfZHJpdmVyX21ldGEpIHsNCj4+Pj4+PiAg ICAgLyogdGhpcyBzaG91bGQgYmUgYXQgYSB3ZWxsLWtub3duIHBvc2l0aW9uLCBsaWtlIGZpcnN0 IChvciBsYXN0KSBpbiBtZXRhIGFyZWEgKi8NCj4+Pj4+PiAgICAgX191MzIgKm1ldGFfYnRmX2lk ID0gY3R4LT5kYXRhX21ldGE7DQo+Pj4+Pj4gICAgIGlmICgqbWV0YV9idGZfaWQgPT0gQlRGX0lE X01MWDUpIHsNCj4+Pj4+PiAgICAgICBzdHJ1Y3QgbWV0YV9tbHg1ICptZXRhID0gY3R4LT5kYXRh X21ldGE7DQo+Pj4+Pj4gICAgICAgLyogZG8gc29tZXRoaW5nIHdpdGggbWV0YSAqLw0KPj4+Pj4+ ICAgICB9IGVsc2UgaWYgKG1ldGFfYnRmX2lkID09IEJURl9JRF9JNDBFKSB7DQo+Pj4+Pj4gICAg ICAgc3RydWN0IG1ldGFfaTQwZSAqbWV0YSA9IGN0eC0+ZGF0YV9tZXRhOw0KPj4+Pj4+ICAgICAg IC8qIGRvIHNvbWV0aGluZyB3aXRoIG1ldGEgKi8NCj4+Pj4+PiAgICAgfSAvKiBldGMgKi8NCj4+ Pj4+PiB9DQo+Pj4+Pj4NCj4+Pj4+PiBhbmQgbGliYnBmIGNvdWxkIGRvIHJlbG9jYXRpb25zIGJh c2VkIG9uIHRoZSBkaWZmZXJlbnQgbWV0YSBzdHJ1Y3RzLA0KPj4+Pj4+IGV2ZW4gcmVtb3Zpbmcg dGhlIGNvZGUgZm9yIHRoZSBvbmVzIHRoYXQgZG9uJ3QgZXhpc3Qgb24gdGhlIHJ1bm5pbmcNCj4+ Pj4+PiBrZXJuZWwuDQo+Pj4+Pg0KPj4+Pj4gVGhpcyBsb29rcyBuaWNlLiBJbiB0aGlzIGNhc2Ug d2UgbmVlZCBkZWZpbnRpb25zIG9mIHN0cnVjdCBtZXRhX21seDUgYW5kDQo+Pj4+PiBzdHJ1Y3Qg bWV0YV9pNDBlIGF0IGJ1aWxkIHRpbWUuIEhvdyBhcmUgd2UgZ29pbmcgdG8gZGVsaXZlciB0aGlz IHRvIGJwZg0KPj4+Pj4gY29yZSBhcHA/IFRoaXMgd2lsbCBiZSBhdmFpbGFibGUgaW4gL3N5cy9r ZXJuZWwvYnRmL21seDUgYW5kDQo+Pj4+PiAvc3lzL2tlcm5lbC9idGYvaTQwZSAoaWYgZHJpdmVy cyBhcmUgbG9hZGVkKS4gU2hvdWxkIHdlIGR1bXAgdGhpcyB0bw0KPj4+Pj4gdm1saW51eC5oPyBP ciBhIGRldmVsb3BlciBvZiB0aGUgeGRwIHByb2dyYW0gc2hvdWxkIGFkZCB0aGlzIGRlZmluaXRp b24NCj4+Pj4+IHRvIGhpcyBjb2RlPw0KPj4+Pg0KPj4+PiBXZWxsLCBpZiB0aGUgZHJpdmVyIGp1 c3QgZGVmaW5lcyB0aGUgc3RydWN0LCB0aGUgQlRGIGZvciBpdCB3aWxsIGJlDQo+Pj4+IGF1dG9t YXRpY2FsbHkgcGFydCBvZiB0aGUgZHJpdmVyIG1vZHVsZSBCVEYuIEJQRiBwcm9ncmFtIGRldmVs b3BlcnMNCj4+Pj4gd291bGQgbmVlZCB0byBpbmNsdWRlIHRoaXMgaW4gdGhlaXIgcHJvZ3JhbXMg c29tZWhvdyAoc2ltaWxhciB0byBob3cNCj4+Pj4geW91J2xsIG5lZWQgdG8gZ2V0IHRoZSB0eXBl IGRlZmluaXRpb25zIGZyb20gdm1saW51eC5oIHRvZGF5IHRvIHVzZQ0KPj4+PiBDTy1SRSk7IGhv dyB0aGV5IGRvIHRoaXMgaXMgdXAgdG8gdGhlbS4gU2luY2UgdGhpcyBpcyBhIGNvbXBpbGUtdGlt ZQ0KPj4+PiB0aGluZyBpdCB3aWxsIHByb2JhYmx5IGRlcGVuZCBvbiB0aGUgcHJvamVjdCAoZm9y IGluc3RhbmNlLCBCQ0MgaW5jbHVkZXMNCj4+Pj4gYSBjb3B5IG9mIHZtbGludXguaCBpbiB0aGVp ciBzb3VyY2UgdHJlZSwgYnV0IHlvdSBjYW4gYWxzbyBqdXN0IHBpY2sgb3V0DQo+Pj4+IHRoZSBz dHJ1Y3RzIHlvdSBuZWVkKS4NCj4+Pj4NCj4+Pj4+IE1heWJlIGNyZWF0ZSBhbm90aGVyIC9zeXMv a2VybmVsL2J0Zi9oaW50cyB3aXRoIHZtbGludXggYW5kIGhpbnRzIGZyb20NCj4+Pj4+IGFsbCBk cml2ZXJzIHdoaWNoIHN1cHBvcnQgaGludHM/DQo+Pj4+DQo+Pj4+IEl0IG1heSBiZSB1c2VmdWwg dG8gaGF2ZSBhIHdheSBmb3IgdGhlIGtlcm5lbCB0byBleHBvcnQgYWxsIHRoZSBoaW50cw0KPj4+ PiBjdXJyZW50bHkgbG9hZGVkLCBzbyBsaWJicGYgY2FuIGp1c3QgdXNlIHRoYXQgd2hlbiByZWxv Y2F0aW5nLiBUaGUNCj4+Pj4gcHJvYmxlbSBvZiBjb3Vyc2UgYmVpbmcgdGhhdCB0aGlzIHdpbGwg b25seSBpbmNsdWRlIGRyaXZlcnMgdGhhdCBhcmUNCj4+Pj4gYWN0dWFsbHkgbG9hZGVkLCBzbyB1 c2VycyBuZWVkIHRvIG1ha2Ugc3VyZSB0byBsb2FkIGFsbCB0aGVpciBuZXR3b3JrDQo+Pj4+IGRy aXZlcnMgYmVmb3JlIGxvYWRpbmcgYW55IFhEUCBwcm9ncmFtcy4gSSB0aGluayBpdCB3b3VsZCBi ZSBiZXR0ZXIgaWYNCj4+Pj4gdGhlIGxvYWRlciBjb3VsZCBkaXNjb3ZlciBhbGwgbW9kdWxlcyAq YXZhaWxhYmxlKiBvbiB0aGUgc3lzdGVtLCBidXQgSSdtDQo+Pj4+IG5vdCBzdXJlIGlmIHRoZXJl J3MgYSBnb29kIHdheSB0byBkbyB0aGF0Lg0KPj4+Pg0KPj4+Pj4gUHJldmlvdXNseSBpbiB0aGlz IHRocmVhZCBzb21lb25lIG1lbnRpb25lZCB0aGlzIF9fXyB1c2UgY2FzZSBpbiBsaWJicGYNCj4+ Pj4+IGFuZCBwcm9wb3NlZCBjcmVhdGluZyBzb21ldGhpbmcgbGlrZSBtZWdhIHhkcCBoaW50cyBz dHJ1Y3R1cmUgd2l0aCBhbGwNCj4+Pj4+IGF2YWlsYWJsZSBmaWVsZHMgYWNyb3NzIGFsbCBkcml2 ZXJzLiBBcyBJIHVuZGVyc3RhbmQgdGhpcyBjb3VsZCBzb2x2ZQ0KPj4+Pj4gdGhlIHByb2JsZW0g YWJvdXQgZGVmaW5pbmcgY29ycmVjdCBzdHJ1Y3R1cmUgYXQgYnVpbGQgdGltZS4gQnV0IGhvdyB3 aWxsDQo+Pj4+PiBpdCB3b3JrIHdoZW4gdGhlcmUgd2lsbCBiZSBtb3JlIHRoYW4gb25lIHN0cnVj dHVyZXMgd2l0aCB0aGUgc2FtZSBuYW1lDQo+Pj4+PiBiZWZvcmUgX19fPyBJIG1lYW46DQo+Pj4+ PiBzdHJ1Y3QgeGRwX2hpbnRzX19fbWVnYSBkZWZpbmVkIG9ubHkgaW4gY29yZSBhcHANCj4+Pj4+ IHN0cnVjdCB4ZHBfaGludHNfX19tbHg1IGF2YWlsYWJsZSB3aGVuIG1seDUgZHJpdmVyIGlzIGxv YWRlZA0KPj4+Pj4gc3RydWN0IHhkcF9oaW50c19fX2k0MGUgYXZhaWxhYmxlIHdoZW4gaTQwZSBk cml2ZXIgaXMgbG9hZGVkDQo+Pj4+Pg0KPj4+Pj4gV2hlbiB0aGVyZSB3aWxsIGJlIG9ubHkgb25l IGRyaXZlciBsb2FkZWQgc2hvdWxkIGxpYmJwZiBkbyBjb3JyZWN0DQo+Pj4+PiByZWFsbG9jYXRp b24gb2YgZmllbGRzPyBXaGF0IHdpbGwgaGFwcGVuIHdoZW4gYm90aCBvZiB0aGUgZHJpdmVycyBh cmUNCj4+Pj4+IGxvYWRlZD8NCj4+Pj4NCj4+Pj4gSSB0aGluayB3ZSBkZWZpbml0ZWx5IG5lZWQg dG8gbWFrZSB0aGlzIGVhc3kgZm9yIGRldmVsb3BlcnMgc28gdGhleQ0KPj4+PiBkb24ndCBoYXZl IHRvIGdvIGFuZCBtYW51YWxseSB0cmFjayBkb3duIHRoZSBkcml2ZXIgc3RydWN0cyBhbmQgd3Jp dGUNCj4+Pj4gdGhlIGRpc2FtYmlndWF0aW9uIGNvZGUgZXRjLiBJLmUuLCB0aGUgZXhhbXBsZSBj b2RlIEkgaW5jbHVkZWQgYWJvdmUNCj4+Pj4gdGhhdCBjaGVja3MgdGhlIGZyYW1lIEJURiBJRCBh bmQgZG9lcyB0aGUgbG9hZGluZyBiYXNlZCBvbiBpdCBzaG91bGQgYmUNCj4+Pj4gYXV0by1nZW5l cmF0ZWQuIFdlIGFscmVhZHkgaGF2ZSBzb21lIHByZWNlZGVuY2UgZm9yIGF1dG8tZ2VuZXJhdGVk IGNvZGUNCj4+Pj4gaW4gdm1saW51eC5oIGFuZCB0aGUgYnBmdG9vbCBza2VsZXRvbnMuIFNvIG1h eWJlIHdlIGNvdWxkIGhhdmUgYSBjb21tYW5kDQo+Pj4+IGxpa2UgJ2JwZnRvb2wgZ2VuX3hkcF9t ZXRhIDxmaWVsZHM+JyB3aGljaCB3b3VsZCBnbyBhbmQgbG9va3VwIGFsbCB0aGUNCj4+Pj4gYXZh aWxhYmxlIGRyaXZlciBzdHJ1Y3RzIGFuZCBnZW5lcmF0ZSBhIGNvZGUgaGVscGVyIGZ1bmN0aW9u IHRoYXQgd2lsbA0KPj4+PiBleHRyYWN0IHRoZSBkcml2ZXIgc3RydWN0cyBhbmQgZ2VuZXJhdGUg dGhlIGxvYWRlciBjb2RlPyBTbyB0aGF0IGlmLA0KPj4+PiBzYXksIHlvdSdyZSBpbnRlcmVzdGVk IGluIHJ4aGFzaCBhbmQgdHN0YW1wIHlvdSBjb3VsZCBkbzoNCj4+Pj4NCj4+Pj4gYnBmdG9vbCBn ZW5feGRwX21ldGEgcnhoYXNoIHRzdGFtcCA+IG15X21ldGEuaA0KPj4+Pg0KPj4+PiB3aGljaCB3 b3VsZCB0aGVuIHByb2R1Y2UgbXlfbWV0YS5oIHdpdGggY29udGVudCBsaWtlOg0KPj4+Pg0KPj4+ PiBzdHJ1Y3QgbXlfbWV0YSB7IC8qIGNvbnRhaW5zIGZpZWxkcyBzcGVjaWZpZWQgb24gdGhlIGNv bW1hbmQgbGluZSAqLw0KPj4+PiAgICAgdTMyIHJ4aGFzaDsNCj4+Pj4gICAgIHUzMiB0c3RhbXA7 DQo+Pj4+IH0NCj4+Pj4NCj4+Pj4gc3RydWN0IG1ldGFfbWx4NSB7LypnZW5lcmF0ZWQgZnJvbSBr ZXJuZWwgQlRGICovfTsNCj4+Pj4gc3RydWN0IG1ldGFfaTQwZSB7LypnZW5lcmF0ZWQgZnJvbSBr ZXJuZWwgQlRGICovfTsNCj4+Pj4NCj4+Pj4gc3RhdGljIGlubGluZSBpbnQgZ2V0X3hkcF9tZXRh KHN0cnVjdCB4ZHBfbWQgKmN0eCwgc3RydWN0IG15X21ldGEgKm1ldGEpDQo+Pj4+IHsNCj4+Pj4g ICAgaWYgKGN0eC0+aGFzX2RyaXZlcl9tZXRhKSB7DQo+Pj4+ICAgICAgLyogdGhpcyBzaG91bGQg YmUgYXQgYSB3ZWxsLWtub3duIHBvc2l0aW9uLCBsaWtlIGZpcnN0IChvciBsYXN0KSBpbiBtZXRh IGFyZWEgKi8NCj4+Pj4gICAgICBfX3UzMiAqbWV0YV9idGZfaWQgPSBjdHgtPmRhdGFfbWV0YTsN Cj4+Pj4gICAgICBpZiAoKm1ldGFfYnRmX2lkID09IEJURl9JRF9NTFg1KSB7DQo+Pj4+ICAgICAg ICBzdHJ1Y3QgbWV0YV9tbHg1ICptZXRhID0gY3R4LT5kYXRhX21ldGE7DQo+Pj4+ICAgICAgICBt eV9tZXRhLT5yeGhhc2ggPSBtZXRhLT5yeGhhc2g7DQo+Pj4+ICAgICAgICBteV9tZXRhLT50c3Rh bXAgPSBtZXRhLT50c3RhbXA7DQo+Pj4+ICAgICAgICByZXR1cm4gMDsNCj4+Pj4gICAgICB9IGVs c2UgaWYgKG1ldGFfYnRmX2lkID09IEJURl9JRF9JNDBFKSB7DQo+Pj4+ICAgICAgICBzdHJ1Y3Qg bWV0YV9pNDBlICptZXRhID0gY3R4LT5kYXRhX21ldGE7DQo+Pj4+ICAgICAgICBteV9tZXRhLT5y eGhhc2ggPSBtZXRhLT5yeGhhc2g7DQo+Pj4+ICAgICAgICBteV9tZXRhLT50c3RhbXAgPSBtZXRh LT50c3RhbXA7DQo+Pj4+ICAgICAgICByZXR1cm4gMDsNCj4+Pj4gICAgICB9IC8qIGV0YyAqLw0K Pj4+PiAgICB9DQo+Pj4+ICAgIHJldHVybiAtRU5PRU5UOw0KPj4+PiB9DQo+Pj4NCj4+PiBBY2Nv cmRpbmcgdG8gbWV0YV9idGZfaWQuDQo+Pg0KPj4gSW4gQlBGLXByb2cgKHRoYXQgZ2V0cyBsb2Fk ZWQgYnkgbGliYnBmKSwgdGhlIEJURl9JRF9NTFg1IGFuZCBCVEZfSURfSTQwRQ0KPj4gc2hvdWxk IGJlIHJlcGxhY2VkIGJ5IGJwZl9jb3JlX3R5cGVfaWRfa2VybmVsKCkgY2FsbHMuDQo+Pg0KPj4g SSBoYXZlIGEgY29kZSBleGFtcGxlIGhlcmVbMV0sIHdoZXJlIEkgdXNlIHRoZSB0cmlwbGUtdW5k ZXJzY29yZSB0byBsb29rdXANCj4+IGJ0Zl9pZCA9IGJwZl9jb3JlX3R5cGVfaWRfa2VybmVsKHN0 cnVjdCBza19idWZmX19fbG9jYWwpLg0KPj4NCj4+IEFGQUlLIChBbmRyaWkgY29ycmVjdGx5IG1l IGlmIEknbSB3cm9uZykgSXQgaXMgbGliYnBmIHRoYXQgZG9lcyB0aGUgYnBmX2lkDQo+PiBsb29r dXAgYmVmb3JlIGxvYWRpbmcgdGhlIEJQRi1wcm9nIGludG8gdGhlIGtlcm5lbC4NCj4+DQo+PiBG b3IgQUZfWERQIHdlIG5lZWQgdG8gY29kZSBvdXIgb3duIHNpbWlsYXIgbG9va3VwIG9mIHRoZSBi dGZfaWQuIChJbiB0aGF0DQo+PiBwcm9jZXNzIEkgaW1hZ2luZSB0aGF0IHVzZXJzcGFjZSB0b29s cyBjb3VsZC93b3VsZCByZWFkIHRoZSBCVEYgbWVtYmVyDQo+PiBvZmZzZXRzIGFuZCBjaGVjayBp dCBhZ2FpbnN0IHdoYXQgdGhleSBleHBlY3RlZCkuDQo+Pg0KPj4NCj4+ICAgWzFdIGh0dHBzOi8v Z2l0aHViLmNvbS94ZHAtcHJvamVjdC9icGYtZXhhbXBsZXMvYmxvYi9tYXN0ZXIva3RyYWNlLUNP LVJFL2t0cmFjZTAxX2tlcm4uYyNMMzQtTDU3DQo+Pg0KPiBUaGFua3MgYSBsb3QuIEkgdGVzdGVk IFlvdXIgQ08tUkUgZXhhbXBsZS4gRm9yIGRlZmluZXMgdGhhdCBhcmUgbG9jYXRlZA0KPiBpbiB2 bWxpbnV4IGV2ZXJ5dGhpbmcgd29ya3MgZmluZSAobGlrZSBmb3Igc2tfYnVmZikuIFdoZW4gSSB0 cmllZCB0byBnZXQNCj4gYnRmIGlkIG9mIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiBtb2R1bGUgKGxv YWRlZCBtb2R1bGUsIHN0cnVjdHVyZSBjYW4gYmUNCj4gZmluZCBpbiAvc3lzL2tlcm5lL2J0Zi9t b2R1bGVfbmFtZSkgSSBhbHdheXMgZ2V0IDAgKG5vdCBmb3VuZCkuIERvIFlvdQ0KPiBrbm93IGlm IGJwZl9jb3JlX3R5cGVfaWRfa2VybmVsKCkgc2hvdWxkIGFsc28gc3VwcG9ydCBtb2R1bGVzIGJ0 Zj8NCg0KVGhpcyBtaWdodCBiZSBjYXVzZWQgYnkgZ2l0LXN1Ym1vZHVsZSBsaWJicGYgYmVpbmcg dG9vIG9sZCBpbiANCnhkcC1wcm9qZWN0L2JwZi1leGFtcGxlcyByZXBvLiAgSSB3aWxsIGludmVz dGlnYXRlIGNsb3Nlci4NCg0KDQpJIGRpZCBub3RpY2UgbXkgYnBmdG9vbCAob24gbXkgZGV2ZWwg Ym94KSB3ZXJlIHRvb2wgb2xkLCBhcyBicGZ0b29sIA0KY291bGQgbm90IGR1bXAgaW5mbyBpbiAv c3lzL2tlcm5lL2J0Zi9tb2R1bGVfbmFtZQ0KDQogICAjIGJwZnRvb2wgYnRmIGR1bXAgZmlsZSAv c3lzL2tlcm5lbC9idGYvaWdjIGZvcm1hdCByYXcNCiAgIEVycm9yOiBmYWlsZWQgdG8gbG9hZCBC VEYgZnJvbSAvc3lzL2tlcm5lbC9idGYvaWdjOiBVbmtub3duIGVycm9yIC0yMg0KDQpBZnRlciB1 cGRhdGluZyBicGZ0b29sIGl0IGRvZXMgd29yay4NCg0KPiBCYXNlZCBvbjoNCj4gWzFdIGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2JwZi8yMDIwMTExMDAxMTkzMi4zMjAxNDMwLTUtYW5kcmlpQGtl cm5lbC5vcmcvDQo+IEkgYXNzdW1lIHRoYXQgbW9kdWxlcyBidGZzIGFsc28gYXJlIG1hcmtlZCBh cyBpbi1rZXJuZWwsIGJ1dCBJIGNhbid0DQo+IG1ha2UgaXQgd29ya3Mgd2l0aCBicGZfY29yZV90 eXBlX2lkX2tlcm5lbCgpLiBNeSBjbGFuZyB2ZXJzaW9uIGlzDQo+IDEyLjAuMSwgc28gY2hhbmdl cyBuZWVkZWQgYnkgbW9kdWxlcyBidGYgc2hvdWxkIGJlIHRoZXJlDQo+IFsyXSBodHRwczovL3Jl dmlld3MubGx2bS5vcmcvRDkxNDg5DQo+IA0KPj4+IERvIFlvdSBoYXZlIGFuIGlkZWEgaG93IGRy aXZlciBzaG91bGQgZmlsbCB0aGlzIGZpZWxkPw0KPj4NCj4+IChBbmRyaWkgcGxlYXNlIGNvcnJl Y3RseSBtZSBhcyB0aGlzIGlzIGxpa2VseSB3cm9uZzopDQo+PiBJIGltYWdpbmUgdGhhdCBkcml2 ZXIgd2lsbCBoYXZlIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgYnRmJyBvYmplY3QgYW5kIHRoZQ0K Pj4gYnRmX2lkIGNhbiBiZSByZWFkIHZpYSBidGZfb2JqX2lkKCkgKHRoYXQganVzdCByZXR1cm4g YnRmLT5pZCkuDQo+PiBBcyB0aGlzIGFsc28gYWxsb3dzIGRyaXZlciB0byB0YWtlIHJlZmNudCBv biB0aGUgYnRmLW9iamVjdC4NCj4+IE11Y2ggbGlrZSBFZGVyc29uIGRpZCBpbiBbMl0uDQo+Pg0K Pj4gTWF5YmUgSSBtaXN1bmRlcnN0b29kIHRoZSB1c2Ugb2YgdGhlICdzdHJ1Y3QgYnRmJyBvYmpl Y3QgPw0KPj4NCj4+IE1heWJlIGl0IGlzIHRoZSB3cm9uZyBhcHByb2FjaD8gQXMgdGhlIHBhdGNo c2V0WzJdIGV4cG9ydHMgYnRmX29ial9pZCgpIGFuZA0KPj4gaW50cm9kdWNlZCBoZWxwZXIgZnVu Y3Rpb25zIHRoYXQgY2FuIHJlZ2lzdGVyL3VucmVnaXN0ZXIgYnRmIG9iamVjdHNbM10sDQo+PiB3 aGljaCBJIHNlbnNlIG1pZ2h0IG5vdCBiZSBuZWVkZWQgdG9kYXksIGFzIG1vZHVsZXMgY2FuIGdl dCB0aGVpciBvd24gQlRGDQo+PiBpbmZvIGF1dG9tYXRpY2FsbHkgdG9kYXkuDQo+PiBNYXliZSB0 aGlzIChidGYtPmlkKSBpcyBub3QgdGhlIElEIHdlIGFyZSBsb29raW5nIGZvcj8NCj4+DQo+PiBb Ml0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjEwODAzMDEwMzMxLjM5NDUzLTExLWVk ZXJzb24uZGVzb3V6YUBpbnRlbC5jb20vDQo+PiBbM10NCj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDIxMDgwMzAxMDMzMS4zOTQ1My0yLWVkZXJzb24uZGVzb3V6YUBpbnRlbC5jb20v DQo+Pg0KPiANCj4gQXMgJ3N0cnVjdCBidGYnIG9iamVjdCBkbyBZb3UgbWVhbiBvbmUgbW9kdWxl IGJ0ZiB3aXRoIGFsbCBkZWZpbml0aW9ucw0KPiBvciBzcGVjaWZpYyBzdHJ1Y3R1cmUgYnRmIG9i amVjdD8NCj4gDQo+IEluIGNhc2Ugb2YgWW91ciBleGFtcGxlIFsxXS4gSWYgaW4gZHJpdmVyIHNp ZGUgdGhlcmUgd2lsbCBiZSBjYWxsIHRvIGdldA0KPiBidGYgaWQgb2Ygc2tfYnVmZjoNCj4gaWQg PSBidGZfZmluZF9ieV9uYW1lX2tpbmQodm1saW51eF9idGYsICJza19idWZmIiwgQlRGX0tJTkRf U1RSVUNUKTsNCj4gdGhpcyBpZCB3aWxsIGJlIHRoZSBzYW1lIGFzIGlkIGZyb20gWW91ciBrdHJh Y2UwMSBwcm9ncmFtLiBJIHRoaW5rIHRoaXMNCj4gaXMgaWQgdGhhdCB3ZSBhcmUgbG9va2luZyBm b3IuDQoNClllcywgSSB0aGluayB0aGlzIGlzIHRoZSBJRCB3ZSBzaG91bGQgdXNlLg0KDQpUaGUg J3N0cnVjdCBidGYnIG9iamVjdCBJRCBpcyBzb21ldGhpbmcgZWxzZSBJIHN1c3BlY3Q/IE9yIGl0 IGlzIGFsc28gYSANCnZhbGlkIEJURiBJRD8NCg0KSSB3YW50ZWQgdG8gYXNrIEFuZHJpaSBpZiB0 aGUgSURzIGFyZSB1bmlxdWUgYWNyb3NzIHZtbGludXggYW5kIG1vZHVsZXM/DQoNCkkgc3VzcGVj dCBhcyBpdCBsb29rcyBsaWtlIGtlcm4gdXNlcyB0aGUgSURSIGluZnJhWzBdOg0KICBbMF0gaHR0 cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvY29yZS1hcGkvaWRyLmh0bWwNCg0K DQo+Pj4gaGludHMtPmJ0Zl9pZCA9IGJ0Zl9pZF9ieV9uYW1lKCJzdHJ1Y3QgbWV0YV9pNDBlIik7 IC8qIGZpbGwgYnRmIGlkIGF0DQo+Pj4gY29uZmlnIHRpbWUgKi8NCj4+DQo+PiBZZXMsIGF0IGNv bmZpZyB0aW1lIHRoZSBidGZfaWQgY2FuIGNoYW5nZSAoYW5kIG1heWJlIHdlIHdhbnQgdG8gY2Fj aGUgdGhlDQo+PiBidGZfb2JqX2lkKCkgbG9va3VwIHRvIGF2b2lkIGEgZnVuY3Rpb24gY2FsbCku DQo+Pg0KPj4+IGJ0Zl9pZF9ieV9uYW1lIHdpbGwgZ2V0IG1vZHVsZSBidGYgKG9yIHZtbGludXgg YnRmKSBhbmQgc2VhcmNoIGZvcg0KPj4+IGNvcnJlY3QgbmFtZSBmb3IgZWFjaCBpZHMuIERvZXMg dGhpcyBsb29rIGNvcnJlY3Q/DQo+Pj4NCj4+PiBJcyB0aGVyZSBhbnkgd2F5IGluIGtlcm5lbCB0 byBnZXQgYnRmIGlkIGJhc2VkIG9uIG5hbWUgb3Igd2UgaGF2ZSB0bw0KPj4+IHdyaXRlIGZ1bmN0 aW9ucyBmb3IgdGhpcz8gSSBoYXZlbid0IHNlZW4gY29kZSBmb3IgdGhpcyBjYXNlLCBidXQgbWF5 YmUgSQ0KPj4+IG1pc3NlZCBpdC4NCj4+DQo+PiBUaGVyZSBpcyBhIGZ1bmN0aW9uIG5hbWVkOiBi dGZfZmluZF9ieV9uYW1lX2tpbmQoKQ0KPj4NCj4gVGhhbmtzLCB0aGlzIGlzIHdoYXQgSSBuZWVk ZWQuDQoNCg==