From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 74F55A04E7; Mon, 2 Nov 2020 15:07:52 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DE48AC8C6; Mon, 2 Nov 2020 15:07:50 +0100 (CET) Received: from mail-il1-f194.google.com (mail-il1-f194.google.com [209.85.166.194]) by dpdk.org (Postfix) with ESMTP id 53FCBC8B4 for ; Mon, 2 Nov 2020 15:07:49 +0100 (CET) Received: by mail-il1-f194.google.com with SMTP id n5so13034080ile.7 for ; Mon, 02 Nov 2020 06:07:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xZE67mTWE2TWL+63n2sx7Il6gCq9tLGVUpNMHKCzKAQ=; b=exMZiJZcE9fC72W9e07OpC0Z3NsNJk9hKGVtt3QpuSpmzJzLEM+24BM2zmUJqeS5T6 92K2L58KJ857VGp/g3HLsH1GB/HPjz+tPbyGCtwpnfNFMgcWkbSH2UlkWAXi+G+xcx3C 0r36pwPNHjiXMlgIayXpyq2NH77hDJ+jcRBid2iO92OzXi/JDba8X2z/r6rFIDsEwHIC ou6ONs0VOUYYP17AT6+akuD1/Kk6FLihOCoBlDQLEhyewtwnWP3r+cdtoCItB1Ep6A1n S3cz1nCWj/qxf8e8BluKZ8M4y9KjhrmMg5lMXajrioJvyBUBizTWUiO+VD5NyReYZiQg WFZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xZE67mTWE2TWL+63n2sx7Il6gCq9tLGVUpNMHKCzKAQ=; b=q1tsDUn5V4EsqNUO9DmnGI7cK6K9ASRe3bjOFZgHf7GiYvtebMTza7rXqLQaNyqLrG 0Wp1JOFiUGNU6xP8EPzy1LbgcSNGHyc+GBJ+ifCwL9mVeJLLiVQsbCZt/FdseBBoAGS4 UW8Sy1FESArFGc9l/lZGJd9407eZGH53bbP39LEpnTKfhuO0Z9SZLiJxN/SCFjTlQXWy L2wP5Wk6438MTd275nOi13wbFliY4Y967pgoOtjASBQ7MTrJxXIl9UvrKxVFVDSarnJH 4I7IbTeuUSb1NfK+t/xNDwi2Hxds+MrMLrM3y9joZDMNqF6/F89Iyq5u8tDWjEYeVqw2 08JA== X-Gm-Message-State: AOAM531FP388DKAGvr4kLBctfg0akkERcSYzNykTFLtiUof/F9C5sIXG RtEsf1nc7xP3nt9DJRZ82P/YL4Zo+VORzkNsOcw= X-Google-Smtp-Source: ABdhPJwtpn9VoQSIvyUdx9dWl4VaXZRY1rAVLO/wI1GKneMmdcf48e1O6+8wN+cqH56T2sRGGuCfmg4vlDNrDnBGJ2Q= X-Received: by 2002:a05:6e02:5d1:: with SMTP id l17mr11158565ils.130.1604326067436; Mon, 02 Nov 2020 06:07:47 -0800 (PST) MIME-Version: 1.0 References: <20200612212434.6852-2-timothy.mcdaniel@intel.com> <1604273415-13912-1-git-send-email-timothy.mcdaniel@intel.com> In-Reply-To: <1604273415-13912-1-git-send-email-timothy.mcdaniel@intel.com> From: Jerin Jacob Date: Mon, 2 Nov 2020 19:37:31 +0530 Message-ID: To: Timothy McDaniel Cc: dpdk-dev , Erik Gabriel Carrillo , Gage Eads , "Van Haaren, Harry" , Jerin Jacob , Thomas Monjalon Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [dpdk-dev] [PATCH v16 00/23] Add DLB PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Mon, Nov 2, 2020 at 4:58 AM Timothy McDaniel wrote: > > The following patch series adds support for a new eventdev PMD. The DLB > PMD adds support for the Intel Dynamic Load Balancer (DLB) hardware. > The DLB is a PCIe device that provides load-balanced, prioritized > scheduling of core-to-core communication. The device consists of > queues and arbiters that connect producer and consumer cores, and > implements load-balanced queueing features including: > - Lock-free multi-producer/multi-consumer operation. > - Multiple priority levels for varying traffic types. > - 'Direct' traffic (i.e. multi-producer/single-consumer) > - Simple unordered load-balanced distribution. > - Atomic lock-free load balancing across multiple consumers. > - Queue element reordering feature allowing ordered load-balanced > distribution. > > The DLB hardware supports both load balanced and directed ports and > queues. Unlike other eventdev devices already in the repo, not all > DLB ports and queues are equally capable. In particular, directed > ports are limited to a single link, and must be connected to a directed > queue. > Additionally, even though LDB ports may link multiple queues, the > number of queues that may be linked is limited by hardware. Another > difference is that DLB does not have a straightforward way of carrying > the flow_id in the queue elements (QE) that the hardware operates on. > > While reviewing the code, please be aware that this PMD has full > control over the DLB hardware. Intel will be extending the DLB PMD > in the future (not as part of this first series) with a mode that we > refer to as the bifurcated PMD. The bifurcated PMD communicates with a > kernel driver to configure the device, ports, and queues, and memory > maps device MMIO so datapath operations occur purely in user-space. > > The framework to support both the PF PMD and bifurcated PMD exists in > this patchset, and is why the iface.[ch] layer is present. Series applied to dpdk-next-eventdev/for-main with the following fix. Thank= s. diff --git a/doc/guides/eventdevs/dlb.rst b/doc/guides/eventdevs/dlb.rst index d44afcdcf..4c4f56b2b 100644 --- a/doc/guides/eventdevs/dlb.rst +++ b/doc/guides/eventdevs/dlb.rst @@ -2,7 +2,7 @@ Copyright(c) 2020 Intel Corporation. Driver for the Intel=C2=AE Dynamic Load Balancer (DLB) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D The DPDK dlb poll mode driver supports the Intel=C2=AE Dynamic Load Balanc= er. > > Major changes in V16 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > Address additional comments from David Marchand: > - converted printfs in dlb/pf/dlb_main.c to DLB_LOG > - fixed a repeated word error in dlb/pf/base/osdep_bitmap.h > - caught up with marking the patches that Gage reviewed > > Major changes in V15 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > Address comments from David Marchand: > - this patch-set is based on Nov 1, 2020 dpdk-next-eventdev > - fix docs build (doxy-api.conf.in and doxy-api-index.md) > - restore blank line in MAINTAINERS file > - move dlb announcement in release_20_11.rst after ethdev > - use headers =3D files() for exported meson public headers > - fix a typo in 'add documentation ..." commit message > - use eal version of cldemote > - convert a couple of printfs to LOG messages > - fix missing "~" in dlb documentation > - delay introduction of _delayed token pop functions to > token pop commit (fixes 8 or so unused function errors) > - all patches build incrementally (gcc), and checkpatches reports > success > - I am not able to run clang locally. If clang errors are still > present I will ask IT to install clang on a build server tomorrow. > > Major changes in V14 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - Fixed format errors in doc/api/doxy-api-index.md > - Delayed introduction of dlb2_consume_qe_immediate until > add-dequeue-and-its-burst-variants.patch > - Delayed introduction of dlb2_construct_token_pop_qe until > add-PMD-s-token-pop-public-interface.patch > - Delayed introduction of dlb_equeue_*_delayed until > add dequeue and its burst variants.patch > > Major changes in V13 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - removed now unused functions dlb_umwait and dlb_umonitor > > Major changes in V12 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - Fix CENTOS build error: use __m128i instead of __v2di with > _mm_stream_si128 > > Major changes in V11 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - removed unused function, fixing build error > - fixed typo in port_setup commit message > - this patch series is based on dpdk-next-eventdev > > Major changes in v10 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - convert to use rte_power_monitor patches > - replace __builtin_ia32_movntdq() with _mm_stream_si128() > - remove unused functions in dlb_selftest.c > > Major changes in v9 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - fixed a build error due to __rte_cache_aligned being placed after > the ";" character, instead of before it. > > Major changes in v8 after dpdk reviews > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - moved introduction of dlb in relnotes_20_11 to first patch in series > - fixed underlines in dlb.rst that were too short > - note that the code still uses its private byte-encoded versions of > umonitor/umwait, rather than the new functions in the power > patch that are built on top of those intrinsics. This is intentional. > > Major changes in v7 after dpdk reviews > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - updated MAINTAINERS file to alphabetically insert DLB > - don't create RTE_ symbols in PMD > - converted to use version.map scheme > - converted to use .._master_lcore instead of .._main_lcore > - this patch set is based on dpdk-next-eventdev > > Major changes in v6 after dpdk reviews: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - fixed meson conditional build. Moved test into driver=E2=80=99s meson.b= uild > file instead of event/meson.build > - documentation is populated as associated code is introduced > - add log_register in add dynamic logging patch > - rename RTE_xxx symbol(s) as DLB2_xxx > - replaced function ptr enqueue_four with direct call to movdir64b > - remove unused port_pages > - broke up probe patch into 3 smaller patches for easier review > - changed param order of movdir64b/movntdq to match intrinsics > - added self to MAINTAINERS files > - squashed announcement of availability into last patch in series > - correct spelling errors and delete repeated words > - DPDK_21.0 -> DPDK 21 in map file > - add experimental banner to public structs and APIs > - implemented other suggestions from code reviews of DLB2 PMD. The > software is very similar in form so some DLB2 reviews comments > were applicable to DLB as well > > Major changes in v5 after dpdk reviews and additional internal reviews > by colleagues at Intel: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - implement changes requested in code reviews by Gage Eads and Mike Chen > - fix a memzone leak > - convert to use eal rte-cpuflags patch from Liang Ma > > Major changes in v4 after dpdk reviews and additional internal reviews > by colleagues at Intel: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - Remove make infrastructure > - shared code (pf/base) is now added incrementally > - flexible interface (iface.[ch]) is now added incrementally > - removed calls to rte_panic > - do not call pthread_create directly > - remove unused internal API, os_time > - convert rte_atomic to __atomic builtins > - broke out eventdev ABI changes, test/api changes, and new internal PCI > named probe API > - relocated enqueue logic to enqueue patch > > Major Changes in V3: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - Fixed a memory corruption issue due to not allocating enough CQ > memory for depths < 8. Hardware requires minimum allocation to be > at least 8 entries. > - Address review comments from Gage and Mattias. > - Remove versioning > - minor formatting changes > > Major changes in V2: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - Correct ABI break that was present in V1. > - Address some of the review comments received from Mattias. > I will address the remaining items identified by Mattias in the next > patch delivery. > - General code cleanup based on internal code reviews > > Depends-on: patch-82202 ("eventdev: increase MAX QUEUES PER DEV to 255") > > Timothy McDaniel (23): > event/dlb: add documentation and meson infrastructure > event/dlb: add dynamic logging > event/dlb: add private data structures and constants > event/dlb: add definitions shared with LKM or shared code > event/dlb: add inline functions > event/dlb: add eventdev probe > event/dlb: add flexible interface > event/dlb: add probe-time hardware init > event/dlb: add xstats > event/dlb: add infos get and configure > event/dlb: add queue and port default conf > event/dlb: add queue setup > event/dlb: add port setup > event/dlb: add port link > event/dlb: add port unlink and port unlinks in progress > event/dlb: add eventdev start > event/dlb: add enqueue and its burst variants > event/dlb: add dequeue and its burst variants > event/dlb: add eventdev stop and close > event/dlb: add PMD's token pop public interface > event/dlb: add PMD self-tests > event/dlb: add queue and port release > event/dlb: add timeout ticks entry point > > MAINTAINERS | 5 + > app/test/test_eventdev.c | 7 + > config/rte_config.h | 6 + > doc/api/doxy-api-index.md | 3 +- > doc/api/doxy-api.conf.in | 1 + > doc/guides/eventdevs/dlb.rst | 341 ++ > doc/guides/eventdevs/index.rst | 1 + > doc/guides/rel_notes/release_20_11.rst | 5 + > drivers/event/dlb/dlb.c | 4079 +++++++++++++++ > drivers/event/dlb/dlb_iface.c | 79 + > drivers/event/dlb/dlb_iface.h | 82 + > drivers/event/dlb/dlb_inline_fns.h | 36 + > drivers/event/dlb/dlb_log.h | 25 + > drivers/event/dlb/dlb_priv.h | 513 ++ > drivers/event/dlb/dlb_selftest.c | 1539 ++++++ > drivers/event/dlb/dlb_user.h | 814 +++ > drivers/event/dlb/dlb_xstats.c | 1217 +++++ > drivers/event/dlb/meson.build | 22 + > drivers/event/dlb/pf/base/dlb_hw_types.h | 334 ++ > drivers/event/dlb/pf/base/dlb_osdep.h | 310 ++ > drivers/event/dlb/pf/base/dlb_osdep_bitmap.h | 441 ++ > drivers/event/dlb/pf/base/dlb_osdep_list.h | 131 + > drivers/event/dlb/pf/base/dlb_osdep_types.h | 31 + > drivers/event/dlb/pf/base/dlb_regs.h | 2368 +++++++++ > drivers/event/dlb/pf/base/dlb_resource.c | 6904 ++++++++++++++++++++= ++++++ > drivers/event/dlb/pf/base/dlb_resource.h | 876 ++++ > drivers/event/dlb/pf/dlb_main.c | 586 +++ > drivers/event/dlb/pf/dlb_main.h | 47 + > drivers/event/dlb/pf/dlb_pf.c | 750 +++ > drivers/event/dlb/rte_pmd_dlb.c | 38 + > drivers/event/dlb/rte_pmd_dlb.h | 77 + > drivers/event/dlb/version.map | 9 + > drivers/event/meson.build | 2 +- > 33 files changed, 21677 insertions(+), 2 deletions(-) > create mode 100644 doc/guides/eventdevs/dlb.rst > create mode 100644 drivers/event/dlb/dlb.c > create mode 100644 drivers/event/dlb/dlb_iface.c > create mode 100644 drivers/event/dlb/dlb_iface.h > create mode 100644 drivers/event/dlb/dlb_inline_fns.h > create mode 100644 drivers/event/dlb/dlb_log.h > create mode 100644 drivers/event/dlb/dlb_priv.h > create mode 100644 drivers/event/dlb/dlb_selftest.c > create mode 100644 drivers/event/dlb/dlb_user.h > create mode 100644 drivers/event/dlb/dlb_xstats.c > create mode 100644 drivers/event/dlb/meson.build > create mode 100644 drivers/event/dlb/pf/base/dlb_hw_types.h > create mode 100644 drivers/event/dlb/pf/base/dlb_osdep.h > create mode 100644 drivers/event/dlb/pf/base/dlb_osdep_bitmap.h > create mode 100644 drivers/event/dlb/pf/base/dlb_osdep_list.h > create mode 100644 drivers/event/dlb/pf/base/dlb_osdep_types.h > create mode 100644 drivers/event/dlb/pf/base/dlb_regs.h > create mode 100644 drivers/event/dlb/pf/base/dlb_resource.c > create mode 100644 drivers/event/dlb/pf/base/dlb_resource.h > create mode 100644 drivers/event/dlb/pf/dlb_main.c > create mode 100644 drivers/event/dlb/pf/dlb_main.h > create mode 100644 drivers/event/dlb/pf/dlb_pf.c > create mode 100644 drivers/event/dlb/rte_pmd_dlb.c > create mode 100644 drivers/event/dlb/rte_pmd_dlb.h > create mode 100644 drivers/event/dlb/version.map > > -- > 2.6.4 >