patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Stanislaw Kardach <kda@semihalf.com>
Cc: Bruce Richardson <bruce.richardson@intel.com>,
	Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	dpdk stable <stable@dpdk.org>
Subject: patch 'test/ring: remove excessive inlining' has been queued to stable release 21.11.2
Date: Thu,  9 Jun 2022 12:35:49 +0100	[thread overview]
Message-ID: <20220609113701.386938-2-ktraynor@redhat.com> (raw)
In-Reply-To: <20220609113701.386938-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 21.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/13/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3ec90e3ec0b68d06e9b9494798b79f2abaa2a49f

Thanks.

Kevin

---
From 3ec90e3ec0b68d06e9b9494798b79f2abaa2a49f Mon Sep 17 00:00:00 2001
From: Stanislaw Kardach <kda@semihalf.com>
Date: Wed, 11 May 2022 17:07:25 +0200
Subject: [PATCH] test/ring: remove excessive inlining

[ upstream commit 981a025741f80b4036f994ed30b04e757299ab19 ]

Forcing inlining in test_ring_enqueue and test_ring_dequeue can cause
the compiled code to grow extensively when compiled with no optimization
(-O0 or -Og). This is default in the meson's debug configuration. This
can collide with compiler bugs and cause issues during linking of unit
tests where the api_type or esize are non-const variables causing
inlining cascade. In perf tests this is not the case in perf-tests as
esize and api_type are const values.

One such case was discovered when porting DPDK to RISC-V. GCC 11.2 (and
no fix still in 12.1) is generating a short relative jump instruction
(J <offset>) for goto and for loops. When loop body grows extensively in
ring test, the target offset goes beyond supported offfset of +/- 1MB
from PC. This is an obvious bug in the GCC as RISC-V has a
two-instruction construct to jump to any absolute address (AUIPC+JALR).

However there is no reason to force inlining as the test code works
perfectly fine without it.

GCC has a bug report for a similar case (with conditionals):
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93062

Fixes: a9fe152363e2 ("test/ring: add custom element size functional tests")

Signed-off-by: Stanislaw Kardach <kda@semihalf.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 app/test/test_ring.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/test/test_ring.h b/app/test/test_ring.h
index c8bfec8399..45c263f3ff 100644
--- a/app/test/test_ring.h
+++ b/app/test/test_ring.h
@@ -98,5 +98,5 @@ test_ring_copy_from(struct rte_ring_zc_data *zcd, void *dst, int esize,
 }
 
-static __rte_always_inline unsigned int
+static inline unsigned int
 test_ring_enqueue(struct rte_ring *r, void **obj, int esize, unsigned int n,
 			unsigned int api_type)
@@ -159,5 +159,5 @@ test_ring_enqueue(struct rte_ring *r, void **obj, int esize, unsigned int n,
 }
 
-static __rte_always_inline unsigned int
+static inline unsigned int
 test_ring_dequeue(struct rte_ring *r, void **obj, int esize, unsigned int n,
 			unsigned int api_type)
