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 0471FA00C3; Fri, 13 May 2022 12:51:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9F5BC40DF7; Fri, 13 May 2022 12:51:59 +0200 (CEST) Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by mails.dpdk.org (Postfix) with ESMTP id BFDE840DDE for ; Fri, 13 May 2022 12:51:58 +0200 (CEST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 815F53FE01 for ; Fri, 13 May 2022 10:51:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1652439118; bh=iJ2sUC6ATkBGNpsv7BSbMNsP5T39uYklzrsiOJT4osA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=peEv4/MIe3qEkyiQbi5ZfL9I8podsMDIhXstJUQl6RFQ1+39jQnQ1Stwh1ueQonXS mkOnxDG7MG88Gvtz5ZScnKqfnsOr1cjNP2URYR5aq5bSqBbC+3a0w8hJ/UspmXCQJU FAUiK7GMKw7NGiCu020N/W8R1pCH6qQDQif5OvcoPEUg2ONh7kSzjm945lX0z0PyRJ s2KN+KqyVtkjMuasv7o6a72+aNaUkiJOybMmxRajeNtp3cUARNq0igFuvE7dbcrEfu /Qsitawvq8TPIN068Pg1ztkNoDNxXZeClCTI/murMTGfggFAqqqNJGpS3WHk442wgC WnmZjGbg1Lb8w== Received: by mail-ed1-f70.google.com with SMTP id dk9-20020a0564021d8900b00425a9c3d40cso4730430edb.7 for ; Fri, 13 May 2022 03:51:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=iJ2sUC6ATkBGNpsv7BSbMNsP5T39uYklzrsiOJT4osA=; b=gch73vYmqmk7OzmGX7fTaCGCTyodnRosJ6AhDEjilkJ64LFlped7xrnURBBg6sOt1P /xwMkwLgUBcBi2wo1ClbbIRDsdM3s5sxKDCLH7WmSeoo+61O+nHQAoaVoNuyjKOVX0rK YNg5I1NaUIdhobIZLSDcA7S54nH0MktLq4blvD6NUwssZJfDl4RnEP8WYcQKk8fu6jPG iO9JY6uzFtZtAo1TRRo+TppTqqDjdiYXksVwONI5lddCtpVLiuhtUxCRxBP5YoePxOf6 n/ot/k81pwQ+l+cXF5jgJIX4dss6KeliPHv6v78wE/qYgXHZgPtC5kRTBgHW3FuUcSqw LL3A== X-Gm-Message-State: AOAM530EhOlEA3GLQegUjHR0LrxG+Ws2NF9OUBT0iWQKiW05TUBbwVTM mAI36mvRez65+TGDtNwrPhD+pk//flVuh01/X3CTCgiL0ywoPDs9MOF9qQur8oJKv5fsqCRDZ5i 0umEXv83m8myBePINZVNU X-Received: by 2002:a05:6402:35d4:b0:427:f36b:66dc with SMTP id z20-20020a05640235d400b00427f36b66dcmr39968845edc.77.1652439117990; Fri, 13 May 2022 03:51:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNanNLmEQWVBSXsPdlhz7rgQbhm/Fo413Z83MO34d0rMl1k4HlqBNRsMDC30H7edHpR9gLNg== X-Received: by 2002:a05:6402:35d4:b0:427:f36b:66dc with SMTP id z20-20020a05640235d400b00427f36b66dcmr39968819edc.77.1652439117662; Fri, 13 May 2022 03:51:57 -0700 (PDT) Received: from [192.168.123.55] (ip-062-143-094-109.um16.pools.vodafone-ip.de. [62.143.94.109]) by smtp.gmail.com with ESMTPSA id h14-20020a170906530e00b006f3ef214e0asm641347ejo.112.2022.05.13.03.51.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 May 2022 03:51:56 -0700 (PDT) Message-ID: Date: Fri, 13 May 2022 12:51:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH v3 1/8] eal: add initial support for RISC-V architecture Content-Language: en-US To: =?UTF-8?Q?Stanis=c5=82aw_Kardach?= Cc: Thomas Monjalon , Michal Mazurek , dev , Frank Zhao , Sam Grove , Marcin Wojtas , upstream@semihalf.com 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> From: Heinrich Schuchardt In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 5/13/22 10:42, Stanisław Kardach wrote: > 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? The Debian maintainer introduced this change in package gcc-defaults-ports. The change log does not give a reason. > Given that, is there a Ubuntu manual page or tool somewhere specifying > the correct values to obtain for a given arch? The values might depend on the Linux distribution. In Ubuntu the .pc files are in /usr/lib/riscv64-linux-gnu/pkgconfig /usr/lib/pkgconfig /usr/share/pkgconfig > >> >>> + >>> + >>> +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 https://forums.sifive.com/t/sifive-update-on-hifive-unmatched-boards-in-2022/5569?s=09 : "we’ve decided to focus on the next generation SiFive HiFive development systems rather than trying to put together another build of the HiFive Unmatched platform in 2022." > 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. Distributions like Ubuntu will only build a single configuration. It is preferable to read vendor_id and arch_id via an SBI call at runtime to switch code paths. Isn't the saving gained by removing the fence irrelevant compared to the duration of an SBI call? Best regards Heinrich >> >> I assume a single configuration file for the generic target is enough. >> >> Best regards >> >> Heinrich >>