From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0EEEEA04FD; Wed, 8 Jun 2022 14:28:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BE9A642BE1; Wed, 8 Jun 2022 14:28:42 +0200 (CEST) Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) by mails.dpdk.org (Postfix) with ESMTP id 6A1C542BB9 for ; Wed, 8 Jun 2022 14:28:41 +0200 (CEST) Received: by mail-lj1-f173.google.com with SMTP id s13so22545569ljd.4 for ; Wed, 08 Jun 2022 05:28:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Dzp2+y8s1Z/Zxx89AchfaGWkTg5e0j8H9p0Zikdd2m4=; b=Z+IrXwESyyaOWbgztcQySFsvUGlsQjelBNndgYbkS1ygJeM154N371NjhIAjce1cSq MFT9BFdegv4aMlrPn1NtUmeHt8VrBCrRPuaj6OOHUMxA1IOrBQrbHlleiBRhwfsM4R7H Mb2P4SdusTE2PhoV7yiuEqU4n8EawtXHLpKaR1Bq7yzqOH9u8ZmR1YBtlAP3JLZiataG wXzWaa8NPe0Tjc0Ruokoz47VUFhljvo7SHjfHHL2QUHlTfDxCFMUSyHfe1Hz5rw9Gi34 q51ExjUZpMc93mTPVx+i7T0CL4XOUqSvO0czlmdMnbHCSDQMtkG9XDK5zD5izwuBF855 A5ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Dzp2+y8s1Z/Zxx89AchfaGWkTg5e0j8H9p0Zikdd2m4=; b=AgdOOaLy8rfvDNMAZYQCNNEajOGTljXQUWglgPK9rCDOBZYRgyMclCJZO3c1L1wzoH L65XIXEVdbXLe23K50mjJ3oh8YUKanWQH5R2aPcZ8aPRf6Oug3QerJYrxG1Lzv4MSnY+ OEfrVzEphTIH5dQqpeWvpej5qiO9bKxQq1SgV2bHA/ZC8S5IzvYD//NkI8ABwTSFCR4z LquGtzwTyy1/Uy3/8gMrkBvuY3W0u9Bssg7JvgfAw/Gm9zdejs6TD9dlyNChXjSjTP/Y M8mgQM1ExnVK3aFUTrPndH6WiwU6gHRZ5sHnFdaWNtAXiEA56va0aiuq3uH6Sioniuq3 ZjNg== X-Gm-Message-State: AOAM533blMAvtcLkrKFb0y6uXdUKni1v8OD2qQCmLiSqr8GMv3AWkJtx akCukGLwLW3qrWbJaOzrjvZ0n2v2nS1uu6mtyzg61A== X-Google-Smtp-Source: ABdhPJx2KAzbXJgFLgKImvJDfGKac3riWizZBmBNwEsie68SljQThhMP2kNzRz+AmXp+s6LNuUmCBfX6NVyTHABtEhM= X-Received: by 2002:a05:651c:b29:b0:255:6ecc:96f with SMTP id b41-20020a05651c0b2900b002556ecc096fmr19276763ljr.176.1654691320756; Wed, 08 Jun 2022 05:28:40 -0700 (PDT) MIME-Version: 1.0 References: <20220531141307.253385-1-kda@semihalf.com> In-Reply-To: From: =?UTF-8?Q?Stanis=C5=82aw_Kardach?= Date: Wed, 8 Jun 2022 14:28:04 +0200 Message-ID: Subject: Re: [PATCH v4 0/8] Introduce support for RISC-V architecture To: David Marchand Cc: dev , Frank Zhao , Sam Grove , Marcin Wojtas , upstream@semihalf.com, Heinrich Schuchardt Content-Type: text/plain; charset="UTF-8" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Wed, Jun 8, 2022 at 10:42 AM David Marchand wrote: > > On Tue, May 31, 2022 at 4:14 PM Stanislaw Kardach wrote: > > > > This patchset adds support for building and running DPDK on 64bit RISC-V > > architecture. The initial support targets rv64gc (rv64imafdc) ISA and > > was tested on SiFive Unmatched development board with the Freedom U740 > > SoC running Linux (freedom-u-sdk based kernel). > > I have tested this codebase using DPDK unit and perf tests as well as > > test-pmd, l2fwd and l3fwd examples. > > The NIC attached to the DUT was Intel X520-DA2 which uses ixgbe PMD. > > On the UIO side, since U740 does not have an IOMMU, I've used igb_uio, > > uio_pci_generic and vfio-pci noiommu drivers. > > > > Functional verification done using meson tests. fast-tests suite passing with > > the default config. > > > > PMD verification done using a Intel x520-DA2 NIC (ixgbe) and the test-pmd > > application. Packet transfer checked using all UIO drivers available for > > non-IOMMU platforms: uio_pci_generic, vfio-pci noiommu and igb_uio. > > > > The i40e PMD driver is disabled on RISC-V as the rv64gc ISA has no vector > > operations. > > > > RISCV support is currently limited to Linux as the time measurement frequency > > discovery is tied to reading a device-tree node via procfs. > > > > Clang compilation currently not supported due to issues with missing relocation > > relaxation. > > > > Commit 1 introduces EAL and build system support for RISC-V architecture > > as well as documentation updates. > > Commits 2-5 add missing defines and stubs to enable RISC-V operation in > > non-EAL parts. > > Commit 6 adds RISC-V specific cpuflags test. > > Commits 7-8 add RISC-V build testing to test-meson-builds.sh and github CI. > > Overall, the series lgtm. > It did not get much reviews, but the porting is straightforward and > clean enough. > > I'm waiting for some compilation to finish and I will merge it for 22.07-rc1. > > > Some comments that will probably require some followup patches for rc2: > > - I removed the known issue about --no-huge from the EAL patch. > This seems to be a generic issue that does not block the RISC V port > and can be re-submitted as a separate patch. If you mean the modified entry in the known_issues, I've added it at Heinrich's request, although I agree I should have placed it in a separate patch. > > > - I had some trouble with finding a right toolchain for test-meson-builds.sh. > The mentionned toolchains in the cross build guide don't work for me on FC36. > I managed to cross compile with a Bootlin toolchain, though I had to > adjust the cross compilation file. > I'll probably end up compiling my own toolchain later unless you have > a better idea. I have just checked with fedora/36 docker and it seems that only gcc and binutils packages are there but stdlib isn't. Hence meson fails at basic checks because it can't find "stdio.h". So that's a bug to post to Fedora I believe. What does work in terms of cross-compiling is using a riscv-gnu-toolchain tarball + modified cross-file (i.e. from here: https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2022.06.03). That most likely won't work for building RPMs but for static compilations it might be enough. Or you could use a Ubuntu docker and cross-compile there (though the same problem as before): docker run -v /path/to/dpdk:/opt/dpdk -it ubuntu:jammy /bin/bash Or a VM as Heinrich suggested. > > At least the compilation in GHA works. That's because I've used Ubuntu as a base, which has a proper toolchain setup. Also riscv-gnu-toolchain project targets Ubuntu, so that helps. > > > - The hardcoded pkg-config path in config/riscv/riscv64_linux_gcc does > not seem generic. > It is probably not a big issue, but I'd rather move it to a Ubuntu > specific cross compile meson file. > WDYT? I think I'll rename the config file. In theory, the man file of pkg-config (https://linux.die.net/man/1/pkg-config) mentions the default searching path as prefix/lib/pkgconfig. Prefix being /usr/riscv64-linux-gnu the generic location should be /usr/riscv64-linux-gnu/lib/pkgconfig but Ubuntu doesn't follow that. There are no RISC-V cross-libs offering pkg-config neither in Ubuntu or Fedora so I can't really tell what's the best path to use. Though that also means we won't hit this issue for some time. > > > - I adjusted some coding style in some asm and some indentation and > wording in meson. Thanks! > > > - The cross compilation guide mentions using > crossbuild-essential-riscv64 for Ubuntu. > We should switch to it in GHA. > Though after trying myself, there is an issue in the C++ headers check > in GHA for some acl header including rte_vect.h. > Can you have a look? I'm testing a fix for this. I have not taken C++ type conversion rules into account. > > > - There was a patch from Heinrich about native compilation, can you review it? I see it was merged but your question from that thread still stands. I'm compiling native now to check. > > > -- > David Marchand >