Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/93730 _apply patch failure_ Submitter: Narcisa Ana Maria Vasile Date: Tuesday, June 01 2021 20:55:52 Applied on: CommitID:66b3a54b9feab193a5cf8ad54606d745078587cc Apply patch set 93730-93739 failed: Checking patch app/test/process.h... Checking patch app/test/test_lcores.c... Checking patch app/test/test_link_bonding.c... Checking patch app/test/test_lpm_perf.c... Checking patch config/meson.build... Checking patch drivers/bus/dpaa/base/qbman/bman_driver.c... Checking patch drivers/bus/dpaa/base/qbman/dpaa_sys.c... Checking patch drivers/bus/dpaa/base/qbman/process.c... Checking patch drivers/bus/dpaa/dpaa_bus.c... Checking patch drivers/bus/fslmc/portal/dpaa2_hw_dpio.c... Checking patch drivers/compress/mlx5/mlx5_compress.c... Hunk #1 succeeded at 72 (offset -1 lines). Hunk #2 succeeded at 804 (offset -29 lines). Hunk #3 succeeded at 826 (offset -29 lines). Checking patch drivers/event/dlb2/pf/base/dlb2_osdep.h... Hunk #2 succeeded at 194 (offset 2 lines). Checking patch drivers/net/af_xdp/rte_eth_af_xdp.c... Hunk #2 succeeded at 676 (offset 10 lines). Hunk #3 succeeded at 687 (offset 10 lines). Hunk #4 succeeded at 725 (offset 10 lines). Hunk #5 succeeded at 751 (offset 10 lines). Hunk #6 succeeded at 780 (offset 10 lines). Hunk #7 succeeded at 948 (offset 10 lines). Checking patch drivers/net/ark/ark_ethdev.c... Checking patch drivers/net/atlantic/atl_ethdev.c... Checking patch drivers/net/atlantic/atl_types.h... Checking patch drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c... Checking patch drivers/net/axgbe/axgbe_common.h... Checking patch drivers/net/axgbe/axgbe_dev.c... Checking patch drivers/net/axgbe/axgbe_ethdev.c... Checking patch drivers/net/axgbe/axgbe_ethdev.h... Checking patch drivers/net/axgbe/axgbe_i2c.c... Checking patch drivers/net/axgbe/axgbe_mdio.c... Checking patch drivers/net/axgbe/axgbe_phy_impl.c... Checking patch drivers/net/bnxt/bnxt.h... Hunk #1 succeeded at 534 (offset 1 line). Hunk #2 succeeded at 687 (offset -6 lines). Hunk #3 succeeded at 741 (offset -6 lines). Hunk #4 succeeded at 944 (offset -13 lines). Checking patch drivers/net/bnxt/bnxt_cpr.c... Checking patch drivers/net/bnxt/bnxt_ethdev.c... Hunk #6 succeeded at 4108 (offset 32 lines). Hunk #7 succeeded at 4116 (offset 32 lines). Hunk #8 succeeded at 4292 (offset 38 lines). Hunk #9 succeeded at 4307 (offset 38 lines). Hunk #10 succeeded at 5093 (offset 38 lines). Hunk #11 succeeded at 5894 (offset 38 lines). Checking patch drivers/net/bnxt/bnxt_irq.c... Checking patch drivers/net/bnxt/bnxt_reps.c... Checking patch drivers/net/bnxt/tf_ulp/bnxt_ulp.c... Checking patch drivers/net/bnxt/tf_ulp/bnxt_ulp.h... Checking patch drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c... Checking patch drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h... Checking patch drivers/net/ena/base/ena_plat_dpdk.h... error: while searching for: #define q_waitqueue_t \ struct { \ pthread_cond_t cond; \ pthread_mutex_t mutex; \ } #define ena_wait_queue_t q_waitqueue_t #define ENA_WAIT_EVENT_INIT(waitqueue) \ do { \ pthread_mutex_init(&(waitqueue).mutex, NULL); \ pthread_cond_init(&(waitqueue).cond, NULL); \ } while (0) error: patch failed: drivers/net/ena/base/ena_plat_dpdk.h:129 error: while searching for: wait.tv_sec = now.tv_sec + timeout / 1000000UL; \ timeout_us = timeout % 1000000UL; \ wait.tv_nsec = (now.tv_usec + timeout_us) * 1000UL; \ pthread_mutex_lock(&waitevent.mutex); \ pthread_cond_timedwait(&waitevent.cond, \ &waitevent.mutex, &wait); \ pthread_mutex_unlock(&waitevent.mutex); \ } while (0) #define ENA_WAIT_EVENT_SIGNAL(waitevent) pthread_cond_signal(&waitevent.cond) /* pthread condition doesn't need to be rearmed after usage */ error: patch failed: drivers/net/ena/base/ena_plat_dpdk.h:149 Checking patch drivers/net/enic/enic.h... Checking patch drivers/net/ice/ice_dcf_parent.c... Hunk #2 succeeded at 156 (offset 2 lines). Checking patch drivers/net/ipn3ke/ipn3ke_representor.c... Checking patch drivers/net/ixgbe/ixgbe_ethdev.h... Checking patch drivers/net/kni/rte_eth_kni.c... Checking patch drivers/net/mlx5/linux/mlx5_os.c... Hunk #1 succeeded at 2557 (offset 23 lines). Checking patch drivers/net/mlx5/mlx5.c... Hunk #2 succeeded at 1088 (offset 107 lines). Hunk #3 succeeded at 1215 (offset 107 lines). Hunk #4 succeeded at 1251 (offset 107 lines). Hunk #5 succeeded at 1282 (offset 107 lines). Hunk #6 succeeded at 1315 (offset 107 lines). Hunk #7 succeeded at 2450 (offset 112 lines). Checking patch drivers/net/mlx5/mlx5.h... Hunk #1 succeeded at 949 (offset 132 lines). Checking patch drivers/net/mlx5/mlx5_txpp.c... Checking patch drivers/net/mlx5/windows/mlx5_flow_os.c... Checking patch drivers/net/mlx5/windows/mlx5_os.c... Checking patch drivers/net/qede/base/bcm_osal.h... Checking patch drivers/net/vhost/rte_eth_vhost.c... Checking patch drivers/net/virtio/virtio_user/virtio_user_dev.c... Checking patch drivers/net/virtio/virtio_user/virtio_user_dev.h... Checking patch drivers/raw/ifpga/ifpga_rawdev.c... Checking patch drivers/vdpa/ifc/ifcvf_vdpa.c... Checking patch drivers/vdpa/mlx5/mlx5_vdpa.c... Hunk #5 succeeded at 736 (offset -28 lines). Hunk #6 succeeded at 770 (offset -28 lines). Hunk #7 succeeded at 779 (offset -28 lines). error: while searching for: priv->var = NULL; } mlx5_glue->close_device(priv->ctx); pthread_mutex_destroy(&priv->vq_config_lock); rte_free(priv); } return 0; error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa.c:816 Checking patch drivers/vdpa/mlx5/mlx5_vdpa.h... error: while searching for: struct mlx5_vdpa_priv { TAILQ_ENTRY(mlx5_vdpa_priv) next; uint8_t configured; pthread_mutex_t vq_config_lock; uint64_t last_traffic_tic; pthread_t timer_tid; pthread_mutex_t timer_lock; pthread_cond_t timer_cond; volatile uint8_t timer_on; int event_mode; error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa.h:119 Checking patch drivers/vdpa/mlx5/mlx5_vdpa_event.c... error: while searching for: uint32_t max; uint64_t current_tic; pthread_mutex_lock(&priv->timer_lock); while (!priv->timer_on) pthread_cond_wait(&priv->timer_cond, &priv->timer_lock); pthread_mutex_unlock(&priv->timer_lock); priv->timer_delay_us = priv->event_mode == MLX5_VDPA_EVENT_MODE_DYNAMIC_TIMER ? MLX5_VDPA_DEFAULT_TIMER_DELAY_US : priv->event_us; while (1) { max = 0; pthread_mutex_lock(&priv->vq_config_lock); for (i = 0; i < priv->nr_virtqs; i++) { cq = &priv->virtqs[i].eqp.cq; if (cq->cq_obj.cq && !cq->armed) { error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:247 error: while searching for: DRV_LOG(DEBUG, "Device %s traffic was stopped.", priv->vdev->device->name); mlx5_vdpa_arm_all_cqs(priv); pthread_mutex_unlock(&priv->vq_config_lock); pthread_mutex_lock(&priv->timer_lock); priv->timer_on = 0; while (!priv->timer_on) pthread_cond_wait(&priv->timer_cond, &priv->timer_lock); pthread_mutex_unlock(&priv->timer_lock); priv->timer_delay_us = priv->event_mode == MLX5_VDPA_EVENT_MODE_DYNAMIC_TIMER ? MLX5_VDPA_DEFAULT_TIMER_DELAY_US : error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:281 error: while searching for: } else { priv->last_traffic_tic = current_tic; } pthread_mutex_unlock(&priv->vq_config_lock); mlx5_vdpa_timer_sleep(priv, max); } return NULL; error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:297 error: while searching for: uint8_t buf[sizeof(struct mlx5dv_devx_async_event_hdr) + 128]; } out; pthread_mutex_lock(&priv->vq_config_lock); while (mlx5_glue->devx_get_event(priv->eventc, &out.event_resp, sizeof(out.buf)) >= (ssize_t)sizeof(out.event_resp.cookie)) { error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:313 error: while searching for: eventfd_write(cq->callfd, (eventfd_t)1); if (priv->event_mode == MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) { mlx5_vdpa_cq_arm(priv, cq); pthread_mutex_unlock(&priv->vq_config_lock); return; } /* Don't arm again - timer will take control. */ error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:332 error: while searching for: /* Traffic detected: make sure timer is on. */ priv->last_traffic_tic = rte_rdtsc(); pthread_mutex_lock(&priv->timer_lock); if (!priv->timer_on) { priv->timer_on = 1; pthread_cond_signal(&priv->timer_cond); } pthread_mutex_unlock(&priv->timer_lock); pthread_mutex_unlock(&priv->vq_config_lock); } static void error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:347 Hunk #7 succeeded at 340 (offset -29 lines). Hunk #8 succeeded at 386 (offset -29 lines). error: while searching for: { int ret; rte_cpuset_t cpuset; pthread_attr_t attr; char name[16]; const struct sched_param sp = { .sched_priority = sched_get_priority_max(SCHED_RR), }; if (!priv->eventc) /* All virtqs are in poll mode. */ return 0; if (priv->event_mode != MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) { pthread_mutex_init(&priv->timer_lock, NULL); pthread_cond_init(&priv->timer_cond, NULL); priv->timer_on = 0; pthread_attr_init(&attr); ret = pthread_attr_setschedpolicy(&attr, SCHED_RR); if (ret) { DRV_LOG(ERR, "Failed to set thread sched policy = RR."); return -1; } ret = pthread_attr_setschedparam(&attr, &sp); if (ret) { DRV_LOG(ERR, "Failed to set thread priority."); return -1; } ret = pthread_create(&priv->timer_tid, &attr, mlx5_vdpa_poll_handle, (void *)priv); if (ret) { DRV_LOG(ERR, "Failed to create timer thread."); return -1; } CPU_ZERO(&cpuset); if (priv->event_core != -1) CPU_SET(priv->event_core, &cpuset); else cpuset = rte_lcore_cpuset(rte_get_main_lcore()); ret = pthread_setaffinity_np(priv->timer_tid, sizeof(cpuset), &cpuset); if (ret) { DRV_LOG(ERR, "Failed to set thread affinity."); goto error; } snprintf(name, sizeof(name), "vDPA-mlx5-%d", priv->vid); ret = pthread_setname_np(priv->timer_tid, name); if (ret) { DRV_LOG(ERR, "Failed to set timer thread name."); return -1; error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:502 error: while searching for: { int retries = MLX5_VDPA_INTR_RETRIES; int ret = -EAGAIN; void *status; if (priv->intr_handle.fd) { while (retries-- && ret == -EAGAIN) { error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:569 error: while searching for: } memset(&priv->intr_handle, 0, sizeof(priv->intr_handle)); } if (priv->timer_tid) { pthread_cancel(priv->timer_tid); pthread_join(priv->timer_tid, &status); } priv->timer_tid = 0; } void error: patch failed: drivers/vdpa/mlx5/mlx5_vdpa_event.c:585 Checking patch examples/kni/main.c... Checking patch examples/performance-thread/pthread_shim/main.c... Checking patch examples/vhost/main.c... error: while searching for: unsigned nb_ports, valid_num_ports; int ret, i; uint16_t portid; static pthread_t tid; uint64_t flags = 0; signal(SIGINT, sigint_handler); error: patch failed: examples/vhost/main.c:1635 Checking patch examples/vhost_blk/vhost_blk.c... Checking patch lib/eal/common/eal_common_options.c... Hunk #1 succeeded at 1872 (offset 6 lines). Hunk #2 succeeded at 1900 (offset 6 lines). Checking patch lib/eal/common/eal_common_proc.c... Hunk #7 succeeded at 524 (offset -3 lines). Hunk #8 succeeded at 584 (offset -3 lines). Hunk #9 succeeded at 998 (offset -1 lines). Hunk #10 succeeded at 1021 (offset -1 lines). Hunk #11 succeeded at 1040 (offset -1 lines). Hunk #12 succeeded at 1118 (offset -1 lines). Hunk #13 succeeded at 1141 (offset -1 lines). Hunk #14 succeeded at 1185 (offset -1 lines). Hunk #15 succeeded at 1201 (offset -1 lines). Checking patch lib/eal/common/eal_common_thread.c... Checking patch lib/eal/common/eal_common_trace.c... Checking patch lib/eal/common/eal_private.h... Checking patch lib/eal/common/malloc_mp.c... Hunk #2 succeeded at 301 (offset -2 lines). Hunk #3 succeeded at 387 (offset -2 lines). Hunk #4 succeeded at 409 (offset -2 lines). Hunk #5 succeeded at 539 (offset -2 lines). Hunk #6 succeeded at 557 (offset -2 lines). Hunk #7 succeeded at 588 (offset -2 lines). Hunk #8 succeeded at 603 (offset -2 lines). Hunk #9 succeeded at 616 (offset -2 lines). Hunk #10 succeeded at 706 (offset -2 lines). Hunk #11 succeeded at 767 (offset -2 lines). Checking patch lib/eal/common/meson.build... Checking patch lib/eal/freebsd/eal.c... Checking patch lib/eal/freebsd/eal_alarm.c... Checking patch lib/eal/freebsd/eal_interrupts.c... Checking patch lib/eal/freebsd/eal_thread.c... Checking patch lib/eal/include/meson.build... Checking patch lib/eal/include/rte_lcore.h... Checking patch lib/eal/include/rte_per_lcore.h... Checking patch lib/eal/linux/eal.c... Checking patch lib/eal/linux/eal_alarm.c... Checking patch lib/eal/linux/eal_interrupts.c... Checking patch lib/eal/linux/eal_thread.c... Checking patch lib/eal/linux/eal_timer.c... Checking patch lib/eal/unix/meson.build... Checking patch lib/eal/unix/rte_thread.c... Checking patch lib/eal/version.map... Checking patch lib/eal/windows/eal.c... Checking patch lib/eal/windows/eal_interrupts.c... Checking patch lib/eal/windows/eal_thread.c... Checking patch lib/eal/windows/eal_windows.h... Checking patch lib/eal/windows/include/meson.build... Checking patch lib/eal/windows/include/pthread.h... error: while searching for: /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2019 Intel Corporation */ #ifndef _PTHREAD_H_ #define _PTHREAD_H_ #include #include /** * This file is required to support the common code in eal_common_proc.c, * eal_common_thread.c and common\include\rte_per_lcore.h as Microsoft libc * does not contain pthread.h. This may be removed in future releases. */ #ifdef __cplusplus extern "C" { #endif #include #include #define PTHREAD_BARRIER_SERIAL_THREAD TRUE /* defining pthread_t type on Windows since there is no in Microsoft libc*/ typedef uintptr_t pthread_t; /* defining pthread_attr_t type on Windows since there is no in Microsoft libc*/ typedef void *pthread_attr_t; typedef void *pthread_mutexattr_t; typedef CRITICAL_SECTION pthread_mutex_t; typedef SYNCHRONIZATION_BARRIER pthread_barrier_t; #define pthread_barrier_init(barrier, attr, count) \ !InitializeSynchronizationBarrier(barrier, count, -1) #define pthread_barrier_wait(barrier) EnterSynchronizationBarrier(barrier, \ SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY) #define pthread_barrier_destroy(barrier) \ !DeleteSynchronizationBarrier(barrier) #define pthread_cancel(thread) !TerminateThread((HANDLE) thread, 0) /* pthread function overrides */ #define pthread_self() \ ((pthread_t)GetCurrentThreadId()) static inline int pthread_equal(pthread_t t1, pthread_t t2) { return t1 == t2; } static inline int pthread_setaffinity_np(pthread_t threadid, size_t cpuset_size, rte_cpuset_t *cpuset) { DWORD_PTR ret = 0; HANDLE thread_handle; if (cpuset == NULL || cpuset_size == 0) return -1; thread_handle = OpenThread(THREAD_ALL_ACCESS, FALSE, threadid); if (thread_handle == NULL) { RTE_LOG_WIN32_ERR("OpenThread()"); return -1; } ret = SetThreadAffinityMask(thread_handle, *cpuset->_bits); if (ret == 0) { RTE_LOG_WIN32_ERR("SetThreadAffinityMask()"); goto close_handle; } close_handle: if (CloseHandle(thread_handle) == 0) { RTE_LOG_WIN32_ERR("CloseHandle()"); return -1; } return (ret == 0) ? -1 : 0; } static inline int pthread_getaffinity_np(pthread_t threadid, size_t cpuset_size, rte_cpuset_t *cpuset) { /* Workaround for the lack of a GetThreadAffinityMask() *API in Windows */ DWORD_PTR prev_affinity_mask; HANDLE thread_handle; DWORD_PTR ret = 0; if (cpuset == NULL || cpuset_size == 0) return -1; thread_handle = OpenThread(THREAD_ALL_ACCESS, FALSE, threadid); if (thread_handle == NULL) { RTE_LOG_WIN32_ERR("OpenThread()"); return -1; } /* obtain previous mask by setting dummy mask */ prev_affinity_mask = SetThreadAffinityMask(thread_handle, 0x1); if (prev_affinity_mask == 0) { RTE_LOG_WIN32_ERR("SetThreadAffinityMask()"); goto close_handle; } /* set it back! */ ret = SetThreadAffinityMask(thread_handle, prev_affinity_mask); if (ret == 0) { RTE_LOG_WIN32_ERR("SetThreadAffinityMask()"); goto close_handle; } memset(cpuset, 0, cpuset_size); *cpuset->_bits = prev_affinity_mask; close_handle: if (CloseHandle(thread_handle) == 0) { RTE_LOG_WIN32_ERR("SetThreadAffinityMask()"); return -1; } return (ret == 0) ? -1 : 0; } static inline int pthread_create(void *threadid, const void *threadattr, void *threadfunc, void *args) { RTE_SET_USED(threadattr); HANDLE hThread; hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadfunc, args, 0, (LPDWORD)threadid); if (hThread) { SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS); SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL); } return ((hThread != NULL) ? 0 : E_FAIL); } static inline int pthread_join(__rte_unused pthread_t thread, __rte_unused void **value_ptr) { return 0; } static inline int pthread_mutex_init(pthread_mutex_t *mutex, __rte_unused pthread_mutexattr_t *attr) { InitializeCriticalSection(mutex); return 0; } static inline int pthread_mutex_lock(pthread_mutex_t *mutex) { EnterCriticalSection(mutex); return 0; } static inline int pthread_mutex_unlock(pthread_mutex_t *mutex) { LeaveCriticalSection(mutex); retu error: patch failed: lib/eal/windows/include/pthread.h:1 error: removal patch leaves file contents error: lib/eal/windows/include/pthread.h: patch does not apply Checking patch lib/eal/windows/include/sched.h... Checking patch lib/eal/windows/meson.build... Checking patch lib/ethdev/rte_ethdev.c... Hunk #1 succeeded at 526 (offset 2 lines). Hunk #2 succeeded at 600 (offset 2 lines). Checking patch lib/ethdev/rte_ethdev_core.h... Checking patch lib/ethdev/rte_flow.c... Hunk #1 succeeded at 226 (offset 1 line). Checking patch lib/eventdev/rte_event_eth_rx_adapter.c... Hunk #2 succeeded at 1449 (offset -1 lines). Checking patch lib/vhost/fd_man.c... Checking patch lib/vhost/fd_man.h... Checking patch lib/vhost/socket.c... Hunk #3 succeeded at 74 (offset 1 line). Hunk #4 succeeded at 87 (offset 1 line). Hunk #5 succeeded at 271 (offset 2 lines). Hunk #6 succeeded at 326 (offset 2 lines). Hunk #7 succeeded at 420 (offset 2 lines). Hunk #8 succeeded at 456 (offset 2 lines). Hunk #9 succeeded at 487 (offset 2 lines). Hunk #10 succeeded at 499 (offset 2 lines). Hunk #11 succeeded at 510 (offset 2 lines). Hunk #12 succeeded at 554 (offset 2 lines). Hunk #13 succeeded at 588 (offset 2 lines). Hunk #14 succeeded at 602 (offset 2 lines). Hunk #15 succeeded at 617 (offset 2 lines). Hunk #16 succeeded at 631 (offset 2 lines). Hunk #17 succeeded at 641 (offset 2 lines). Hunk #18 succeeded at 651 (offset 2 lines). Hunk #19 succeeded at 659 (offset 2 lines). Hunk #20 succeeded at 674 (offset 2 lines). Hunk #21 succeeded at 685 (offset 2 lines). Hunk #22 succeeded at 698 (offset 2 lines). Hunk #23 succeeded at 724 (offset 2 lines). Hunk #24 succeeded at 734 (offset 2 lines). Hunk #25 succeeded at 751 (offset 2 lines). Hunk #26 succeeded at 779 (offset 2 lines). Hunk #27 succeeded at 791 (offset 2 lines). Hunk #28 succeeded at 817 (offset 2 lines). Hunk #29 succeeded at 849 (offset 2 lines). Hunk #30 succeeded at 869 (offset 2 lines). Hunk #31 succeeded at 951 (offset 3 lines). Hunk #32 succeeded at 965 (offset 3 lines). Hunk #33 succeeded at 987 (offset 3 lines). Hunk #34 succeeded at 1001 (offset 3 lines). Hunk #35 succeeded at 1019 (offset 3 lines). Hunk #36 succeeded at 1039 (offset 3 lines). Hunk #37 succeeded at 1054 (offset 3 lines). Hunk #38 succeeded at 1064 (offset 3 lines). Hunk #39 succeeded at 1075 (offset 3 lines). Hunk #40 succeeded at 1100 (offset 3 lines). Hunk #41 succeeded at 1114 (offset 3 lines). Hunk #42 succeeded at 1125 (offset 3 lines). Checking patch lib/vhost/vhost.c... Hunk #2 succeeded at 657 (offset 1 line). Hunk #3 succeeded at 666 (offset 1 line). Hunk #4 succeeded at 674 (offset 1 line). Checking patch meson_options.txt... Applied patch app/test/process.h cleanly. Applied patch app/test/test_lcores.c cleanly. Applied patch app/test/test_link_bonding.c cleanly. Applied patch app/test/test_lpm_perf.c cleanly. Applied patch config/meson.build cleanly. Applied patch drivers/bus/dpaa/base/qbman/bman_driver.c cleanly. Applied patch drivers/bus/dpaa/base/qbman/dpaa_sys.c cleanly. Applied patch drivers/bus/dpaa/base/qbman/process.c cleanly. Applied patch drivers/bus/dpaa/dpaa_bus.c cleanly. Applied patch drivers/bus/fslmc/portal/dpaa2_hw_dpio.c cleanly. Applied patch drivers/compress/mlx5/mlx5_compress.c cleanly. Applied patch drivers/event/dlb2/pf/base/dlb2_osdep.h cleanly. Applied patch drivers/net/af_xdp/rte_eth_af_xdp.c cleanly. Applied patch drivers/net/ark/ark_ethdev.c cleanly. Applied patch drivers/net/atlantic/atl_ethdev.c cleanly. Applied patch drivers/net/atlantic/atl_types.h cleanly. Applied patch drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c cleanly. Applied patch drivers/net/axgbe/axgbe_common.h cleanly. Applied patch drivers/net/axgbe/axgbe_dev.c cleanly. Applied patch drivers/net/axgbe/axgbe_ethdev.c cleanly. Applied patch drivers/net/axgbe/axgbe_ethdev.h cleanly. Applied patch drivers/net/axgbe/axgbe_i2c.c cleanly. Applied patch drivers/net/axgbe/axgbe_mdio.c cleanly. Applied patch drivers/net/axgbe/axgbe_phy_impl.c cleanly. Applied patch drivers/net/bnxt/bnxt.h cleanly. Applied patch drivers/net/bnxt/bnxt_cpr.c cleanly. Applied patch drivers/net/bnxt/bnxt_ethdev.c cleanly. Applied patch drivers/net/bnxt/bnxt_irq.c cleanly. Applied patch drivers/net/bnxt/bnxt_reps.c cleanly. Applied patch drivers/net/bnxt/tf_ulp/bnxt_ulp.c cleanly. Applied patch drivers/net/bnxt/tf_ulp/bnxt_ulp.h cleanly. Applied patch drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c cleanly. Applied patch drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h cleanly. Applying patch drivers/net/ena/base/ena_plat_dpdk.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applied patch drivers/net/enic/enic.h cleanly. Applied patch drivers/net/ice/ice_dcf_parent.c cleanly. Applied patch drivers/net/ipn3ke/ipn3ke_representor.c cleanly. Applied patch drivers/net/ixgbe/ixgbe_ethdev.h cleanly. Applied patch drivers/net/kni/rte_eth_kni.c cleanly. Applied patch drivers/net/mlx5/linux/mlx5_os.c cleanly. Applied patch drivers/net/mlx5/mlx5.c cleanly. Applied patch drivers/net/mlx5/mlx5.h cleanly. Applied patch drivers/net/mlx5/mlx5_txpp.c cleanly. Applied patch drivers/net/mlx5/windows/mlx5_flow_os.c cleanly. Applied patch drivers/net/mlx5/windows/mlx5_os.c cleanly. Applied patch drivers/net/qede/base/bcm_osal.h cleanly. Applied patch drivers/net/vhost/rte_eth_vhost.c cleanly. Applied patch drivers/net/virtio/virtio_user/virtio_user_dev.c cleanly. Applied patch drivers/net/virtio/virtio_user/virtio_user_dev.h cleanly. Applied patch drivers/raw/ifpga/ifpga_rawdev.c cleanly. Applied patch drivers/vdpa/ifc/ifcvf_vdpa.c cleanly. Applying patch drivers/vdpa/mlx5/mlx5_vdpa.c with 1 reject... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Hunk #6 applied cleanly. Hunk #7 applied cleanly. Rejected hunk #8. Applying patch drivers/vdpa/mlx5/mlx5_vdpa.h with 1 reject... Rejected hunk #1. Applying patch drivers/vdpa/mlx5/mlx5_vdpa_event.c with 9 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. Rejected hunk #4. Rejected hunk #5. Rejected hunk #6. Hunk #7 applied cleanly. Hunk #8 applied cleanly. Rejected hunk #9. Rejected hunk #10. Rejected hunk #11. Applied patch examples/kni/main.c cleanly. Applied patch examples/performance-thread/pthread_shim/main.c cleanly. Applying patch examples/vhost/main.c with 1 reject... Rejected hunk #1. Applied patch examples/vhost_blk/vhost_blk.c cleanly. Applied patch lib/eal/common/eal_common_options.c cleanly. Applied patch lib/eal/common/eal_common_proc.c cleanly. Applied patch lib/eal/common/eal_common_thread.c cleanly. Applied patch lib/eal/common/eal_common_trace.c cleanly. Applied patch lib/eal/common/eal_private.h cleanly. Applied patch lib/eal/common/malloc_mp.c cleanly. Applied patch lib/eal/common/meson.build cleanly. Applied patch lib/eal/freebsd/eal.c cleanly. Applied patch lib/eal/freebsd/eal_alarm.c cleanly. Applied patch lib/eal/freebsd/eal_interrupts.c cleanly. Applied patch lib/eal/freebsd/eal_thread.c cleanly. Applied patch lib/eal/include/meson.build cleanly. Applied patch lib/eal/include/rte_lcore.h cleanly. Applied patch lib/eal/include/rte_per_lcore.h cleanly. Applied patch lib/eal/linux/eal.c cleanly. Applied patch lib/eal/linux/eal_alarm.c cleanly. Applied patch lib/eal/linux/eal_interrupts.c cleanly. Applied patch lib/eal/linux/eal_thread.c cleanly. Applied patch lib/eal/linux/eal_timer.c cleanly. Applied patch lib/eal/unix/meson.build cleanly. Applied patch lib/eal/unix/rte_thread.c cleanly. Applied patch lib/eal/version.map cleanly. Applied patch lib/eal/windows/eal.c cleanly. Applied patch lib/eal/windows/eal_interrupts.c cleanly. Applied patch lib/eal/windows/eal_thread.c cleanly. Applied patch lib/eal/windows/eal_windows.h cleanly. Applied patch lib/eal/windows/include/meson.build cleanly. Applied patch lib/eal/windows/include/sched.h cleanly. Applied patch lib/eal/windows/meson.build cleanly. Applied patch lib/ethdev/rte_ethdev.c cleanly. Applied patch lib/ethdev/rte_ethdev_core.h cleanly. Applied patch lib/ethdev/rte_flow.c cleanly. Applied patch lib/eventdev/rte_event_eth_rx_adapter.c cleanly. Applied patch lib/vhost/fd_man.c cleanly. Applied patch lib/vhost/fd_man.h cleanly. Applied patch lib/vhost/socket.c cleanly. Applied patch lib/vhost/vhost.c cleanly. Applied patch meson_options.txt cleanly. diff a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h (rejected hunks) @@ -129,14 +129,14 @@ do { \ #define q_waitqueue_t \ struct { \ pthread_cond_t cond; \ - pthread_mutex_t mutex; \ + rte_thread_mutex_t mutex; \ } #define ena_wait_queue_t q_waitqueue_t #define ENA_WAIT_EVENT_INIT(waitqueue) \ do { \ - pthread_mutex_init(&(waitqueue).mutex, NULL); \ + rte_thread_mutex_init(&(waitqueue).mutex); \ pthread_cond_init(&(waitqueue).cond, NULL); \ } while (0) @@ -149,10 +149,10 @@ do { \ wait.tv_sec = now.tv_sec + timeout / 1000000UL; \ timeout_us = timeout % 1000000UL; \ wait.tv_nsec = (now.tv_usec + timeout_us) * 1000UL; \ - pthread_mutex_lock(&waitevent.mutex); \ + rte_thread_mutex_lock(&waitevent.mutex); \ pthread_cond_timedwait(&waitevent.cond, \ &waitevent.mutex, &wait); \ - pthread_mutex_unlock(&waitevent.mutex); \ + rte_thread_mutex_unlock(&waitevent.mutex); \ } while (0) #define ENA_WAIT_EVENT_SIGNAL(waitevent) pthread_cond_signal(&waitevent.cond) /* pthread condition doesn't need to be rearmed after usage */ diff a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c (rejected hunks) @@ -816,7 +816,7 @@ mlx5_vdpa_pci_remove(struct rte_pci_device *pci_dev) priv->var = NULL; } mlx5_glue->close_device(priv->ctx); - pthread_mutex_destroy(&priv->vq_config_lock); + rte_thread_mutex_destroy(&priv->vq_config_lock); rte_free(priv); } return 0; diff a/drivers/vdpa/mlx5/mlx5_vdpa.h b/drivers/vdpa/mlx5/mlx5_vdpa.h (rejected hunks) @@ -119,10 +119,10 @@ enum { struct mlx5_vdpa_priv { TAILQ_ENTRY(mlx5_vdpa_priv) next; uint8_t configured; - pthread_mutex_t vq_config_lock; + rte_thread_mutex_t vq_config_lock; uint64_t last_traffic_tic; - pthread_t timer_tid; - pthread_mutex_t timer_lock; + rte_thread_t timer_tid; + rte_thread_mutex_t timer_lock; pthread_cond_t timer_cond; volatile uint8_t timer_on; int event_mode; diff a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c (rejected hunks) @@ -247,17 +247,17 @@ mlx5_vdpa_poll_handle(void *arg) uint32_t max; uint64_t current_tic; - pthread_mutex_lock(&priv->timer_lock); + rte_thread_mutex_lock(&priv->timer_lock); while (!priv->timer_on) pthread_cond_wait(&priv->timer_cond, &priv->timer_lock); - pthread_mutex_unlock(&priv->timer_lock); + rte_thread_mutex_unlock(&priv->timer_lock); priv->timer_delay_us = priv->event_mode == MLX5_VDPA_EVENT_MODE_DYNAMIC_TIMER ? MLX5_VDPA_DEFAULT_TIMER_DELAY_US : priv->event_us; while (1) { max = 0; - pthread_mutex_lock(&priv->vq_config_lock); + rte_thread_mutex_lock(&priv->vq_config_lock); for (i = 0; i < priv->nr_virtqs; i++) { cq = &priv->virtqs[i].eqp.cq; if (cq->cq_obj.cq && !cq->armed) { @@ -281,13 +281,13 @@ mlx5_vdpa_poll_handle(void *arg) DRV_LOG(DEBUG, "Device %s traffic was stopped.", priv->vdev->device->name); mlx5_vdpa_arm_all_cqs(priv); - pthread_mutex_unlock(&priv->vq_config_lock); - pthread_mutex_lock(&priv->timer_lock); + rte_thread_mutex_unlock(&priv->vq_config_lock); + rte_thread_mutex_lock(&priv->timer_lock); priv->timer_on = 0; while (!priv->timer_on) pthread_cond_wait(&priv->timer_cond, &priv->timer_lock); - pthread_mutex_unlock(&priv->timer_lock); + rte_thread_mutex_unlock(&priv->timer_lock); priv->timer_delay_us = priv->event_mode == MLX5_VDPA_EVENT_MODE_DYNAMIC_TIMER ? MLX5_VDPA_DEFAULT_TIMER_DELAY_US : @@ -297,7 +297,7 @@ mlx5_vdpa_poll_handle(void *arg) } else { priv->last_traffic_tic = current_tic; } - pthread_mutex_unlock(&priv->vq_config_lock); + rte_thread_mutex_unlock(&priv->vq_config_lock); mlx5_vdpa_timer_sleep(priv, max); } return NULL; @@ -313,7 +313,7 @@ mlx5_vdpa_interrupt_handler(void *cb_arg) uint8_t buf[sizeof(struct mlx5dv_devx_async_event_hdr) + 128]; } out; - pthread_mutex_lock(&priv->vq_config_lock); + rte_thread_mutex_lock(&priv->vq_config_lock); while (mlx5_glue->devx_get_event(priv->eventc, &out.event_resp, sizeof(out.buf)) >= (ssize_t)sizeof(out.event_resp.cookie)) { @@ -332,7 +332,7 @@ mlx5_vdpa_interrupt_handler(void *cb_arg) eventfd_write(cq->callfd, (eventfd_t)1); if (priv->event_mode == MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) { mlx5_vdpa_cq_arm(priv, cq); - pthread_mutex_unlock(&priv->vq_config_lock); + rte_thread_mutex_unlock(&priv->vq_config_lock); return; } /* Don't arm again - timer will take control. */ @@ -347,13 +347,13 @@ mlx5_vdpa_interrupt_handler(void *cb_arg) /* Traffic detected: make sure timer is on. */ priv->last_traffic_tic = rte_rdtsc(); - pthread_mutex_lock(&priv->timer_lock); + rte_thread_mutex_lock(&priv->timer_lock); if (!priv->timer_on) { priv->timer_on = 1; pthread_cond_signal(&priv->timer_cond); } - pthread_mutex_unlock(&priv->timer_lock); - pthread_mutex_unlock(&priv->vq_config_lock); + rte_thread_mutex_unlock(&priv->timer_lock); + rte_thread_mutex_unlock(&priv->vq_config_lock); } static void @@ -502,49 +502,41 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv) { int ret; rte_cpuset_t cpuset; - pthread_attr_t attr; + rte_thread_attr_t attr; char name[16]; - const struct sched_param sp = { - .sched_priority = sched_get_priority_max(SCHED_RR), - }; if (!priv->eventc) /* All virtqs are in poll mode. */ return 0; if (priv->event_mode != MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) { - pthread_mutex_init(&priv->timer_lock, NULL); + rte_thread_mutex_init(&priv->timer_lock); pthread_cond_init(&priv->timer_cond, NULL); priv->timer_on = 0; - pthread_attr_init(&attr); - ret = pthread_attr_setschedpolicy(&attr, SCHED_RR); + rte_thread_attr_init(&attr); + CPU_ZERO(&cpuset); + if (priv->event_core != -1) + CPU_SET(priv->event_core, &cpuset); + else + cpuset = rte_lcore_cpuset(rte_get_main_lcore()); + ret = rte_thread_attr_set_affinity(&attr, &cpuset); if (ret) { - DRV_LOG(ERR, "Failed to set thread sched policy = RR."); + DRV_LOG(ERR, "Failed to set thread affinity."); return -1; } - ret = pthread_attr_setschedparam(&attr, &sp); + ret = rte_thread_attr_set_priority(&attr, + RTE_THREAD_PRIORITY_REALTIME_CRITICAL); if (ret) { DRV_LOG(ERR, "Failed to set thread priority."); return -1; } - ret = pthread_create(&priv->timer_tid, &attr, + ret = rte_thread_create(&priv->timer_tid, &attr, mlx5_vdpa_poll_handle, (void *)priv); if (ret) { DRV_LOG(ERR, "Failed to create timer thread."); return -1; } - CPU_ZERO(&cpuset); - if (priv->event_core != -1) - CPU_SET(priv->event_core, &cpuset); - else - cpuset = rte_lcore_cpuset(rte_get_main_lcore()); - ret = pthread_setaffinity_np(priv->timer_tid, - sizeof(cpuset), &cpuset); - if (ret) { - DRV_LOG(ERR, "Failed to set thread affinity."); - goto error; - } snprintf(name, sizeof(name), "vDPA-mlx5-%d", priv->vid); - ret = pthread_setname_np(priv->timer_tid, name); + ret = pthread_setname_np(priv->timer_tid.opaque_id, name); if (ret) { DRV_LOG(ERR, "Failed to set timer thread name."); return -1; @@ -569,7 +561,6 @@ mlx5_vdpa_cqe_event_unset(struct mlx5_vdpa_priv *priv) { int retries = MLX5_VDPA_INTR_RETRIES; int ret = -EAGAIN; - void *status; if (priv->intr_handle.fd) { while (retries-- && ret == -EAGAIN) { @@ -585,11 +576,11 @@ mlx5_vdpa_cqe_event_unset(struct mlx5_vdpa_priv *priv) } memset(&priv->intr_handle, 0, sizeof(priv->intr_handle)); } - if (priv->timer_tid) { - pthread_cancel(priv->timer_tid); - pthread_join(priv->timer_tid, &status); + if (priv->timer_tid.opaque_id) { + rte_thread_cancel(priv->timer_tid); + rte_thread_join(priv->timer_tid, NULL); } - priv->timer_tid = 0; + priv->timer_tid.opaque_id = 0; } void diff a/examples/vhost/main.c b/examples/vhost/main.c (rejected hunks) @@ -1635,7 +1635,7 @@ main(int argc, char *argv[]) unsigned nb_ports, valid_num_ports; int ret, i; uint16_t portid; - static pthread_t tid; + static rte_thread_t tid; uint64_t flags = 0; signal(SIGINT, sigint_handler); https://lab.dpdk.org/results/dashboard/patchsets/17280/ UNH-IOL DPDK Community Lab