mbox series

[v8,0/6] Introduce support for LoongArch architecture

Message ID 20221004154047.35276-1-zhoumin@loongson.cn (mailing list archive)
Headers
Series Introduce support for LoongArch architecture |

Message

zhoumin Oct. 4, 2022, 3:40 p.m. UTC
  Dear team,

The following patch set is intended to support DPDK running on LoongArch
architecture.

LoongArch is the general processor architecture of Loongson Corporation
and is a new RISC ISA, which is a bit like MIPS or RISC-V.

The online documents of LoongArch architecture are here:
    https://loongson.github.io/LoongArch-Documentation/README-EN.html

The latest build tools for LoongArch (binary) can be downloaded from:
    https://github.com/loongson/build-tools

If you want to generate your own cross toolchain, you can refer to
this thread:
    https://inbox.dpdk.org/dev/53b50799-cb29-7ee6-be89-4fe21566e127@loongson.cn/T/#m1da99578f85894a4ddcd8e39d8239869e6a501d1
From the link above, you can find a script to do that.

v8: 
    - rebase the patchset on the main repository
    - add meson build test for LoongArch in devtools/test-meson-builds.sh
    - add ccache to build configuration file
    - change the cpp meson variable to a c++ compiler
    - complete the cross compilation documentation for LoongArch, adding
      reference to the build script and dependency list
    - put the feature description for LoongArch in the EAL features list
      in release_22_11.rst
    - simplify macro definition for new added headers
    - put the items about LoongArch in the right place in meson.build

v7:
    - rebase the patchset on the main repository
    - add errno.h to rte_power_intrinsics.c according with
      commit 72b452c5f259

v6:
    - place some blocks for LoongArch in a pseudo alphabetical order
    - remove some macros not used
    - update release notes in the correct format
    - remove some headers for LoongArch, including msclock, pflock and
      ticketlock, which are now non-arch specific
    - rename some helpers to make them more readable 
    - remove some copied comments
    - force-set RTE_FORCE_INTRINSICS in config and remove non-arch
      specific implementations
    - fix format errors in meson file reported by check-meson.py
    - rebase the patchset on the main repository

v5:
    - merge all patches for supporting LoongArch EAL into one patch
    - add LoongArch cross compilation document and update some documents
      related to architecture
    - remove vector stubs added for LoongArch in net/i40e and net/ixgbe
    - add LOONGARCH64 cross compilation job in github ci

v4:
    - rebase the patchset on the main repository of version 22.07.0

v3:
    - add URL for cross compile tool chain
    - remove rte_lpm_lsx.h which was a dummy vector implementation
      because there is already a scalar implementation, thanks to
      Michal Mazurek
    - modify the name of compiler for cross compiling
    - remove useless variable in meson.build

v2:
    - use standard atomics of toolchain to implement
      atomic operations
    - implement spinlock based on standard atomics

