From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9519C00A5A for ; Tue, 17 Jan 2023 23:10:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229913AbjAQXKN (ORCPT ); Tue, 17 Jan 2023 18:10:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230081AbjAQXIK (ORCPT ); Tue, 17 Jan 2023 18:08:10 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69F044FC30 for ; Tue, 17 Jan 2023 14:42:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673995331; 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=Ckm+P7EhQq3tMMMLdp8ksaD5nCqQSrg8dglbOqFaLx0=; b=KELBuq9um50YUfHZJK+g/UZsOwq3A4BBHkXMZ7PhsIRMOEED8tkg9vnuBuR8D8TylAf0eP ywoiaUXa99Rmk8YTJJ+dDma3fiWis9+jZYlzlN4NzjBxFPhnfLhazwgB5VCHVJra6iJADj zcNLwWdXfl6X5DAckXQWNBl3l+yUcy4= Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-625-bVJi3x5GM-62gpgnUnsZ9Q-1; Tue, 17 Jan 2023 17:42:10 -0500 X-MC-Unique: bVJi3x5GM-62gpgnUnsZ9Q-1 Received: by mail-ej1-f71.google.com with SMTP id oz11-20020a1709077d8b00b007c0dd8018b6so22661406ejc.17 for ; Tue, 17 Jan 2023 14:42:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ckm+P7EhQq3tMMMLdp8ksaD5nCqQSrg8dglbOqFaLx0=; b=Nkx/FLLT0lB4SjeqAt5Uc53kNr/u1KXU9xQEY2uFvISDngwKq2pved+BiDohB9dApV F2su7sUyjQN5PngDpIgap6x/q5/ttt/Vy+BQ1s5iZAGfhwF7PuVGiSRS1vN1+HPcFp89 fOyIk9IwWS8Ya4n0YmFrFqonbG8zCN9zQdRAomzERGPMkQDroaNzgu1JRwoM52nVj8Jv oRWW9ZVu7actDGDWVphjnZiyZWWejt4QTfBSP+xzP/ORi3/LwxEUCe5i7k3Po2jGoCPV xgcrr9FquBCRZWn5ZH9B2frEXu70RUwzarP/Eln1UqN7zzeJDeLtPxD8ZMk7Eu+3gg9w ij4g== X-Gm-Message-State: AFqh2krEzfIooXeZie22n1Neu/UFY5dP/MD3UgbpKpIgfw3zhJHBRooM 7DrKpOtXzNL1GuYvOhnhLNTeMfYuokam9IzaVw+MvQ4fNsh27mxdLA83jlK7f0xonEc9vv+StJf VzMsnu9GjBYuN X-Received: by 2002:a05:6402:524f:b0:49e:498c:5e16 with SMTP id t15-20020a056402524f00b0049e498c5e16mr233094edd.30.1673995328855; Tue, 17 Jan 2023 14:42:08 -0800 (PST) X-Google-Smtp-Source: AMrXdXuDr1iHNfiv83GpdqhTGHecaw7zHQhGvun8ZtQyqVRaaW66IzMTkNbHSjSCSrZOSdtI91JbXg== X-Received: by 2002:a05:6402:524f:b0:49e:498c:5e16 with SMTP id t15-20020a056402524f00b0049e498c5e16mr233070edd.30.1673995328510; Tue, 17 Jan 2023 14:42:08 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id ku12-20020a170907788c00b0084d4564c65fsm11480669ejc.42.2023.01.17.14.42.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 14:42:07 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 385EA9011B1; Tue, 17 Jan 2023 23:42:07 +0100 (CET) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Niklas =?utf-8?Q?S=C3=B6derlund?= Cc: Lorenzo Bianconi , bpf@vger.kernel.org, netdev@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, davem@davemloft.net, kuba@kernel.org, hawk@kernel.org, pabeni@redhat.com, edumazet@google.com, memxor@gmail.com, alardam@gmail.com, saeedm@nvidia.com, anthony.l.nguyen@intel.com, gospo@broadcom.com, vladimir.oltean@nxp.com, nbd@nbd.name, john@phrozen.org, leon@kernel.org, simon.horman@corigine.com, aelior@marvell.com, christophe.jaillet@wanadoo.fr, ecree.xilinx@gmail.com, mst@redhat.com, bjorn@kernel.org, magnus.karlsson@intel.com, maciej.fijalkowski@intel.com, intel-wired-lan@lists.osuosl.org, lorenzo.bianconi@redhat.com Subject: Re: [RFC v2 bpf-next 2/7] drivers: net: turn on XDP features In-Reply-To: References: <87y1q0bz6m.fsf@toke.dk> <87sfg8byek.fsf@toke.dk> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 17 Jan 2023 23:42:07 +0100 Message-ID: <87pmbcbx6o.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Niklas S=C3=B6derlund writes: > On 2023-01-17 23:15:47 +0100, Toke H=C3=B8iland-J=C3=B8rgensen wrote: >> Niklas S=C3=B6derlund writes: >>=20 >> > Hi Toke, >> > >> > On 2023-01-17 22:58:57 +0100, Toke H=C3=B8iland-J=C3=B8rgensen wrote: >> >> Niklas S=C3=B6derlund writes: >> >>=20 >> >> > Hi Lorenzo and Marek, >> >> > >> >> > Thanks for your work. >> >> > >> >> > On 2023-01-14 16:54:32 +0100, Lorenzo Bianconi wrote: >> >> > >> >> > [...] >> >> > >> >> >>=20 >> >> >> Turn 'hw-offload' feature flag on for: >> >> >> - netronome (nfp) >> >> >> - netdevsim. >> >> > >> >> > Is there a definition of the 'hw-offload' written down somewhere? F= rom=20 >> >> > reading this series I take it is the ability to offload a BPF progr= am?=20=20 >> >>=20 >> >> Yeah, basically this means "allows loading and attaching programs in >> >> XDP_MODE_HW", I suppose :) >> >>=20 >> >> > It would also be interesting to read documentation for the other fl= ags=20 >> >> > added in this series. >> >>=20 >> >> Yup, we should definitely document them :) >> >>=20 >> >> > [...] >> >> > >> >> >> diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c=20 >> >> >> b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c >> >> >> index 18fc9971f1c8..5a8ddeaff74d 100644 >> >> >> --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c >> >> >> +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c >> >> >> @@ -2529,10 +2529,14 @@ static void nfp_net_netdev_init(struct nfp= _net *nn) >> >> >> netdev->features &=3D ~NETIF_F_HW_VLAN_STAG_RX; >> >> >> nn->dp.ctrl &=3D ~NFP_NET_CFG_CTRL_RXQINQ; >> >> >>=20=20 >> >> >> + nn->dp.netdev->xdp_features =3D NETDEV_XDP_ACT_BASIC | >> >> >> + NETDEV_XDP_ACT_HW_OFFLOAD; >> >> > >> >> > If my assumption about the 'hw-offload' flag above is correct I thi= nk=20 >> >> > NETDEV_XDP_ACT_HW_OFFLOAD should be conditioned on that the BPF fir= mware=20 >> >> > flavor is in use. >> >> > >> >> > nn->dp.netdev->xdp_features =3D NETDEV_XDP_ACT_BASIC; >> >> > >> >> > if (nn->app->type->id =3D=3D NFP_APP_BPF_NIC) >> >> > nn->dp.netdev->xdp_features |=3D NETDEV_XDP_ACT_HW_OFFLOAD; >> >> > >> >> >> + >> >> >> /* Finalise the netdev setup */ >> >> >> switch (nn->dp.ops->version) { >> >> >> case NFP_NFD_VER_NFD3: >> >> >> netdev->netdev_ops =3D &nfp_nfd3_netdev_ops; >> >> >> + nn->dp.netdev->xdp_features |=3D NETDEV_XDP_ACT_XSK_ZEROCOPY; >> >> >> break; >> >> >> case NFP_NFD_VER_NFDK: >> >> >> netdev->netdev_ops =3D &nfp_nfdk_netdev_ops; >> >> > >> >> > This is also a wrinkle I would like to understand. Currently NFP su= pport=20 >> >> > zero-copy on NFD3, but not for offloaded BPF programs. But with the= BPF=20 >> >> > firmware flavor running the device can still support zero-copy for= =20 >> >> > non-offloaded programs. >> >> > >> >> > Is it a problem that the driver advertises support for both=20 >> >> > hardware-offload _and_ zero-copy at the same time, even if they can= 't be=20 >> >> > used together but separately? >> >>=20 >> >> Hmm, so the idea with this is to only expose feature flags that are >> >> supported "right now" (you'll note that some of the drivers turn the >> >> REDIRECT_TARGET flag on and off at runtime). Having features that are >> >> "supported but in a different configuration" is one of the points of >> >> user confusion we want to clear up with the explicit flags. >> >>=20 >> >> So I guess it depends a little bit what you mean by "can't be used >> >> together"? I believe it's possible to load two programs at the same >> >> time, one in HW mode and one in native (driver) mode, right? In this >> >> case, could the driver mode program use XSK zerocopy while the HW mode >> >> program is also loaded? >> > >> > Exactly, this is my concern. Two programs can be loaded at the same=20 >> > time, one in HW mode and one in native mode. The program in native mod= e=20 >> > can use zero-copy at the same time as another program runs in HW mode. >> > >> > But the program running in HW mode can never use zero-copy. >>=20 >> Hmm, but zero-copy is an AF_XDP feature, and AFAIK offloaded programs >> can't use AF_XDP at all? So the zero-copy "feature" is available on the >> hardware, it's just intrinsic to that feature that it doesn't work on >> offloaded programs? > > That is true, so this is indeed not an issue then. Thanks for the=20 > clarification. Cool - you're welcome :) -Toke From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 09961C38147 for ; Tue, 17 Jan 2023 22:42:18 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 69E1F819CC; Tue, 17 Jan 2023 22:42:18 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 69E1F819CC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1673995338; bh=J5JEYc9JO5pBsvwpxKWZ7KBmRapEt42XXc+104JhKfA=; h=From:To:In-Reply-To:References:Date:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=Om3+3H/k91H4LMSJd+jYZR0WYPrGmCTk6XVP6SUKJSNNQvPtC4eLqI8lTIUwnNwX8 G65vwZPC/g6c+Ln1H/GzqIwbJG8jnTZ1WUiskrU8bClysw6ItkD0YMA5j2NFcYKJRi qB+sLfnUFSjp+iaRiCZ2H53ciH58LJUn/29FjaJSZXHjRDx3j+NZ9JqSxoYFaatn3I qBL9GZLMTn6rwTqigziv6WdEbg9in9kHpoMkb+63Ma+nWAF0mlEfkWNBSHwK1hNleA v8xSWsz80SzeAwZoH8iPlcbFwKoJOOpnWuvLgdUYiPtYIaZbBGgt1pHZYZeDHwXUP6 JahgezvooQPig== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SEiezQDqn6mi; Tue, 17 Jan 2023 22:42:17 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id 3722081DE5; Tue, 17 Jan 2023 22:42:17 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 3722081DE5 Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 8E2A81BF47D for ; Tue, 17 Jan 2023 22:42:15 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 6816D60692 for ; Tue, 17 Jan 2023 22:42:15 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 6816D60692 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UeGSYUk4egkP for ; Tue, 17 Jan 2023 22:42:14 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 7D1766002E Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 7D1766002E for ; Tue, 17 Jan 2023 22:42:14 +0000 (UTC) Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-369-CL_2eAcHNLGnBNzJA2U32g-1; Tue, 17 Jan 2023 17:42:10 -0500 X-MC-Unique: CL_2eAcHNLGnBNzJA2U32g-1 Received: by mail-ej1-f69.google.com with SMTP id hs18-20020a1709073e9200b007c0f9ac75f9so22388376ejc.9 for ; Tue, 17 Jan 2023 14:42:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ckm+P7EhQq3tMMMLdp8ksaD5nCqQSrg8dglbOqFaLx0=; b=KHCMyCa1gpmlJf6OZkL0CN1MpbAihhL+0LY0pHH0k37dDpwrLYO/zN5kGP0yelGKRI AzFF7lq5m6mtJBJ0LJwwoAfzhL0eUn/UDNJhwAn+6O0O+yiadFp/RhONUbFoVAL2BCTu +HDerIE8dbIscWgMrTOjfoBUmk+b8J7Xf4R7NMIG7apPSU8PKg9QDIRvvTReSCSW3X4S T75Zj+510e7p7PVxD0bQbDKcu108WQ8tgC+i4IXyYyVEel1VEIsAHiA1X1+sgtR2Z2wv i+YTXzVthu98940y+oUC9WBdAbR4Ss+rtkoQnuLR357dyMz8ps3+oC6L31txxme0/7Qr 0UEw== X-Gm-Message-State: AFqh2kolScaArNUeUdGteLKfWfcBhVhH4xAes9CXpShhPUHllbsUG9Jl tKkHWxo1ejiI97Iu8wwH1RotQVJTi4qeo7/tmciH2Aq4VxdQB9KcyqDPwwkekcHZV3n7FKsXLCx 4VxdPtNTh1vGZ1l2KBQetWAR62+GYpA== X-Received: by 2002:a05:6402:524f:b0:49e:498c:5e16 with SMTP id t15-20020a056402524f00b0049e498c5e16mr233107edd.30.1673995328862; Tue, 17 Jan 2023 14:42:08 -0800 (PST) X-Google-Smtp-Source: AMrXdXuDr1iHNfiv83GpdqhTGHecaw7zHQhGvun8ZtQyqVRaaW66IzMTkNbHSjSCSrZOSdtI91JbXg== X-Received: by 2002:a05:6402:524f:b0:49e:498c:5e16 with SMTP id t15-20020a056402524f00b0049e498c5e16mr233070edd.30.1673995328510; Tue, 17 Jan 2023 14:42:08 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id ku12-20020a170907788c00b0084d4564c65fsm11480669ejc.42.2023.01.17.14.42.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 14:42:07 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 385EA9011B1; Tue, 17 Jan 2023 23:42:07 +0100 (CET) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Niklas =?utf-8?Q?S=C3=B6derlund?= In-Reply-To: References: <87y1q0bz6m.fsf@toke.dk> <87sfg8byek.fsf@toke.dk> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 17 Jan 2023 23:42:07 +0100 Message-ID: <87pmbcbx6o.fsf@toke.dk> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673995333; 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=EW6oxIduidj1x+0P8cWlRMD1Qq4aGTeQJAX2jlujGuU=; b=QNTnOD/QcwZzLvuuPG+jmRzcjlgbSQl8qTQzl982+u+W/Nvggzcc3uNKaTl+++1PVuv0QW +8pbBOVrHSVmhkj8qCwGNkT5RAEeC+kix8hAKe/8T4LWObX4VxpsBfw0XuItUzUWFbcM+O CtXO7N8DqmHD899drODSVXTsMxCwPec= X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=QNTnOD/Q Subject: Re: [Intel-wired-lan] [RFC v2 bpf-next 2/7] drivers: net: turn on XDP features X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mst@redhat.com, vladimir.oltean@nxp.com, ast@kernel.org, edumazet@google.com, anthony.l.nguyen@intel.com, daniel@iogearbox.net, andrii@kernel.org, intel-wired-lan@lists.osuosl.org, simon.horman@corigine.com, kuba@kernel.org, pabeni@redhat.com, Lorenzo Bianconi , aelior@marvell.com, hawk@kernel.org, christophe.jaillet@wanadoo.fr, memxor@gmail.com, john@phrozen.org, bjorn@kernel.org, bpf@vger.kernel.org, magnus.karlsson@intel.com, leon@kernel.org, netdev@vger.kernel.org, ecree.xilinx@gmail.com, alardam@gmail.com, gospo@broadcom.com, saeedm@nvidia.com, davem@davemloft.net, nbd@nbd.name Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" TmlrbGFzIFPDtmRlcmx1bmQgPG5pa2xhcy5zb2Rlcmx1bmRAY29yaWdpbmUuY29tPiB3cml0ZXM6 Cgo+IE9uIDIwMjMtMDEtMTcgMjM6MTU6NDcgKzAxMDAsIFRva2UgSMO4aWxhbmQtSsO4cmdlbnNl biB3cm90ZToKPj4gTmlrbGFzIFPDtmRlcmx1bmQgPG5pa2xhcy5zb2Rlcmx1bmRAY29yaWdpbmUu Y29tPiB3cml0ZXM6Cj4+IAo+PiA+IEhpIFRva2UsCj4+ID4KPj4gPiBPbiAyMDIzLTAxLTE3IDIy OjU4OjU3ICswMTAwLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4+ID4+IE5pa2xh cyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5kQGNvcmlnaW5lLmNvbT4gd3JpdGVzOgo+PiA+ PiAKPj4gPj4gPiBIaSBMb3JlbnpvIGFuZCBNYXJlaywKPj4gPj4gPgo+PiA+PiA+IFRoYW5rcyBm b3IgeW91ciB3b3JrLgo+PiA+PiA+Cj4+ID4+ID4gT24gMjAyMy0wMS0xNCAxNjo1NDozMiArMDEw MCwgTG9yZW56byBCaWFuY29uaSB3cm90ZToKPj4gPj4gPgo+PiA+PiA+IFsuLi5dCj4+ID4+ID4K Pj4gPj4gPj4gCj4+ID4+ID4+IFR1cm4gJ2h3LW9mZmxvYWQnIGZlYXR1cmUgZmxhZyBvbiBmb3I6 Cj4+ID4+ID4+ICAtIG5ldHJvbm9tZSAobmZwKQo+PiA+PiA+PiAgLSBuZXRkZXZzaW0uCj4+ID4+ ID4KPj4gPj4gPiBJcyB0aGVyZSBhIGRlZmluaXRpb24gb2YgdGhlICdody1vZmZsb2FkJyB3cml0 dGVuIGRvd24gc29tZXdoZXJlPyBGcm9tIAo+PiA+PiA+IHJlYWRpbmcgdGhpcyBzZXJpZXMgSSB0 YWtlIGl0IGlzIHRoZSBhYmlsaXR5IHRvIG9mZmxvYWQgYSBCUEYgcHJvZ3JhbT8gIAo+PiA+PiAK Pj4gPj4gWWVhaCwgYmFzaWNhbGx5IHRoaXMgbWVhbnMgImFsbG93cyBsb2FkaW5nIGFuZCBhdHRh Y2hpbmcgcHJvZ3JhbXMgaW4KPj4gPj4gWERQX01PREVfSFciLCBJIHN1cHBvc2UgOikKPj4gPj4g Cj4+ID4+ID4gSXQgd291bGQgYWxzbyBiZSBpbnRlcmVzdGluZyB0byByZWFkIGRvY3VtZW50YXRp b24gZm9yIHRoZSBvdGhlciBmbGFncyAKPj4gPj4gPiBhZGRlZCBpbiB0aGlzIHNlcmllcy4KPj4g Pj4gCj4+ID4+IFl1cCwgd2Ugc2hvdWxkIGRlZmluaXRlbHkgZG9jdW1lbnQgdGhlbSA6KQo+PiA+ PiAKPj4gPj4gPiBbLi4uXQo+PiA+PiA+Cj4+ID4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMgCj4+ID4+ID4+IGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jCj4+ID4+ID4+ IGluZGV4IDE4ZmM5OTcxZjFjOC4uNWE4ZGRlYWZmNzRkIDEwMDY0NAo+PiA+PiA+PiAtLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMKPj4gPj4g Pj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1v bi5jCj4+ID4+ID4+IEBAIC0yNTI5LDEwICsyNTI5LDE0IEBAIHN0YXRpYyB2b2lkIG5mcF9uZXRf bmV0ZGV2X2luaXQoc3RydWN0IG5mcF9uZXQgKm5uKQo+PiA+PiA+PiAgCW5ldGRldi0+ZmVhdHVy ZXMgJj0gfk5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYOwo+PiA+PiA+PiAgCW5uLT5kcC5jdHJsICY9 IH5ORlBfTkVUX0NGR19DVFJMX1JYUUlOUTsKPj4gPj4gPj4gIAo+PiA+PiA+PiArCW5uLT5kcC5u ZXRkZXYtPnhkcF9mZWF0dXJlcyA9IE5FVERFVl9YRFBfQUNUX0JBU0lDIHwKPj4gPj4gPj4gKwkJ CQkgICAgICBORVRERVZfWERQX0FDVF9IV19PRkZMT0FEOwo+PiA+PiA+Cj4+ID4+ID4gSWYgbXkg YXNzdW1wdGlvbiBhYm91dCB0aGUgJ2h3LW9mZmxvYWQnIGZsYWcgYWJvdmUgaXMgY29ycmVjdCBJ IHRoaW5rIAo+PiA+PiA+IE5FVERFVl9YRFBfQUNUX0hXX09GRkxPQUQgc2hvdWxkIGJlIGNvbmRp dGlvbmVkIG9uIHRoYXQgdGhlIEJQRiBmaXJtd2FyZSAKPj4gPj4gPiBmbGF2b3IgaXMgaW4gdXNl Lgo+PiA+PiA+Cj4+ID4+ID4gICAgIG5uLT5kcC5uZXRkZXYtPnhkcF9mZWF0dXJlcyA9IE5FVERF Vl9YRFBfQUNUX0JBU0lDOwo+PiA+PiA+Cj4+ID4+ID4gICAgIGlmIChubi0+YXBwLT50eXBlLT5p ZCA9PSBORlBfQVBQX0JQRl9OSUMpCj4+ID4+ID4gICAgICAgICBubi0+ZHAubmV0ZGV2LT54ZHBf ZmVhdHVyZXMgfD0gTkVUREVWX1hEUF9BQ1RfSFdfT0ZGTE9BRDsKPj4gPj4gPgo+PiA+PiA+PiAr Cj4+ID4+ID4+ICAJLyogRmluYWxpc2UgdGhlIG5ldGRldiBzZXR1cCAqLwo+PiA+PiA+PiAgCXN3 aXRjaCAobm4tPmRwLm9wcy0+dmVyc2lvbikgewo+PiA+PiA+PiAgCWNhc2UgTkZQX05GRF9WRVJf TkZEMzoKPj4gPj4gPj4gIAkJbmV0ZGV2LT5uZXRkZXZfb3BzID0gJm5mcF9uZmQzX25ldGRldl9v cHM7Cj4+ID4+ID4+ICsJCW5uLT5kcC5uZXRkZXYtPnhkcF9mZWF0dXJlcyB8PSBORVRERVZfWERQ X0FDVF9YU0tfWkVST0NPUFk7Cj4+ID4+ID4+ICAJCWJyZWFrOwo+PiA+PiA+PiAgCWNhc2UgTkZQ X05GRF9WRVJfTkZESzoKPj4gPj4gPj4gIAkJbmV0ZGV2LT5uZXRkZXZfb3BzID0gJm5mcF9uZmRr X25ldGRldl9vcHM7Cj4+ID4+ID4KPj4gPj4gPiBUaGlzIGlzIGFsc28gYSB3cmlua2xlIEkgd291 bGQgbGlrZSB0byB1bmRlcnN0YW5kLiBDdXJyZW50bHkgTkZQIHN1cHBvcnQgCj4+ID4+ID4gemVy by1jb3B5IG9uIE5GRDMsIGJ1dCBub3QgZm9yIG9mZmxvYWRlZCBCUEYgcHJvZ3JhbXMuIEJ1dCB3 aXRoIHRoZSBCUEYgCj4+ID4+ID4gZmlybXdhcmUgZmxhdm9yIHJ1bm5pbmcgdGhlIGRldmljZSBj YW4gc3RpbGwgc3VwcG9ydCB6ZXJvLWNvcHkgZm9yIAo+PiA+PiA+IG5vbi1vZmZsb2FkZWQgcHJv Z3JhbXMuCj4+ID4+ID4KPj4gPj4gPiBJcyBpdCBhIHByb2JsZW0gdGhhdCB0aGUgZHJpdmVyIGFk dmVydGlzZXMgc3VwcG9ydCBmb3IgYm90aCAKPj4gPj4gPiBoYXJkd2FyZS1vZmZsb2FkIF9hbmRf IHplcm8tY29weSBhdCB0aGUgc2FtZSB0aW1lLCBldmVuIGlmIHRoZXkgY2FuJ3QgYmUgCj4+ID4+ ID4gdXNlZCB0b2dldGhlciBidXQgc2VwYXJhdGVseT8KPj4gPj4gCj4+ID4+IEhtbSwgc28gdGhl IGlkZWEgd2l0aCB0aGlzIGlzIHRvIG9ubHkgZXhwb3NlIGZlYXR1cmUgZmxhZ3MgdGhhdCBhcmUK Pj4gPj4gc3VwcG9ydGVkICJyaWdodCBub3ciICh5b3UnbGwgbm90ZSB0aGF0IHNvbWUgb2YgdGhl IGRyaXZlcnMgdHVybiB0aGUKPj4gPj4gUkVESVJFQ1RfVEFSR0VUIGZsYWcgb24gYW5kIG9mZiBh dCBydW50aW1lKS4gSGF2aW5nIGZlYXR1cmVzIHRoYXQgYXJlCj4+ID4+ICJzdXBwb3J0ZWQgYnV0 IGluIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24iIGlzIG9uZSBvZiB0aGUgcG9pbnRzIG9mCj4+ ID4+IHVzZXIgY29uZnVzaW9uIHdlIHdhbnQgdG8gY2xlYXIgdXAgd2l0aCB0aGUgZXhwbGljaXQg ZmxhZ3MuCj4+ID4+IAo+PiA+PiBTbyBJIGd1ZXNzIGl0IGRlcGVuZHMgYSBsaXR0bGUgYml0IHdo YXQgeW91IG1lYW4gYnkgImNhbid0IGJlIHVzZWQKPj4gPj4gdG9nZXRoZXIiPyBJIGJlbGlldmUg aXQncyBwb3NzaWJsZSB0byBsb2FkIHR3byBwcm9ncmFtcyBhdCB0aGUgc2FtZQo+PiA+PiB0aW1l LCBvbmUgaW4gSFcgbW9kZSBhbmQgb25lIGluIG5hdGl2ZSAoZHJpdmVyKSBtb2RlLCByaWdodD8g SW4gdGhpcwo+PiA+PiBjYXNlLCBjb3VsZCB0aGUgZHJpdmVyIG1vZGUgcHJvZ3JhbSB1c2UgWFNL IHplcm9jb3B5IHdoaWxlIHRoZSBIVyBtb2RlCj4+ID4+IHByb2dyYW0gaXMgYWxzbyBsb2FkZWQ/ Cj4+ID4KPj4gPiBFeGFjdGx5LCB0aGlzIGlzIG15IGNvbmNlcm4uIFR3byBwcm9ncmFtcyBjYW4g YmUgbG9hZGVkIGF0IHRoZSBzYW1lIAo+PiA+IHRpbWUsIG9uZSBpbiBIVyBtb2RlIGFuZCBvbmUg aW4gbmF0aXZlIG1vZGUuIFRoZSBwcm9ncmFtIGluIG5hdGl2ZSBtb2RlIAo+PiA+IGNhbiB1c2Ug emVyby1jb3B5IGF0IHRoZSBzYW1lIHRpbWUgYXMgYW5vdGhlciBwcm9ncmFtIHJ1bnMgaW4gSFcg bW9kZS4KPj4gPgo+PiA+IEJ1dCB0aGUgcHJvZ3JhbSBydW5uaW5nIGluIEhXIG1vZGUgY2FuIG5l dmVyIHVzZSB6ZXJvLWNvcHkuCj4+IAo+PiBIbW0sIGJ1dCB6ZXJvLWNvcHkgaXMgYW4gQUZfWERQ IGZlYXR1cmUsIGFuZCBBRkFJSyBvZmZsb2FkZWQgcHJvZ3JhbXMKPj4gY2FuJ3QgdXNlIEFGX1hE UCBhdCBhbGw/IFNvIHRoZSB6ZXJvLWNvcHkgImZlYXR1cmUiIGlzIGF2YWlsYWJsZSBvbiB0aGUK Pj4gaGFyZHdhcmUsIGl0J3MganVzdCBpbnRyaW5zaWMgdG8gdGhhdCBmZWF0dXJlIHRoYXQgaXQg ZG9lc24ndCB3b3JrIG9uCj4+IG9mZmxvYWRlZCBwcm9ncmFtcz8KPgo+IFRoYXQgaXMgdHJ1ZSwg c28gdGhpcyBpcyBpbmRlZWQgbm90IGFuIGlzc3VlIHRoZW4uIFRoYW5rcyBmb3IgdGhlIAo+IGNs YXJpZmljYXRpb24uCgpDb29sIC0geW91J3JlIHdlbGNvbWUgOikKCi1Ub2tlCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC13aXJlZC1sYW4gbWFp bGluZyBsaXN0CkludGVsLXdpcmVkLWxhbkBvc3Vvc2wub3JnCmh0dHBzOi8vbGlzdHMub3N1b3Ns Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLXdpcmVkLWxhbgo=