Rebase to 23.11
Use -Denable_libs, update internal dependencies (vhost requires cryptodev and dmadev, net/iavf requires security). Filter generated manuals and package them in the -devel rpm. Note: - switched to https URIs, - mandb is hidden through the build to avoid a call to it in the buildroot, - documentation artefacts were not correctly removed from the buildroot, - net/mlx4 has been disabled since it is not supported anymore, - a leftover patch from 21.11 support is removed, Resolves: RHEL-19571 Signed-off-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
		
							parent
							
								
									54f868467a
								
							
						
					
					
						commit
						9e2f315c92
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -13,3 +13,4 @@ | ||||
| /dpdk-21.11.1.tar.xz | ||||
| /dpdk-21.11.2.tar.xz | ||||
| /dpdk-22.11.tar.xz | ||||
| /dpdk-23.11.tar.xz | ||||
|  | ||||
| @ -1,135 +0,0 @@ | ||||
| From 3812e23f6b19d7e1e850094d1a5a04b7403d194f Mon Sep 17 00:00:00 2001 | ||||
| From: David Marchand <david.marchand@redhat.com> | ||||
| Date: Tue, 13 Dec 2022 10:18:37 +0100 | ||||
| Subject: [PATCH] net/i40e: revert link status check on device start | ||||
| 
 | ||||
| [ upstream commit a8ca8edf8c076c765c6d142ab4664a1f61414233 ] | ||||
| 
 | ||||
| The mentioned changes broke existing applications when the link status | ||||
| of i40e ports is down at the time the port is started. | ||||
| Revert those changes, the original issue will need a different fix. | ||||
| 
 | ||||
| Fixes: a4ba77367923 ("net/i40e: enable maximum frame size at port level") | ||||
| Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level") | ||||
| Fixes: 719469f13b11 ("net/i40e: fix jumbo frame Rx with X722") | ||||
| 
 | ||||
| Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2173794 | ||||
| Signed-off-by: David Marchand <david.marchand@redhat.com> | ||||
| Acked-by: Simei Su <simei.su@intel.com> | ||||
| ---
 | ||||
|  drivers/net/i40e/i40e_ethdev.c | 50 +++++----------------------------- | ||||
|  1 file changed, 7 insertions(+), 43 deletions(-) | ||||
| 
 | ||||
| diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
 | ||||
| index 7726a89d99..a982e42264 100644
 | ||||
| --- a/drivers/net/i40e/i40e_ethdev.c
 | ||||
| +++ b/drivers/net/i40e/i40e_ethdev.c
 | ||||
| @@ -387,7 +387,6 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
 | ||||
|  				      struct rte_ether_addr *mac_addr); | ||||
|   | ||||
|  static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); | ||||
| -static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
 | ||||
|   | ||||
|  static int i40e_ethertype_filter_convert( | ||||
|  	const struct rte_eth_ethertype_filter *input, | ||||
| @@ -1711,6 +1710,11 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 | ||||
|  	 */ | ||||
|  	i40e_add_tx_flow_control_drop_filter(pf); | ||||
|   | ||||
| +	/* Set the max frame size to 0x2600 by default,
 | ||||
| +	 * in case other drivers changed the default value.
 | ||||
| +	 */
 | ||||
| +	i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
 | ||||
| +
 | ||||
|  	/* initialize RSS rule list */ | ||||
|  	TAILQ_INIT(&pf->rss_config_list); | ||||
|   | ||||
| @@ -2328,7 +2332,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
 | ||||
|  	uint32_t intr_vector = 0; | ||||
|  	struct i40e_vsi *vsi; | ||||
|  	uint16_t nb_rxq, nb_txq; | ||||
| -	uint16_t max_frame_size;
 | ||||
|   | ||||
|  	hw->adapter_stopped = 0; | ||||
|   | ||||
| @@ -2467,9 +2470,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
 | ||||
|  			    "please call hierarchy_commit() " | ||||
|  			    "before starting the port"); | ||||
|   | ||||
| -	max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
 | ||||
| -	i40e_set_mac_max_frame(dev, max_frame_size);
 | ||||
| -
 | ||||
|  	return I40E_SUCCESS; | ||||
|   | ||||
|  tx_err: | ||||
| @@ -2809,9 +2809,6 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
 | ||||
|  	return i40e_phy_conf_link(hw, abilities, speed, false); | ||||
|  } | ||||
|   | ||||
| -#define CHECK_INTERVAL             100  /* 100ms */
 | ||||
| -#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
 | ||||
| -
 | ||||
|  static __rte_always_inline void | ||||
|  update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link) | ||||
|  { | ||||
| @@ -2878,6 +2875,8 @@ static __rte_always_inline void
 | ||||
|  update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link, | ||||
|  	bool enable_lse, int wait_to_complete) | ||||
|  { | ||||
| +#define CHECK_INTERVAL             100  /* 100ms */
 | ||||
| +#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
 | ||||
|  	uint32_t rep_cnt = MAX_REPEAT_TIME; | ||||
|  	struct i40e_link_status link_status; | ||||
|  	int status; | ||||
| @@ -6738,7 +6737,6 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
 | ||||
|  			if (!ret) | ||||
|  				rte_eth_dev_callback_process(dev, | ||||
|  					RTE_ETH_EVENT_INTR_LSC, NULL); | ||||
| -
 | ||||
|  			break; | ||||
|  		default: | ||||
|  			PMD_DRV_LOG(DEBUG, "Request %u is not supported yet", | ||||
| @@ -12123,40 +12121,6 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
 | ||||
|  	return ret; | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| -i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
 | ||||
| -{
 | ||||
| -	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 | ||||
| -	uint32_t rep_cnt = MAX_REPEAT_TIME;
 | ||||
| -	struct rte_eth_link link;
 | ||||
| -	enum i40e_status_code status;
 | ||||
| -	bool can_be_set = true;
 | ||||
| -
 | ||||
| -	/*
 | ||||
| -	 * I40E_MEDIA_TYPE_BASET link up can be ignored
 | ||||
| -	 * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type
 | ||||
| -	 * is I40E_MEDIA_TYPE_UNKNOWN
 | ||||
| -	 */
 | ||||
| -	if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET &&
 | ||||
| -	    hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) {
 | ||||
| -		do {
 | ||||
| -			update_link_reg(hw, &link);
 | ||||
| -			if (link.link_status)
 | ||||
| -				break;
 | ||||
| -			rte_delay_ms(CHECK_INTERVAL);
 | ||||
| -		} while (--rep_cnt);
 | ||||
| -		can_be_set = !!link.link_status;
 | ||||
| -	}
 | ||||
| -
 | ||||
| -	if (can_be_set) {
 | ||||
| -		status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
 | ||||
| -		if (status != I40E_SUCCESS)
 | ||||
| -			PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
 | ||||
| -	} else {
 | ||||
| -		PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
 | ||||
| -	}
 | ||||
| -}
 | ||||
| -
 | ||||
|  RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE); | ||||
|  RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE); | ||||
|  #ifdef RTE_ETHDEV_DEBUG_RX | ||||
| -- 
 | ||||
| 2.39.2 | ||||
| 
 | ||||
| @ -1,34 +0,0 @@ | ||||
| From 8010a15523e896ca2f2436432602210cab793f87 Mon Sep 17 00:00:00 2001 | ||||
| From: David Marchand <david.marchand@redhat.com> | ||||
| Date: Mon, 25 Jul 2022 22:32:03 +0200 | ||||
| Subject: [PATCH] vhost: fix virtqueue use after free on NUMA reallocation | ||||
| 
 | ||||
| [ upstream commit 0b2a2ca35037d6a5168f0832c11d9858b8ae946a ] | ||||
| 
 | ||||
| translate_ring_addresses (via numa_realloc) may change a virtio device and | ||||
| virtio queue. | ||||
| The virtqueue object must be refreshed before accessing the lock. | ||||
| 
 | ||||
| Fixes: 04c27cb673b9 ("vhost: fix unsafe vring addresses modifications") | ||||
| 
 | ||||
| Signed-off-by: David Marchand <david.marchand@redhat.com> | ||||
| Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> | ||||
| ---
 | ||||
|  lib/vhost/vhost_user.c | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/lib/vhost/vhost_user.c b/lib/vhost/vhost_user.c
 | ||||
| index df780fd7d6..2b45e35d4a 100644
 | ||||
| --- a/lib/vhost/vhost_user.c
 | ||||
| +++ b/lib/vhost/vhost_user.c
 | ||||
| @@ -2575,6 +2575,7 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,
 | ||||
|  			if (is_vring_iotlb(dev, vq, imsg)) { | ||||
|  				rte_spinlock_lock(&vq->access_lock); | ||||
|  				*pdev = dev = translate_ring_addresses(dev, i); | ||||
| +				vq = dev->virtqueue[i];
 | ||||
|  				rte_spinlock_unlock(&vq->access_lock); | ||||
|  			} | ||||
|  		} | ||||
| -- 
 | ||||
| 2.37.3 | ||||
| 
 | ||||
							
								
								
									
										86
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								README
									
									
									
									
									
								
							| @ -1,86 +0,0 @@ | ||||
| The RH DPDK Configuration System | ||||
| ================================ | ||||
| 
 | ||||
| Overview | ||||
| -------- | ||||
| 
 | ||||
| As we're aware, the DPDK configuration is an important thing to manage | ||||
| well.  We have a number of concerns that must be addressed in any | ||||
| configuration management system. | ||||
| 
 | ||||
| 1. We want to make sure that we have 'conscious' configurations made up | ||||
|    for each platform, and for each DPDK-enabled package | ||||
| 2. We want to make sure that when DPDK project adds a new configuration, | ||||
|    we make a conscious decision about whether we enable that | ||||
|    configuration. | ||||
| 3. We need to make sure that we can accommodate the wacky new | ||||
|    configuration management system coming down the pipe for | ||||
|    DPDK (meson+ninja). | ||||
| 
 | ||||
| 
 | ||||
| Procedure (High level) | ||||
| ---------------------- | ||||
| 
 | ||||
| Taking some inspiration from the kernel config DPDK packages will use | ||||
| the following procedure: | ||||
| 
 | ||||
| 1. We generate the DPDK configuration from source (as we do today with | ||||
|    'make T=TEMPLATE config').  This creates a base configuration file. | ||||
|    In this case TEMPLATE is the combination of $arch and $release that | ||||
|    can vary for the package. | ||||
| 2. We generate a sha256 sum from that file (based on a rules engine | ||||
|    described later). | ||||
| 3. We take a hand-built checked-in configuration (dpdk.TEMPLATE.config) | ||||
|    which has a special tag inside containing the required base sha256 | ||||
|    sum and compare with the generated sha256 sum. | ||||
| 4. If the comparison succeeds, we overwrite the generated config with | ||||
|    the hand-built config.  Proceed building as normal. | ||||
| 5. If the comparison fails, we halt the build.  Clearly a new | ||||
|    configuration was introduced which was not considered and needs to be | ||||
|    addressed. | ||||
| 
 | ||||
| It's important to note that if the default configuration changes, that | ||||
| will also cause the shasum to change.  Even if the default for a | ||||
| parameter that we override changes, this will trip up this simplistic | ||||
| version. | ||||
| 
 | ||||
| 
 | ||||
| SHA Sum | ||||
| ------- | ||||
| 
 | ||||
| To generate the sha256 sum: | ||||
| * remove all 'comment' and empty lines | ||||
| * sort the remaining lines | ||||
| * calculate the sha sum | ||||
| 
 | ||||
| This is expressed in bash as a one-liner: | ||||
| 
 | ||||
|     egrep -v ^"$cmnt" $1 | egrep -v ^$ | sort -u | sha256sum | cut -d" " -f1 | ||||
| 
 | ||||
| The new DPDK configuration will be generating into a header file | ||||
| (rte_config.h), and so some 'forward' consideration was given to making | ||||
| the comment line as configurable (instead of using straight '#') - hence the | ||||
| '$cmnt' variable. | ||||
| 
 | ||||
| The SHA sum will be identified in the 'new' header by the standard ascii | ||||
| tag format: | ||||
| 
 | ||||
| # -*- cfg-sha: [a-z0-9]+ | ||||
| 
 | ||||
| Or in the case of a .c file: | ||||
| /* -*- cfg-sha: [a-z0-9]+ */ | ||||
| 
 | ||||
| 
 | ||||
| Helper scripts | ||||
| -------------- | ||||
| 
 | ||||
| Included are a set of scripts for DPDK configuration, which replaces | ||||
| the original setconf functions in the old spec file. | ||||
| 
 | ||||
| * set_config.sh - A script which copies the new DPDK configuration over the | ||||
|                   old one.  This validates the sha sum. | ||||
| * gen_config_group.sh - A script which reads the .spec file for all of the | ||||
|                         architectures and generates starting configurations. | ||||
|                         Use this script to get a baseline configuration for | ||||
|                         modifying. | ||||
| * configlib.sh - A library for generating and reading SHA sums. | ||||
							
								
								
									
										89
									
								
								dpdk.spec
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								dpdk.spec
									
									
									
									
									
								
							| @ -8,8 +8,8 @@ | ||||
| #% define date 20191128 | ||||
| #% define shortcommit0 %(c=%{commit0}; echo ${c:0:7}) | ||||
| 
 | ||||
| %define ver 22.11 | ||||
| %define rel 4 | ||||
| %define ver 23.11 | ||||
| %define rel 1 | ||||
| 
 | ||||
| %define srcname dpdk%(awk -F. '{ if (NF > 2) print "-stable" }' <<<%{version}) | ||||
| 
 | ||||
| @ -23,16 +23,14 @@ Epoch: 2 | ||||
| %endif | ||||
| URL: http://dpdk.org | ||||
| %if 0%{?commit0:1} | ||||
| Source: http://dpdk.org/browse/dpdk/snapshot/dpdk-%{commit0}.tar.xz | ||||
| Source: https://dpdk.org/browse/dpdk/snapshot/dpdk-%{commit0}.tar.xz | ||||
| %else | ||||
| Source: http://fast.dpdk.org/rel/dpdk-%{ver}.tar.xz | ||||
| Source: https://fast.dpdk.org/rel/dpdk-%{ver}.tar.xz | ||||
| %endif | ||||
| 
 | ||||
| # Only needed for creating snapshot tarballs, not used in build itself | ||||
| Source100: dpdk-snapshot.sh | ||||
| 
 | ||||
| Patch1: 0001-net-i40e-revert-link-status-check-on-device-start.patch | ||||
| 
 | ||||
| Summary: Set of libraries and drivers for fast packet processing | ||||
| 
 | ||||
| # | ||||
| @ -153,11 +151,11 @@ ENABLED_DRIVERS+=( | ||||
|     bus/vmbus | ||||
|     common/iavf | ||||
|     common/mlx5 | ||||
|     common/nfp | ||||
|     net/bnxt | ||||
|     net/enic | ||||
|     net/iavf | ||||
|     net/ice | ||||
|     net/mlx4 | ||||
|     net/mlx5 | ||||
|     net/netvsc | ||||
|     net/nfp | ||||
| @ -177,48 +175,40 @@ for driver in "${ENABLED_DRIVERS[@]}"; do | ||||
|     enable_drivers="${enable_drivers:+$enable_drivers,}"$driver | ||||
| done | ||||
| 
 | ||||
| # As of 22.11, following libraries can be disabled: | ||||
| # optional_libs = [ | ||||
| #         'bitratestats', | ||||
| #         'cfgfile', | ||||
| #         'flow_classify', | ||||
| #         'gpudev', | ||||
| #         'gro', | ||||
| #         'gso', | ||||
| #         'kni', | ||||
| #         'jobstats', | ||||
| #         'latencystats', | ||||
| #         'metrics', | ||||
| #         'node', | ||||
| #         'pdump', | ||||
| #         'pipeline', | ||||
| #         'port', | ||||
| #         'power', | ||||
| #         'table', | ||||
| #         'vhost', | ||||
| # ] | ||||
| # If doing any updates, this must be aligned with: | ||||
| # https://access.redhat.com/articles/3538141 | ||||
| DISABLED_LIBS=( | ||||
|     cfgfile | ||||
|     flow_classify | ||||
|     gpudev | ||||
|     kni | ||||
|     jobstats | ||||
|     node | ||||
|     pipeline | ||||
|     port | ||||
|     power | ||||
|     table | ||||
| ENABLED_LIBS=( | ||||
|     bbdev | ||||
|     bitratestats | ||||
|     bpf | ||||
|     cmdline | ||||
|     cryptodev | ||||
|     dmadev | ||||
|     gro | ||||
|     gso | ||||
|     hash | ||||
|     ip_frag | ||||
|     latencystats | ||||
|     member | ||||
|     meter | ||||
|     metrics | ||||
|     pcapng | ||||
|     pdump | ||||
|     security | ||||
|     stack | ||||
|     vhost | ||||
| ) | ||||
| 
 | ||||
| for lib in "${DISABLED_LIBS[@]}"; do | ||||
|     disable_libs="${disable_libs:+$disable_libs,}"$lib | ||||
| for lib in "${ENABLED_LIBS[@]}"; do | ||||
|     enable_libs="${enable_libs:+$enable_libs,}"$lib | ||||
| done | ||||
| 
 | ||||
| ln -s /usr/bin/true mandb | ||||
| export PATH=$(pwd):$PATH | ||||
| %meson --includedir=include/dpdk \ | ||||
|        --default-library=shared \ | ||||
|        -Ddisable_libs="$disable_libs" \ | ||||
|        -Ddeveloper_mode=disabled \ | ||||
|        -Denable_libs="$enable_libs" \ | ||||
|        -Ddrivers_install_subdir=dpdk-pmds \ | ||||
|        -Denable_apps="$enable_apps" \ | ||||
|        -Denable_docs=true \ | ||||
| @ -235,10 +225,10 @@ for driver in "${ENABLED_DRIVERS[@]}"; do | ||||
| 	echo "!!! Could not find $driver in rte_build_config.h, please check dependencies. !!!" | ||||
| 	false | ||||
| done | ||||
| for lib in "${DISABLED_LIBS[@]}"; do | ||||
| for lib in "${ENABLED_LIBS[@]}"; do | ||||
| 	config_token="RTE_LIB_$(echo "$lib" | tr [a-z/] [A-Z_])" | ||||
| 	grep -Fqw "$config_token" */rte_build_config.h || continue | ||||
| 	echo "!!! Found $lib in rte_build_config.h. !!!" | ||||
| 	! grep -Fqw "$config_token" */rte_build_config.h || continue | ||||
| 	echo "!!! Could not find $lib in rte_build_config.h, please check dependencies. !!!" | ||||
| 	false | ||||
| done | ||||
| %meson_build | ||||
| @ -248,9 +238,10 @@ done | ||||
| 
 | ||||
| rm -f %{buildroot}%{_libdir}/*.a | ||||
| # Taken from debian/rules | ||||
| rm -f %{docdir}/html/.buildinfo | ||||
| rm -f %{docdir}/html/objects.inv | ||||
| rm -rf %{docdir}/html/.doctrees | ||||
| rm -f %{buildroot}%{docdir}/html/.buildinfo | ||||
| rm -f %{buildroot}%{docdir}/html/objects.inv | ||||
| rm -rf %{buildroot}%{docdir}/html/.doctrees | ||||
| find %{buildroot}%{_datadir}/man/ -type f -a ! -iname "*rte_*" -exec rm {} \; | ||||
| 
 | ||||
| %files | ||||
| # BSD | ||||
| @ -281,6 +272,7 @@ rm -rf %{docdir}/html/.doctrees | ||||
| %{pmddir}/*.so | ||||
| %{_libdir}/pkgconfig/libdpdk.pc | ||||
| %{_libdir}/pkgconfig/libdpdk-libs.pc | ||||
| %{_datadir}/man | ||||
| %if %{with examples} | ||||
| %files examples | ||||
| %{_bindir}/dpdk-* | ||||
| @ -293,6 +285,9 @@ rm -rf %{docdir}/html/.doctrees | ||||
| %endif | ||||
| 
 | ||||
| %changelog | ||||
| * Fri Dec 15 2023 David Marchand <david.marchand@redhat.com> - 23.11-1 | ||||
| - Rebase to 23.11 (RHEL-19571) | ||||
| 
 | ||||
| * Tue Apr 11 2023 David Marchand <david.marchand@redhat.com> - 22.11-4 | ||||
| - Fix MTU regression for net/i40e (#2182799) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sources
									
									
									
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| SHA512 (dpdk-22.11.tar.xz) = 69dff391bf619c6fa206d856fe85450629046554c7759707b20a862ac66ab40f2c22e485dc41160886be2cdfc0f779c16796235639817dadc3c0844ae9565f59 | ||||
| SHA512 (dpdk-23.11.tar.xz) = e5177d658fca8df55090a92ea1a8932aac5847314fed7c686b8a36e709f34b14c05e68d6c4c433ff5371b67a39c4324b4eefab8c138f417468f57092bf269b4c | ||||
| SHA512 (pyelftools-0.27.tar.gz) = bb0a00e5500016e3d4f64be0a728e190f84b11a805f78d668b5a74716a30400e6794946f198ef4a3f3b8f64a63deb1b5a96180b09e56b7357b988b28e25fad0a | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user