Min Zhou (6):
  eal/loongarch: support LoongArch architecture
  net/ixgbe: add vector stubs for LoongArch
  net/memif: set memfd syscall ID on LoongArch
  net/tap: set BPF syscall ID for LoongArch
  examples/l3fwd: enable LoongArch operation
  test/cpuflags: add test for LoongArch cpu flag

 MAINTAINERS                                   |  6 ++
 app/test/test_cpuflags.c                      | 41 ++++++++
 app/test/test_xmmt_ops.h                      | 12 +++
 .../loongarch/loongarch_loongarch64_linux_gcc | 16 +++
 config/loongarch/meson.build                  | 43 ++++++++
 devtools/test-meson-builds.sh                 |  4 +
 doc/guides/contributing/design.rst            |  2 +-
 .../cross_build_dpdk_for_loongarch.rst        | 97 +++++++++++++++++++
 doc/guides/linux_gsg/index.rst                |  1 +
 doc/guides/nics/features.rst                  |  8 ++
 doc/guides/nics/features/default.ini          |  1 +
 doc/guides/nics/features/ixgbe.ini            |  1 +
 doc/guides/rel_notes/release_22_11.rst        |  7 ++
 drivers/net/i40e/meson.build                  |  6 ++
 drivers/net/ixgbe/ixgbe_rxtx.c                |  7 +-
 drivers/net/memif/rte_eth_memif.h             |  2 +
 drivers/net/tap/tap_bpf.h                     |  2 +
 examples/l3fwd/l3fwd_em.c                     |  8 ++
 lib/eal/linux/eal_memory.c                    |  4 +
 lib/eal/loongarch/include/meson.build         | 18 ++++
 lib/eal/loongarch/include/rte_atomic.h        | 47 +++++++++
 lib/eal/loongarch/include/rte_byteorder.h     | 40 ++++++++
 lib/eal/loongarch/include/rte_cpuflags.h      | 39 ++++++++
 lib/eal/loongarch/include/rte_cycles.h        | 47 +++++++++
 lib/eal/loongarch/include/rte_io.h            | 18 ++++
 lib/eal/loongarch/include/rte_memcpy.h        | 61 ++++++++++++
 lib/eal/loongarch/include/rte_pause.h         | 24 +++++
 .../loongarch/include/rte_power_intrinsics.h  | 20 ++++
 lib/eal/loongarch/include/rte_prefetch.h      | 47 +++++++++
 lib/eal/loongarch/include/rte_rwlock.h        | 42 ++++++++
 lib/eal/loongarch/include/rte_spinlock.h      | 64 ++++++++++++
 lib/eal/loongarch/include/rte_vect.h          | 65 +++++++++++++
 lib/eal/loongarch/meson.build                 | 11 +++
 lib/eal/loongarch/rte_cpuflags.c              | 93 ++++++++++++++++++
 lib/eal/loongarch/rte_cycles.c                | 45 +++++++++
 lib/eal/loongarch/rte_hypervisor.c            | 11 +++
 lib/eal/loongarch/rte_power_intrinsics.c      | 53 ++++++++++
 meson.build                                   |  2 +
 38 files changed, 1012 insertions(+), 3 deletions(-)
 create mode 100644 config/loongarch/loongarch_loongarch64_linux_gcc
 create mode 100644 config/loongarch/meson.build
 create mode 100644 doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst
 create mode 100644 lib/eal/loongarch/include/meson.build
 create mode 100644 lib/eal/loongarch/include/rte_atomic.h
 create mode 100644 lib/eal/loongarch/include/rte_byteorder.h
 create mode 100644 lib/eal/loongarch/include/rte_cpuflags.h
 create mode 100644 lib/eal/loongarch/include/rte_cycles.h
 create mode 100644 lib/eal/loongarch/include/rte_io.h
 create mode 100644 lib/eal/loongarch/include/rte_memcpy.h
 create mode 100644 lib/eal/loongarch/include/rte_pause.h
 create mode 100644 lib/eal/loongarch/include/rte_power_intrinsics.h
 create mode 100644 lib/eal/loongarch/include/rte_prefetch.h
 create mode 100644 lib/eal/loongarch/include/rte_rwlock.h
 create mode 100644 lib/eal/loongarch/include/rte_spinlock.h
 create mode 100644 lib/eal/loongarch/include/rte_vect.h
 create mode 100644 lib/eal/loongarch/meson.build
 create mode 100644 lib/eal/loongarch/rte_cpuflags.c
 create mode 100644 lib/eal/loongarch/rte_cycles.c
 create mode 100644 lib/eal/loongarch/rte_hypervisor.c
 create mode 100644 lib/eal/loongarch/rte_power_intrinsics.c
  

Comments

David Marchand Oct. 6, 2022, 11:49 a.m. UTC | #1
Hello Min,

