aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch
diff options
context:
space:
mode:
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.patch556
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