diff options
Diffstat (limited to 'debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch')
-rw-r--r-- | debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch | 556 |
1 files changed, 556 insertions, 0 deletions
diff --git a/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch b/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch new file mode 100644 index 00000000..30ca0d50 --- /dev/null +++ b/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch @@ -0,0 +1,556 @@ +Description: backport of dpdk 16.07 fix for library underlinking - stage 2/4 + +This is a merge of related upstream fixes: +- a3f34a98 log: deprecate history dump +- 3037e5e2 eal: remove useless includes of mempool and ring + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt <christian.ehrhardt@canonical.com> +Last-Update: 2016-06-14 + +Index: dpdk/app/test-pmd/cmdline.c +=================================================================== +--- dpdk.orig/app/test-pmd/cmdline.c ++++ dpdk/app/test-pmd/cmdline.c +@@ -7191,8 +7191,6 @@ static void cmd_dump_parsed(void *parsed + rte_dump_physmem_layout(stdout); + else if (!strcmp(res->dump, "dump_memzone")) + rte_memzone_dump(stdout); +- else if (!strcmp(res->dump, "dump_log_history")) +- rte_log_dump_history(stdout); + else if (!strcmp(res->dump, "dump_struct_sizes")) + dump_struct_sizes(); + else if (!strcmp(res->dump, "dump_ring")) +@@ -7207,7 +7205,6 @@ cmdline_parse_token_string_t cmd_dump_du + TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump, + "dump_physmem#" + "dump_memzone#" +- "dump_log_history#" + "dump_struct_sizes#" + "dump_ring#" + "dump_mempool#" +Index: dpdk/app/test/autotest_data.py +=================================================================== +--- dpdk.orig/app/test/autotest_data.py ++++ dpdk/app/test/autotest_data.py +@@ -88,12 +88,6 @@ parallel_test_group_list = [ + "Report" : None, + }, + { +- "Name" : "Dump log history", +- "Command" : "dump_log_history", +- "Func" : dump_autotest, +- "Report" : None, +- }, +- { + "Name" : "Dump rings", + "Command" : "dump_ring", + "Func" : dump_autotest, +Index: dpdk/app/test/autotest_test_funcs.py +=================================================================== +--- dpdk.orig/app/test/autotest_test_funcs.py ++++ dpdk/app/test/autotest_test_funcs.py +@@ -151,12 +151,6 @@ def logs_autotest(child, test_name): + "TESTAPP2: this is a info level message", + "TESTAPP2: this is a warning level message", + "TESTAPP1: this is a debug level message", +- "TESTAPP1: this is a debug level message", +- "TESTAPP1: this is a info level message", +- "TESTAPP1: this is a warning level message", +- "TESTAPP2: this is a info level message", +- "TESTAPP2: this is a warning level message", +- "TESTAPP1: this is a debug level message", + ] + + for log_msg in log_list: +Index: dpdk/app/test/commands.c +=================================================================== +--- dpdk.orig/app/test/commands.c ++++ dpdk/app/test/commands.c +@@ -150,8 +150,6 @@ static void cmd_dump_parsed(void *parsed + rte_dump_physmem_layout(stdout); + else if (!strcmp(res->dump, "dump_memzone")) + rte_memzone_dump(stdout); +- else if (!strcmp(res->dump, "dump_log_history")) +- rte_log_dump_history(stdout); + else if (!strcmp(res->dump, "dump_struct_sizes")) + dump_struct_sizes(); + else if (!strcmp(res->dump, "dump_ring")) +@@ -164,7 +162,7 @@ static void cmd_dump_parsed(void *parsed + + cmdline_parse_token_string_t cmd_dump_dump = + TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump, +- "dump_physmem#dump_memzone#dump_log_history#" ++ "dump_physmem#dump_memzone#" + "dump_struct_sizes#dump_ring#dump_mempool#" + "dump_devargs"); + +Index: dpdk/app/test/test_logs.c +=================================================================== +--- dpdk.orig/app/test/test_logs.c ++++ dpdk/app/test/test_logs.c +@@ -85,8 +85,6 @@ test_logs(void) + RTE_LOG(DEBUG, TESTAPP1, "this is a debug level message\n"); + RTE_LOG(DEBUG, TESTAPP2, "debug level message (not displayed)\n"); + +- rte_log_dump_history(stdout); +- + return 0; + } + +Index: dpdk/doc/guides/prog_guide/mempool_lib.rst +=================================================================== +--- dpdk.orig/doc/guides/prog_guide/mempool_lib.rst ++++ dpdk/doc/guides/prog_guide/mempool_lib.rst +@@ -38,9 +38,7 @@ In the DPDK, it is identified by name an + It provides some other optional services such as a per-core object cache and + an alignment helper to ensure that objects are padded to spread them equally on all DRAM or DDR3 channels. + +-This library is used by the +-:ref:`Mbuf Library <Mbuf_Library>` and the +-:ref:`Environment Abstraction Layer <Environment_Abstraction_Layer>` (for logging history). ++This library is used by the :ref:`Mbuf Library <Mbuf_Library>`. + + Cookies + ------- +Index: dpdk/doc/guides/rel_notes/deprecation.rst +=================================================================== +--- dpdk.orig/doc/guides/rel_notes/deprecation.rst ++++ dpdk/doc/guides/rel_notes/deprecation.rst +@@ -8,6 +8,9 @@ API and ABI deprecation notices are to b + Deprecation Notices + ------------------- + ++* The log history is deprecated. ++ It is voided in 16.07 and will be removed in release 16.11. ++ + * The ethdev hotplug API is going to be moved to EAL with a notification + mechanism added to crypto and ethdev libraries so that hotplug is now + available to both of them. This API will be stripped of the device arguments +Index: dpdk/lib/librte_eal/bsdapp/eal/Makefile +=================================================================== +--- dpdk.orig/lib/librte_eal/bsdapp/eal/Makefile ++++ dpdk/lib/librte_eal/bsdapp/eal/Makefile +@@ -40,8 +40,6 @@ VPATH += $(RTE_SDK)/lib/librte_eal/commo + CFLAGS += -I$(SRCDIR)/include + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include +-CFLAGS += -I$(RTE_SDK)/lib/librte_ring +-CFLAGS += -I$(RTE_SDK)/lib/librte_mempool + CFLAGS += $(WERROR_FLAGS) -O3 + + LDLIBS += -lexecinfo +Index: dpdk/lib/librte_eal/bsdapp/eal/eal_debug.c +=================================================================== +--- dpdk.orig/lib/librte_eal/bsdapp/eal/eal_debug.c ++++ dpdk/lib/librte_eal/bsdapp/eal/eal_debug.c +@@ -77,9 +77,6 @@ void __rte_panic(const char *funcname, c + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + rte_log(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, "PANIC in %s():\n", funcname); + va_start(ap, format); + rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap); +@@ -98,9 +95,6 @@ rte_exit(int exit_code, const char *form + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + if (exit_code != 0) + RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n" + " Cause: ", exit_code); +Index: dpdk/lib/librte_eal/common/eal_common_log.c +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_common_log.c ++++ dpdk/lib/librte_eal/common/eal_common_log.c +@@ -31,54 +31,16 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +-#include <string.h> + #include <stdio.h> + #include <stdint.h> + #include <stdarg.h> +-#include <sys/types.h> + #include <stdlib.h> +-#include <unistd.h> +-#include <inttypes.h> +-#include <errno.h> +-#include <sys/queue.h> + + #include <rte_log.h> +-#include <rte_memory.h> +-#include <rte_memzone.h> +-#include <rte_launch.h> +-#include <rte_common.h> +-#include <rte_cycles.h> +-#include <rte_eal.h> + #include <rte_per_lcore.h> +-#include <rte_lcore.h> +-#include <rte_atomic.h> +-#include <rte_debug.h> +-#include <rte_spinlock.h> +-#include <rte_branch_prediction.h> +-#include <rte_ring.h> +-#include <rte_mempool.h> + + #include "eal_private.h" + +-#define LOG_ELT_SIZE 2048 +- +-#define LOG_HISTORY_MP_NAME "log_history" +- +-STAILQ_HEAD(log_history_list, log_history); +- +-/** +- * The structure of a message log in the log history. +- */ +-struct log_history { +- STAILQ_ENTRY(log_history) next; +- unsigned size; +- char buf[0]; +-}; +- +-static struct rte_mempool *log_history_mp = NULL; +-static unsigned log_history_size = 0; +-static struct log_history_list log_history; +- + /* global log structure */ + struct rte_logs rte_logs = { + .type = ~0, +@@ -86,10 +48,7 @@ struct rte_logs rte_logs = { + .file = NULL, + }; + +-static rte_spinlock_t log_dump_lock = RTE_SPINLOCK_INITIALIZER; +-static rte_spinlock_t log_list_lock = RTE_SPINLOCK_INITIALIZER; + static FILE *default_log_stream; +-static int history_enabled = 1; + + /** + * This global structure stores some informations about the message +@@ -105,59 +64,16 @@ static struct log_cur_msg log_cur_msg[RT + /* default logs */ + + int +-rte_log_add_in_history(const char *buf, size_t size) ++rte_log_add_in_history(const char *buf __rte_unused, size_t size __rte_unused) + { +- struct log_history *hist_buf = NULL; +- static const unsigned hist_buf_size = LOG_ELT_SIZE - sizeof(*hist_buf); +- void *obj; +- +- if (history_enabled == 0) +- return 0; +- +- rte_spinlock_lock(&log_list_lock); +- +- /* get a buffer for adding in history */ +- if (log_history_size > RTE_LOG_HISTORY) { +- hist_buf = STAILQ_FIRST(&log_history); +- if (hist_buf) { +- STAILQ_REMOVE_HEAD(&log_history, next); +- log_history_size--; +- } +- } +- else { +- if (rte_mempool_mc_get(log_history_mp, &obj) < 0) +- obj = NULL; +- hist_buf = obj; +- } +- +- /* no buffer */ +- if (hist_buf == NULL) { +- rte_spinlock_unlock(&log_list_lock); +- return -ENOBUFS; +- } +- +- /* not enough room for msg, buffer go back in mempool */ +- if (size >= hist_buf_size) { +- rte_mempool_mp_put(log_history_mp, hist_buf); +- rte_spinlock_unlock(&log_list_lock); +- return -ENOBUFS; +- } +- +- /* add in history */ +- memcpy(hist_buf->buf, buf, size); +- hist_buf->buf[size] = hist_buf->buf[hist_buf_size-1] = '\0'; +- hist_buf->size = size; +- STAILQ_INSERT_TAIL(&log_history, hist_buf, next); +- log_history_size++; +- rte_spinlock_unlock(&log_list_lock); +- + return 0; + } + + void + rte_log_set_history(int enable) + { +- history_enabled = enable; ++ if (enable) ++ RTE_LOG(WARNING, EAL, "The log history is deprecated.\n"); + } + + /* Change the stream that will be used by logging system */ +@@ -224,44 +140,8 @@ int rte_log_cur_msg_logtype(void) + + /* Dump log history to file */ + void +-rte_log_dump_history(FILE *out) ++rte_log_dump_history(FILE *out __rte_unused) + { +- struct log_history_list tmp_log_history; +- struct log_history *hist_buf; +- unsigned i; +- +- /* only one dump at a time */ +- rte_spinlock_lock(&log_dump_lock); +- +- /* save list, and re-init to allow logging during dump */ +- rte_spinlock_lock(&log_list_lock); +- tmp_log_history = log_history; +- STAILQ_INIT(&log_history); +- log_history_size = 0; +- rte_spinlock_unlock(&log_list_lock); +- +- for (i=0; i<RTE_LOG_HISTORY; i++) { +- +- /* remove one message from history list */ +- hist_buf = STAILQ_FIRST(&tmp_log_history); +- +- if (hist_buf == NULL) +- break; +- +- STAILQ_REMOVE_HEAD(&tmp_log_history, next); +- +- /* write on stdout */ +- if (fwrite(hist_buf->buf, hist_buf->size, 1, out) == 0) { +- rte_mempool_mp_put(log_history_mp, hist_buf); +- break; +- } +- +- /* put back message structure in pool */ +- rte_mempool_mp_put(log_history_mp, hist_buf); +- } +- fflush(out); +- +- rte_spinlock_unlock(&log_dump_lock); + } + + /* +@@ -308,29 +188,11 @@ rte_log(uint32_t level, uint32_t logtype + } + + /* +- * called by environment-specific log init function to initialize log +- * history ++ * called by environment-specific log init function + */ + int + rte_eal_common_log_init(FILE *default_log) + { +- STAILQ_INIT(&log_history); +- +- /* reserve RTE_LOG_HISTORY*2 elements, so we can dump and +- * keep logging during this time */ +- log_history_mp = rte_mempool_create(LOG_HISTORY_MP_NAME, RTE_LOG_HISTORY*2, +- LOG_ELT_SIZE, 0, 0, +- NULL, NULL, +- NULL, NULL, +- SOCKET_ID_ANY, 0); +- +- if ((log_history_mp == NULL) && +- ((log_history_mp = rte_mempool_lookup(LOG_HISTORY_MP_NAME)) == NULL)){ +- RTE_LOG(ERR, EAL, "%s(): cannot create log_history mempool\n", +- __func__); +- return -1; +- } +- + default_log_stream = default_log; + rte_openlog_stream(default_log); + return 0; +Index: dpdk/lib/librte_eal/common/eal_private.h +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_private.h ++++ dpdk/lib/librte_eal/common/eal_private.h +@@ -49,9 +49,6 @@ int rte_eal_memzone_init(void); + /** + * Common log initialization function (private to eal). + * +- * Called by environment-specific log initialization function to initialize +- * log history. +- * + * @param default_log + * The default log stream to be used. + * @return +Index: dpdk/lib/librte_eal/common/include/rte_log.h +=================================================================== +--- dpdk.orig/lib/librte_eal/common/include/rte_log.h ++++ dpdk/lib/librte_eal/common/include/rte_log.h +@@ -42,6 +42,8 @@ + * This file provides a log API to RTE applications. + */ + ++#include "rte_common.h" /* for __rte_deprecated macro */ ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -179,22 +181,27 @@ int rte_log_cur_msg_loglevel(void); + int rte_log_cur_msg_logtype(void); + + /** ++ * @deprecated + * Enable or disable the history (enabled by default) + * + * @param enable + * true to enable, or 0 to disable history. + */ ++__rte_deprecated + void rte_log_set_history(int enable); + + /** ++ * @deprecated + * Dump the log history to a file + * + * @param f + * A pointer to a file for output + */ ++__rte_deprecated + void rte_log_dump_history(FILE *f); + + /** ++ * @deprecated + * Add a log message to the history. + * + * This function can be called from a user-defined log stream. It adds +@@ -209,6 +216,7 @@ void rte_log_dump_history(FILE *f); + * - 0: Success. + * - (-ENOBUFS) if there is no room to store the message. + */ ++__rte_deprecated + int rte_log_add_in_history(const char *buf, size_t size); + + /** +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_debug.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_debug.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_debug.c +@@ -77,9 +77,6 @@ void __rte_panic(const char *funcname, c + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + rte_log(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, "PANIC in %s():\n", funcname); + va_start(ap, format); + rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap); +@@ -98,9 +95,6 @@ rte_exit(int exit_code, const char *form + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + if (exit_code != 0) + RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n" + " Cause: ", exit_code); +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_log.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_log.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_log.c +@@ -50,8 +50,7 @@ + #include "eal_private.h" + + /* +- * default log function, used once mempool (hence log history) is +- * available ++ * default log function + */ + static ssize_t + console_log_write(__attribute__((unused)) void *c, const char *buf, size_t size) +@@ -60,9 +59,6 @@ console_log_write(__attribute__((unused) + ssize_t ret; + uint32_t loglevel; + +- /* add this log in history */ +- rte_log_add_in_history(buf, size); +- + /* write on stdout */ + ret = fwrite(buf, 1, size, stdout); + fflush(stdout); +@@ -110,8 +106,7 @@ rte_eal_log_init(const char *id, int fac + /* early logs */ + + /* +- * early log function, used during boot when mempool (hence log +- * history) is not available ++ * early log function, used before rte_eal_log_init + */ + static ssize_t + early_log_write(__attribute__((unused)) void *c, const char *buf, size_t size) +Index: dpdk/lib/librte_eal/linuxapp/eal/Makefile +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/Makefile ++++ dpdk/lib/librte_eal/linuxapp/eal/Makefile +@@ -44,9 +44,12 @@ VPATH += $(RTE_SDK)/lib/librte_eal/commo + CFLAGS += -I$(SRCDIR)/include + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include ++ifeq ($(CONFIG_RTE_LIBRTE_IVSHMEM),y) ++# workaround for circular dependency eal -> ivshmem -> ring/mempool -> eal + CFLAGS += -I$(RTE_SDK)/lib/librte_ring + CFLAGS += -I$(RTE_SDK)/lib/librte_mempool + CFLAGS += -I$(RTE_SDK)/lib/librte_ivshmem ++endif + CFLAGS += $(WERROR_FLAGS) -O3 + + LDLIBS += -ldl +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_interrupts.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_interrupts.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_interrupts.c +@@ -57,10 +57,8 @@ + #include <rte_lcore.h> + #include <rte_atomic.h> + #include <rte_branch_prediction.h> +-#include <rte_ring.h> + #include <rte_debug.h> + #include <rte_log.h> +-#include <rte_mempool.h> + #include <rte_pci.h> + #include <rte_malloc.h> + #include <rte_errno.h> +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_ivshmem.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_ivshmem.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_ivshmem.c +@@ -49,7 +49,6 @@ + #include <rte_string_fns.h> + #include <rte_errno.h> + #include <rte_ring.h> +-#include <rte_mempool.h> + #include <rte_malloc.h> + #include <rte_common.h> + #include <rte_ivshmem.h> +Index: dpdk/lib/librte_ivshmem/Makefile +=================================================================== +--- dpdk.orig/lib/librte_ivshmem/Makefile ++++ dpdk/lib/librte_ivshmem/Makefile +@@ -46,7 +46,9 @@ SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) := rte + # install includes + SYMLINK-$(CONFIG_RTE_LIBRTE_IVSHMEM)-include := rte_ivshmem.h + +-# this lib needs eal ++# this lib needs EAL, ring and mempool ++DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_eal ++DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_ring + DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_mempool + + include $(RTE_SDK)/mk/rte.lib.mk |