mbox series

[v4,0/7] mbuf dynamic field expansion

Message ID cover.1665170499.git.sthotton@marvell.com (mailing list archive)
Headers
Series mbuf dynamic field expansion |

Message

Shijith Thotton Oct. 7, 2022, 7:30 p.m. UTC
  This is a continuation of the discussions[1] to add mbuf physical address field to dynamic field.
Previous version was to add PA field to dynamic field area based on the EAL IOVA mode option. It was
deemed unsafe as some components could still use the PA field without checking IOVA mode and there
are drivers which need PA to work. One suggestion was to make the IOVA mode check at compile time so
that drivers which need PA can be disabled during build. This series adds this new meson build
options. Fourth patch adds mbuf PA field to dynamic field on such builds. Last two patches enable
Marvell cnxk PMDs and software PMDs in IOVA as PA disabled build as they work without PA field.

1. https://inbox.dpdk.org/dev/57d2ab7fff672716d37ba4078e2e3bb2db126607.1656605763.git.sthotton@marvell.com/.

v4:
 * Restructured changes to multiple patches.
 * Moved to #if scheme instead of union.
 * Updated release notes.

v3:
 * Cleared use of buf_iova from cnxk PMD.

v2:
 * Used RTE_IOVA_AS_VA instread of rte_is_iova_as_va_build().
 * Moved mbuf next pointer to first cacheline if RTE_IOVA_AS_VA = 1.

Shijith Thotton (7):
  mbuf: add API to get and set mbuf physical address
  test/dma: use API to get mbuf data physical address
  build: add meson option to configure IOVA mode as PA
  mbuf: add second dynamic field member
  lib: move mbuf next pointer to first cache line
  drivers: mark cnxk PMDs work with IOVA as PA disabled
  drivers: mark software PMDs work with IOVA as PA disabled

 app/test-bbdev/test_bbdev_perf.c         |  2 +-
 app/test-crypto-perf/cperf_test_common.c |  5 +--
 app/test/test_bpf.c                      |  2 +-
 app/test/test_dmadev.c                   | 33 ++++++--------
 app/test/test_mbuf.c                     | 12 +++---
 app/test/test_pcapng.c                   |  2 +-
 config/arm/meson.build                   |  8 +++-
 config/meson.build                       |  1 +
 doc/guides/platform/cnxk.rst             |  3 +-
 doc/guides/rel_notes/release_22_11.rst   |  3 ++
 drivers/common/cnxk/meson.build          |  1 +
 drivers/crypto/armv8/meson.build         |  1 +
 drivers/crypto/cnxk/cn10k_ipsec_la_ops.h |  4 +-
 drivers/crypto/cnxk/cn9k_ipsec_la_ops.h  |  2 +-
 drivers/crypto/cnxk/meson.build          |  2 +
 drivers/crypto/ipsec_mb/meson.build      |  1 +
 drivers/crypto/null/meson.build          |  1 +
 drivers/crypto/openssl/meson.build       |  1 +
 drivers/dma/cnxk/meson.build             |  1 +
 drivers/dma/skeleton/meson.build         |  1 +
 drivers/event/cnxk/meson.build           |  1 +
 drivers/event/dsw/meson.build            |  1 +
 drivers/event/opdl/meson.build           |  1 +
 drivers/event/skeleton/meson.build       |  1 +
 drivers/event/sw/meson.build             |  1 +
 drivers/mempool/bucket/meson.build       |  1 +
 drivers/mempool/cnxk/meson.build         |  1 +
 drivers/mempool/ring/meson.build         |  1 +
 drivers/mempool/stack/meson.build        |  1 +
 drivers/meson.build                      |  6 +++
 drivers/net/af_packet/meson.build        |  1 +
 drivers/net/af_xdp/meson.build           |  2 +
 drivers/net/bonding/meson.build          |  1 +
 drivers/net/cnxk/cn10k_ethdev.c          |  4 +-
 drivers/net/cnxk/cn10k_tx.h              | 55 +++++++-----------------
 drivers/net/cnxk/cn9k_ethdev.c           |  4 +-
 drivers/net/cnxk/cn9k_tx.h               | 55 +++++++-----------------
 drivers/net/cnxk/cnxk_ethdev.h           |  1 -
 drivers/net/cnxk/meson.build             |  1 +
 drivers/net/failsafe/meson.build         |  1 +
 drivers/net/hns3/meson.build             |  6 +++
 drivers/net/memif/meson.build            |  1 +
 drivers/net/null/meson.build             |  1 +
 drivers/net/pcap/meson.build             |  1 +
 drivers/net/ring/meson.build             |  1 +
 drivers/net/tap/meson.build              |  1 +
 drivers/raw/cnxk_bphy/meson.build        |  1 +
 drivers/raw/cnxk_gpio/meson.build        |  1 +
 drivers/raw/skeleton/meson.build         |  1 +
 lib/eal/linux/eal.c                      |  6 +++
 lib/kni/rte_kni.c                        |  3 +-
 lib/mbuf/rte_mbuf.c                      | 12 +++---
 lib/mbuf/rte_mbuf.h                      | 37 +++++++++++++---
 lib/mbuf/rte_mbuf_core.h                 | 26 +++++++++--
 lib/mbuf/rte_mbuf_dyn.c                  |  3 ++
 lib/meson.build                          |  3 ++
 lib/pipeline/rte_table_action.c          |  2 +-
 lib/vhost/vhost.h                        |  2 +-
 lib/vhost/vhost_crypto.c                 | 25 ++++++-----
 meson_options.txt                        |  2 +
 60 files changed, 210 insertions(+), 151 deletions(-)
  

