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 0EB95C38142 for ; Tue, 17 Jan 2023 22:40:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229600AbjAQWkw (ORCPT ); Tue, 17 Jan 2023 17:40:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229834AbjAQWjz (ORCPT ); Tue, 17 Jan 2023 17:39:55 -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 ECB7D22DD2 for ; Tue, 17 Jan 2023 14:15:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673993757; 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=nVCdnSPpgSc0Lut4xjL5N2UTJnAW1T5qJ5v9mxraf2M=; b=Z0jSZfcKa7GOt0cbXWP5pQcSFSLScW2iTK09TAFann4frOugGfZpV8W6OVkCkePACApXeX jFk/YT9MqlXLZTbY+BimQ4W6/XsD5VeQPADl4JsC1TJVa4wDlBFuFZph6UXVx60su+uckU tS3U/5dX7rojwV2vAsjpwj/7zFUmRLY= 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-509-axfMPtKbPKSb919lV1l8KA-1; Tue, 17 Jan 2023 17:15:50 -0500 X-MC-Unique: axfMPtKbPKSb919lV1l8KA-1 Received: by mail-ed1-f69.google.com with SMTP id f11-20020a056402354b00b0049e18f0076dso4718864edd.15 for ; Tue, 17 Jan 2023 14:15:50 -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=nVCdnSPpgSc0Lut4xjL5N2UTJnAW1T5qJ5v9mxraf2M=; b=Vo47o+C6Lr25aARFouy1/YAYSBKjasKWxE2ag16Ic1stwJbGLB4/6QS96iXSmEB1du 1dfBtBWZ5stgsanvfJ4NJXWPkqp6OLjtjFCGUAXXPYui1jxUTLDHWP1iS33CcffdLriI WLPJnQmEd81IyHQxrK/mGjov/iXMLBO6lqoXvWrFrlV3+qHEi+Ct39/x054Q7E2wRQqh JKkxwSMLsUz9z5mgOzMcvfnYfHFKWPYEpbX9PGexIxJZB0cKpKaiCry5me1OepqP0O1Y 1k6wSKfLb6+qi5Vr2KwTFFEzXSSroupWpryIEOrCCkszihkJb2jrM5QI9WgCPPhubb7S 4tQQ== X-Gm-Message-State: AFqh2kqWGLIElybaUl/iXjPDaYIjfNqKwOU1KZmc2eUS0tfJetMXXbdG 57tHiBepG+J2pnKtLRhQPatMSPEl7SP3bhQkxA3tfhQ9lhjAUdEZiDUizG29gLn69ycqDXQLweN hA1XOx52x1k73 X-Received: by 2002:a17:907:76c6:b0:877:564a:6fd3 with SMTP id kf6-20020a17090776c600b00877564a6fd3mr182119ejc.21.1673993749157; Tue, 17 Jan 2023 14:15:49 -0800 (PST) X-Google-Smtp-Source: AMrXdXtct0L+6H586Hqk7KUwB31Uwdc2ltJ7NpPWPm0QfBMU5pi3ouGi3JVmNp1YtMSvhkEzQ5BRBw== X-Received: by 2002:a17:907:76c6:b0:877:564a:6fd3 with SMTP id kf6-20020a17090776c600b00877564a6fd3mr182089ejc.21.1673993748801; Tue, 17 Jan 2023 14:15:48 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id r2-20020a17090609c200b007bd28b50305sm13685716eje.200.2023.01.17.14.15.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 14:15:48 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 819879011A9; Tue, 17 Jan 2023 23:15:47 +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> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 17 Jan 2023 23:15:47 +0100 Message-ID: <87sfg8byek.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: > 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? From= =20 >> > reading this series I take it is the ability to offload a BPF program?= =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 flags= =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_ne= t *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 think= =20 >> > NETDEV_XDP_ACT_HW_OFFLOAD should be conditioned on that the BPF firmwa= re=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 suppo= rt=20 >> > zero-copy on NFD3, but not for offloaded BPF programs. But with the BP= F=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 mode=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. 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? Which goes back to: yeah, we should document what the feature flags mean :) -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 98CE3C38142 for ; Tue, 17 Jan 2023 22:15:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 2F078813F9; Tue, 17 Jan 2023 22:15:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 2F078813F9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1673993756; bh=rpxVlB6VP95PYrm5iuZ4aCsOTQ4uzV2d9Zc4k3EyLQY=; h=From:To:In-Reply-To:References:Date:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=tu/s+jd/M/uvsWA2bbTtI4SIriqXaI5aa7ee3CR90ZlLz3raB3SGXyb3Mu2pFIMZ+ q1Z1uRAWcTVYjUmvWAkyrSjy+a338xyO9USz1AQ6aWr9fNtH9ulpv90OdoY0MQSvbh qHPGkcp+S43Sdqa6vS32R0nbgebxkxTYkStxQ7ZgEOfThx7Lxqg50liPG7WXnzP+2j VbTsk58IOzyE7UMXrHRlnxF0AHtF4zIxzHQhmYTQmWV+ZvUzyvKmDjhpCkRQ/eqqjm 0FVX3Zz3tQFZWitE2QaYt9BIZXnyJu1WR4O3yfdSVQoYdsUKkIxka11zqYBoFCk7fq uR4PEyODQOjBw== 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 tD0xba1K89wk; Tue, 17 Jan 2023 22:15:55 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id 0F64D81DE3; Tue, 17 Jan 2023 22:15:55 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 0F64D81DE3 Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id D71D41BF47D for ; Tue, 17 Jan 2023 22:15:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id B187D405E0 for ; Tue, 17 Jan 2023 22:15:53 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org B187D405E0 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JagQtoums8py for ; Tue, 17 Jan 2023 22:15:53 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org AC8D440117 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id AC8D440117 for ; Tue, 17 Jan 2023 22:15:52 +0000 (UTC) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-509-fvk_CfRsNz2fY1rsQjuH1Q-1; Tue, 17 Jan 2023 17:15:50 -0500 X-MC-Unique: fvk_CfRsNz2fY1rsQjuH1Q-1 Received: by mail-ed1-f70.google.com with SMTP id g14-20020a056402090e00b0046790cd9082so22522505edz.21 for ; Tue, 17 Jan 2023 14:15:50 -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=nVCdnSPpgSc0Lut4xjL5N2UTJnAW1T5qJ5v9mxraf2M=; b=bcsCU67mx0FjJ6EnpPhDBZw2cYXxLVBDXlQiUWGWAnXOBxwkk+DvWVL/G0gGmC5CAV LNyDQgn7AKT+1uRZCWPlW1zT1s3hA0PWbUnBhGT6FDPtSv6Bgb29moTtPC8LYU+C0lAH dOmWygGX38EuqUMwVkXuY/WnPwVZ9j23oK4INsDgw0h5pQ1f+Mg9Dc77C1M+C+buwInu 6C5MQ15stD3Sfkl2Uqs1ttUIO1kjI9vHjsTQiXTi2mEsgc9VzlcjsT/7xlYH0Mekk+ih PRDFoo5+tFZ466wXOMpZq59SvCyZ+80Pabw0ZbPNK0+G1oY/vCMpYwSJSaSDJ0V9VvZo eDJw== X-Gm-Message-State: AFqh2kqgL8Gf8WNu9ZPNDnzMfk6Jyu22MIHyuk8ecp/vcSre3D1VSJrg VnQnh1IeosdKLpEg4xvtG3HRfXXM6IgYurX7YSgRHGNgxe9GNyP3A70qEI0M0vCkrdHt7+X3swb VQHaViOAAnHRoB9ZB3YZZd6vW396ipg== X-Received: by 2002:a17:907:76c6:b0:877:564a:6fd3 with SMTP id kf6-20020a17090776c600b00877564a6fd3mr182118ejc.21.1673993749157; Tue, 17 Jan 2023 14:15:49 -0800 (PST) X-Google-Smtp-Source: AMrXdXtct0L+6H586Hqk7KUwB31Uwdc2ltJ7NpPWPm0QfBMU5pi3ouGi3JVmNp1YtMSvhkEzQ5BRBw== X-Received: by 2002:a17:907:76c6:b0:877:564a:6fd3 with SMTP id kf6-20020a17090776c600b00877564a6fd3mr182089ejc.21.1673993748801; Tue, 17 Jan 2023 14:15:48 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id r2-20020a17090609c200b007bd28b50305sm13685716eje.200.2023.01.17.14.15.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 14:15:48 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 819879011A9; Tue, 17 Jan 2023 23:15:47 +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> X-Clacks-Overhead: GNU Terry Pratchett Date: Tue, 17 Jan 2023 23:15:47 +0100 Message-ID: <87sfg8byek.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=1673993751; 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=spv+kf/BWt8hDO+dH2Y5LxsJIdapEN39piIOCb8JImY=; b=jTu6rO1TyDf1U+8lO52L5MibIqOvbGp9k7KC5LR4J7TzuzbnwqTeMm6tD1R1xxrqdTpw3w 82IewLy7dWVZFdazTpHXNqXsy5JADD9gUhuyd+by0pEhfoUXbVhWRgiTCAcU4x7OMR/AR/ RQZxOw2tAs8c9GOzDdfpd1bp4fVr6AY= X-Mailman-Original-Authentication-Results: smtp2.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=jTu6rO1T 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+IEhpIFRva2UsCj4KPiBPbiAyMDIzLTAxLTE3IDIyOjU4OjU3ICswMTAwLCBUb2tlIEjDuGls YW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4+IE5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJs dW5kQGNvcmlnaW5lLmNvbT4gd3JpdGVzOgo+PiAKPj4gPiBIaSBMb3JlbnpvIGFuZCBNYXJlaywK Pj4gPgo+PiA+IFRoYW5rcyBmb3IgeW91ciB3b3JrLgo+PiA+Cj4+ID4gT24gMjAyMy0wMS0xNCAx Njo1NDozMiArMDEwMCwgTG9yZW56byBCaWFuY29uaSB3cm90ZToKPj4gPgo+PiA+IFsuLi5dCj4+ ID4KPj4gPj4gCj4+ID4+IFR1cm4gJ2h3LW9mZmxvYWQnIGZlYXR1cmUgZmxhZyBvbiBmb3I6Cj4+ ID4+ICAtIG5ldHJvbm9tZSAobmZwKQo+PiA+PiAgLSBuZXRkZXZzaW0uCj4+ID4KPj4gPiBJcyB0 aGVyZSBhIGRlZmluaXRpb24gb2YgdGhlICdody1vZmZsb2FkJyB3cml0dGVuIGRvd24gc29tZXdo ZXJlPyBGcm9tIAo+PiA+IHJlYWRpbmcgdGhpcyBzZXJpZXMgSSB0YWtlIGl0IGlzIHRoZSBhYmls aXR5IHRvIG9mZmxvYWQgYSBCUEYgcHJvZ3JhbT8gIAo+PiAKPj4gWWVhaCwgYmFzaWNhbGx5IHRo aXMgbWVhbnMgImFsbG93cyBsb2FkaW5nIGFuZCBhdHRhY2hpbmcgcHJvZ3JhbXMgaW4KPj4gWERQ X01PREVfSFciLCBJIHN1cHBvc2UgOikKPj4gCj4+ID4gSXQgd291bGQgYWxzbyBiZSBpbnRlcmVz dGluZyB0byByZWFkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBvdGhlciBmbGFncyAKPj4gPiBhZGRl ZCBpbiB0aGlzIHNlcmllcy4KPj4gCj4+IFl1cCwgd2Ugc2hvdWxkIGRlZmluaXRlbHkgZG9jdW1l bnQgdGhlbSA6KQo+PiAKPj4gPiBbLi4uXQo+PiA+Cj4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMgCj4+ID4+IGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jCj4+ID4+IGlu ZGV4IDE4ZmM5OTcxZjFjOC4uNWE4ZGRlYWZmNzRkIDEwMDY0NAo+PiA+PiAtLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMKPj4gPj4gKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jCj4+ID4+ IEBAIC0yNTI5LDEwICsyNTI5LDE0IEBAIHN0YXRpYyB2b2lkIG5mcF9uZXRfbmV0ZGV2X2luaXQo c3RydWN0IG5mcF9uZXQgKm5uKQo+PiA+PiAgCW5ldGRldi0+ZmVhdHVyZXMgJj0gfk5FVElGX0Zf SFdfVkxBTl9TVEFHX1JYOwo+PiA+PiAgCW5uLT5kcC5jdHJsICY9IH5ORlBfTkVUX0NGR19DVFJM X1JYUUlOUTsKPj4gPj4gIAo+PiA+PiArCW5uLT5kcC5uZXRkZXYtPnhkcF9mZWF0dXJlcyA9IE5F VERFVl9YRFBfQUNUX0JBU0lDIHwKPj4gPj4gKwkJCQkgICAgICBORVRERVZfWERQX0FDVF9IV19P RkZMT0FEOwo+PiA+Cj4+ID4gSWYgbXkgYXNzdW1wdGlvbiBhYm91dCB0aGUgJ2h3LW9mZmxvYWQn IGZsYWcgYWJvdmUgaXMgY29ycmVjdCBJIHRoaW5rIAo+PiA+IE5FVERFVl9YRFBfQUNUX0hXX09G RkxPQUQgc2hvdWxkIGJlIGNvbmRpdGlvbmVkIG9uIHRoYXQgdGhlIEJQRiBmaXJtd2FyZSAKPj4g PiBmbGF2b3IgaXMgaW4gdXNlLgo+PiA+Cj4+ID4gICAgIG5uLT5kcC5uZXRkZXYtPnhkcF9mZWF0 dXJlcyA9IE5FVERFVl9YRFBfQUNUX0JBU0lDOwo+PiA+Cj4+ID4gICAgIGlmIChubi0+YXBwLT50 eXBlLT5pZCA9PSBORlBfQVBQX0JQRl9OSUMpCj4+ID4gICAgICAgICBubi0+ZHAubmV0ZGV2LT54 ZHBfZmVhdHVyZXMgfD0gTkVUREVWX1hEUF9BQ1RfSFdfT0ZGTE9BRDsKPj4gPgo+PiA+PiArCj4+ ID4+ICAJLyogRmluYWxpc2UgdGhlIG5ldGRldiBzZXR1cCAqLwo+PiA+PiAgCXN3aXRjaCAobm4t PmRwLm9wcy0+dmVyc2lvbikgewo+PiA+PiAgCWNhc2UgTkZQX05GRF9WRVJfTkZEMzoKPj4gPj4g IAkJbmV0ZGV2LT5uZXRkZXZfb3BzID0gJm5mcF9uZmQzX25ldGRldl9vcHM7Cj4+ID4+ICsJCW5u LT5kcC5uZXRkZXYtPnhkcF9mZWF0dXJlcyB8PSBORVRERVZfWERQX0FDVF9YU0tfWkVST0NPUFk7 Cj4+ID4+ICAJCWJyZWFrOwo+PiA+PiAgCWNhc2UgTkZQX05GRF9WRVJfTkZESzoKPj4gPj4gIAkJ bmV0ZGV2LT5uZXRkZXZfb3BzID0gJm5mcF9uZmRrX25ldGRldl9vcHM7Cj4+ID4KPj4gPiBUaGlz IGlzIGFsc28gYSB3cmlua2xlIEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kLiBDdXJyZW50bHkg TkZQIHN1cHBvcnQgCj4+ID4gemVyby1jb3B5IG9uIE5GRDMsIGJ1dCBub3QgZm9yIG9mZmxvYWRl ZCBCUEYgcHJvZ3JhbXMuIEJ1dCB3aXRoIHRoZSBCUEYgCj4+ID4gZmlybXdhcmUgZmxhdm9yIHJ1 bm5pbmcgdGhlIGRldmljZSBjYW4gc3RpbGwgc3VwcG9ydCB6ZXJvLWNvcHkgZm9yIAo+PiA+IG5v bi1vZmZsb2FkZWQgcHJvZ3JhbXMuCj4+ID4KPj4gPiBJcyBpdCBhIHByb2JsZW0gdGhhdCB0aGUg ZHJpdmVyIGFkdmVydGlzZXMgc3VwcG9ydCBmb3IgYm90aCAKPj4gPiBoYXJkd2FyZS1vZmZsb2Fk IF9hbmRfIHplcm8tY29weSBhdCB0aGUgc2FtZSB0aW1lLCBldmVuIGlmIHRoZXkgY2FuJ3QgYmUg Cj4+ID4gdXNlZCB0b2dldGhlciBidXQgc2VwYXJhdGVseT8KPj4gCj4+IEhtbSwgc28gdGhlIGlk ZWEgd2l0aCB0aGlzIGlzIHRvIG9ubHkgZXhwb3NlIGZlYXR1cmUgZmxhZ3MgdGhhdCBhcmUKPj4g c3VwcG9ydGVkICJyaWdodCBub3ciICh5b3UnbGwgbm90ZSB0aGF0IHNvbWUgb2YgdGhlIGRyaXZl cnMgdHVybiB0aGUKPj4gUkVESVJFQ1RfVEFSR0VUIGZsYWcgb24gYW5kIG9mZiBhdCBydW50aW1l KS4gSGF2aW5nIGZlYXR1cmVzIHRoYXQgYXJlCj4+ICJzdXBwb3J0ZWQgYnV0IGluIGEgZGlmZmVy ZW50IGNvbmZpZ3VyYXRpb24iIGlzIG9uZSBvZiB0aGUgcG9pbnRzIG9mCj4+IHVzZXIgY29uZnVz aW9uIHdlIHdhbnQgdG8gY2xlYXIgdXAgd2l0aCB0aGUgZXhwbGljaXQgZmxhZ3MuCj4+IAo+PiBT byBJIGd1ZXNzIGl0IGRlcGVuZHMgYSBsaXR0bGUgYml0IHdoYXQgeW91IG1lYW4gYnkgImNhbid0 IGJlIHVzZWQKPj4gdG9nZXRoZXIiPyBJIGJlbGlldmUgaXQncyBwb3NzaWJsZSB0byBsb2FkIHR3 byBwcm9ncmFtcyBhdCB0aGUgc2FtZQo+PiB0aW1lLCBvbmUgaW4gSFcgbW9kZSBhbmQgb25lIGlu IG5hdGl2ZSAoZHJpdmVyKSBtb2RlLCByaWdodD8gSW4gdGhpcwo+PiBjYXNlLCBjb3VsZCB0aGUg ZHJpdmVyIG1vZGUgcHJvZ3JhbSB1c2UgWFNLIHplcm9jb3B5IHdoaWxlIHRoZSBIVyBtb2RlCj4+ IHByb2dyYW0gaXMgYWxzbyBsb2FkZWQ/Cj4KPiBFeGFjdGx5LCB0aGlzIGlzIG15IGNvbmNlcm4u IFR3byBwcm9ncmFtcyBjYW4gYmUgbG9hZGVkIGF0IHRoZSBzYW1lIAo+IHRpbWUsIG9uZSBpbiBI VyBtb2RlIGFuZCBvbmUgaW4gbmF0aXZlIG1vZGUuIFRoZSBwcm9ncmFtIGluIG5hdGl2ZSBtb2Rl IAo+IGNhbiB1c2UgemVyby1jb3B5IGF0IHRoZSBzYW1lIHRpbWUgYXMgYW5vdGhlciBwcm9ncmFt IHJ1bnMgaW4gSFcgbW9kZS4KPgo+IEJ1dCB0aGUgcHJvZ3JhbSBydW5uaW5nIGluIEhXIG1vZGUg Y2FuIG5ldmVyIHVzZSB6ZXJvLWNvcHkuCgpIbW0sIGJ1dCB6ZXJvLWNvcHkgaXMgYW4gQUZfWERQ IGZlYXR1cmUsIGFuZCBBRkFJSyBvZmZsb2FkZWQgcHJvZ3JhbXMKY2FuJ3QgdXNlIEFGX1hEUCBh dCBhbGw/IFNvIHRoZSB6ZXJvLWNvcHkgImZlYXR1cmUiIGlzIGF2YWlsYWJsZSBvbiB0aGUKaGFy ZHdhcmUsIGl0J3MganVzdCBpbnRyaW5zaWMgdG8gdGhhdCBmZWF0dXJlIHRoYXQgaXQgZG9lc24n dCB3b3JrIG9uCm9mZmxvYWRlZCBwcm9ncmFtcz8KCldoaWNoIGdvZXMgYmFjayB0bzogeWVhaCwg d2Ugc2hvdWxkIGRvY3VtZW50IHdoYXQgdGhlIGZlYXR1cmUgZmxhZ3MgbWVhbiA6KQoKLVRva2UK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLXdp cmVkLWxhbiBtYWlsaW5nIGxpc3QKSW50ZWwtd2lyZWQtbGFuQG9zdW9zbC5vcmcKaHR0cHM6Ly9s aXN0cy5vc3Vvc2wub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtd2lyZWQtbGFuCg==