@@ -223,5 +223,5 @@ test_ring_dequeue(struct rte_ring *r, void **obj, int esize, unsigned int n,
  * performance and functional tests.
  */
-static __rte_always_inline void *
+static inline void *
 test_ring_calloc(unsigned int rsize, int esize)
 {
-- 
2.34.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-06-09 12:34:29.852349481 +0100
+++ 0002-test-ring-remove-excessive-inlining.patch	2022-06-09 12:34:29.606980404 +0100
@@ -1 +1 @@
-From 981a025741f80b4036f994ed30b04e757299ab19 Mon Sep 17 00:00:00 2001
+From 3ec90e3ec0b68d06e9b9494798b79f2abaa2a49f Mon Sep 17 00:00:00 2001
@@ -4,0 +5,2 @@
+
+[ upstream commit 981a025741f80b4036f994ed30b04e757299ab19 ]


  reply	other threads:[~2022-06-09 11:37 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-09 11:35 patch 'examples/l3fwd: fix scalar LPM' " Kevin Traynor
2022-06-09 11:35 ` Kevin Traynor [this message]
2022-06-09 11:35 ` patch 'eal/freebsd: fix use of newer cpuset macros' " Kevin Traynor
2022-06-09 11:35 ` patch 'test: avoid hang if queues are full and Tx fails' " Kevin Traynor
2022-06-09 11:35 ` patch 'acl: fix rules with 8-byte field size' " Kevin Traynor
2022-06-09 11:35 ` patch 'rib: fix traversal with /32 route' " Kevin Traynor
2022-06-09 11:35 ` patch 'mbuf: dump outer VLAN' " Kevin Traynor
2022-06-09 11:35 ` patch 'doc: fix API index Markdown syntax' " Kevin Traynor
2022-06-09 11:35 ` patch 'devtools: fix null test for NUMA systems' " Kevin Traynor
2022-06-09 11:35 ` patch 'pipeline: fix emit instruction for invalid headers' " Kevin Traynor
2022-06-09 11:35 ` patch 'pcapng: fix timestamp wrapping in output files' " Kevin Traynor
2022-06-09 11:35 ` patch 'examples/ipsec-secgw: fix uninitialized memory access' " Kevin Traynor
2022-06-09 11:36 ` patch 'examples/ipsec-secgw: fix promiscuous mode option' " Kevin Traynor
2022-06-09 11:36 ` patch 'test/crypto: fix null check for ZUC authentication' " Kevin Traynor
2022-06-09 11:36 ` patch 'drivers/crypto: fix warnings for OpenSSL version' " Kevin Traynor
2022-06-09 11:36 ` patch 'test/crypto: fix driver name for DPAA raw API test' " Kevin Traynor
2022-06-09 11:36 ` patch 'doc: add missing auth algo for IPsec example' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: fix port status of bonding slave device' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: perform SW IP checksum for GRO/GSO packets' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: remove useless pointer checks' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/hns3: fix xstats get return if xstats is null' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ipn3ke: " Kevin Traynor
2022-06-09 11:36 ` patch 'net/mvpp2: " Kevin Traynor
2022-06-09 11:36 ` patch 'net/axgbe: " Kevin Traynor
2022-06-09 11:36 ` patch 'ethdev: fix memory leak in xstats telemetry' " Kevin Traynor
2022-06-09 11:36 ` patch 'ethdev: fix possible null pointer access' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/cnxk: fix possible null dereference in telemetry' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: replace hardcoded min mbuf number with macro' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: fix metering and policing command for RFC4115' " Kevin Traynor
2022-06-09 11:36 ` patch 'ethdev: prohibit polling stopped queue' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: fix use of indirect action after port close' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: do not poll stopped queues' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/bonding: fix mbuf fast free usage' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/memif: fix overwriting of head segment' " Kevin Traynor
2022-06-09 11:36 ` patch 'ethdev: fix port state when stop' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ngbe: fix link speed check' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ngbe: fix reading PHY ID' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ngbe: fix PCIe related operations with bus API' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/txgbe: fix SGMII mode to link up' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/txgbe: fix max number of queues for SR-IOV' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/nfp: fix disabling VLAN stripping' " Kevin Traynor
2022-06-09 11:36 ` patch 'app/testpmd: fix help of create meter command' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/vmxnet3: fix Rx data ring initialization' " Kevin Traynor
2022-06-09 11:36 ` patch 'common/sfc_efx/base: convert EFX PCIe INTF to MCDI value' " Kevin Traynor
2022-06-09 11:36 ` patch 'ethdev: fix port close in secondary process' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/bnxt: fix compatibility with some old firmwares' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/bnxt: fix ULP parser to ignore segment offset' " Kevin Traynor
2022-06-09 11:36 ` patch 'vhost: fix async access' " Kevin Traynor
2022-06-09 11:36 ` patch 'doc: fix vhost multi-queue reconnection' " Kevin Traynor
2022-06-09 11:36 ` patch 'vhost: fix deadlock when message handling failed' " Kevin Traynor
2022-06-09 11:36 ` patch 'examples/vhost: fix crash when no VMDq' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/mlx5: fix Tx recovery' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/mlx5: fix statistics read on Linux' " Kevin Traynor
2022-06-09 11:36 ` patch 'kni: fix build with Linux 5.18' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix data path selection' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ixgbe: add option for link up check on pin SDP3' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ice/base: fix getting sched node from ID type' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ice/base: fix direction of flow that matches any' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/ice: fix MTU info for DCF' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/i40e: fix max frame size config at port level' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix queue start exception handling' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix mbuf release in multi-process' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix Rx queue interrupt setting' " Kevin Traynor
2022-06-09 11:36 ` patch 'doc: update matching versions in i40e guide' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix device initialization without inline crypto' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: fix device stop' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: increase reset complete wait count' " Kevin Traynor
2022-06-09 11:36 ` patch 'net/iavf: remove dead code' " Kevin Traynor
2022-06-09 11:36 ` patch 'common/mlx5: remove unused lcore check' " Kevin Traynor
2022-06-09 11:36 ` patch 'examples/dma: fix MTU configuration' " Kevin Traynor
2022-06-09 11:36 ` patch 'examples/dma: fix Tx drop statistics' " Kevin Traynor
2022-06-09 11:36 ` patch 'dma/hisilicon: fix index returned when no DMA completed' " Kevin Traynor
2022-06-09 11:37 ` patch 'dma/hisilicon: enhance CQ scan robustness' " Kevin Traynor
2022-06-09 11:37 ` patch 'eal/ppc: fix compilation for musl' " Kevin Traynor
2022-06-09 12:53 ` patch 'examples/l3fwd: fix scalar LPM' " Stanisław Kardach
2022-06-09 13:12   ` Kevin Traynor
2022-06-09 13:17     ` Kevin Traynor
2022-06-09 13:21       ` Stanisław Kardach

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=20220609113701.386938-2-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=bruce.richardson@intel.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=kda@semihalf.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=stable@dpdk.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).