On Tue, Oct 4, 2022 at 5:41 PM Min Zhou <zhoumin@loongson.cn> wrote:
>
> Dear team,
>
> The following patch set is intended to support DPDK running on LoongArch
> architecture.
>
> LoongArch is the general processor architecture of Loongson Corporation
> and is a new RISC ISA, which is a bit like MIPS or RISC-V.
>
> The online documents of LoongArch architecture are here:
>     https://loongson.github.io/LoongArch-Documentation/README-EN.html
>
> The latest build tools for LoongArch (binary) can be downloaded from:
>     https://github.com/loongson/build-tools
>
> If you want to generate your own cross toolchain, you can refer to
> this thread:
>     https://inbox.dpdk.org/dev/53b50799-cb29-7ee6-be89-4fe21566e127@loongson.cn/T/#m1da99578f85894a4ddcd8e39d8239869e6a501d1
> From the link above, you can find a script to do that.
>
> v8:
>     - rebase the patchset on the main repository
>     - add meson build test for LoongArch in devtools/test-meson-builds.sh
>     - add ccache to build configuration file
>     - change the cpp meson variable to a c++ compiler
>     - complete the cross compilation documentation for LoongArch, adding
>       reference to the build script and dependency list
>     - put the feature description for LoongArch in the EAL features list
>       in release_22_11.rst
>     - simplify macro definition for new added headers
>     - put the items about LoongArch in the right place in meson.build

Thanks for this last revision.

We discussed a few things offlist, let me sumarize here for others:
- I fixed a few style issues, re-arranged the documentation around the
cross toolchain generation from sources,
- on your side, LoongSon is building a CI system so that we have non
regression compilation tests reports in DPDK patchwork, hopefully, by
-rc3 time.
  As for adding more tests run by this CI, this can be discussed later,


The last build fixes for GCC 12 have been merged by Thomas.
There is nothing blocking for merging this series.

Welcome to LoongArch in DPDK!

Series applied.
  
zhoumin Oct. 6, 2022, 12:48 p.m. UTC | #2
Hi, David,

It is hard to find words to express my gratitude.


On Thu, Oct 6, 2022 at 19:49, David Marchand wrote:
> Hello Min,
>
> On Tue, Oct 4, 2022 at 5:41 PM Min Zhou <zhoumin@loongson.cn> wrote:
>> Dear team,
>>
>> The following patch set is intended to support DPDK running on LoongArch
>> architecture.
>>
>> LoongArch is the general processor architecture of Loongson Corporation
>> and is a new RISC ISA, which is a bit like MIPS or RISC-V.
>>
>> The online documents of LoongArch architecture are here:
>>      https://loongson.github.io/LoongArch-Documentation/README-EN.html
>>
>> The latest build tools for LoongArch (binary) can be downloaded from:
>>      https://github.com/loongson/build-tools
>>
>> If you want to generate your own cross toolchain, you can refer to
>> this thread:
>>      https://inbox.dpdk.org/dev/53b50799-cb29-7ee6-be89-4fe21566e127@loongson.cn/T/#m1da99578f85894a4ddcd8e39d8239869e6a501d1
>>  From the link above, you can find a script to do that.
>>
>> v8:
>>      - rebase the patchset on the main repository
>>      - add meson build test for LoongArch in devtools/test-meson-builds.sh
>>      - add ccache to build configuration file
>>      - change the cpp meson variable to a c++ compiler
>>      - complete the cross compilation documentation for LoongArch, adding
>>        reference to the build script and dependency list
>>      - put the feature description for LoongArch in the EAL features list
>>        in release_22_11.rst
>>      - simplify macro definition for new added headers
>>      - put the items about LoongArch in the right place in meson.build
> Thanks for this last revision.
>
> We discussed a few things offlist, let me sumarize here for others:
> - I fixed a few style issues, re-arranged the documentation around the
> cross toolchain generation from sources,


Thanks a lot for your review and help.


> - on your side, LoongSon is building a CI system so that we have non
> regression compilation tests reports in DPDK patchwork, hopefully, by
> -rc3 time.


Yes, thanks. We will keep the deadline and try our best to provide a 
stable CI system for LoongArch.

>    As for adding more tests run by this CI, this can be discussed later,
>

Yes, thanks. There are also some important issues to discuss.


> The last build fixes for GCC 12 have been merged by Thomas.
> There is nothing blocking for merging this series.
>
> Welcome to LoongArch in DPDK!
>
> Series applied.


Thanks a lot. It is the beginning for LoongArch platform to benefit from 
DPDK community. I expect DPDK

will become more and more prosperous on LoongArch.


Thanks,

Min Zhou

>
>