patches for DPDK stable branches
 help / color / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/sfc: fix power of 2 round up when align has smaller type' has been queued to LTS release 18.11.3
Date: Thu,  5 Sep 2019 11:17:07 +0100
Message-ID: <20190905101754.21933-7-ktraynor@redhat.com> (raw)
In-Reply-To: <20190905101754.21933-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to LTS release 18.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 09/12/19. 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-queue

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

Thanks.

Kevin Traynor

---
From a2d6aaf431f822816c8c5c3e75190e508b442e33 Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Wed, 24 Jul 2019 14:16:32 +0100
Subject: [PATCH] net/sfc: fix power of 2 round up when align has smaller type

[ upstream commit 441717b92c2a22021b7a38c43788897a09f23b6d ]

Substitute driver-defined P2ROUNDUP() h with EFX_P2ROUNDUP()
defined in libefx.

Cast value and alignment to one specified type to guarantee result
correctness.

Fixes: e1b944598579 ("net/sfc: build libefx")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/base/ef10_impl.h  |  9 +++++----
 drivers/net/sfc/base/ef10_nvram.c |  3 ++-
 drivers/net/sfc/base/ef10_rx.c    |  5 +++--
 drivers/net/sfc/base/efx.h        | 13 +++++++++----
 drivers/net/sfc/base/efx_mcdi.h   |  9 ++++++---
 drivers/net/sfc/base/efx_tx.c     |  4 ++--
 drivers/net/sfc/efsys.h           |  4 ----
 drivers/net/sfc/sfc_ethdev.c      |  2 +-
 8 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/drivers/net/sfc/base/ef10_impl.h b/drivers/net/sfc/base/ef10_impl.h
