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 2D6EAA00C3; Fri, 13 May 2022 10:43:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CD8E540E64; Fri, 13 May 2022 10:43:02 +0200 (CEST) Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by mails.dpdk.org (Postfix) with ESMTP id 2BCD740DDE for ; Fri, 13 May 2022 10:43:01 +0200 (CEST) Received: by mail-lf1-f54.google.com with SMTP id h29so13327220lfj.2 for ; Fri, 13 May 2022 01:43:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5WsQke0046eHIMW//gup7l3FGXjfEAeVw0ajDDZaMTk=; b=dJN38vdUEyBcgpxJUL/95rnBW43wsfQoqz/uVCM2OTKCMMzCe3pSSvcEU6Fv1rWKC4 1XWi9xFFwYJM53/UUKHHZqrk3/0xjTs1WJZZnUgme8dCjQAJSguOdH2YyJBDSAaZcz1h C8NEf+1w2J2ORj/kT8Di6PLBCf5nFZL68ZRnC8qatlZFMyz6x4clNBYN+U0CTy3mIz5B RqVVIjIDP1pMlE1l5UqTVoQiWrtbjLNXcuTtJLcdY+9WLREJCNCxq0iP10uETTuffJAs hkydXJC4ocJIMN0zT2c79Tr870lr24p8N28yK1AYQigneU0uZy4HG7Vx2nv9K3eegxUm yPcQ== 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=5WsQke0046eHIMW//gup7l3FGXjfEAeVw0ajDDZaMTk=; b=QwhHPSiR3XGRoaHLYwM4ZYmJWyFU5QvIuv9TVipgBLh7PznHvRBIg3KdlfxRgSfyrf WqMY2/mlIevoSLYjH9TqZAd3TkBgJb92FdtG04lFIrYCkuYjjL8WXZz1YrqG7SIyF+hc fehEJfNwaJTt3JUYZuMpPoUGFMFck66hXIu5giVpxE3u5rAE2VY7av78cFHn9kyRFrhw nolfdIl3LMnJQ7jOXgxlwmyoKceP7Aa8PwZAbARzLJkLKQfg3BlhmFsGRg0BE0bjdRD4 MhG6BrI8caFJ4YN/9rXFuBdxn+ovS4r+ViixPp0qrgORgSGvOqaDzeF1JURmHjpjCD8l 9YgQ== X-Gm-Message-State: AOAM532bAL61+IwKXwkveIfCvSarWJQvqIBc6wjorrEyf7H9n8Ecol/p zdQIkF/phw3Y4j/508mlCNJVHT8uuPS9WK9PvV+KUg== X-Google-Smtp-Source: ABdhPJyVLwhjruynEz53bA7D/cE5+bcc2yHf3/eGwuGpsIwiJ2WNQB3DQimcci3Re5S5lqk2N2CQXekqfmE61vgtG+w= X-Received: by 2002:a05:6512:1520:b0:443:ec43:5fe8 with SMTP id bq32-20020a056512152000b00443ec435fe8mr2775407lfb.589.1652431380553; Fri, 13 May 2022 01:43:00 -0700 (PDT) MIME-Version: 1.0 References: <20220510150759.525434-1-kda@semihalf.com> <20220510154849.530872-1-kda@semihalf.com> <20220510154849.530872-2-kda@semihalf.com> <7bc97240-10c7-c437-9f31-b97dc2b418c6@canonical.com> In-Reply-To: <7bc97240-10c7-c437-9f31-b97dc2b418c6@canonical.com> From: =?UTF-8?Q?Stanis=C5=82aw_Kardach?= Date: Fri, 13 May 2022 10:42:24 +0200 Message-ID: Subject: Re: [PATCH v3 1/8] eal: add initial support for RISC-V architecture To: Heinrich Schuchardt Cc: Thomas Monjalon , Michal Mazurek , dev , Frank Zhao , Sam Grove , Marcin Wojtas , upstream@semihalf.com 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 Fri, May 13, 2022 at 8:50 AM Heinrich Schuchardt wrote: > > +Linux kernel > > +~~~~~~~~~~~~ > > + > > +It is recommended to use Linux kernel built from > > +`SiFive Freedom Unleashed SDK `_. > > How would the Unleashed SDK help on a later board or a board from a > different vendor? This SDK is for both Unleashed and Unmatched. The naming is a bit misleading. > > Why wouldn't an upstream kernel work? At the point of writing it was missing patches related to PCI resource mapping exposure to userspace. Right now it's there. > > I suggest to eliminate this misleading section. I'll re-test with the latest upstream kernel and rephrase that this should work with Linux kernel >= x.y.z. > > > + > > + > > +Meson prerequisites > > +~~~~~~~~~~~~~~~~~~~ > > + > > +Meson depends on pkgconfig to find the dependencies. > > +The package ``pkg-config-riscv64-linux-gnu`` is required for RISC-V. > > +To install it in Ubuntu:: > > + > > + sudo apt install pkg-config-riscv64-linux-gnu > > This package does not exist in the current Ubuntu LTS (22.04, Jammy). > > Setting environment variables PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH, > PKG_CONFIG_SYSROOT_DIR properly should do the job with the normal > pkg-config. Do you happen to know why was this package removed? Given that, is there a Ubuntu manual page or tool somewhere specifying the correct values to obtain for a given arch? > > > + > > + > > +GNU toolchain > > +------------- > > + > > + > > +Obtain the cross toolchain > > +~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +The build process was tested using: > > + > > +* Ubuntu toolchain (the ``crossbuild-essential-riscv64`` package). > > + > > +* Latest `RISC-V GNU toolchain > > + `_ on Ubuntu or Arch > > + Linux. > > + > > +Alternatively the toolchain may be built straight from the source, to do that > > +follow the instructions on the riscv-gnu-toolchain github page. > > + > > + > > +Unzip and add into the PATH > > +~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +This step is only required for the riscv-gnu-toolchain. The Ubuntu toolchain is > > +in the PATH already. > > + > > +.. code-block:: console > > + > > + tar -xvf riscv64-glibc-ubuntu-20.04-.tar.gz > > You can install the glibc package with apt-get after adding the > architecture with sudo dpkg --add-architecture riscv64. See > https://wiki.debian.org/CrossCompiling. > This guide is supposed to target also Arch where this toolchain should work properly. That's why in previous section I'm mentioning crossbuild-essential-riscv64 and RISC-V GNU toolchain from github separately. > > + export PATH=$PATH:/riscv/bin > > + > > + > > +Cross Compiling DPDK with GNU toolchain using Meson > > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +To cross-compile DPDK for a desired target machine use the following command:: > > + > > + meson cross-build --cross-file > > + ninja -C cross-build > > + > > +For example if the target machine is a generic rv64gc RISC-V, use the following > > +command:: > > + > > + meson riscv64-build-gcc --cross-file config/riscv/riscv64_linux_gcc > > + ninja -C riscv64-build-gcc > > + > > +If riscv-gnu-toolchain is used, binary names should be updated to match. Update the following lines in the cross-file: > > + > > +.. code-block:: console > > + > > + [binaries] > > + c = 'riscv64-unknown-linux-gnu-gcc' > > + cpp = 'riscv64-unknown-linux-gnu-g++' > > + ar = 'riscv64-unknown-linux-gnu-ar' > > + strip = 'riscv64-unknown-linux-gnu-strip' > > + ... > > + > > +Some toolchains (such as freedom-u-sdk one) require also setting ``--sysroot``, > > +otherwise include paths might not be resolved. To do so, add the appropriate > > +paths to the cross-file: > > + > > +.. code-block:: console > > + > > + [properties] > > + ... > > + c_args = ['--sysroot', ''] > > + cpp_args = c_args > > + c_link_args = ['--sysroot', ''] > > + cpp_link_args = c_link_args > > + ... > > + > > + > > +Supported cross-compilation targets > > +----------------------------------- > > + > > +Currently the following targets are supported: > > + > > +* Generic rv64gc ISA: ``config/riscv/riscv64_linux_gcc`` > > + > > +* SiFive U740 SoC: ``config/riscv/riscv64_sifive_u740_linux_gcc`` > > Why do we need a special config for the Unmatched board that is not sold > anymore? Doesn't the Unmatched board work with the genenric config? I wasn't aware that they did discontinue it. As far as I can see it's due to supply chain issues, maybe that means it'll get back? Generic config works just fine for the Unmatched. However config for Unmatched enables certain optimizations that are valid there. I.e. when reading RIME or CYCLE registers in a precise way, normally a fence should be inserted before reading it. However on Unmatched read to both counters is emulated through a call to firmware (SBI) in userspace, eliminating the need for the fence. > > I assume a single configuriation file for the generic target is enough. > > Best regards > > Heinrich >