From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753905AbbBMRer (ORCPT ); Fri, 13 Feb 2015 12:34:47 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58889 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753502AbbBMRep (ORCPT ); Fri, 13 Feb 2015 12:34:45 -0500 Message-ID: <54DE358B.90502@redhat.com> Date: Fri, 13 Feb 2015 12:34:03 -0500 From: Vlad Yasevich Reply-To: vyasevic@redhat.com Organization: Red Hat User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: "Skidmore, Donald C" , Hiroshi Shimamoto , "Kirsher, Jeffrey T" CC: Alexander Duyck , =?UTF-8?B?QmrDuHJuIE1vcms=?= , "e1000-devel@lists.sourceforge.net" , "netdev@vger.kernel.org" , "Choi, Sy Jong" , "linux-kernel@vger.kernel.org" , David Laight , Hayato Momma Subject: Re: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to enable MC promiscuous mode References: <7F861DC0615E0C47A872E6F3C5FCDDBD05E1908D@BPXM14GP.gisp.nec.co.jp> <1423054641.2589.59.camel@jtkirshe-mobl> <7F861DC0615E0C47A872E6F3C5FCDDBD05E26E45@BPXM14GP.gisp.nec.co.jp> <1423470046.27854.7.camel@jtkirshe-mobl> <7F861DC0615E0C47A872E6F3C5FCDDBD05E29F43@BPXM14GP.gisp.nec.co.jp> <7F861DC0615E0C47A872E6F3C5FCDDBD05E2E9CE@BPXM14GP.gisp.nec.co.jp> In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/13/2015 12:26 PM, Skidmore, Donald C wrote: > > >> -----Original Message----- >> From: Hiroshi Shimamoto [mailto:h-shimamoto@ct.jp.nec.com] >> Sent: Thursday, February 12, 2015 8:45 PM >> To: Skidmore, Donald C; Kirsher, Jeffrey T >> Cc: Alexander Duyck; Bjørn Mork; e1000-devel@lists.sourceforge.net; >> netdev@vger.kernel.org; Choi, Sy Jong; linux-kernel@vger.kernel.org; David >> Laight; Hayato Momma >> Subject: RE: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to >> enable MC promiscuous mode >> >>>>> -----Original Message----- >>>>> From: Hiroshi Shimamoto [mailto:h-shimamoto@ct.jp.nec.com] >>>>> Sent: Monday, February 09, 2015 6:29 PM >>>>> To: Kirsher, Jeffrey T >>>>> Cc: Alexander Duyck; Skidmore, Donald C; Bjørn Mork; e1000- >>>>> devel@lists.sourceforge.net; netdev@vger.kernel.org; Choi, Sy >>>>> Jong; linux- kernel@vger.kernel.org; David Laight; Hayato Momma >>>>> Subject: RE: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new >>>>> mbox API to enable MC promiscuous mode >>>>> >>>>>>>>> Can you please fix up your patches based on my tree: >>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/que >>>>>>>>> ue.git >>>>>>>> >>>>>>>> Yes. I haven't noticed your tree. >>>>>>>> Will resend patches against it. >>>>>>>> >>>>>>> >>>>>>> I encountered an issue with your tree, the commit id is below. >>>>>>> >>>>>>> $ git log | head >>>>>>> commit e6f1649780f8f5a87299bf6af04453f93d1e3d5e >>>>>>> Author: Rasmus Villemoes >>>>>>> Date: Fri Jan 23 20:43:14 2015 -0800 >>>>>>> >>>>>>> ethernet: fm10k: Actually drop 4 bits >>>>>>> >>>>>>> The comment explains the intention, but vid has type u16. Before >> the >>>>>>> inner shift, it is promoted to int, which has plenty of space for all >>>>>>> vid's bits, so nothing is dropped. Use a simple mask instead. >>>>>>> >>>>>>> >>>>>>> I use the kernel from your tree in both host and guest. >>>>>>> >>>>>>> Assign an IPv6 for VF in guest. >>>>>>> # ip -6 addr add 2001:db8::18:1/64 dev ens0 >>>>>>> >>>>>>> Send ping packet from other server to the VM. >>>>>>> # ping6 2001:db8::18:1 -I eth0 >>>>>>> >>>>>>> The following message was shown. >>>>>>> ixgbevf 0000:00:08.0: partial checksum but l4 proto=3a! >>>>>>> >>>>>>> If I did the same operation in the host, I saw the same error >>>>>>> message in >>>>> host too. >>>>>>> ixgbe 0000:2d:00.0: partial checksum but l4 proto=3a! >>>>>>> >>>>>>> Do you have any idea about that? >>>>>> >>>>>> Ah, sorry about that, try this tree again: >>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/queue.git >>>>>> >>>>>> That patch was dropped for favor of a patch that Matthew Vick >>>>>> put together (and recently got pushed upstream). So my queue no >>>>>> longer has that patch in the queue, since it got dropped. >>>>> >>>>> I still see the same error, the head id is the below >>>>> >>>>> $ git log | head >>>>> commit a072afb0b45904022b76deef3b770ee9a93cb13a >>>>> Author: Nicholas Krause >>>>> Date: Mon Feb 9 00:27:00 2015 -0800 >>>>> >>>>> igb: Remove outdated fix me comment in the >>>>> function,gb_acquire_swfw_sync_i210 >>>>> >>>>> >>>>> thanks, >>>>> Hiroshi >>>> >>>> I'm having our validation see if they can recreate the same issue >>>> internally. When they get back to me I'll let you >>> know >>>> what we found. >>> >>> We did bisect, and the below looks the culprit; >>> >>> 32dce968dd987adfb0c00946d78dad9154f64759 is the first bad commit >>> commit 32dce968dd987adfb0c00946d78dad9154f64759 >>> Author: Vlad Yasevich >>> Date: Sat Jan 31 10:40:18 2015 -0500 >>> >>> ipv6: Allow for partial checksums on non-ufo packets >>> >>> Currntly, if we are not doing UFO on the packet, all UDP >>> packets will start with CHECKSUM_NONE and thus perform full >>> checksum computations in software even if device support >>> IPv6 checksum offloading. >>> >>> Let's start start with CHECKSUM_PARTIAL if the device >>> supports it and we are sending only a single packet at >>> or below mtu size. >>> >>> Signed-off-by: Vladislav Yasevich >>> Signed-off-by: David S. Miller >>> >>> :040000 040000 4437eaf7e944f5a6136ebf668a256fee688fda3d >> fade8da998d35c8da97a15f0556949ad371e5347 M net >> >> When I reverted the commit, the issue was solved. >> >> thanks, >> Hiroshi > > I believe the issue is that this patch (32dce968dd98 - ipv6: Allow for partial checksums on non-ufo packets) is that it now sets CHECKSUM_PARTIAL on all IPv6 packets including ICMPv6 ones. Our HW (82599) only supports checksum offload on TCP/UDP (NETIF_F_IPV6_CSUM) so we get hung up on the skb's protocol and the fact that it is CHECKSUM_PARTIAL. > > Another thing that confuses me is the feature test in this patch. It checks (rt->dst.dev->features & NETIF_F_V6_CSUM) but NETIF_F_V6_CSUM is a two bit field? > > #define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM) > > So the test would succeed if either bit was high, that doesn't seem right. I cc'd the author so maybe he could clue us in. This has been addressed by: commit bf250a1fa769f2eb8fc7a4e28b3b523e9cb67eef Author: Vlad Yasevich Date: Tue Feb 10 11:37:29 2015 -0500 ipv6: Partial checksum only UDP packets As far the 2 bit issue, GEN_CSUM (HW_SUM) and IPV6_CSUM can not coexist at the same time. See netdev_fix_features(). -vlad > > Thanks, > -Don Skidmore > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vlad Yasevich Subject: Re: [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to enable MC promiscuous mode Date: Fri, 13 Feb 2015 12:34:03 -0500 Message-ID: <54DE358B.90502@redhat.com> References: <7F861DC0615E0C47A872E6F3C5FCDDBD05E1908D@BPXM14GP.gisp.nec.co.jp> <1423054641.2589.59.camel@jtkirshe-mobl> <7F861DC0615E0C47A872E6F3C5FCDDBD05E26E45@BPXM14GP.gisp.nec.co.jp> <1423470046.27854.7.camel@jtkirshe-mobl> <7F861DC0615E0C47A872E6F3C5FCDDBD05E29F43@BPXM14GP.gisp.nec.co.jp> <7F861DC0615E0C47A872E6F3C5FCDDBD05E2E9CE@BPXM14GP.gisp.nec.co.jp> Reply-To: vyasevic@redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "e1000-devel@lists.sourceforge.net" , "netdev@vger.kernel.org" , "Choi, Sy Jong" , "linux-kernel@vger.kernel.org" , David Laight , Hayato Momma , =?UTF-8?B?QmrDuHJuIE1vcms=?= To: "Skidmore, Donald C" , Hiroshi Shimamoto , "Kirsher, Jeffrey T" Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: e1000-devel-bounces@lists.sourceforge.net List-Id: netdev.vger.kernel.org T24gMDIvMTMvMjAxNSAxMjoyNiBQTSwgU2tpZG1vcmUsIERvbmFsZCBDIHdyb3RlOgo+IAo+IAo+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBIaXJvc2hpIFNoaW1hbW90byBb bWFpbHRvOmgtc2hpbWFtb3RvQGN0LmpwLm5lYy5jb21dCj4+IFNlbnQ6IFRodXJzZGF5LCBGZWJy dWFyeSAxMiwgMjAxNSA4OjQ1IFBNCj4+IFRvOiBTa2lkbW9yZSwgRG9uYWxkIEM7IEtpcnNoZXIs IEplZmZyZXkgVAo+PiBDYzogQWxleGFuZGVyIER1eWNrOyBCasO4cm4gTW9yazsgZTEwMDAtZGV2 ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Owo+PiBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBDaG9p LCBTeSBKb25nOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBEYXZpZAo+PiBMYWlnaHQ7 IEhheWF0byBNb21tYQo+PiBTdWJqZWN0OiBSRTogW0UxMDAwLWRldmVsXSBbUEFUQ0ggMS8zXSBp eGdiZSwgaXhnYmV2ZjogQWRkIG5ldyBtYm94IEFQSSB0bwo+PiBlbmFibGUgTUMgcHJvbWlzY3Vv dXMgbW9kZQo+Pgo+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4+PiBGcm9tOiBI aXJvc2hpIFNoaW1hbW90byBbbWFpbHRvOmgtc2hpbWFtb3RvQGN0LmpwLm5lYy5jb21dCj4+Pj4+ IFNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMDksIDIwMTUgNjoyOSBQTQo+Pj4+PiBUbzogS2lyc2hl ciwgSmVmZnJleSBUCj4+Pj4+IENjOiBBbGV4YW5kZXIgRHV5Y2s7IFNraWRtb3JlLCBEb25hbGQg QzsgQmrDuHJuIE1vcms7IGUxMDAwLQo+Pj4+PiBkZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ7 IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IENob2ksIFN5Cj4+Pj4+IEpvbmc7IGxpbnV4LSBrZXJu ZWxAdmdlci5rZXJuZWwub3JnOyBEYXZpZCBMYWlnaHQ7IEhheWF0byBNb21tYQo+Pj4+PiBTdWJq ZWN0OiBSRTogW0UxMDAwLWRldmVsXSBbUEFUQ0ggMS8zXSBpeGdiZSwgaXhnYmV2ZjogQWRkIG5l dwo+Pj4+PiBtYm94IEFQSSB0byBlbmFibGUgTUMgcHJvbWlzY3VvdXMgbW9kZQo+Pj4+Pgo+Pj4+ Pj4+Pj4gQ2FuIHlvdSBwbGVhc2UgZml4IHVwIHlvdXIgcGF0Y2hlcyBiYXNlZCBvbiBteSB0cmVl Ogo+Pj4+Pj4+Pj4gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0 L2praXJzaGVyL3F1ZQo+Pj4+Pj4+Pj4gdWUuZ2l0Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFllcy4gSSBo YXZlbid0IG5vdGljZWQgeW91ciB0cmVlLgo+Pj4+Pj4+PiBXaWxsIHJlc2VuZCBwYXRjaGVzIGFn YWluc3QgaXQuCj4+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBJIGVuY291bnRlcmVkIGFuIGlzc3Vl IHdpdGggeW91ciB0cmVlLCB0aGUgY29tbWl0IGlkIGlzIGJlbG93Lgo+Pj4+Pj4+Cj4+Pj4+Pj4g JCBnaXQgbG9nIHwgaGVhZAo+Pj4+Pj4+IGNvbW1pdCBlNmYxNjQ5NzgwZjhmNWE4NzI5OWJmNmFm MDQ0NTNmOTNkMWUzZDVlCj4+Pj4+Pj4gQXV0aG9yOiBSYXNtdXMgVmlsbGVtb2VzIDxsaW51eEBy YXNtdXN2aWxsZW1vZXMuZGs+Cj4+Pj4+Pj4gRGF0ZTogICBGcmkgSmFuIDIzIDIwOjQzOjE0IDIw MTUgLTA4MDAKPj4+Pj4+Pgo+Pj4+Pj4+ICAgICBldGhlcm5ldDogZm0xMGs6IEFjdHVhbGx5IGRy b3AgNCBiaXRzCj4+Pj4+Pj4KPj4+Pj4+PiAgICAgVGhlIGNvbW1lbnQgZXhwbGFpbnMgdGhlIGlu dGVudGlvbiwgYnV0IHZpZCBoYXMgdHlwZSB1MTYuIEJlZm9yZQo+PiB0aGUKPj4+Pj4+PiAgICAg aW5uZXIgc2hpZnQsIGl0IGlzIHByb21vdGVkIHRvIGludCwgd2hpY2ggaGFzIHBsZW50eSBvZiBz cGFjZSBmb3IgYWxsCj4+Pj4+Pj4gICAgIHZpZCdzIGJpdHMsIHNvIG5vdGhpbmcgaXMgZHJvcHBl ZC4gVXNlIGEgc2ltcGxlIG1hc2sgaW5zdGVhZC4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gSSB1 c2UgdGhlIGtlcm5lbCBmcm9tIHlvdXIgdHJlZSBpbiBib3RoIGhvc3QgYW5kIGd1ZXN0Lgo+Pj4+ Pj4+Cj4+Pj4+Pj4gQXNzaWduIGFuIElQdjYgZm9yIFZGIGluIGd1ZXN0Lgo+Pj4+Pj4+ICMgaXAg LTYgYWRkciBhZGQgMjAwMTpkYjg6OjE4OjEvNjQgZGV2IGVuczAKPj4+Pj4+Pgo+Pj4+Pj4+IFNl bmQgcGluZyBwYWNrZXQgZnJvbSBvdGhlciBzZXJ2ZXIgdG8gdGhlIFZNLgo+Pj4+Pj4+ICMgcGlu ZzYgIDIwMDE6ZGI4OjoxODoxIC1JIGV0aDAKPj4+Pj4+Pgo+Pj4+Pj4+IFRoZSBmb2xsb3dpbmcg bWVzc2FnZSB3YXMgc2hvd24uCj4+Pj4+Pj4gaXhnYmV2ZiAwMDAwOjAwOjA4LjA6IHBhcnRpYWwg Y2hlY2tzdW0gYnV0IGw0IHByb3RvPTNhIQo+Pj4+Pj4+Cj4+Pj4+Pj4gSWYgSSBkaWQgdGhlIHNh bWUgb3BlcmF0aW9uIGluIHRoZSBob3N0LCBJIHNhdyB0aGUgc2FtZSBlcnJvcgo+Pj4+Pj4+IG1l c3NhZ2UgaW4KPj4+Pj4gaG9zdCB0b28uCj4+Pj4+Pj4gaXhnYmUgMDAwMDoyZDowMC4wOiBwYXJ0 aWFsIGNoZWNrc3VtIGJ1dCBsNCBwcm90bz0zYSEKPj4+Pj4+Pgo+Pj4+Pj4+IERvIHlvdSBoYXZl IGFueSBpZGVhIGFib3V0IHRoYXQ/Cj4+Pj4+Pgo+Pj4+Pj4gQWgsIHNvcnJ5IGFib3V0IHRoYXQs IHRyeSB0aGlzIHRyZWUgYWdhaW46Cj4+Pj4+PiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt L2xpbnV4L2tlcm5lbC9naXQvamtpcnNoZXIvcXVldWUuZ2l0Cj4+Pj4+Pgo+Pj4+Pj4gVGhhdCBw YXRjaCB3YXMgZHJvcHBlZCBmb3IgZmF2b3Igb2YgYSBwYXRjaCB0aGF0IE1hdHRoZXcgVmljawo+ Pj4+Pj4gcHV0IHRvZ2V0aGVyIChhbmQgcmVjZW50bHkgZ290IHB1c2hlZCB1cHN0cmVhbSkuICBT byBteSBxdWV1ZSBubwo+Pj4+Pj4gbG9uZ2VyIGhhcyB0aGF0IHBhdGNoIGluIHRoZSBxdWV1ZSwg c2luY2UgaXQgZ290IGRyb3BwZWQuCj4+Pj4+Cj4+Pj4+IEkgc3RpbGwgc2VlIHRoZSBzYW1lIGVy cm9yLCB0aGUgaGVhZCBpZCBpcyB0aGUgYmVsb3cKPj4+Pj4KPj4+Pj4gJCBnaXQgbG9nIHwgaGVh ZAo+Pj4+PiBjb21taXQgYTA3MmFmYjBiNDU5MDQwMjJiNzZkZWVmM2I3NzBlZTlhOTNjYjEzYQo+ Pj4+PiBBdXRob3I6IE5pY2hvbGFzIEtyYXVzZSA8eGVyb2ZvaWZ5QGdtYWlsLmNvbT4KPj4+Pj4g RGF0ZTogICBNb24gRmViIDkgMDA6Mjc6MDAgMjAxNSAtMDgwMAo+Pj4+Pgo+Pj4+PiAgICAgaWdi OiBSZW1vdmUgb3V0ZGF0ZWQgZml4IG1lIGNvbW1lbnQgaW4gdGhlCj4+Pj4+IGZ1bmN0aW9uLGdi X2FjcXVpcmVfc3dmd19zeW5jX2kyMTAKPj4+Pj4KPj4+Pj4KPj4+Pj4gdGhhbmtzLAo+Pj4+PiBI aXJvc2hpCj4+Pj4KPj4+PiBJJ20gaGF2aW5nIG91ciB2YWxpZGF0aW9uIHNlZSBpZiB0aGV5IGNh biByZWNyZWF0ZSB0aGUgc2FtZSBpc3N1ZQo+Pj4+IGludGVybmFsbHkuICBXaGVuIHRoZXkgZ2V0 IGJhY2sgdG8gbWUgSSdsbCBsZXQgeW91Cj4+PiBrbm93Cj4+Pj4gd2hhdCB3ZSBmb3VuZC4KPj4+ Cj4+PiBXZSBkaWQgYmlzZWN0LCBhbmQgdGhlIGJlbG93IGxvb2tzIHRoZSBjdWxwcml0Owo+Pj4K Pj4+IDMyZGNlOTY4ZGQ5ODdhZGZiMGMwMDk0NmQ3OGRhZDkxNTRmNjQ3NTkgaXMgdGhlIGZpcnN0 IGJhZCBjb21taXQKPj4+IGNvbW1pdCAzMmRjZTk2OGRkOTg3YWRmYjBjMDA5NDZkNzhkYWQ5MTU0 ZjY0NzU5Cj4+PiBBdXRob3I6IFZsYWQgWWFzZXZpY2ggPHZ5YXNldmljaEBnbWFpbC5jb20+Cj4+ PiBEYXRlOiAgIFNhdCBKYW4gMzEgMTA6NDA6MTggMjAxNSAtMDUwMAo+Pj4KPj4+ICAgICBpcHY2 OiBBbGxvdyBmb3IgcGFydGlhbCBjaGVja3N1bXMgb24gbm9uLXVmbyBwYWNrZXRzCj4+Pgo+Pj4g ICAgIEN1cnJudGx5LCBpZiB3ZSBhcmUgbm90IGRvaW5nIFVGTyBvbiB0aGUgcGFja2V0LCBhbGwg VURQCj4+PiAgICAgcGFja2V0cyB3aWxsIHN0YXJ0IHdpdGggQ0hFQ0tTVU1fTk9ORSBhbmQgdGh1 cyBwZXJmb3JtIGZ1bGwKPj4+ICAgICBjaGVja3N1bSBjb21wdXRhdGlvbnMgaW4gc29mdHdhcmUg ZXZlbiBpZiBkZXZpY2Ugc3VwcG9ydAo+Pj4gICAgIElQdjYgY2hlY2tzdW0gb2ZmbG9hZGluZy4K Pj4+Cj4+PiAgICAgTGV0J3Mgc3RhcnQgc3RhcnQgd2l0aCBDSEVDS1NVTV9QQVJUSUFMIGlmIHRo ZSBkZXZpY2UKPj4+ICAgICBzdXBwb3J0cyBpdCBhbmQgd2UgYXJlIHNlbmRpbmcgb25seSBhIHNp bmdsZSBwYWNrZXQgYXQKPj4+ICAgICBvciBiZWxvdyBtdHUgc2l6ZS4KPj4+Cj4+PiAgICAgU2ln bmVkLW9mZi1ieTogVmxhZGlzbGF2IFlhc2V2aWNoIDx2eWFzZXZpY0ByZWRoYXQuY29tPgo+Pj4g ICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K Pj4+Cj4+PiA6MDQwMDAwIDA0MDAwMCA0NDM3ZWFmN2U5NDRmNWE2MTM2ZWJmNjY4YTI1NmZlZTY4 OGZkYTNkCj4+IGZhZGU4ZGE5OThkMzVjOGRhOTdhMTVmMDU1Njk0OWFkMzcxZTUzNDcgTSAgICAg IG5ldAo+Pgo+PiBXaGVuIEkgcmV2ZXJ0ZWQgdGhlIGNvbW1pdCwgdGhlIGlzc3VlIHdhcyBzb2x2 ZWQuCj4+Cj4+IHRoYW5rcywKPj4gSGlyb3NoaQo+IAo+IEkgYmVsaWV2ZSB0aGUgaXNzdWUgaXMg dGhhdCB0aGlzIHBhdGNoICgzMmRjZTk2OGRkOTggLSBpcHY2OiBBbGxvdyBmb3IgcGFydGlhbCBj aGVja3N1bXMgb24gbm9uLXVmbyBwYWNrZXRzKSBpcyB0aGF0IGl0IG5vdyBzZXRzIENIRUNLU1VN X1BBUlRJQUwgb24gYWxsIElQdjYgcGFja2V0cyBpbmNsdWRpbmcgSUNNUHY2IG9uZXMuICBPdXIg SFcgKDgyNTk5KSBvbmx5IHN1cHBvcnRzIGNoZWNrc3VtIG9mZmxvYWQgb24gVENQL1VEUCAoTkVU SUZfRl9JUFY2X0NTVU0pIHNvIHdlIGdldCBodW5nIHVwIG9uIHRoZSBza2IncyBwcm90b2NvbCBh bmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBDSEVDS1NVTV9QQVJUSUFMLgo+IAo+IEFub3RoZXIgdGhp bmcgdGhhdCBjb25mdXNlcyBtZSBpcyB0aGUgZmVhdHVyZSB0ZXN0IGluIHRoaXMgcGF0Y2guICBJ dCBjaGVja3MgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVjZfQ1NVTSkgYnV0IE5F VElGX0ZfVjZfQ1NVTSBpcyBhIHR3byBiaXQgZmllbGQ/ICAKPiAKPiAjZGVmaW5lIE5FVElGX0Zf VjZfQ1NVTSAgICAgICAgIChORVRJRl9GX0dFTl9DU1VNIHwgTkVUSUZfRl9JUFY2X0NTVU0pCj4g Cj4gU28gdGhlIHRlc3Qgd291bGQgc3VjY2VlZCBpZiBlaXRoZXIgYml0IHdhcyBoaWdoLCB0aGF0 IGRvZXNuJ3Qgc2VlbSByaWdodC4gIEkgY2MnZCB0aGUgYXV0aG9yIHNvIG1heWJlIGhlIGNvdWxk IGNsdWUgdXMgaW4uCgpUaGlzIGhhcyBiZWVuIGFkZHJlc3NlZCBieToKY29tbWl0IGJmMjUwYTFm YTc2OWYyZWI4ZmM3YTRlMjhiM2I1MjNlOWNiNjdlZWYKQXV0aG9yOiBWbGFkIFlhc2V2aWNoIDx2 eWFzZXZpY2hAZ21haWwuY29tPgpEYXRlOiAgIFR1ZSBGZWIgMTAgMTE6Mzc6MjkgMjAxNSAtMDUw MAoKICAgIGlwdjY6IFBhcnRpYWwgY2hlY2tzdW0gb25seSBVRFAgcGFja2V0cwoKCkFzIGZhciB0 aGUgMiBiaXQgaXNzdWUsIEdFTl9DU1VNIChIV19TVU0pIGFuZCBJUFY2X0NTVU0gY2FuIG5vdCBj b2V4aXN0IGF0IHRoZSBzYW1lIHRpbWUuClNlZSBuZXRkZXZfZml4X2ZlYXR1cmVzKCkuCgotdmxh ZAoKPiAKPiBUaGFua3MsCj4gLURvbiBTa2lkbW9yZSA8ZG9uYWxkLmMuc2tpZG1vcmVAaW50ZWwu Y29tPgo+IAo+IAoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEaXZlIGludG8gdGhlIFdvcmxkIG9m IFBhcmFsbGVsIFByb2dyYW1taW5nLiBUaGUgR28gUGFyYWxsZWwgV2Vic2l0ZSwKc3BvbnNvcmVk IGJ5IEludGVsIGFuZCBkZXZlbG9wZWQgaW4gcGFydG5lcnNoaXAgd2l0aCBTbGFzaGRvdCBNZWRp YSwgaXMgeW91cgpodWIgZm9yIGFsbCB0aGluZ3MgcGFyYWxsZWwgc29mdHdhcmUgZGV2ZWxvcG1l bnQsIGZyb20gd2Vla2x5IHRob3VnaHQKbGVhZGVyc2hpcCBibG9ncyB0byBuZXdzLCB2aWRlb3Ms IGNhc2Ugc3R1ZGllcywgdHV0b3JpYWxzIGFuZCBtb3JlLiBUYWtlIGEKbG9vayBhbmQgam9pbiB0 aGUgY29udmVyc2F0aW9uIG5vdy4gaHR0cDovL2dvcGFyYWxsZWwuc291cmNlZm9yZ2UubmV0Lwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpFMTAwMC1kZXZl bCBtYWlsaW5nIGxpc3QKRTEwMDAtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2UxMDAwLWRldmVsClRvIGxlYXJu IG1vcmUgYWJvdXQgSW50ZWwmIzE3NDsgRXRoZXJuZXQsIHZpc2l0IGh0dHA6Ly9jb21tdW5pdGll cy5pbnRlbC5jb20vY29tbXVuaXR5L3dpcmVkCg==