Comments

Olivier Matz Oct. 7, 2022, 8:19 p.m. UTC | #1
Hi Shijith,

On Sat, Oct 08, 2022 at 01:00:22AM +0530, Shijith Thotton wrote:
> This is a continuation of the discussions[1] to add mbuf physical address field to dynamic field.
> Previous version was to add PA field to dynamic field area based on the EAL IOVA mode option. It was
> deemed unsafe as some components could still use the PA field without checking IOVA mode and there
> are drivers which need PA to work. One suggestion was to make the IOVA mode check at compile time so
> that drivers which need PA can be disabled during build. This series adds this new meson build
> options. Fourth patch adds mbuf PA field to dynamic field on such builds. Last two patches enable
> Marvell cnxk PMDs and software PMDs in IOVA as PA disabled build as they work without PA field.
> 
> 1. https://inbox.dpdk.org/dev/57d2ab7fff672716d37ba4078e2e3bb2db126607.1656605763.git.sthotton@marvell.com/.
> 
> v4:
>  * Restructured changes to multiple patches.
>  * Moved to #if scheme instead of union.
>  * Updated release notes.
> 
> v3:
>  * Cleared use of buf_iova from cnxk PMD.
> 
> v2:
>  * Used RTE_IOVA_AS_VA instread of rte_is_iova_as_va_build().
>  * Moved mbuf next pointer to first cacheline if RTE_IOVA_AS_VA = 1.
> 
> Shijith Thotton (7):
>   mbuf: add API to get and set mbuf physical address
>   test/dma: use API to get mbuf data physical address
>   build: add meson option to configure IOVA mode as PA
>   mbuf: add second dynamic field member
>   lib: move mbuf next pointer to first cache line
>   drivers: mark cnxk PMDs work with IOVA as PA disabled
>   drivers: mark software PMDs work with IOVA as PA disabled
> 
>  app/test-bbdev/test_bbdev_perf.c         |  2 +-
>  app/test-crypto-perf/cperf_test_common.c |  5 +--
>  app/test/test_bpf.c                      |  2 +-
>  app/test/test_dmadev.c                   | 33 ++++++--------
>  app/test/test_mbuf.c                     | 12 +++---
>  app/test/test_pcapng.c                   |  2 +-
>  config/arm/meson.build                   |  8 +++-
>  config/meson.build                       |  1 +
>  doc/guides/platform/cnxk.rst             |  3 +-
>  doc/guides/rel_notes/release_22_11.rst   |  3 ++
>  drivers/common/cnxk/meson.build          |  1 +
>  drivers/crypto/armv8/meson.build         |  1 +
>  drivers/crypto/cnxk/cn10k_ipsec_la_ops.h |  4 +-
>  drivers/crypto/cnxk/cn9k_ipsec_la_ops.h  |  2 +-
>  drivers/crypto/cnxk/meson.build          |  2 +
>  drivers/crypto/ipsec_mb/meson.build      |  1 +
>  drivers/crypto/null/meson.build          |  1 +
>  drivers/crypto/openssl/meson.build       |  1 +
>  drivers/dma/cnxk/meson.build             |  1 +
>  drivers/dma/skeleton/meson.build         |  1 +
>  drivers/event/cnxk/meson.build           |  1 +
>  drivers/event/dsw/meson.build            |  1 +
>  drivers/event/opdl/meson.build           |  1 +
>  drivers/event/skeleton/meson.build       |  1 +
>  drivers/event/sw/meson.build             |  1 +
>  drivers/mempool/bucket/meson.build       |  1 +
>  drivers/mempool/cnxk/meson.build         |  1 +
>  drivers/mempool/ring/meson.build         |  1 +
>  drivers/mempool/stack/meson.build        |  1 +
>  drivers/meson.build                      |  6 +++
>  drivers/net/af_packet/meson.build        |  1 +
>  drivers/net/af_xdp/meson.build           |  2 +
>  drivers/net/bonding/meson.build          |  1 +
>  drivers/net/cnxk/cn10k_ethdev.c          |  4 +-
>  drivers/net/cnxk/cn10k_tx.h              | 55 +++++++-----------------
>  drivers/net/cnxk/cn9k_ethdev.c           |  4 +-
>  drivers/net/cnxk/cn9k_tx.h               | 55 +++++++-----------------
>  drivers/net/cnxk/cnxk_ethdev.h           |  1 -
>  drivers/net/cnxk/meson.build             |  1 +
>  drivers/net/failsafe/meson.build         |  1 +
>  drivers/net/hns3/meson.build             |  6 +++
>  drivers/net/memif/meson.build            |  1 +
>  drivers/net/null/meson.build             |  1 +
>  drivers/net/pcap/meson.build             |  1 +
>  drivers/net/ring/meson.build             |  1 +
>  drivers/net/tap/meson.build              |  1 +
>  drivers/raw/cnxk_bphy/meson.build        |  1 +
>  drivers/raw/cnxk_gpio/meson.build        |  1 +
>  drivers/raw/skeleton/meson.build         |  1 +
>  lib/eal/linux/eal.c                      |  6 +++
>  lib/kni/rte_kni.c                        |  3 +-
>  lib/mbuf/rte_mbuf.c                      | 12 +++---
>  lib/mbuf/rte_mbuf.h                      | 37 +++++++++++++---
>  lib/mbuf/rte_mbuf_core.h                 | 26 +++++++++--
>  lib/mbuf/rte_mbuf_dyn.c                  |  3 ++
>  lib/meson.build                          |  3 ++
>  lib/pipeline/rte_table_action.c          |  2 +-
>  lib/vhost/vhost.h                        |  2 +-
>  lib/vhost/vhost_crypto.c                 | 25 ++++++-----
>  meson_options.txt                        |  2 +
>  60 files changed, 210 insertions(+), 151 deletions(-)
> 
> -- 
> 2.25.1
> 

for the series:
Acked-by: Olivier Matz <olivier.matz@6wind.com>

There are few minor comments but I think it can go in rc1 anyway.