All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Stanisław Kardach" <kda@semihalf.com>
To: David Marchand <david.marchand@redhat.com>
Cc: dev <dev@dpdk.org>, Frank Zhao <Frank.Zhao@starfivetech.com>,
	 Sam Grove <sam.grove@sifive.com>,
	Marcin Wojtas <mw@semihalf.com>,
	upstream@semihalf.com,
	 Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Subject: Re: [PATCH v4 0/8] Introduce support for RISC-V architecture
Date: Wed, 8 Jun 2022 14:28:04 +0200	[thread overview]
Message-ID: <CALVGJWLW7or9ZTbBjW=nHE3EUpxzDEnqBeJWtiFduhLj1h8-eQ@mail.gmail.com> (raw)
In-Reply-To: <CAJFAV8zN_LVSs+YLrOeSzY5aOY41oqQuES+cvsn4bcN3AQ=wsg@mail.gmail.com>

On Wed, Jun 8, 2022 at 10:42 AM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Tue, May 31, 2022 at 4:14 PM Stanislaw Kardach <kda@semihalf.com> 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
>

      parent reply	other threads:[~2022-06-08 12:28 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-31 14:12 [PATCH v4 0/8] Introduce support for RISC-V architecture Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 1/8] eal: add initial " Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 2/8] net/ixgbe: enable vector stubs for RISC-V Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 3/8] net/memif: set memfd syscall ID on RISC-V Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 4/8] net/tap: set BPF syscall ID for RISC-V Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 5/8] examples/l3fwd: enable RISC-V operation Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 6/8] test/cpuflags: add test for RISC-V cpu flag Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 7/8] devtools: add RISC-V to test-meson-builds.sh Stanislaw Kardach
2022-05-31 14:13 ` [PATCH v4 8/8] ci: add RISCV64 cross compilation job Stanislaw Kardach
2022-06-08  8:41 ` [PATCH v4 0/8] Introduce support for RISC-V architecture David Marchand
2022-06-08  9:31   ` David Marchand
2022-06-08  9:48     ` Stanisław Kardach
2022-06-08  9:51   ` Heinrich Schuchardt
2022-06-08 12:28   ` Stanisław Kardach [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALVGJWLW7or9ZTbBjW=nHE3EUpxzDEnqBeJWtiFduhLj1h8-eQ@mail.gmail.com' \
    --to=kda@semihalf.com \
    --cc=Frank.Zhao@starfivetech.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=heinrich.schuchardt@canonical.com \
    --cc=mw@semihalf.com \
    --cc=sam.grove@sifive.com \
    --cc=upstream@semihalf.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.