index f971063a1..6f5d0f9aa 100644
--- a/drivers/net/sfc/base/ef10_impl.h
+++ b/drivers/net/sfc/base/ef10_impl.h
@@ -1244,8 +1244,9 @@ efx_mcdi_set_nic_global(
 
 /* Minimum space for packet in packed stream mode */
-#define	EFX_RX_PACKED_STREAM_MIN_PACKET_SPACE		     \
-	P2ROUNDUP(EFX_RX_PACKED_STREAM_RX_PREFIX_SIZE +	     \
-	    EFX_MAC_PDU_MIN +				     \
-	    EFX_RX_PACKED_STREAM_ALIGNMENT,		     \
+#define	EFX_RX_PACKED_STREAM_MIN_PACKET_SPACE		\
+	EFX_P2ROUNDUP(size_t,				\
+	    EFX_RX_PACKED_STREAM_RX_PREFIX_SIZE +	\
+	    EFX_MAC_PDU_MIN +				\
+	    EFX_RX_PACKED_STREAM_ALIGNMENT,		\
 	    EFX_RX_PACKED_STREAM_ALIGNMENT)
 
diff --git a/drivers/net/sfc/base/ef10_nvram.c b/drivers/net/sfc/base/ef10_nvram.c
index 8d1b64f25..2f334fe0f 100644
--- a/drivers/net/sfc/base/ef10_nvram.c
+++ b/drivers/net/sfc/base/ef10_nvram.c
@@ -368,5 +368,6 @@ tlv_write(
 		ptr[(len - 1) / sizeof (uint32_t)] = 0;
 		memcpy(ptr, data, len);
-		ptr += P2ROUNDUP(len, sizeof (uint32_t)) / sizeof (*ptr);
+		ptr += EFX_P2ROUNDUP(uint32_t, len,
+		    sizeof (uint32_t)) / sizeof (*ptr);
 	}
 
diff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/net/sfc/base/ef10_rx.c
index 3c8f4f3b9..09e8bb816 100644
--- a/drivers/net/sfc/base/ef10_rx.c
+++ b/drivers/net/sfc/base/ef10_rx.c
@@ -931,6 +931,7 @@ ef10_rx_qps_packet_info(
 	buf_len    = EFX_QWORD_FIELD(*qwordp, ES_DZ_PS_RX_PREFIX_CAP_LEN);
 
-	buf_len = P2ROUNDUP(buf_len + EFX_RX_PACKED_STREAM_RX_PREFIX_SIZE,
-			    EFX_RX_PACKED_STREAM_ALIGNMENT);
+	buf_len = EFX_P2ROUNDUP(uint16_t,
+	    buf_len + EFX_RX_PACKED_STREAM_RX_PREFIX_SIZE,
+	    EFX_RX_PACKED_STREAM_ALIGNMENT);
 	*next_offsetp =
 	    current_offset + buf_len + EFX_RX_PACKED_STREAM_ALIGNMENT;
diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h
index 2e847b6ce..4f25e69e1 100644
--- a/drivers/net/sfc/base/efx.h
+++ b/drivers/net/sfc/base/efx.h
@@ -29,4 +29,8 @@ extern "C" {
 #define	EFX_DIV_ROUND_UP(_n, _d)		(((_n) + (_d) - 1) / (_d))
 
+/* Round value up to the nearest power of two. */
+#define	EFX_P2ROUNDUP(_type, _value, _align)	\
+	(-(-(_type)(_value) & -(_type)(_align)))
+
 /* Return codes */
 
@@ -495,8 +499,8 @@ typedef enum efx_link_mode_e {
 
 #define	EFX_MAC_PDU(_sdu)					\
-	P2ROUNDUP((_sdu) + EFX_MAC_PDU_ADJUSTMENT, 8)
+	EFX_P2ROUNDUP(size_t, (_sdu) + EFX_MAC_PDU_ADJUSTMENT, 8)
 
 /*
- * Due to the P2ROUNDUP in EFX_MAC_PDU(), EFX_MAC_SDU_FROM_PDU() may give
+ * Due to the EFX_P2ROUNDUP in EFX_MAC_PDU(), EFX_MAC_SDU_FROM_PDU() may give
  * the SDU rounded up slightly.
  */
@@ -584,6 +588,7 @@ efx_mac_stat_name(
 #define	EFX_MAC_STATS_MASK_BITS_PER_PAGE	(8 * sizeof (uint32_t))
 
-#define	EFX_MAC_STATS_MASK_NPAGES	\
-	(P2ROUNDUP(EFX_MAC_NSTATS, EFX_MAC_STATS_MASK_BITS_PER_PAGE) / \
+#define	EFX_MAC_STATS_MASK_NPAGES				\
+	(EFX_P2ROUNDUP(uint32_t, EFX_MAC_NSTATS,		\
+		       EFX_MAC_STATS_MASK_BITS_PER_PAGE) /	\
 	    EFX_MAC_STATS_MASK_BITS_PER_PAGE)
 
diff --git a/drivers/net/sfc/base/efx_mcdi.h b/drivers/net/sfc/base/efx_mcdi.h
index ddf91c111..a48394851 100644
--- a/drivers/net/sfc/base/efx_mcdi.h
+++ b/drivers/net/sfc/base/efx_mcdi.h
@@ -385,4 +385,9 @@ efx_mcdi_phy_module_get_info(
 	(MC_CMD_PRIVILEGE_MASK_IN_GRP_ ## priv))
 
+#define	EFX_MCDI_BUF_SIZE(_in_len, _out_len)				\
+	EFX_P2ROUNDUP(size_t,						\
+		MAX(MAX(_in_len, _out_len), (2 * sizeof (efx_dword_t))),\
+		sizeof (efx_dword_t))
+
 /*
  * The buffer size must be a multiple of dword to ensure that MCDI works
@@ -392,7 +397,5 @@ efx_mcdi_phy_module_get_info(
  */
 #define EFX_MCDI_DECLARE_BUF(_name, _in_len, _out_len)			\
-	uint8_t _name[P2ROUNDUP(MAX(MAX(_in_len, _out_len),		\
-				    (2 * sizeof (efx_dword_t))),	\
-				sizeof (efx_dword_t))] = {0}
+	uint8_t _name[EFX_MCDI_BUF_SIZE(_in_len, _out_len)] = {0}
 
 typedef enum efx_mcdi_feature_id_e {
diff --git a/drivers/net/sfc/base/efx_tx.c b/drivers/net/sfc/base/efx_tx.c
index 9fa9e2ed1..2a3f1ce12 100644
--- a/drivers/net/sfc/base/efx_tx.c
+++ b/drivers/net/sfc/base/efx_tx.c
@@ -769,5 +769,5 @@ siena_tx_qpost(
 		 * Here it is a stricter requirement than the maximum length.
 		 */
-		EFSYS_ASSERT(P2ROUNDUP(start + 1,
+		EFSYS_ASSERT(EFX_P2ROUNDUP(efsys_dma_addr_t, start + 1,
 		    etp->et_enp->en_nic_cfg.enc_tx_dma_desc_boundary) >= end);
 
@@ -1039,5 +1039,5 @@ siena_tx_qdesc_dma_create(
 	 * Here it is a stricter requirement than the maximum length.
 	 */
-	EFSYS_ASSERT(P2ROUNDUP(addr + 1,
+	EFSYS_ASSERT(EFX_P2ROUNDUP(efsys_dma_addr_t, addr + 1,
 	    etp->et_enp->en_nic_cfg.enc_tx_dma_desc_boundary) >= addr + size);
 
diff --git a/drivers/net/sfc/efsys.h b/drivers/net/sfc/efsys.h
index f7bcc74d9..c8d652436 100644
--- a/drivers/net/sfc/efsys.h
+++ b/drivers/net/sfc/efsys.h
@@ -77,8 +77,4 @@ typedef bool boolean_t;
 #endif
 
-#ifndef P2ROUNDUP
-#define P2ROUNDUP(x, align)	(-(-(x) & -(align)))
-#endif
-
 #ifndef P2ALIGN
 #define P2ALIGN(_x, _a)		((_x) & -(_a))
diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index fa0dd82aa..8c7d22430 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -907,5 +907,5 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 		sfc_err(sa, "too big MTU %u (PDU size %u greater than max %u)",
 			(unsigned int)mtu, (unsigned int)pdu,
-			EFX_MAC_PDU_MAX);
+			(unsigned int)EFX_MAC_PDU_MAX);
 		goto fail_inval;
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-09-05 10:36:47.927238550 +0100
+++ 0007-net-sfc-fix-power-of-2-round-up-when-align-has-small.patch	2019-09-05 10:36:47.459701743 +0100
@@ -1 +1 @@
-From 441717b92c2a22021b7a38c43788897a09f23b6d Mon Sep 17 00:00:00 2001
+From a2d6aaf431f822816c8c5c3e75190e508b442e33 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 441717b92c2a22021b7a38c43788897a09f23b6d ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 396180111..7a0004782 100644
+index f971063a1..6f5d0f9aa 100644
@@ -31 +32 @@
-@@ -1440,8 +1440,9 @@ ef10_proxy_auth_get_privilege_mask(
+@@ -1244,8 +1244,9 @@ efx_mcdi_set_nic_global(
@@ -46 +47 @@
-index 8fc8fd909..0d5378ddf 100644
+index 8d1b64f25..2f334fe0f 100644
@@ -58 +59 @@
-index 10eace46c..b087a5d42 100644
+index 3c8f4f3b9..09e8bb816 100644
@@ -61 +62 @@
-@@ -948,6 +948,7 @@ ef10_rx_qps_packet_info(
+@@ -931,6 +931,7 @@ ef10_rx_qps_packet_info(
@@ -72 +73 @@
-index 53c7b4212..835d057b1 100644
+index 2e847b6ce..4f25e69e1 100644
@@ -75 +76 @@
-@@ -30,4 +30,8 @@ extern "C" {
+@@ -29,4 +29,8 @@ extern "C" {
@@ -84 +85 @@
-@@ -499,8 +503,8 @@ typedef enum efx_link_mode_e {
+@@ -495,8 +499,8 @@ typedef enum efx_link_mode_e {
@@ -95 +96 @@
-@@ -588,6 +592,7 @@ efx_mac_stat_name(
+@@ -584,6 +588,7 @@ efx_mac_stat_name(
@@ -106 +107 @@
-index 74cde5075..0941cbdb8 100644
+index ddf91c111..a48394851 100644
@@ -109 +110 @@
-@@ -392,4 +392,9 @@ efx_mcdi_phy_module_get_info(
+@@ -385,4 +385,9 @@ efx_mcdi_phy_module_get_info(
@@ -119 +120 @@
-@@ -399,7 +404,5 @@ efx_mcdi_phy_module_get_info(
+@@ -392,7 +397,5 @@ efx_mcdi_phy_module_get_info(
@@ -129 +130 @@
-index 5cf3dcd3a..e7c5e8089 100644
+index 9fa9e2ed1..2a3f1ce12 100644
@@ -132 +133 @@
-@@ -800,5 +800,5 @@ siena_tx_qpost(
+@@ -769,5 +769,5 @@ siena_tx_qpost(
@@ -139 +140 @@
-@@ -1059,5 +1059,5 @@ siena_tx_qdesc_dma_create(
+@@ -1039,5 +1039,5 @@ siena_tx_qdesc_dma_create(
@@ -147 +148 @@
-index 762c6eea4..4c122d040 100644
+index f7bcc74d9..c8d652436 100644
@@ -160 +161 @@
-index 279b58641..1f78a3d8a 100644
+index fa0dd82aa..8c7d22430 100644
@@ -163 +164 @@
-@@ -938,5 +938,5 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+@@ -907,5 +907,5 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)

  parent reply index

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-05 10:17 [dpdk-stable] patch 'ethdev: avoid getting uninitialized info for bad port' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'vfio: use contiguous mapping for IOVA as VA mode' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'compress/zlib: fix error handling' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'cryptodev: fix typo in comment' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'security: remove duplicated symbols from map file' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/i40e: fix RSS hash update for X722 VF' " Kevin Traynor
2019-09-05 10:17 ` Kevin Traynor [this message]
2019-09-05 10:17 ` [dpdk-stable] patch 'net/sfc: fix align to power of 2 when align has smaller type' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/sfc: unify power of 2 alignment check macro' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/bnxt: fix extended port counter statistics' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/bnxt: reduce verbosity of a message' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/pcap: fix Rx with small buffers' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/pcap: fix Tx return count in error conditions' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/avf: fix endless loop' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/ixgbe: fix RETA size for VF' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'igb_uio: fix build on Linux 5.3 for fall through' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'distributor: fix livelock on flush' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'app/testpmd: fix eth packet dump for small buffers' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'app/testpmd: rename ambiguous VF config variable' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'examples/ip_frag: remove Tx fast free offload flag' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'examples/ptpclient: fix delay request message' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'test: enable installing app with meson' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'test/eal: fix --socket-mem option' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/virtio: fix build' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'examples/l3fwd: fix unaligned memory access on x86' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'eal: fix control thread affinity with --lcores' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'doc: update features supported by mlx' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'usertools: replace unsafe input function' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'devtools: fix building kernel component tags' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'test/flow_classify: fix undefined behavior' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'acl: fix undefined behavior of bit shifts' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'test: remove link to ixgbe/i40e with meson' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'eal: hide internal function' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'bus/pci: remove unused x86 Linux constant' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/dpaa: fix build with 0 headroom' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'bus/fslmc: " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/virtio: " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/ena: fix L4 checksum Tx offload' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'doc: add co-existence consideration for bnx2x' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'doc: add co-existence consideration for qede' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/thunderx: fix crash on detach' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'examples/bpf: fix build' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/ixgbe: fix address of first segment' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/i40e: " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/avf: " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/fm10k: " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/mlx4: fix crash on info query in secondary process' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/mlx5: fix validation of VLAN PCP item' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/mlx5: fix VLAN inner type matching on DR/DV' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/mlx5: fix link speed info when link is down' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'app/testpmd: fix latency stats deinit on signal' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'net/ixgbe/base: fix product version check' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'eal: increase maximum different hugepage sizes on Arm' " Kevin Traynor
2019-09-05 10:17 ` [dpdk-stable] patch 'usertools: fix input handling in telemetry script' " Kevin Traynor

Reply instructions:

You may reply publically 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=20190905101754.21933-7-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=arybchenko@solarflare.com \
    --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

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox