Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perftest for openSUSE:Factory checked in at 2021-09-07 21:21:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perftest (Old) and /work/SRC/openSUSE:Factory/.perftest.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perftest" Tue Sep 7 21:21:24 2021 rev:14 rq:917137 version:4.5 Changes: -------- --- /work/SRC/openSUSE:Factory/perftest/perftest.changes 2021-03-18 22:54:52.283526353 +0100 +++ /work/SRC/openSUSE:Factory/.perftest.new.1899/perftest.changes 2021-09-07 21:22:04.609350494 +0200 @@ -1,0 +2,9 @@ +Tue Aug 24 07:37:12 UTC 2021 - Nicolas Morey-Chaisemartin <[email protected]> + +- Update to 4.5.0-2 (jsc#SLE-19251) + - No release notes available +- Add Do-not-check-if-CPU-is-RO-compliant-at-compile-time.patch + to make sure relaxed ordering only depends on the run-time CPU + and not the compile-time one. + +------------------------------------------------------------------- Old: ---- perftest-4.40.37.tar.gz New: ---- Do-not-check-if-CPU-is-RO-compliant-at-compile-time.patch perftest-4.50.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perftest.spec ++++++ --- /var/tmp/diff_new_pack.hrOHcX/_old 2021-09-07 21:22:05.085351070 +0200 +++ /var/tmp/diff_new_pack.hrOHcX/_new 2021-09-07 21:22:05.085351070 +0200 @@ -16,9 +16,9 @@ # -%define extra_version 0.37 +%define extra_version 0.2 Name: perftest -Version: 4.4 +Version: 4.5 Release: 0 Summary: IB Performance tests License: BSD-3-Clause OR GPL-2.0-or-later @@ -26,6 +26,7 @@ URL: https://github.com/linux-rdma/perftest Source0: %{name}-%{version}%{extra_version}.tar.gz Patch4: perftest-armv6.patch +Patch5: Do-not-check-if-CPU-is-RO-compliant-at-compile-time.patch # For transition to rdma-core make sure the new packages are selected # Once the transition is made the version check can be removed BuildRequires: autoconf @@ -34,6 +35,7 @@ BuildRequires: libibverbs-devel BuildRequires: librdmacm-devel BuildRequires: libtool +BuildRequires: pciutils-devel %description gen2 uverbs microbenchmarks @@ -41,6 +43,7 @@ %prep %setup -q -n %{name}-%{version}%{extra_version} %patch4 -p1 +%patch5 %build ./autogen.sh ++++++ Do-not-check-if-CPU-is-RO-compliant-at-compile-time.patch ++++++ commit 132ace3feb017f56170cd56c02cf5894d1e80d81 Author: Nicolas Morey-Chaisemartin <[email protected]> Date: Tue Aug 24 09:42:33 2021 +0200 Do not check if CPU is RO compliant at compile time Patch d157d4246abe (Check PCIe relaxed ordering compliant) introduced run-time check for relaxed ordering compliance. Thus there shouldn't be any compile time checks. Current code is at risk on behaving differently on the same machine depending on which CPU it was packaged. Signed-off-by: Nicolas Morey-Chaisemartin <[email protected]> diff --git configure.ac configure.ac index ae91c3dd786a..26c10eb02fd6 100755 --- configure.ac +++ configure.ac @@ -177,16 +177,6 @@ if [test $IS_FREEBSD = no]; then AC_CHECK_HEADERS([pci/pci.h],,[AC_MSG_ERROR([pciutils header files not found, consider installing pciutils-devel])]) AC_CHECK_LIB([pci], [pci_init], [LIBPCI=-lpci], AC_MSG_ERROR([libpci not found])) CPU_IS_RO_COMPLIANT=yes - # Actually this is check for being affected by a known issue - # with Intel CPUs: - # https://lore.kernel.org/patchwork/patch/820922/ - intel_no_ro_devices="6f01 6f02 6f03 6f04 6f05 6f06 6f07 6f08 6f09 6f0a 6f0b 6f0c 6f0d 6f0e 2f01 2f02 2f03 2f04 2f05 2f06 2f07 2f08 2f09 2f0a 2f0b 2f0c 2f0d 2f0e" - for cpu_num in $intel_no_ro_devices; do - ro_nonsupported=$(lspci -nn | grep -i 8086:$cpu_num) - if [ test "$ro_nonsupported" ]; then - CPU_IS_RO_COMPLIANT=no - fi - done fi AC_TRY_LINK([ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.hrOHcX/_old 2021-09-07 21:22:05.121351113 +0200 +++ /var/tmp/diff_new_pack.hrOHcX/_new 2021-09-07 21:22:05.121351113 +0200 @@ -5,8 +5,8 @@ <param name="package-meta">no</param> <param name="exclude">.git</param> <param name="filename">perftest</param> - <param name="version">4.4-0.37</param> - <param name="revision">5fb4f10a7e7827ed15e53c25810a10be279d6e23</param> + <param name="version">4.5-0.2</param> + <param name="revision">7504ce48ac396a02f4d00de359257b2cb8458f06</param> </service> <service name="recompress" mode="disabled"> <param name="file">*perftest*.tar</param> ++++++ perftest-4.40.37.tar.gz -> perftest-4.50.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/.gitignore new/perftest-4.50.2/.gitignore --- old/perftest-4.40.37/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/perftest-4.50.2/.gitignore 2021-03-23 21:41:20.000000000 +0100 @@ -0,0 +1,59 @@ +# Object Files +*.o +*.lo +*.la + +# Libraries +*.lib +*.a +.libs + +# Shared objects +*.so +*.so.* + +# Dependencies +.dirstamp +.deps + +# Automake +Makefile +Makefile.in +aclocal.m4 +autom4te.cache/ +config.h +config.h.in +config.log +config.status +config/ +configure +libtool +m4/ +stamp-h1 + +# Project/Eclipse +.cproject +.project + +#Ctags +tags + +#Programs +ib_atomic_bw +ib_atomic_lat +ib_read_bw +ib_read_lat +ib_send_bw +ib_send_lat +ib_write_bw +ib_write_lat +raw_ethernet_bw +raw_ethernet_lat +raw_ethernet_burst_lat +raw_ethernet_fs_rate + +#Debian Stuff +debian/compat +debian/*.log +debian/files +debian/perftest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/README new/perftest-4.50.2/README --- old/perftest-4.40.37/README 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/README 2021-03-23 21:41:20.000000000 +0100 @@ -108,7 +108,8 @@ (kernel module) matches libibverbs (kernel module) matches librdmacm (kernel module) matches libibumad - (kernel module) matches libmath (lm). + (kernel module) matches libmath (lm) + (linux kernel module) matches pciutils (lpci). Server: ./<test name> <options> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/configure.ac new/perftest-4.50.2/configure.ac --- old/perftest-4.40.37/configure.ac 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/configure.ac 2021-03-23 21:41:20.000000000 +0100 @@ -29,7 +29,7 @@ # SOFTWARE. dnl Process this file with autoconf to produce a configure script. -AC_INIT([perftest],[5.96],[[email protected]]) +AC_INIT([perftest],[5.98],[[email protected]]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([m4]) @@ -174,6 +174,8 @@ fi if [test $IS_FREEBSD = no]; then + AC_CHECK_HEADERS([pci/pci.h],,[AC_MSG_ERROR([pciutils header files not found, consider installing pciutils-devel])]) + AC_CHECK_LIB([pci], [pci_init], [LIBPCI=-lpci], AC_MSG_ERROR([libpci not found])) CPU_IS_RO_COMPLIANT=yes # Actually this is check for being affected by a known issue # with Intel CPUs: @@ -193,6 +195,7 @@ AM_CONDITIONAL([HAVE_RO],[test "x$HAVE_RO" = "xyes"]) if [test $HAVE_RO = yes] && [test "x$CPU_IS_RO_COMPLIANT" = "xyes"]; then AC_DEFINE([HAVE_RO], [1], [Enable Relaxed Ordering]) + LIBS=$LIBS" -lpci" fi AC_TRY_LINK([#include <infiniband/verbs.h>], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/perftest.spec new/perftest-4.50.2/perftest.spec --- old/perftest-4.40.37/perftest.spec 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/perftest.spec 2021-03-23 21:41:20.000000000 +0100 @@ -1,6 +1,6 @@ Name: perftest Summary: IB Performance tests -Version: 4.4 +Version: 4.5 Release: 0.0 License: BSD 3-Clause, GPL v2 or later Group: Productivity/Networking/Diagnostic @@ -8,6 +8,7 @@ Url: http://www.openfabrics.org BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: libibverbs-devel librdmacm-devel libibumad-devel +BuildRequires: pciutils-devel %description gen3 uverbs microbenchmarks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/src/perftest_parameters.c new/perftest-4.50.2/src/perftest_parameters.c --- old/perftest-4.40.37/src/perftest_parameters.c 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/src/perftest_parameters.c 2021-03-23 21:41:20.000000000 +0100 @@ -11,6 +11,10 @@ #include "perftest_parameters.h" #include "raw_ethernet_resources.h" #include<math.h> +#ifdef HAVE_RO +#include <stdbool.h> +#include <pci/pci.h> +#endif #define MAC_LEN (17) #define ETHERTYPE_LEN (6) #define MAC_ARR_LEN (6) @@ -163,6 +167,34 @@ return size; } +#ifdef HAVE_RO +/****************************************************************************** + Check PCIe Relaxed Ordering + + Stolen from https://github.com/pciutils/pciutils/blob/master/example.c + ******************************************************************************/ +static bool check_pcie_relaxed_ordering_compliant(void) { + struct pci_access *pacc; + struct pci_dev *dev; + bool cpu_is_RO_compliant = true; + + pacc = pci_alloc(); + pci_init(pacc); + pci_scan_bus(pacc); + for (dev = pacc->devices; dev && cpu_is_RO_compliant; + dev = dev->next) { + pci_fill_info(dev, + PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS); + /* https://lore.kernel.org/patchwork/patch/820922/ */ + if ((dev->vendor_id == 0x8086) && + (((dev->device_id >= 0x6f01 && dev->device_id <= 0x6f0e) || + (dev->device_id >= 0x2f01 && dev->device_id <= 0x2f01)))) + cpu_is_RO_compliant = false; + } + pci_cleanup(pacc); + return cpu_is_RO_compliant; +} +#endif /****************************************************************************** * ******************************************************************************/ @@ -2908,6 +2940,11 @@ printf(" Connection type : %s\t\tUsing SRQ : %s\n", connStr[user_param->connection_type], user_param->use_srq ? "ON" : "OFF"); #ifdef HAVE_RO printf(" PCIe relax order: %s\n", user_param->disable_pcir ? "OFF" : "ON"); + if ((check_pcie_relaxed_ordering_compliant() == false) && + (user_param->disable_pcir == 0)) { + printf(" WARNING: CPU is not PCIe relaxed ordering compliant.\n"); + printf(" WARNING: You should disable PCIe RO with `--disable_pcie_relaxed` for both server and client.\n"); + } #else printf(" PCIe relax order: %s\n", "Unsupported"); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/src/perftest_resources.c new/perftest-4.50.2/src/perftest_resources.c --- old/perftest-4.40.37/src/perftest_resources.c 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/src/perftest_resources.c 2021-03-23 21:41:20.000000000 +0100 @@ -3341,7 +3341,6 @@ struct ibv_wc *wc = NULL; int num_of_qps = user_param->num_of_qps; int return_value = 0; - int single_thread_handler; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -3353,22 +3352,13 @@ memset(scnt_for_qp,0,sizeof(uint64_t)*user_param->num_of_qps); duration_param=user_param; - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGALRM); - single_thread_handler = pthread_sigmask(SIG_BLOCK, &set, NULL); - if (single_thread_handler != 0){ - printf("error when try to mask alram for signal to thread\n"); - return FAILURE; - } pthread_t print_thread; - if (pthread_create(&print_thread, NULL, &handle_signal_print_thread,(void *)&set) != 0){ + if (pthread_create(&print_thread, NULL, &handle_signal_print_thread,(void*)&user_param->duration) != 0){ printf("Fail to create thread \n"); return FAILURE; } - alarm(user_param->duration); user_param->iters = 0; user_param->last_iters = 0; @@ -3456,7 +3446,6 @@ uint64_t *unused_recv_for_qp = NULL; int *scredit_for_qp = NULL; int return_value = 0; - int single_thread_handler; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -3481,24 +3470,14 @@ ALLOCATE(scredit_for_qp,int,user_param->num_of_qps); memset(scredit_for_qp,0,sizeof(int)*user_param->num_of_qps); - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGALRM); - single_thread_handler = pthread_sigmask(SIG_BLOCK, &set, NULL); - if (single_thread_handler != 0) - { - printf("error when try to mask alram for signal to thread\n"); - return FAILURE; - } duration_param=user_param; pthread_t print_thread; - if (pthread_create(&print_thread, NULL, &handle_signal_print_thread, (void *)&set) != 0) + if (pthread_create(&print_thread, NULL, &handle_signal_print_thread, (void *)&user_param->duration) != 0) { printf("Fail to create thread \n"); return FAILURE; } - alarm(user_param->duration); user_param->iters = 0; user_param->last_iters = 0; user_param->tposted[0] = get_cycles(); @@ -4588,34 +4567,22 @@ /****************************************************************************** * ******************************************************************************/ -void catch_alarm_infintely() +void print_bw_infinite_mode() { print_report_bw(duration_param,NULL); duration_param->last_iters = duration_param->iters; - alarm(duration_param->duration); duration_param->tposted[0] = get_cycles(); } /****************************************************************************** * ******************************************************************************/ -void *handle_signal_print_thread(void *sigmask) +void *handle_signal_print_thread(void* duration) { - sigset_t *set = (sigset_t*)sigmask; - int rc; - int sig_caught; + int* duration_p = (int*) duration; while(1){ - rc = sigwait(set, &sig_caught); - if (rc != 0){ - printf("Error when try to wait for SIGALRM\n"); - exit(EXIT_FAILURE); - } - if(sig_caught == SIGALRM) - catch_alarm_infintely(); - else { - printf("Unsupported signal caught %d, only signal %d is supported\n", sig_caught, SIGALRM); - exit(EXIT_FAILURE); - } + sleep(*duration_p); + print_bw_infinite_mode(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perftest-4.40.37/src/perftest_resources.h new/perftest-4.50.2/src/perftest_resources.h --- old/perftest-4.40.37/src/perftest_resources.h 2021-01-11 13:54:09.000000000 +0100 +++ new/perftest-4.50.2/src/perftest_resources.h 2021-03-23 21:41:20.000000000 +0100 @@ -717,22 +717,14 @@ void check_alive(int sig); -/* catch_alarm. - * - * Description : - * Signal catcher for run_infinitely feature. - * Will be triggered every 5 sec and measure BW in this time frame. - * - */ -void catch_alarm_infintely(); +void print_bw_infinite_mode(); /* handle_signal_print_thread * * Description : -* Handle thread creation for signal catching in run_infinitely mode -* -*/ -void *handle_signal_print_thread(void *sig_mask); +* Handle thread creation for printing data in run_infinitely mode +**/ +void *handle_signal_print_thread(void* duration); int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *user_param);
