From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mail.toke.dk (Postfix) with ESMTPS id 975599ECC34 for ; Wed, 22 Feb 2023 16:00:37 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=eIkFPVSH DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677078036; 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=/NWRnnHMvtK2me1ArqMwL6SgTiL4oVHuXEGAoMYY7y4=; b=eIkFPVSHVUD3bQxNsXutwktWMY3fo1CMbASTaItCGm2ji+eKH/6V8nfnYQPdgxOyLpEqa1 Two1/ItLWp30N9TCxnLxRSyrCQ31Z7FYFsTnI97DKPLAzmR+nU9cm7UxK0mI/Jjxbrq9QE F8c7lzlaoK3Jyt9UtwBo1diB+X5x66Q= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-83-dZrxYXXbMr-QMEHa-uHlqQ-1; Wed, 22 Feb 2023 10:00:34 -0500 X-MC-Unique: dZrxYXXbMr-QMEHa-uHlqQ-1 Received: by mail-ed1-f69.google.com with SMTP id ec13-20020a0564020d4d00b004a621e993a8so10923878edb.13 for ; Wed, 22 Feb 2023 07:00:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/NWRnnHMvtK2me1ArqMwL6SgTiL4oVHuXEGAoMYY7y4=; b=ABzgRsC0gz9npTg76VbYhhC+4I9g+Zul0Zv3Rj9l9WFkKX3n2cRMiDBPC9NJ2Mb1s7 GKCDVEpqO4foDgI1W0m15ADDYwsioU2B407mikyCh8dmg5lCU9M5U4QZNIybSbJ4I3w7 iYMo/VVe6xgRnaQpxTZIVEmAJO0A+gRjIGlWlmUVCvuZsakoDW+4N0jnxIXo15V/HGPJ HMr6gfBh3XRJKPPBVLf3hkxQXyqtWZemk02QTMxoDJFULjHwLGG3dxR5Z26qMqOvwMM0 aVjYQbydYuBcR8Q4XR91VZOtiMwnxMsXB/WKWwvWm/fyv8S/eaUFJTahkhG6ffK/AoeE 0aQw== X-Gm-Message-State: AO0yUKVxquSy4Boz7z9naEbIpHcHCqhTRBuoO21mTnNJtWSRMtiQYqjq QiOscjChLrK4TJxA2jdC6ZZaYepSYTney3qmny+xDsdgvk5AZGqAtuIbM8ENIPkZEg+KKfF+oGO OCevO9X77+VMFMF/LplgY X-Received: by 2002:a17:906:255b:b0:8af:3fcc:2b05 with SMTP id j27-20020a170906255b00b008af3fcc2b05mr15487027ejb.12.1677078032759; Wed, 22 Feb 2023 07:00:32 -0800 (PST) X-Google-Smtp-Source: AK7set8SuV4PWVVAD/pGDyH2/6OQtfZrZg9ZybeJzL9rpWjnXy8B7cjl0fwAW9/sc/w/Nb58/zF71Q== X-Received: by 2002:a17:906:255b:b0:8af:3fcc:2b05 with SMTP id j27-20020a170906255b00b008af3fcc2b05mr15487004ejb.12.1677078032394; Wed, 22 Feb 2023 07:00:32 -0800 (PST) Received: from [192.168.42.100] (nat-cgn9-185-107-15-52.static.kviknet.net. [185.107.15.52]) by smtp.gmail.com with ESMTPSA id h20-20020a1709070b1400b008b907006d5dsm6518567ejl.173.2023.02.22.07.00.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Feb 2023 07:00:31 -0800 (PST) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: <59aa33b3-e174-b535-cc9f-1d934204271c@redhat.com> Date: Wed, 22 Feb 2023 16:00:30 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 To: Alexander Lobakin , Jesper Dangaard Brouer References: <167604167956.1726972.7266620647404438534.stgit@firesoul> <74330cb7-bf54-6aa0-8a07-c9c557037a31@intel.com> In-Reply-To: <74330cb7-bf54-6aa0-8a07-c9c557037a31@intel.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: SOMHE3MLC5CLRDT53YX22KUMSJ6BODGW X-Message-ID-Hash: SOMHE3MLC5CLRDT53YX22KUMSJ6BODGW 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, bpf@vger.kernel.org, netdev@vger.kernel.org, Stanislav Fomichev , martin.lau@kernel.org, ast@kernel.org, daniel@iogearbox.net, yoong.siang.song@intel.com, anthony.l.nguyen@intel.com, intel-wired-lan@lists.osuosl.org, xdp-hints@xdp-project.net, Sasha Neftin X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf-next V1] igc: enable and fix RX hash usage by netstack List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAyMC8wMi8yMDIzIDE2LjM5LCBBbGV4YW5kZXIgTG9iYWtpbiB3cm90ZToNCj4gRnJvbTog SmVzcGVyIERhbmdhYXJkIEJyb3VlciA8amJyb3VlckByZWRoYXQuY29tPg0KPiBEYXRlOiBUaHUs IDE2IEZlYiAyMDIzIDE3OjQ2OjUzICswMTAwDQo+IA0KPj4NCj4+IE9uIDE0LzAyLzIwMjMgMTQu MjEsIEFsZXhhbmRlciBMb2Jha2luIHdyb3RlOg0KPj4+IEZyb206IEplc3BlciBEYW5nYWFyZCBC cm91ZXIgPGJyb3VlckByZWRoYXQuY29tPg0KPj4+IERhdGU6IEZyaSwgMTAgRmViIDIwMjMgMTY6 MDc6NTkgKzAxMDANCj4+Pg0KPj4+PiBXaGVuIGZ1bmN0aW9uIGlnY19yeF9oYXNoKCkgd2FzIGlu dHJvZHVjZWQgaW4gdjQuMjAgdmlhIGNvbW1pdA0KPj4+PiAwNTA3ZWY4YTAzNzINCj4+Pj4gKCJp Z2M6IEFkZCB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmYXN0cGF0aCBhbmQgaW50ZXJydXB0IGhhbmRs ZXJzIiksIHRoZQ0KPj4+PiBoYXJkd2FyZSB3YXNuJ3QgY29uZmlndXJlZCB0byBwcm92aWRlIFJT UyBoYXNoLCB0aHVzIGl0IG1hZGUgc2Vuc2UgdG8NCj4+Pj4gbm90DQo+Pj4+IGVuYWJsZSBuZXRf ZGV2aWNlIE5FVElGX0ZfUlhIQVNIIGZlYXR1cmUgYml0Lg0KPj4+DQo+Pj4gWy4uLl0NCj4+Pg0K Pj4+PiBAQCAtMzExLDYgKzMxMSw1OCBAQCBleHRlcm4gY2hhciBpZ2NfZHJpdmVyX25hbWVbXTsN Cj4+Pj4gIMKgICNkZWZpbmUgSUdDX01SUUNfUlNTX0ZJRUxEX0lQVjRfVURQwqDCoMKgIDB4MDA0 MDAwMDANCj4+Pj4gIMKgICNkZWZpbmUgSUdDX01SUUNfUlNTX0ZJRUxEX0lQVjZfVURQwqDCoMKg IDB4MDA4MDAwMDANCj4+Pj4gIMKgICsvKiBSWC1kZXNjIFdyaXRlLUJhY2sgZm9ybWF0IFJTUyBU eXBlJ3MgKi8NCj4+Pj4gK2VudW0gaWdjX3Jzc190eXBlX251bSB7DQo+Pj4+ICvCoMKgwqAgSUdD X1JTU19UWVBFX05PX0hBU0jCoMKgwqDCoMKgwqDCoCA9IDAsDQo+Pj4+ICvCoMKgwqAgSUdDX1JT U19UWVBFX0hBU0hfVENQX0lQVjTCoMKgwqAgPSAxLA0KPj4+PiArwqDCoMKgIElHQ19SU1NfVFlQ RV9IQVNIX0lQVjTCoMKgwqDCoMKgwqDCoCA9IDIsDQo+Pj4+ICvCoMKgwqAgSUdDX1JTU19UWVBF X0hBU0hfVENQX0lQVjbCoMKgwqAgPSAzLA0KPj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9IQVNI X0lQVjZfRVjCoMKgwqAgPSA0LA0KPj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9IQVNIX0lQVjbC oMKgwqDCoMKgwqDCoCA9IDUsDQo+Pj4+ICvCoMKgwqAgSUdDX1JTU19UWVBFX0hBU0hfVENQX0lQ VjZfRVjCoMKgwqAgPSA2LA0KPj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9IQVNIX1VEUF9JUFY0 wqDCoMKgID0gNywNCj4+Pj4gK8KgwqDCoCBJR0NfUlNTX1RZUEVfSEFTSF9VRFBfSVBWNsKgwqDC oCA9IDgsDQo+Pj4+ICvCoMKgwqAgSUdDX1JTU19UWVBFX0hBU0hfVURQX0lQVjZfRVjCoMKgwqAg PSA5LA0KPj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9NQVjCoMKgwqDCoMKgwqDCoCA9IDEwLA0K Pj4+PiArfTsNCj4+Pj4gKyNkZWZpbmUgSUdDX1JTU19UWVBFX01BWF9UQUJMRcKgwqDCoMKgwqDC oMKgIDE2DQo+Pj4+ICsjZGVmaW5lIElHQ19SU1NfVFlQRV9NQVNLwqDCoMKgwqDCoMKgwqAgMHhG DQo+Pj4NCj4+PiBHRU5NQVNLKCk/DQo+Pj4NCj4+DQo+PiBobW0uLi4gR0VOTUFTSygzLDApIGxv b2tzIG1vcmUgY29uZnVzaW5nIHRvIG1lLiBUaGUgbWFzayB3ZSBuZWVkIGhlcmUgaXMNCj4+IHNv IHNpbXBsZSB0aGF0IEkgcHJlZmVyIG5vdCB0byBjb21wbGljYXRlIHRoaXMgd2l0aCBHRU5NQVNL Lg0KPj4NCg0KQ2hhbmdlZCBteSBtaW5kLCBJJ20gZ29pbmcgd2l0aCBHRU5NQVNLKDMsMCkgaW4g VjMuDQoNCj4+Pj4gKw0KPj4+PiArLyogaWdjX3Jzc190eXBlIC0gUnggZGVzY3JpcHRvciBSU1Mg dHlwZSBmaWVsZCAqLw0KPj4+PiArc3RhdGljIGlubGluZSB1OCBpZ2NfcnNzX3R5cGUodW5pb24g aWdjX2Fkdl9yeF9kZXNjICpyeF9kZXNjKQ0KPj4+DQo+Pj4gV2h5IHVzZSB0eXBlcyBzaG9ydGVy IHRoYW4gdTMyIG9uIHRoZSBzdGFjaz8NCj4+DQo+PiBDaGFuZ2luZyB0byB1MzIgaW4gVjINCj4+ DQo+Pj4gV2h5IHRoaXMgdW5pb24gaXMgbm90IGNvbnN0IGhlcmUsIHNpbmNlIHRoZXJlIGFyZSBu byBtb2RpZmljYXRpb25zPw0KPj4NCj4+IFN1cmUNCj4+DQo+Pj4+ICt7DQo+Pj4+ICvCoMKgwqAg LyogUlNTIFR5cGUgNC1iaXQgbnVtYmVyOiAwLTkgKGFib3ZlIDkgaXMgcmVzZXJ2ZWQpICovDQo+ Pj4+ICvCoMKgwqAgcmV0dXJuIHJ4X2Rlc2MtPndiLmxvd2VyLmxvX2R3b3JkLmhzX3Jzcy5wa3Rf aW5mbyAmDQo+Pj4+IElHQ19SU1NfVFlQRV9NQVNLOw0KPj4+DQo+Pj4gVGhlIG1vc3QgaW1wb3J0 YW50IEkgd2FudGVkIHRvIG1lbnRpb246IGRvZXNuJ3QgdGhpcyBmdW5jdGlvbiBtYWtlIHRoZQ0K Pj4+IENQVSByZWFkIHRoZSB1bmNhY2hlZCBmaWVsZCBhZ2Fpbiwgd2hpbGUgeW91IGNvdWxkIGp1 c3QgcmVhZCBpdCBvbmNlDQo+Pj4gb250byB0aGUgc3RhY2sgYW5kIHRoZW4gZXh0cmFjdCBhbGwg c3VjaCBkYXRhIGZyb20gdGhlcmU/DQo+Pg0KPj4gSSByZWFsbHkgZG9uJ3QgdGhpbmsgdGhpcyBp cyBhbiBpc3N1ZXMgaGVyZS4gVGhlIGlnY19hZHZfcnhfZGVzYyBpcyBvbmx5DQo+PiAxNiBieXRl cyBhbmQgaXQgc2hvdWxkIGJlIGhvdCBpbiBDUFUgY2FjaGUgYnkgbm93Lg0KPiANCj4gUnggZGVz Y3JpcHRvcnMgYXJlIGxvY2F0ZWQgaW4gdGhlIERNQSBjb2hlcmVudCB6b25lIChhbGxvY2F0ZWQg dmlhDQo+IGRtYV9hbGxvY19jb2hlcmVudCgpKSwgSSBhbSBtaXNzaW5nIHNvbWV0aGluZz8gQmVj YXVzZSBJIHdhcyAoSSBhbSkgc3VyZQ0KPiBDUFUgZG9lc24ndCBjYWNoZSBhbnl0aGluZyBmcm9t IGl0IChhbmQgZG9lc24ndCByZW9yZGVyIHJlYWRzL3dyaXRlcw0KPiBmcm9tL3RvKS4gSSB0aG91 Z2h0IHRoYXQncyB0aGUgcG9pbnQgb2YgY29oZXJlbnQgem9uZXMgLS0geW91IG1heSB0YWxrDQo+ IHRvIGhhcmR3YXJlIHdpdGhvdXQgbmVlZGluZyBmb3Igc3luY2luZy4uLg0KPiANCg0KVGhhdCBp cyBhIGdvb2QgcG9pbnQgYW5kIHlvdSBhcmUgKGxpa2VseSkgcmlnaHQuDQoNCkkgZG8gd2FudCB0 byByZW1pbmQgeW91IHRoYXQgdGhpcyBpcyBhICJmaXhlcyIgcGF0Y2ggdGhhdCBkYXRlcyBiYWNr IHRvDQp2NS4yLiAgVGhpcyBkcml2ZXIgaXMgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmcgY29kZWQg dG8gYWNjZXNzIGRlc2NyaXB0b3INCnRoaXMgd2F5IHZpYSB1bmlvbiBpZ2NfYWR2X3J4X2Rlc2Mu ICBGb3IgYSBmaXhlcyBwYXRjaCwgSSdtIG5vdCBnb2luZyB0bw0KY29kZSB1cCBhIG5ldyBhbmQg bW9yZSBlZmZlY2llbnQgd2F5IG9mIGFjY2Vzc2luZyB0aGUgZGVzY3JpcHRvciBtZW1vcnkuDQoN CklmIHlvdSB0cnVlbHkgYmVsaWV2ZSB0aGlzIG1hdHRlcnMgZm9yIGEgMi41IEdiaXQvcyBkZXZp Y2UsIHRoZW4gc29tZW9uZSANCihlLmcgeW91KSBjYW4gZ28gdGhyb3VnaCB0aGlzIGRyaXZlciBh bmQgY2hhbmdlIHRoaXMgcGF0dGVybiBpbiB0aGUgY29kZS4NCg0KDQo+Pg0KPj4gVG8gYXZvaWQg dGhlIG1vdnp4IEkgaGF2ZSBjaGFuZ2VkIHRoaXMgdG8gZG8gYSB1MzIgcmVhZCBpbnN0ZWFkLg0K Pj4NCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArLyogUGFja2V0IGhlYWRlciB0eXBlIGlkZW50aWZp ZWQgYnkgaGFyZHdhcmUgKHdoZW4gQklUKDExKSBpcyB6ZXJvKS4NCj4+Pj4gKyAqIEV2ZW4gd2hl biBVRFAgcG9ydHMgYXJlIG5vdCBwYXJ0IG9mIFJTUyBoYXNoIEhXIHN0aWxsIHBhcnNlIGFuZA0K Pj4+PiBtYXJrIFVEUCBiaXRzDQo+Pj4+ICsgKi8NCj4+Pj4gK2VudW0gaWdjX3BrdF90eXBlX2Jp dHMgew0KPj4+PiArwqDCoMKgIElHQ19QS1RfVFlQRV9IRFJfSVBWNMKgwqDCoCA9wqDCoMKgIEJJ VCgwKSwNCj4+Pj4gK8KgwqDCoCBJR0NfUEtUX1RZUEVfSERSX0lQVjRfV0lUSF9PUFQ9wqDCoMKg IEJJVCgxKSwgLyogSVB2NCBIZHIgaW5jbHVkZXMNCj4+Pj4gSVAgb3B0aW9ucyAqLw0KPj4+PiAr wqDCoMKgIElHQ19QS1RfVFlQRV9IRFJfSVBWNsKgwqDCoCA9wqDCoMKgIEJJVCgyKSwNCj4+Pj4g K8KgwqDCoCBJR0NfUEtUX1RZUEVfSERSX0lQVjZfV0lUSF9FWFQ9wqDCoMKgIEJJVCgzKSwgLyog SVB2NiBIZHIgaW5jbHVkZXMNCj4+Pj4gZXh0ZW5zaW9ucyAqLw0KPj4+PiArwqDCoMKgIElHQ19Q S1RfVFlQRV9IRFJfTDRfVENQwqDCoMKgID3CoMKgwqAgQklUKDQpLA0KPj4+PiArwqDCoMKgIElH Q19QS1RfVFlQRV9IRFJfTDRfVURQwqDCoMKgID3CoMKgwqAgQklUKDUpLA0KPj4+PiArwqDCoMKg IElHQ19QS1RfVFlQRV9IRFJfTDRfU0NUUD3CoMKgwqAgQklUKDYpLA0KPj4+PiArwqDCoMKgIElH Q19QS1RfVFlQRV9IRFJfTkZTwqDCoMKgID3CoMKgwqAgQklUKDcpLA0KPj4+PiArwqDCoMKgIC8q IEFib3ZlIG9ubHkgdmFsaWQgd2hlbiBCSVQoMTEpIGlzIHplcm8gKi8NCj4+Pj4gK8KgwqDCoCBJ R0NfUEtUX1RZUEVfTDLCoMKgwqDCoMKgwqDCoCA9wqDCoMKgIEJJVCgxMSksDQo+Pj4+ICvCoMKg wqAgSUdDX1BLVF9UWVBFX1ZMQU7CoMKgwqAgPcKgwqDCoCBCSVQoMTIpLA0KPj4+PiArwqDCoMKg IElHQ19QS1RfVFlQRV9NQVNLwqDCoMKgID3CoMKgwqAgMHgxRkZGLCAvKiAxMy1iaXRzICovDQo+ Pj4NCj4+PiBBbHNvIEdFTk1BU0soKS4NCj4+DQo+PiBHRU5NQVNLIHdvdWxkIG1ha2UgbW9yZSBz ZW5zZSBoZXJlLg0KPj4NCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gKy8qIGlnY19wa3RfdHlwZSAt IFJ4IGRlc2NyaXB0b3IgUGFja2V0IHR5cGUgZmllbGQgKi8NCj4+Pj4gK3N0YXRpYyBpbmxpbmUg dTE2IGlnY19wa3RfdHlwZSh1bmlvbiBpZ2NfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MpDQo+Pj4NCj4+ PiBBbHNvIHNob3J0IHR5cGVzIGFuZCBjb25zdHMuDQo+Pj4NCj4+DQo+PiBGaXhlZCBpbiBWMg0K Pj4NCj4+Pj4gK3sNCj4+Pj4gK8KgwqDCoCB1MzIgZGF0YSA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2Mt PndiLmxvd2VyLmxvX2R3b3JkLmRhdGEpOw0KPj4+PiArwqDCoMKgIC8qIFBhY2tldCB0eXBlIGlz IDEzLWJpdHMgLSBhcyBiaXRzICgxNjo0KSBpbiBsb3dlci5sb19kd29yZCovDQo+Pj4+ICvCoMKg wqAgdTE2IHBrdF90eXBlID0gKGRhdGEgPj4gNCkgJiBJR0NfUEtUX1RZUEVfTUFTSzsNCj4+Pg0K Pj4+IFBlcmZlY3QgY2FuZGlkYXRlIGZvciBGSUVMRF9HRVQoKS4gTm8sIGV2ZW4gZm9yIGxlMzJf Z2V0X2JpdHMoKS4NCj4+DQoNCkRyb3BwaW5nIGFsbCB0aGUgY29kZSBhbmQgZGVmaW5lcyBmb3Ig ImlnY19wa3RfdHlwZSIsIGFzIHRoZSBjb2RlIGVuZGVkDQp1cCBub3QgYmVpbmcgdXNlZC4gIEkg c2ltcGx5IGtlcHQgdGhpcyBhcm91bmQgdG8gZG9jdW1lbnQgd2hhdCB3YXMgaW4NCnRoZSBwcm9n cmFtbWVycyBkYXRhc2hlZXQgKHRvIGhlbHAgb3RoZXJzIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJl KS4NCg0KDQo+PiBJIGFkanVzdGVkIHRoaXMsIGJ1dCBJIGNvdWxkIG5vdCBmaW5kIGEgY2VudHJh bCBkZWZpbmUgZm9yIEZJRUxEX0dFVA0KPj4gKGJ1dCBtYW55IGRyaXZlcnMgb3BlbiBjb2RlIHRo aXMpLg0KPiANCj4gPGxpbnV4L2JpdGZpZWxkLmg+LiBJdCBoYXMgRklFTERfe0dFVCxQUkVQfSgp IGFuZCBhbHNvIGJ1aWxkcw0KPiB7dSxfX2xlLF9fYmV9ezgsMTYsMzJ9X3tlbmNvZGUsZ2V0LHJl cGxhY2V9X2JpdHMoKSB2aWEgbWFjcm8gKHRoZSBsYXR0ZXINCj4gZG9lc24ndCBnZXQgaW5kZXhl ZCBieSBFbGl4aXIsIGFzIGl0IGRvZXNuJ3QgcGFyc2UgZnVuY3Rpb25zIGJ1aWx0IHZpYQ0KPiBt YWNyb3MpLg0KDQpUaGFua3MgZm9yIHRoZSBwb2ludGVyIHRvIDxsaW51eC9iaXRmaWVsZC5oPiwg SSdsbCBiZSB1c2luZyB0aGF0IGluIFYzLg0KDQo+Pg0KPj4+IEFsc28gbXkgbm90ZSBhYm92ZSBh Ym91dCBleGNlc3NpdmUgZXhwZW5zaXZlIHJlYWRzLg0KPj4+DQo+Pj4+ICsNCj4+Pj4gK8KgwqDC oCByZXR1cm4gcGt0X3R5cGU7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gIMKgIC8qIEludGVycnVw dCBkZWZpbmVzICovDQo+Pj4+ICDCoCAjZGVmaW5lIElHQ19TVEFSVF9JVFLCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDY0OCAvKiB+NjAwMCBpbnRzL3NlYyAqLw0KPj4+PiAgwqAgI2RlZmluZSBJR0Nf NEtfSVRSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA5ODANCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jDQo+Pj4+IGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMNCj4+Pj4gaW5kZXggOGI1NzJjZDJjMzUwLi40 MmEwNzI1MDlkMmEgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVs L2lnYy9pZ2NfbWFpbi5jDQo+Pj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ln Yy9pZ2NfbWFpbi5jDQo+Pj4+IEBAIC0xNjc3LDE0ICsxNjc3LDQwIEBAIHN0YXRpYyB2b2lkIGln Y19yeF9jaGVja3N1bShzdHJ1Y3QgaWdjX3JpbmcNCj4+Pj4gKnJpbmcsDQo+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgbGUzMl90b19jcHUocnhfZGVzYy0+d2IudXBwZXIuc3RhdHVzX2Vy cm9yKSk7DQo+Pj4+ICDCoCB9DQo+Pj4+ICDCoCArLyogTWFwcGluZyBIVyBSU1MgVHlwZSB0byBl bnVtIHBrdF9oYXNoX3R5cGVzICovDQo+Pj4+ICtzdHJ1Y3QgaWdjX3Jzc190eXBlIHsNCj4+Pj4g K8KgwqDCoCB1OCBoYXNoX3R5cGU7IC8qIGNhbiBjb250YWluIGVudW0gcGt0X2hhc2hfdHlwZXMg Ki8NCj4+Pg0KPj4+IFdoeSBtYWtlIGEgc3RydWN0IGZvciBvbmUgZmllbGQ/ICsgc2hvcnQgdHlw ZSBub3RlDQoNCkFsc28gZml4aW5nIHRoaXMgaW4gVjMuDQoNCj4+Pj4gK30gaWdjX3Jzc190eXBl X3RhYmxlW0lHQ19SU1NfVFlQRV9NQVhfVEFCTEVdID0gew0KPj4+PiArwqDCoMKgIFtJR0NfUlNT X1RZUEVfTk9fSEFTSF0uaGFzaF90eXBlwqDCoMKgwqDCoCA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+ Pj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9IQVNIX1RDUF9JUFY0XS5oYXNoX3R5cGXCoMKgwqDC oMKgID0gUEtUX0hBU0hfVFlQRV9MNCwNCj4+Pj4gK8KgwqDCoCBbSUdDX1JTU19UWVBFX0hBU0hf SVBWNF0uaGFzaF90eXBlwqDCoMKgwqDCoCA9IFBLVF9IQVNIX1RZUEVfTDMsDQo+Pj4+ICvCoMKg wqAgW0lHQ19SU1NfVFlQRV9IQVNIX1RDUF9JUFY2XS5oYXNoX3R5cGXCoMKgwqDCoMKgID0gUEtU X0hBU0hfVFlQRV9MNCwNCj4+Pj4gK8KgwqDCoCBbSUdDX1JTU19UWVBFX0hBU0hfSVBWNl9FWF0u aGFzaF90eXBlwqDCoMKgwqDCoCA9IFBLVF9IQVNIX1RZUEVfTDMsDQo+Pj4+ICvCoMKgwqAgW0lH Q19SU1NfVFlQRV9IQVNIX0lQVjZdLmhhc2hfdHlwZcKgwqDCoMKgwqAgPSBQS1RfSEFTSF9UWVBF X0wzLA0KPj4+PiArwqDCoMKgIFtJR0NfUlNTX1RZUEVfSEFTSF9UQ1BfSVBWNl9FWF0uaGFzaF90 eXBlID0gUEtUX0hBU0hfVFlQRV9MNCwNCj4+Pj4gK8KgwqDCoCBbSUdDX1JTU19UWVBFX0hBU0hf VURQX0lQVjRdLmhhc2hfdHlwZcKgwqDCoMKgwqAgPSBQS1RfSEFTSF9UWVBFX0w0LA0KPj4+PiAr wqDCoMKgIFtJR0NfUlNTX1RZUEVfSEFTSF9VRFBfSVBWNl0uaGFzaF90eXBlwqDCoMKgwqDCoCA9 IFBLVF9IQVNIX1RZUEVfTDQsDQo+Pj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9IQVNIX1VEUF9J UFY2X0VYXS5oYXNoX3R5cGUgPSBQS1RfSEFTSF9UWVBFX0w0LA0KPj4+PiArwqDCoMKgIFsxMF0u aGFzaF90eXBlID0gUEtUX0hBU0hfVFlQRV9MMiwgLyogUlNTIFR5cGUgYWJvdmUgOQ0KPj4+PiAi UmVzZXJ2ZWQiIGJ5IEhXICovDQo+Pj4+ICvCoMKgwqAgWzExXS5oYXNoX3R5cGUgPSBQS1RfSEFT SF9UWVBFX0wyLA0KPj4+PiArwqDCoMKgIFsxMl0uaGFzaF90eXBlID0gUEtUX0hBU0hfVFlQRV9M MiwNCj4+Pj4gK8KgwqDCoCBbMTNdLmhhc2hfdHlwZSA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+Pj4+ ICvCoMKgwqAgWzE0XS5oYXNoX3R5cGUgPSBQS1RfSEFTSF9UWVBFX0wyLA0KPj4+PiArwqDCoMKg IFsxNV0uaGFzaF90eXBlID0gUEtUX0hBU0hfVFlQRV9MMiwNCg0KQ2hhbmdpbmcgdGhlc2UgMTAt MTUgdG8gUEtUX0hBU0hfVFlQRV9OT05FLCB3aGljaCBpcyB6ZXJvLg0KVGhlIEFTTSBnZW5lcmF0 ZWQgdGFibGUgaXMgc21hbGxlciBjb2RlIHNpemUgd2l0aCB6ZXJvIHBhZGRlZCBjb250ZW50Lg0K DQo+Pj4NCj4+PiBXaHkgZGVmaW5lIHRob3NlIGVtcHR5IGlmIHlvdSBjb3VsZCBkbyBhIGJvdW5k IGNoZWNrIGluIHRoZSBjb2RlDQo+Pj4gaW5zdGVhZD8gRS5nLiBgaWYgKHVubGlrZWx5KGJpZ2dl cl90aGFuXzkpKSByZXR1cm4gUEtUX0hBU0hfVFlQRV9MMmAuDQo+Pg0KPj4gSGF2aW5nIGEgYnJh bmNoIGZvciB0aGlzIGlzIGxpa2VseSBzbG93ZXIuwqAgT24gZ29kYm9sdCBJIHNlZSB0aGF0IHRo aXMNCj4+IGdlbmVyYXRlcyBzdWJvcHRpbWFsIGFuZCBsYXJnZXIgY29kZS4NCj4gDQo+IEJ1dCB5 b3UgaGF2ZSB0byB2ZXJpZnkgSFcgb3V0cHV0IGFueXdheSwgcmlnaHQ/IE9yIHdvdWxkIGxpa2Ug dG8gcmVseSBvbg0KPiB0aGF0IG9uIHNvbWUgd2VpcmQgcmV2aXNpb24gaXQgd29uJ3Qgc3BpdCBC SVQoNjkpIG9uIHlvdT8NCj4gDQoNClRoZSB0YWJsZSBpcyBjb25zdHJ1Y3RlZCBzdWNoIHRoYXQg dGhlIGxvb2t1cCB0YWtlcyBjYXJlIG9mICJ2ZXJpZnlpbmciDQp0aGUgSFcgb3V0cHV0LiAgTm90 aWNlIHRoYXQgc29mdHdhcmUgd2lsbCBiaXQgbWFzayB0aGUgbGFzdCA0IGJpdHMsIHRodXMNCnRo ZSBudW1iZXIgd2lsbCBtYXggYmUgMTUuICBObyBtYXR0ZXIgd2hhdCBoYXJkd2FyZSBvdXRwdXRz IGl0IGlzIHNhZmUNCnRvIGRvIGEgbG9va3VwIGluIHRoZSB0YWJsZS4gIElNSE8gaXQgaXMgYSBz aW1wbGUgd2F5IHRvIGF2b2lkIGFuDQp1bm5lY2Vzc2FyeSB2ZXJpZmljYXRpb24gYnJhbmNoIGFu ZCBzdGlsbCBiZSBhYmxlIHRvIGhhbmRsZSBidWdneS93ZWlyZA0KSFcgcmV2cy4NCg0KDQo+Pj4+ ICt9Ow0KPj4+PiArDQo+Pj4+ICDCoCBzdGF0aWMgaW5saW5lIHZvaWQgaWdjX3J4X2hhc2goc3Ry dWN0IGlnY19yaW5nICpyaW5nLA0KPj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bmlvbiBpZ2NfYWR2X3J4X2Rlc2MgKnJ4X2Rlc2MsDQo+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBza19idWZmICpza2IpDQo+ Pj4+ICDCoCB7DQo+Pj4+IC3CoMKgwqAgaWYgKHJpbmctPm5ldGRldi0+ZmVhdHVyZXMgJiBORVRJ Rl9GX1JYSEFTSCkNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHNrYl9zZXRfaGFzaChza2IsDQo+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZTMyX3RvX2NwdShyeF9kZXNjLT53 Yi5sb3dlci5oaV9kd29yZC5yc3MpLA0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgUEtUX0hBU0hfVFlQRV9MMyk7DQo+Pj4+ICvCoMKgwqAgaWYgKHJpbmctPm5ldGRldi0+ ZmVhdHVyZXMgJiBORVRJRl9GX1JYSEFTSCkgew0KPj4+DQo+Pj4gIMKgwqDCoMKgaWYgKCEoZmVh dHVyZSAmIEhBU0gpKQ0KPj4+ICDCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+Pj4NCj4+PiBhbmQg LTEgaW5kZW50IGxldmVsPw0KPj4NCj4+IFVzdWFsbHksIHllcywgSSBhbHNvIHByZWZlciBlYXJs eSByZXR1cm4gc3R5bGUgY29kZS4NCj4+IEZvciBvbmUgSSBqdXN0IGZvbGxvd2VkIHRoZSBleGlz dGluZyBzdHlsZS4NCj4gDQo+IEknZCBub3QgcmVjb21tZW5kICJrZWVwIHRoZSBleGlzdGluZyBz dHlsZSIgb2YgSW50ZWwgZHJpdmVycyAtLSBub3QNCj4gc29tZXRoaW5nIEknZCBsaWtlIHRvIGtl ZXAgYXMgaXMgOkQNCj4gDQo+Pg0KPj4gU2Vjb25kLCBJIHRyaWVkIHRvIGNvZGUgaXQgdXAsIGJ1 dCBpdCBsb29rcyB1Z2x5IGluIHRoaXMgY2FzZSwgYXMgdGhlDQo+PiB2YXJpYWJsZSBkZWZpbmVz IG5lZWQgdG8gZ2V0IG1vdmVkIG91dHNpZGUgdGhlIGlmIHN0YXRlbWVudC4NCj4+DQo+Pj4+ICvC oMKgwqDCoMKgwqDCoCB1MzIgcnNzX2hhc2ggPSBsZTMyX3RvX2NwdShyeF9kZXNjLT53Yi5sb3dl ci5oaV9kd29yZC5yc3MpOw0KPj4+PiArwqDCoMKgwqDCoMKgwqAgdTjCoCByc3NfdHlwZSA9IGln Y19yc3NfdHlwZShyeF9kZXNjKTsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGVudW0gcGt0X2hhc2hf dHlwZXMgaGFzaF90eXBlOw0KPj4+PiArDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBoYXNoX3R5cGUg PSBpZ2NfcnNzX3R5cGVfdGFibGVbcnNzX3R5cGVdLmhhc2hfdHlwZTsNCj4+Pj4gK8KgwqDCoMKg wqDCoMKgIHNrYl9zZXRfaGFzaChza2IsIHJzc19oYXNoLCBoYXNoX3R5cGUpOw0KPj4+PiArwqDC oMKgIH0NCj4+Pj4gIMKgIH0NCj4+Pg0KPj4+IFsuLi5dDQoNCi0tSmVzcGVyDQoNCg==