reset upstream subtrees to HEAD

Reset the following subtrees on HEAD:
  poky: 8217b477a1(master)
  meta-xilinx: 64aa3d35ae(master)
  meta-openembedded: 0435c9e193(master)
  meta-raspberrypi: 490a4441ac(master)
  meta-security: cb6d1c85ee(master)

Squashed patches:
  meta-phosphor: drop systemd 239 patches
  meta-phosphor: mrw-api: use correct install path

Change-Id: I268e2646d9174ad305630c6bbd3fbc1a6105f43d
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch
deleted file mode 100644
index 0998fc3..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 70eff899104b86bae02862927c76caaef5de5d3c Mon Sep 17 00:00:00 2001
-From: Mikael Beckius <mikael.beckius@windriver.com>
-Date: Thu, 7 May 2015 16:14:25 +0200
-Subject: [PATCH] Allow multiple attempts to connect to relayd.
-
-It is unclear why a session needs to be made
-unusable after a failure to connect to relayd
-since a check for a relayd connection is
-always made before a session can be configured.
-
-The behaviour was introduced in:
-d9078d0c000d04d49c599a72c1a725026b636ec0
-
-Signed-off-by: Mikael Beckius <mikael.beckius@windriver.com>
-[ The context has moved, adjust the hunk accordingly ]
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-Upstream-Status: Pending
----
- src/bin/lttng-sessiond/cmd.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c
-index cf30b8e..cc41a48 100644
---- a/src/bin/lttng-sessiond/cmd.c
-+++ b/src/bin/lttng-sessiond/cmd.c
-@@ -945,14 +945,6 @@ static int send_consumer_relayd_socket(enum lttng_domain_type domain,
- 	 */
- 
- close_sock:
--	if (ret != LTTNG_OK) {
--		/*
--		 * The consumer output for this session should not be used anymore
--		 * since the relayd connection failed thus making any tracing or/and
--		 * streaming not usable.
--		 */
--		consumer->enabled = 0;
--	}
- 	(void) relayd_close(rsock);
- 	free(rsock);
- 
--- 
-2.17.1
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch
new file mode 100644
index 0000000..df18dc8
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch
@@ -0,0 +1,35 @@
+From 7244eac44be929fabd6ed1333f96929ef8da564f Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Tue, 19 Mar 2019 17:56:49 +0000
+Subject: [PATCH] fix: tests: link libpause_consumer on liblttng-ctl
+
+This preload test library uses symbols from liblttng-ctl which are
+resolved when preloaded by GLIBC but not by MUSL.
+
+Upstream-Status: Accepted [f667fbd7f8b9512f9943edb2597c226fcc424ee9]
+Backported to 2.11 and 2.10.
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+---
+ tests/regression/tools/notification/Makefile.am | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/tests/regression/tools/notification/Makefile.am b/tests/regression/tools/notification/Makefile.am
+index 41adc69..a352bb8 100644
+--- a/tests/regression/tools/notification/Makefile.am
++++ b/tests/regression/tools/notification/Makefile.am
+@@ -20,7 +20,10 @@ FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \
+ 			   -rpath $(abs_builddir)
+ 
+ libpause_consumer_la_SOURCES = consumer_testpoints.c
+-libpause_consumer_la_LIBADD = $(top_builddir)/src/common/libcommon.la $(DL_LIBS)
++libpause_consumer_la_LIBADD = \
++     $(top_builddir)/src/common/libcommon.la \
++     $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \
++     $(DL_LIBS)
+ libpause_consumer_la_LDFLAGS = $(FORCE_SHARED_LIB_OPTIONS)
+ noinst_LTLIBRARIES = libpause_consumer.la
+ 
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch
new file mode 100644
index 0000000..5bb88d2
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch
@@ -0,0 +1,52 @@
+From e7db27668a9d7fd279d45bc43f3a2d5847374e7b Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Tue, 12 Mar 2019 12:04:58 -0400
+Subject: [PATCH lttng-tools 1/2] Fix: test: skip test_getcpu_override on
+ single thread system
+
+There is no value in performing this test on single thread system
+since the only valid value for the cpu field is 0.
+
+This test currently fails on single thread system (i.e yocto runquemu)
+on the test_getcpu_override_fail test case.
+
+Upstream-Status: Accepted [f87d0ca370c17b597762f5ee218f0e821ed2452d]
+Backported to 2.11 and 2.10
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+---
+ .../ust/getcpu-override/test_getcpu_override     | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override
+index 4ca385aeb..ee3e31953 100755
+--- a/tests/regression/ust/getcpu-override/test_getcpu_override
++++ b/tests/regression/ust/getcpu-override/test_getcpu_override
+@@ -157,13 +157,19 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
+-	foundobj=1
+-else
+-	foundobj=0
++if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
++	skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
++fi
++
++if [ "$num_cpus" -eq "1" ]; then
++	# Skip the test since we cannot perform it as designed since N mod 1
++	# is always equals to zero. There is no point testing this on a system
++	# with a single thread. LTTng-UST limits the get_cpu function to return
++	# value inside the [0, NUM_CPU - 1] range for a valid event (present in
++	# trace).
++	skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0
+ fi
+ 
+-skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
+ 
+ TESTS=(
+ 	test_getcpu_override_fail
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch
new file mode 100644
index 0000000..822b26a
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch
@@ -0,0 +1,80 @@
+From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Wed, 6 Mar 2019 16:46:49 -0500
+Subject: [PATCH lttng-tools 2/2] Fix: test: unit: the tree origin can be a
+ symlink itself
+
+Problem:
+
+The base tree is defined as "/tmp/.....XXXXXX".
+On systems where "/tmp/" is itself a symlink utils_expand_path will
+expand the tree origin itself.
+
+For example on a base core-image-minimal Yocto build /tmp is a symlink
+to "/var/tmp", which is a symlink to "/var/volatile".
+
+utils_expand_path will return something like this for the symlink test:
+"/var/volative/.....XXXXXX/...." which is the valid result.
+
+Solution:
+
+Simply use realpath on the tree_origin and use this path to perform the
+test validation.
+
+This work was performed in the effort to support yocto fully and be able
+to run the test suite to detect problem as early as possible.
+
+
+Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d]
+Backported to 2.11 and 2.10
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+---
+ tests/unit/test_utils_expand_path.c | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c
+index d5cab002e..d047c207d 100644
+--- a/tests/unit/test_utils_expand_path.c
++++ b/tests/unit/test_utils_expand_path.c
+@@ -281,8 +281,8 @@ error:
+ static void test_utils_expand_path(void)
+ {
+ 	char *result;
+-	char name[100], tmppath[PATH_MAX];
+-	int i;
++	char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX];
++	int i, treelen;
+ 
+ 	/* Test valid cases */
+ 	for (i = 0; i < num_valid_tests; i++) {
+@@ -295,14 +295,24 @@ static void test_utils_expand_path(void)
+ 		free(result);
+ 	}
+ 
++	/*
++	 * Get the realpath for the tree_origin since it can itself be a
++	 * symlink.
++	 */
++	result = realpath(tree_origin, real_tree_origin);
++	if (!result) {
++		fail("realpath failed.");
++		return;
++	}
++
+ 	/* Test symlink tree cases */
+-	int treelen = strlen(tree_origin) + 1;
++	treelen = strlen(real_tree_origin) + 1;
+ 	for (i = 0; i < num_symlink_tests; i++) {
+ 		sprintf(name, "symlink tree test case: [tmppath/]%s",
+ 				symlink_tests_inputs[i].input);
+ 
+ 		snprintf(tmppath, PATH_MAX, "%s/%s",
+-				tree_origin, symlink_tests_inputs[i].input);
++				real_tree_origin, symlink_tests_inputs[i].input);
+ 		result = utils_expand_path(tmppath);
+ 		ok(result != NULL && strcmp(result + treelen,
+ 					symlink_tests_inputs[i].expected_result) == 0, name);
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch
new file mode 100644
index 0000000..6c9f7e4
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch
@@ -0,0 +1,610 @@
+From 95c27e6acceaeda55c729b9e92e594322adef13f Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Wed, 3 Apr 2019 16:31:18 -0400
+Subject: [PATCH lttng-tools] Skip when testapp is not present
+
+We expect lttng-ust do be present, this is a wrong assumptions.
+
+This is a quick fix. The real fix is to either detect at runtime
+lttng-ust support or at build time (HAVE_LIBLTTNG_UST_CTL).
+
+This prevent hang for make check done on a build configured with
+--without-lttng-ust.
+
+Upstream-Status: Inappropriate [other] 
+Reason: This patch is inappropriate for upstream for 2.10 stable release 
+since we do not backport "superficial" fix to the test suite. We do 
+backport when a test is broken. The fact that on --without-lttng-ust 
+hang is not a "broken" test per-see. Still, a variation of this fix will 
+be upstreamed in our master branch and possibly 2.11. The upstreamed 
+version will split the test in kernel/ust test and skip them at the 
+build system level. This patch is more succinct.
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+---
+ tests/regression/tools/crash/test_crash       |  4 ++
+ .../regression/tools/exclusion/test_exclusion |  4 ++
+ .../tools/filtering/test_valid_filter         | 21 ++++--
+ tests/regression/tools/health/test_thread_ok  | 29 +++++---
+ tests/regression/tools/live/Makefile.am       |  2 -
+ tests/regression/tools/live/test_lttng_ust    |  4 ++
+ tests/regression/tools/live/test_ust          |  4 ++
+ .../tools/live/test_ust_tracefile_count       |  4 ++
+ tests/regression/tools/mi/test_mi             |  4 ++
+ .../notification/test_notification_multi_app  | 18 +++--
+ .../tools/notification/test_notification_ust  |  4 ++
+ .../regression/tools/regen-metadata/test_ust  |  2 +-
+ .../regression/tools/regen-statedump/test_ust |  2 +-
+ .../regression/tools/save-load/test_autoload  |  7 ++
+ tests/regression/tools/save-load/test_load    |  8 +++
+ tests/regression/tools/save-load/test_save    |  7 ++
+ .../regression/tools/snapshots/test_ust_fast  |  2 +-
+ .../regression/tools/snapshots/test_ust_long  |  2 +-
+ .../tools/snapshots/test_ust_streaming        |  2 +-
+ tests/regression/tools/snapshots/ust_test     |  2 +-
+ .../streaming/test_high_throughput_limits     |  2 +-
+ tests/regression/tools/streaming/test_ust     |  2 +-
+ .../tracefile-limits/test_tracefile_count     |  2 +-
+ .../tracefile-limits/test_tracefile_size      |  2 +-
+ .../tools/wildcard/test_event_wildcard        | 67 ++++++++++---------
+ 25 files changed, 147 insertions(+), 60 deletions(-)
+
+diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash
+index 8c62c513d..3cbe97688 100755
+--- a/tests/regression/tools/crash/test_crash
++++ b/tests/regression/tools/crash/test_crash
+@@ -35,6 +35,10 @@ NUM_TESTS=77
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ # Global declaration for simplification
+ LTTNG_CRASH=$TESTDIR/../src/bin/lttng-crash/$CRASH_BIN
+ 
+diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion
+index 949cd41df..42e4d72fb 100755
+--- a/tests/regression/tools/exclusion/test_exclusion
++++ b/tests/regression/tools/exclusion/test_exclusion
+@@ -30,6 +30,10 @@ NUM_TESTS=149
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ function enable_ust_lttng_all_event_exclusion()
+ {
+ 	sess_name="$1"
+diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter
+index 163b32182..1e8da630b 100755
+--- a/tests/regression/tools/filtering/test_valid_filter
++++ b/tests/regression/tools/filtering/test_valid_filter
+@@ -418,12 +418,18 @@ issue_356_filter+="intfield > 4 && intfield > 5 && "
+ issue_356_filter+="intfield > 6 && intfield > 7 && "
+ issue_356_filter+="intfield > 8 || intfield > 0"
+ 
++BIN_NAME="gen-ust-events"
++
++skip_ust=1
++if [ ! -x "$CURDIR/$BIN_NAME" ]; then
++	skip_ust=0
++	skip 0 "No UST nevents binary detected." $NUM_UST_TESTS
++fi
++
+ start_lttng_sessiond
+ 
+ ### UST TESTS
+ 
+-BIN_NAME="gen-ust-events"
+-
+ KIRK_KRAUSS_TESTS=(
+ 	# the tests below were written by Kirk Krauss in this article:
+ 	# http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123
+@@ -897,9 +903,6 @@ UST_STR_FILTERS=(
+ 	END
+ )
+ 
+-if [ ! -x "$CURDIR/$BIN_NAME" ]; then
+-	BAIL_OUT "No UST nevents binary detected."
+-fi
+ 
+ IFS="$OLDIFS"
+ 
+@@ -910,6 +913,10 @@ i=0
+ while true; do
+ 	validator="${UST_FILTERS[$i]}"
+ 
++	if [ $skip_ust -eq 0 ]; then
++		break
++	fi
++
+ 	if [ "$validator" = END ]; then
+ 		break
+ 	fi
+@@ -929,6 +936,10 @@ i=0
+ while true; do
+ 	validator="${UST_STR_FILTERS[$i]}"
+ 
++	if [ $skip_ust -eq 0 ]; then
++		break
++	fi
++
+ 	if [ "$validator" = END ]; then
+ 		break
+ 	fi
+diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok
+index e81d6ed24..849b7e71f 100755
+--- a/tests/regression/tools/health/test_thread_ok
++++ b/tests/regression/tools/health/test_thread_ok
+@@ -27,6 +27,9 @@ CHANNEL_NAME="testchan"
+ HEALTH_CHECK_BIN="health_check"
+ NUM_TESTS=17
+ SLEEP_TIME=30
++TESTAPP_PATH="$TESTDIR/utils/testapp"
++TESTAPP_NAME="gen-ust-events"
++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+@@ -76,15 +79,19 @@ function test_thread_ok
+ 	$CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
+ 	report_errors
+ 
+-	diag "With UST consumer daemons"
+-	create_lttng_session_no_output $SESSION_NAME
+-	enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME
+-	start_lttng_tracing_ok $SESSION_NAME
+-	destroy_lttng_session_ok $SESSION_NAME
++	skip $skip_ust "Ust does not seems to be supported" "5" ||
++	{
++		diag "With UST consumer daemons"
++		create_lttng_session_no_output $SESSION_NAME
++		enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME
++		start_lttng_tracing_ok $SESSION_NAME
++		destroy_lttng_session_ok $SESSION_NAME
+ 
+-	# Check health status
+-	$CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
+-	report_errors
++
++		# Check health status
++		$CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
++		report_errors
++	}
+ 
+ 	skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" ||
+ 	{
+@@ -141,6 +148,12 @@ else
+ 	isroot=0
+ fi
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	skip_ust=0
++else
++	skip_ust=1
++fi
++
+ test_thread_ok
+ 
+ rm -rf ${HEALTH_PATH}
+diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am
+index 46186d383..db74de8d5 100644
+--- a/tests/regression/tools/live/Makefile.am
++++ b/tests/regression/tools/live/Makefile.am
+@@ -16,9 +16,7 @@ LIVE=$(top_builddir)/src/bin/lttng-sessiond/session.$(OBJEXT) \
+ noinst_PROGRAMS = live_test
+ EXTRA_DIST = test_kernel test_lttng_kernel
+ 
+-if HAVE_LIBLTTNG_UST_CTL
+ EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust
+-endif
+ 
+ live_test_SOURCES = live_test.c
+ live_test_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) \
+diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust
+index 06017d01d..be9b3d7f7 100755
+--- a/tests/regression/tools/live/test_lttng_ust
++++ b/tests/regression/tools/live/test_lttng_ust
+@@ -38,6 +38,10 @@ NUM_TESTS=12
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ # MUST set TESTDIR before calling those functions
+ plan_tests $NUM_TESTS
+ 
+diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust
+index 0384a706f..add521bfc 100755
+--- a/tests/regression/tools/live/test_ust
++++ b/tests/regression/tools/live/test_ust
+@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR)
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ echo "$TEST_DESC"
+ 
+ function setup_live_tracing()
+diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count
+index 6da368fc6..10504f8c6 100755
+--- a/tests/regression/tools/live/test_ust_tracefile_count
++++ b/tests/regression/tools/live/test_ust_tracefile_count
+@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR)
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ echo "$TEST_DESC"
+ 
+ function setup_live_tracing()
+diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi
+index 48dda7da6..2cc30b29a 100755
+--- a/tests/regression/tools/mi/test_mi
++++ b/tests/regression/tools/mi/test_mi
+@@ -61,6 +61,10 @@ NUM_TESTS=228
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ #Overwrite the lttng_bin to get mi output
+ LTTNG_BIN="lttng --mi xml"
+ 
+diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app
+index 0a05ea6a0..29b0f62fa 100755
+--- a/tests/regression/tools/notification/test_notification_multi_app
++++ b/tests/regression/tools/notification/test_notification_multi_app
+@@ -52,6 +52,11 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
++skip_ust=1
++if [ ! -x "$TESTAPP_BIN" ]; then
++	skip_ust=0
++fi
++
+ app_pids=()
+ 
+ function kernel_event_generator_toogle_state
+@@ -468,10 +473,15 @@ function test_on_register_evaluation ()
+ }
+ 
+ 
+-TESTS=(
+-	test_multi_app_ust
+-	test_on_register_evaluation_ust
+-)
++TESTS=()
++if [ $skip_ust -eq "1" ]; then
++	TESTS+=(
++		test_multi_app_ust
++		test_on_register_evaluation_ust
++	)
++else
++	skip 0 "No UST events binary detected." $NUM_TEST_UST
++fi
+ 
+ if [ "$(id -u)" == "0" ]; then
+ 	TESTS+=(
+diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust
+index 8941e476d..eb2e15cad 100755
+--- a/tests/regression/tools/notification/test_notification_ust
++++ b/tests/regression/tools/notification/test_notification_ust
+@@ -46,6 +46,10 @@ DIR=$(readlink -f $TESTDIR)
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ function ust_event_generator_toogle_state
+ {
+ 	ust_event_generator_suspended=$((ust_event_generator_suspended==0))
+diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust
+index b7f1af1d8..312c8a40d 100755
+--- a/tests/regression/tools/regen-metadata/test_ust
++++ b/tests/regression/tools/regen-metadata/test_ust
+@@ -34,7 +34,7 @@ NUM_TESTS=33
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function lttng_create_session_uri
+diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust
+index 486b9a560..8d455b26a 100755
+--- a/tests/regression/tools/regen-statedump/test_ust
++++ b/tests/regression/tools/regen-statedump/test_ust
+@@ -34,7 +34,7 @@ NUM_TESTS=11
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function test_ust_local ()
+diff --git a/tests/regression/tools/save-load/test_autoload b/tests/regression/tools/save-load/test_autoload
+index 7ee5e9906..ec376cfb3 100755
+--- a/tests/regression/tools/save-load/test_autoload
++++ b/tests/regression/tools/save-load/test_autoload
+@@ -21,6 +21,9 @@ CURDIR=$(dirname $0)/
+ CONFIG_DIR="${CURDIR}/configuration"
+ TESTDIR=$CURDIR/../../../
+ export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/)
++TESTAPP_PATH="$TESTDIR/utils/testapp"
++TESTAPP_NAME="gen-ust-events"
++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
+ 
+ DIR=$(readlink -f $TESTDIR)
+ 
+@@ -28,6 +31,10 @@ NUM_TESTS=9
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ # MUST set TESTDIR before calling those functions
+ plan_tests $NUM_TESTS
+ 
+diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load
+index 5e38b46b6..b6fdd8192 100755
+--- a/tests/regression/tools/save-load/test_load
++++ b/tests/regression/tools/save-load/test_load
+@@ -20,6 +20,10 @@ TEST_DESC="Load session(s)"
+ CURDIR=$(dirname $0)/
+ CONFIG_DIR="${CURDIR}/configuration"
+ TESTDIR=$CURDIR/../../../
++TESTAPP_PATH="$TESTDIR/utils/testapp"
++TESTAPP_NAME="gen-ust-events"
++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
++
+ export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/)
+ 
+ SESSION_NAME="load-42"
+@@ -31,6 +35,10 @@ NUM_TESTS=67
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "$TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ # MUST set TESTDIR before calling those functions
+ plan_tests $NUM_TESTS
+ 
+diff --git a/tests/regression/tools/save-load/test_save b/tests/regression/tools/save-load/test_save
+index c5f6b1341..cfaf67b7a 100755
+--- a/tests/regression/tools/save-load/test_save
++++ b/tests/regression/tools/save-load/test_save
+@@ -23,6 +23,9 @@ TESTDIR=$CURDIR/../../../
+ SESSION_NAME="save-42"
+ CHANNEL_NAME="chan-save"
+ EVENT_NAME="tp:tptest"
++TESTAPP_PATH="$TESTDIR/utils/testapp"
++TESTAPP_NAME="gen-ust-events"
++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
+ 
+ DIR=$(readlink -f $TESTDIR)
+ 
+@@ -30,6 +33,10 @@ NUM_TESTS=41
+ 
+ source $TESTDIR/utils/utils.sh
+ 
++if [ ! -x "TESTAPP_BIN" ]; then
++	plan_skip_all "No UST events binary detected."
++fi
++
+ # MUST set TESTDIR before calling those functions
+ plan_tests $NUM_TESTS
+ 
+diff --git a/tests/regression/tools/snapshots/test_ust_fast b/tests/regression/tools/snapshots/test_ust_fast
+index edb435c52..5a68ec56d 100755
+--- a/tests/regression/tools/snapshots/test_ust_fast
++++ b/tests/regression/tools/snapshots/test_ust_fast
+@@ -23,7 +23,7 @@ TEST_BIN="ust_test"
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$CURDIR/$TEST_BIN" ]; then
+-	BAIL_OUT "No UST test found: $TEST_BIN"
++	plan_skip_all "No UST test found: $TEST_BIN"
+ fi
+ 
+ ./$CURDIR/$TEST_BIN $NR_SNAPSHOT
+diff --git a/tests/regression/tools/snapshots/test_ust_long b/tests/regression/tools/snapshots/test_ust_long
+index 9e1a0c262..afa019f6a 100755
+--- a/tests/regression/tools/snapshots/test_ust_long
++++ b/tests/regression/tools/snapshots/test_ust_long
+@@ -23,7 +23,7 @@ TEST_BIN="ust_test"
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$CURDIR/$TEST_BIN" ]; then
+-	BAIL_OUT "No UST test found: $TEST_BIN"
++	plan_skip_all "No UST test found: $TEST_BIN"
+ fi
+ 
+ ./$CURDIR/$TEST_BIN $NR_SNAPSHOT
+diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming
+index 93b0957f3..69291ab4d 100755
+--- a/tests/regression/tools/snapshots/test_ust_streaming
++++ b/tests/regression/tools/snapshots/test_ust_streaming
+@@ -37,7 +37,7 @@ NUM_TESTS=75
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function snapshot_add_output ()
+diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test
+index 755cef9e0..92f9f6cff 100755
+--- a/tests/regression/tools/snapshots/ust_test
++++ b/tests/regression/tools/snapshots/ust_test
+@@ -34,7 +34,7 @@ TRACE_PATH=$(mktemp -d)
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ # Need the number of snapshot to do.
+diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits
+index 32c3f1f2b..f54178923 100755
+--- a/tests/regression/tools/streaming/test_high_throughput_limits
++++ b/tests/regression/tools/streaming/test_high_throughput_limits
+@@ -38,7 +38,7 @@ NUM_TESTS=104
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function set_bw_limit
+diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust
+index a5d5b5e92..e1dd98ee7 100755
+--- a/tests/regression/tools/streaming/test_ust
++++ b/tests/regression/tools/streaming/test_ust
+@@ -34,7 +34,7 @@ NUM_TESTS=16
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function lttng_create_session_uri
+diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count
+index 6ada8580f..7553c7d1f 100755
+--- a/tests/regression/tools/tracefile-limits/test_tracefile_count
++++ b/tests/regression/tools/tracefile-limits/test_tracefile_count
+@@ -33,7 +33,7 @@ PAGE_SIZE=$(getconf PAGE_SIZE)
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function enable_lttng_channel_count_limit ()
+diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size
+index 3dddbe613..1089487ff 100755
+--- a/tests/regression/tools/tracefile-limits/test_tracefile_size
++++ b/tests/regression/tools/tracefile-limits/test_tracefile_size
+@@ -33,7 +33,7 @@ NUM_TESTS=66
+ source $TESTDIR/utils/utils.sh
+ 
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST events binary detected."
++	plan_skip_all "No UST events binary detected."
+ fi
+ 
+ function enable_lttng_channel_size_limit ()
+diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard
+index 61ea67a72..921a2301d 100755
+--- a/tests/regression/tools/wildcard/test_event_wildcard
++++ b/tests/regression/tools/wildcard/test_event_wildcard
+@@ -97,42 +97,47 @@ print_test_banner "$TEST_DESC"
+ 
+ start_lttng_sessiond
+ 
+-diag "Test UST wildcard"
+-
+ if [ ! -x "$TESTAPP_BIN" ]; then
+-	BAIL_OUT "No UST nevents binary detected."
++	skip_ust=0
++else
++	skip_ust=1
+ fi
+ 
+-EVENT_NAME="tp:tptest"
++skip $skip_ust "No UST nevents binary detected." $NUM_UST_TESTS ||
++{
++	diag "Test UST wildcard"
+ 
+-# non-matching
+-test_event_wildcard ust 0 'tp:abc*'
+-test_event_wildcard ust 0 '*abc'
+-test_event_wildcard ust 0 '*z*'
+-test_event_wildcard ust 0 '*\**'
+-test_event_wildcard ust 0 '*\*'
+-test_event_wildcard ust 0 '\**'
+-test_event_wildcard ust 0 '*:*tpte*s'
+-test_event_wildcard ust 0 'tp**tpTest'
++	EVENT_NAME="tp:tptest"
+ 
+-# matching
+-test_event_wildcard ust 1 'tp:tp*'
+-test_event_wildcard ust 1 '*'
+-test_event_wildcard ust 1 'tp:tptest*'
+-test_event_wildcard ust 1 '**'
+-test_event_wildcard ust 1 '***'
+-test_event_wildcard ust 1 '*tptest'
+-test_event_wildcard ust 1 '**tptest'
+-test_event_wildcard ust 1 '*tpte*'
+-test_event_wildcard ust 1 '*tp*'
+-test_event_wildcard ust 1 '*tp**'
+-test_event_wildcard ust 1 '*:*tptest'
+-test_event_wildcard ust 1 '*:*tpte*t'
+-test_event_wildcard ust 1 't*p*:*t*e*s*t'
+-test_event_wildcard ust 1 '*t*p*:*t*e*s*t*'
+-test_event_wildcard ust 1 'tp*tptest'
+-test_event_wildcard ust 1 'tp**tptest'
+-test_event_wildcard ust 1 'tp*test'
++	# non-matching
++	test_event_wildcard ust 0 'tp:abc*'
++	test_event_wildcard ust 0 '*abc'
++	test_event_wildcard ust 0 '*z*'
++	test_event_wildcard ust 0 '*\**'
++	test_event_wildcard ust 0 '*\*'
++	test_event_wildcard ust 0 '\**'
++	test_event_wildcard ust 0 '*:*tpte*s'
++	test_event_wildcard ust 0 'tp**tpTest'
++
++	# matching
++	test_event_wildcard ust 1 'tp:tp*'
++	test_event_wildcard ust 1 '*'
++	test_event_wildcard ust 1 'tp:tptest*'
++	test_event_wildcard ust 1 '**'
++	test_event_wildcard ust 1 '***'
++	test_event_wildcard ust 1 '*tptest'
++	test_event_wildcard ust 1 '**tptest'
++	test_event_wildcard ust 1 '*tpte*'
++	test_event_wildcard ust 1 '*tp*'
++	test_event_wildcard ust 1 '*tp**'
++	test_event_wildcard ust 1 '*:*tptest'
++	test_event_wildcard ust 1 '*:*tpte*t'
++	test_event_wildcard ust 1 't*p*:*t*e*s*t'
++	test_event_wildcard ust 1 '*t*p*:*t*e*s*t*'
++	test_event_wildcard ust 1 'tp*tptest'
++	test_event_wildcard ust 1 'tp**tptest'
++	test_event_wildcard ust 1 'tp*test'
++}
+ 
+ if [ "$(id -u)" == "0" ]; then
+ 	isroot=1
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch
new file mode 100644
index 0000000..16df3e6
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch
@@ -0,0 +1,176 @@
+From 9bc81a446d0a3ea9a884739eee48d3f14db3283c Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Wed, 28 Mar 2018 15:21:26 -0400
+Subject: [PATCH lttng-tools] Tests: use modprobe to test for the presence of
+ lttng-modules
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport [28702730192ae1ded06105c54c5dc]
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
+---
+ tests/regression/tools/regen-metadata/test_kernel      |  8 ++------
+ tests/regression/tools/regen-statedump/test_kernel     |  7 +------
+ tests/regression/tools/snapshots/test_kernel           |  9 +++------
+ tests/regression/tools/snapshots/test_kernel_streaming |  8 ++------
+ tests/regression/tools/streaming/test_kernel           |  8 ++------
+ tests/utils/utils.sh                                   | 10 ++++++++++
+ 6 files changed, 20 insertions(+), 30 deletions(-)
+
+diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel
+index fd139aeef..1849b9cd0 100755
+--- a/tests/regression/tools/regen-metadata/test_kernel
++++ b/tests/regression/tools/regen-metadata/test_kernel
+@@ -28,12 +28,6 @@ NUM_TESTS=18
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+-# LTTng kernel modules check
+-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+-if [ -z "$out" ]; then
+-	BAIL_OUT "LTTng modules not detected."
+-fi
+-
+ function lttng_create_session_uri
+ {
+ 	# Create session with default path
+@@ -91,6 +85,8 @@ fi
+ 
+ skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
+ {
++	validate_lttng_modules_present
++
+ 	start_lttng_relayd "-o $TRACE_PATH"
+ 	start_lttng_sessiond
+ 	modprobe lttng-test
+diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel
+index 85afe76a1..50054eb07 100755
+--- a/tests/regression/tools/regen-statedump/test_kernel
++++ b/tests/regression/tools/regen-statedump/test_kernel
+@@ -29,12 +29,6 @@ NUM_TESTS=11
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+-# LTTng kernel modules check
+-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+-if [ -z "$out" ]; then
+-	BAIL_OUT "LTTng modules not detected."
+-fi
+-
+ function test_kernel_local ()
+ {
+ 	diag "Test kernel local with statedump regeneration"
+@@ -64,6 +58,7 @@ fi
+ 
+ skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
+ {
++	validate_lttng_modules_present
+ 	start_lttng_sessiond
+ 	modprobe lttng-test
+ 
+diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel
+index 886c4557a..ff563100b 100755
+--- a/tests/regression/tools/snapshots/test_kernel
++++ b/tests/regression/tools/snapshots/test_kernel
+@@ -29,12 +29,6 @@ NUM_TESTS=2060
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+-# LTTng kernel modules check
+-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+-if [ -z "$out" ]; then
+-	BAIL_OUT "LTTng modules not detected."
+-fi
+-
+ function test_kernel_local_snapshot ()
+ {
+ 	diag "Test local kernel snapshots"
+@@ -241,6 +235,9 @@ fi
+ 
+ skip $isroot "Root access is needed. Skipping all kernel snapshot tests." $NUM_TESTS ||
+ {
++
++	validate_lttng_modules_present
++
+ 	start_lttng_sessiond
+ 
+ 	#tests=( test_kernel_1000_local_snapshots )
+diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming
+index 7b96ef270..1d97519aa 100755
+--- a/tests/regression/tools/snapshots/test_kernel_streaming
++++ b/tests/regression/tools/snapshots/test_kernel_streaming
+@@ -29,12 +29,6 @@ NUM_TESTS=61
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+-# LTTng kernel modules check
+-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+-if [ -z "$out" ]; then
+-	BAIL_OUT "LTTng modules not detected."
+-fi
+-
+ function snapshot_add_output ()
+ {
+ 	local sess_name=$1
+@@ -169,6 +163,8 @@ fi
+ 
+ skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
+ {
++	validate_lttng_modules_present
++
+ 	start_lttng_relayd "-o $TRACE_PATH"
+ 	start_lttng_sessiond
+ 
+diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel
+index d54bcedf5..6bb23d9f5 100755
+--- a/tests/regression/tools/streaming/test_kernel
++++ b/tests/regression/tools/streaming/test_kernel
+@@ -28,12 +28,6 @@ NUM_TESTS=10
+ 
+ source $TESTDIR/utils/utils.sh
+ 
+-# LTTng kernel modules check
+-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+-if [ -z "$out" ]; then
+-	BAIL_OUT "LTTng modules not detected."
+-fi
+-
+ function lttng_create_session_uri
+ {
+ 	# Create session with default path
+@@ -80,6 +74,8 @@ fi
+ 
+ skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
+ {
++	validate_lttng_modules_present
++
+ 	start_lttng_relayd "-o $TRACE_PATH"
+ 	start_lttng_sessiond
+ 
+diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
+index af63824ce..26e59e383 100644
+--- a/tests/utils/utils.sh
++++ b/tests/utils/utils.sh
+@@ -125,6 +125,16 @@ function conf_proc_count()
+ 	echo
+ }
+ 
++# Check if base lttng-modules are present.
++# Bail out on failure
++function validate_lttng_modules_present ()
++{
++	modprobe -n lttng-tracer 2>/dev/null
++	if [ $? -ne 0  ]; then
++		BAIL_OUT "LTTng modules not detected."
++	fi
++}
++
+ function enable_kernel_lttng_event
+ {
+ 	local withtap="$1"
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch
new file mode 100644
index 0000000..e07c227
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch
@@ -0,0 +1,28 @@
+From 92f93238f1df005aadc98e105c0dd0e04a5955a7 Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Mon, 25 Mar 2019 14:24:51 -0400
+Subject: [2/2] tests: check for lttng-modules presence
+
+Upstream-status: Accepted [5da3fc8579a9f93ea4767729a107784bf2d034ae]
+Backported to 2.11 and 2.10
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+---
+ tests/regression/tools/notification/test_notification_kernel | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/regression/tools/notification/test_notification_kernel b/tests/regression/tools/notification/test_notification_kernel
+index 6d7f256ae..e7368df26 100755
+--- a/tests/regression/tools/notification/test_notification_kernel
++++ b/tests/regression/tools/notification/test_notification_kernel
+@@ -108,6 +108,7 @@ function kernel_test
+ }
+ 
+ if [ "$(id -u)" == "0" ]; then
++	validate_lttng_modules_present
+ 	kernel_test
+ else
+ 	# Kernel tests are skipped.
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch
new file mode 100644
index 0000000..5437de2
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch
@@ -0,0 +1,345 @@
+From 10e8001ad876d8cb3b5a17c7492e713bbc047975 Mon Sep 17 00:00:00 2001
+From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+Date: Thu, 28 Mar 2019 18:31:29 -0400
+Subject: [PATCH] Fix: getgrnam is not MT-Safe, use getgrnam_r
+
+Running the test suite under a Yocto musl build resulted in musl
+coredump due to double freeing.
+
+We get the following backtraces:
+
+0  a_crash () at ./arch/x86_64/atomic_arch.h:108
+1  unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515
+2  free (p=<optimized out>) at src/malloc/malloc.c:526
+3  0x00007f46d9dc3849 in __getgrent_a (f=f@entry=0x7f46d9d1f7e0, gr=gr@entry=0x7f46d9e24460 <gr>, line=line@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=nmem@entry=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgrent_a.c:45
+4  0x00007f46d9dc2e6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f46d9e24460 <gr>, buf=buf@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgr_a.c:30
+5  0x00007f46d9dc3733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37
+6  0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241
+7  0x000000000044ee69 in thread_manage_health (data=<optimized out>) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/main.c:4115
+8  0x00007f46d9de1541 in start (p=<optimized out>) at src/thread/pthread_create.c:195
+9  0x00007f46d9dee661 in __clone () at src/thread/x86_64/clone.s:22
+
+From another run:
+
+0  a_crash () at ./arch/x86_64/atomic_arch.h:108
+1  unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515
+2  free (p=<optimized out>) at src/malloc/malloc.c:526
+3  0x00007f5abc210849 in __getgrent_a (f=f@entry=0x7f5abc2733e0, gr=gr@entry=0x7f5abc271460 <gr>, line=line@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=nmem@entry=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgrent_a.c:45
+4  0x00007f5abc20fe6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f5abc271460 <gr>, buf=buf@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgr_a.c:30
+5  0x00007f5abc210733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37
+6  0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241
+7  0x000000000042dee4 in notification_channel_socket_create () at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:238
+8  init_thread_state (state=0x7f5abaef5560, handle=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:375
+9  thread_notification (data=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:495
+10 0x00007f5abc22e541 in start (p=<optimized out>) at src/thread/pthread_create.c:195
+11 0x00007f5abc23b661 in __clone () at src/thread/x86_64/clone.s:22
+
+The problem was easily reproducible (~6 crash on ~300 runs). A prototype fix
+using mutex around the getgrnam yielded no crash in over 1000 runs. This
+patch yielded the same results as the prototype fix.
+
+Unfortunately we cannot rely on a mutex in liblttng-ctl since we cannot
+enforce the locking for the application using the lib.
+
+Use getgrnam_r instead.
+
+The previous implementation of utils_get_group_id returned the gid of
+the root group (0) on error/not found. lttng_check_tracing_group needs
+to know if an error/not found occured, returning the root group is not
+enough. We now return the gid via the passed parameter. The caller is
+responsible for either defaulting to the root group or propagating the
+error.
+
+We also do not want to warn when used in liblttng-ctl context. We might
+want to move the warning elsewhere in the future. For now, pass a bool
+if we need to warn or not.
+
+Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+---
+ src/bin/lttng-consumerd/health-consumerd.c   | 10 ++-
+ src/bin/lttng-relayd/health-relayd.c         | 20 ++++--
+ src/bin/lttng-sessiond/main.c                | 24 +++++--
+ src/bin/lttng-sessiond/notification-thread.c | 10 ++-
+ src/common/utils.c                           | 75 +++++++++++++++++---
+ src/common/utils.h                           |  4 +-
+ src/lib/lttng-ctl/lttng-ctl.c                |  8 +--
+ 7 files changed, 122 insertions(+), 29 deletions(-)
+
+diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c
+index 1e2f31e4..6045401a 100644
+--- a/src/bin/lttng-consumerd/health-consumerd.c
++++ b/src/bin/lttng-consumerd/health-consumerd.c
+@@ -184,8 +184,14 @@ void *thread_manage_health(void *data)
+ 	is_root = !getuid();
+ 	if (is_root) {
+ 		/* lttng health client socket path permissions */
+-		ret = chown(health_unix_sock_path, 0,
+-				utils_get_group_id(tracing_group_name));
++		gid_t gid;
++
++		ret = utils_get_group_id(tracing_group_name, true, &gid);
++		if (ret) {
++			gid = 0; /* Default to root group. */
++		}
++
++		ret = chown(health_unix_sock_path, 0, gid);
+ 		if (ret < 0) {
+ 			ERR("Unable to set group on %s", health_unix_sock_path);
+ 			PERROR("chown");
+diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c
+index ba996621..962e88c4 100644
+--- a/src/bin/lttng-relayd/health-relayd.c
++++ b/src/bin/lttng-relayd/health-relayd.c
+@@ -105,8 +105,14 @@ static int create_lttng_rundir_with_perm(const char *rundir)
+ 		int is_root = !getuid();
+ 
+ 		if (is_root) {
+-			ret = chown(rundir, 0,
+-					utils_get_group_id(tracing_group_name));
++			gid_t gid;
++
++			ret = utils_get_group_id(tracing_group_name, true, &gid);
++			if (ret) {
++				gid = 0; /* Default to root group.*/
++			}
++
++			ret = chown(rundir, 0, gid);
+ 			if (ret < 0) {
+ 				ERR("Unable to set group on %s", rundir);
+ 				PERROR("chown");
+@@ -256,8 +262,14 @@ void *thread_manage_health(void *data)
+ 	is_root = !getuid();
+ 	if (is_root) {
+ 		/* lttng health client socket path permissions */
+-		ret = chown(health_unix_sock_path, 0,
+-				utils_get_group_id(tracing_group_name));
++		gid_t gid;
++
++		ret = utils_get_group_id(tracing_group_name, true, &gid);
++		if (ret) {
++			gid = 0; /* Default to root group */
++		}
++
++		ret = chown(health_unix_sock_path, 0, gid);
+ 		if (ret < 0) {
+ 			ERR("Unable to set group on %s", health_unix_sock_path);
+ 			PERROR("chown");
+diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c
+index fa6fa483..49307064 100644
+--- a/src/bin/lttng-sessiond/main.c
++++ b/src/bin/lttng-sessiond/main.c
+@@ -4112,8 +4112,14 @@ static void *thread_manage_health(void *data)
+ 
+ 	if (is_root) {
+ 		/* lttng health client socket path permissions */
+-		ret = chown(config.health_unix_sock_path.value, 0,
+-				utils_get_group_id(config.tracing_group_name.value));
++		gid_t gid;
++
++		ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
++		if (ret) {
++			gid = 0; /* Default to root group */
++		}
++
++		ret = chown(config.health_unix_sock_path.value, 0, &gid);
+ 		if (ret < 0) {
+ 			ERR("Unable to set group on %s", config.health_unix_sock_path.value);
+ 			PERROR("chown");
+@@ -5238,7 +5244,10 @@ static int set_permissions(char *rundir)
+ 	int ret;
+ 	gid_t gid;
+ 
+-	gid = utils_get_group_id(config.tracing_group_name.value);
++	ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
++	if (ret) {
++		gid = 0; /* Default to root group */
++	}
+ 
+ 	/* Set lttng run dir */
+ 	ret = chown(rundir, 0, gid);
+@@ -5349,7 +5358,14 @@ static int set_consumer_sockets(struct consumer_data *consumer_data)
+ 		goto error;
+ 	}
+ 	if (is_root) {
+-		ret = chown(path, 0, utils_get_group_id(config.tracing_group_name.value));
++		gid_t gid;
++
++		ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
++		if (ret) {
++			gid = 0; /* Default to root group */
++		}
++
++		ret = chown(path, 0, gid);
+ 		if (ret < 0) {
+ 			ERR("Unable to set group on %s", path);
+ 			PERROR("chown");
+diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c
+index 92ac597f..18a264d9 100644
+--- a/src/bin/lttng-sessiond/notification-thread.c
++++ b/src/bin/lttng-sessiond/notification-thread.c
+@@ -235,8 +235,14 @@ int notification_channel_socket_create(void)
+ 	}
+ 
+ 	if (getuid() == 0) {
+-		ret = chown(sock_path, 0,
+-				utils_get_group_id(config.tracing_group_name.value));
++		gid_t gid;
++
++		ret =  utils_get_group_id(config.tracing_group_name.value, true, &gid);
++		if (ret) {
++			gid = 0; /* Default to root group. */
++		}
++
++		ret = chown(sock_path, 0, gid);
+ 		if (ret) {
+ 			ERR("Failed to set the notification channel socket's group");
+ 			ret = -1;
+diff --git a/src/common/utils.c b/src/common/utils.c
+index c0bb031e..778bc00f 100644
+--- a/src/common/utils.c
++++ b/src/common/utils.c
+@@ -1231,24 +1231,77 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len)
+ }
+ 
+ /*
+- * Return the group ID matching name, else 0 if it cannot be found.
++ * Return 0 on success and set *gid to the group_ID matching the passed name.
++ * Else -1 if it cannot be found or an error occurred.
+  */
+ LTTNG_HIDDEN
+-gid_t utils_get_group_id(const char *name)
++int utils_get_group_id(const char *name, bool warn, gid_t *gid)
+ {
+-	struct group *grp;
++	static volatile int warn_once;
+ 
+-	grp = getgrnam(name);
+-	if (!grp) {
+-		static volatile int warn_once;
++	int ret;
++	long sys_len;
++	size_t len;
++	struct group grp;
++	struct group *result;
++	char *buffer = NULL;
+ 
+-		if (!warn_once) {
+-			WARN("No tracing group detected");
+-			warn_once = 1;
++	/* Get the system limit if it exists */
++	sys_len = sysconf(_SC_GETGR_R_SIZE_MAX);
++	if (sys_len == -1) {
++		len = 1024;
++	} else {
++		len = (size_t) sys_len;
++	}
++
++	buffer = malloc(len);
++	if (!buffer) {
++		PERROR("getgrnam_r malloc");
++		ret = -1;
++		goto error;
++	}
++
++	while ((ret = getgrnam_r(name, &grp, buffer, len, &result)) == ERANGE)
++	{
++		/* Buffer is not big enough, increase its size. */
++		size_t new_len = 2 * len;
++		char *new_buffer = NULL;
++		if (new_len < len) {
++			ERR("getgrnam_r buffer size overflow");
++			ret = -1;
++			goto error;
++		}
++		len = new_len;
++		new_buffer = realloc(buffer, len);
++		if (!new_buffer) {
++			PERROR("getgrnam_r realloc");
++			ret = -1;
++			goto error;
+ 		}
+-		return 0;
++		buffer = new_buffer;
++	}
++	if (ret != 0) {
++		PERROR("getgrnam_r");
++		ret = -1;
++		goto error;
++	}
++
++	/* Group not found. */
++	if (!result) {
++		ret = -1;
++		goto error;
++	}
++
++	*gid = result->gr_gid;
++	ret = 0;
++
++error:
++	free(buffer);
++	if (ret && warn && !warn_once) {
++		WARN("No tracing group detected");
++		warn_once = 1;
+ 	}
+-	return grp->gr_gid;
++	return ret;
+ }
+ 
+ /*
+diff --git a/src/common/utils.h b/src/common/utils.h
+index 18f19ef1..9c72431d 100644
+--- a/src/common/utils.h
++++ b/src/common/utils.h
+@@ -22,6 +22,8 @@
+ #include <unistd.h>
+ #include <stdint.h>
+ #include <getopt.h>
++#include <stdbool.h>
++#include <sys/types.h>
+ 
+ #define KIBI_LOG2 10
+ #define MEBI_LOG2 20
+@@ -52,7 +54,7 @@ int utils_get_count_order_u64(uint64_t x);
+ char *utils_get_home_dir(void);
+ char *utils_get_user_home_dir(uid_t uid);
+ size_t utils_get_current_time_str(const char *format, char *dst, size_t len);
+-gid_t utils_get_group_id(const char *name);
++int utils_get_group_id(const char *name, bool warn, gid_t *gid);
+ char *utils_generate_optstring(const struct option *long_options,
+ 		size_t opt_count);
+ int utils_create_lock_file(const char *filepath);
+diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c
+index 2d84aad9..561b0bcf 100644
+--- a/src/lib/lttng-ctl/lttng-ctl.c
++++ b/src/lib/lttng-ctl/lttng-ctl.c
+@@ -208,15 +208,13 @@ end:
+ LTTNG_HIDDEN
+ int lttng_check_tracing_group(void)
+ {
+-	struct group *grp_tracing;	/* no free(). See getgrnam(3) */
+-	gid_t *grp_list;
++	gid_t *grp_list, tracing_gid;
+ 	int grp_list_size, grp_id, i;
+ 	int ret = -1;
+ 	const char *grp_name = tracing_group;
+ 
+ 	/* Get GID of group 'tracing' */
+-	grp_tracing = getgrnam(grp_name);
+-	if (!grp_tracing) {
++	if (utils_get_group_id(grp_name, false, &tracing_gid)) {
+ 		/* If grp_tracing is NULL, the group does not exist. */
+ 		goto end;
+ 	}
+@@ -241,7 +239,7 @@ int lttng_check_tracing_group(void)
+ 	}
+ 
+ 	for (i = 0; i < grp_list_size; i++) {
+-		if (grp_list[i] == grp_tracing->gr_gid) {
++		if (grp_list[i] == tracing_gid) {
+ 			ret = 1;
+ 			break;
+ 		}
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
index 705030e..dbb1882 100755
--- a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
@@ -3,4 +3,4 @@
 # test plan to raise ERRORs; this is just noise.
 makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD"
 make -k -t all >/dev/null 2>&1
-exec make -s $makeargs check 2>/dev/null
+exec make -k -s $makeargs check 2>/dev/null
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch
index b1bb8e4..42cebf9 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch
@@ -1,11 +1,31 @@
 Fix build for x32
 
-Upstream-Status: Pending
 Signed-off-by: Christopher Larson <chris_larson@mentor.com>
 
---- lttng-tools-2.6.0/src/bin/lttng/utils.c~	2015-01-26 18:17:15.000000000 +0100
-+++ lttng-tools-2.6.0/src/bin/lttng/utils.c	2015-07-30 19:45:25.632045712 +0200
-@@ -130,7 +130,7 @@
+Fix build error of src/common/utils.c for x32.
+
+Upstream-Status: Submitted [https://github.com/lttng/lttng-tools/pull/150]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c
+index 0e96ef0c..5c79c8c7 100644
+--- a/src/bin/lttng/utils.c
++++ b/src/bin/lttng/utils.c
+@@ -158,7 +158,7 @@ unsigned int fls_u32(uint32_t x)
+ #define HAS_FLS_U32
+ #endif
+ 
+-#if defined(__x86_64)
++#if defined(__x86_64) && !defined(__ILP32__)
+ static inline
+ unsigned int fls_u64(uint64_t x)
+ {
+diff --git a/src/common/utils.c b/src/common/utils.c
+index 08139e5e..3c389981 100644
+--- a/src/common/utils.c
++++ b/src/common/utils.c
+@@ -1223,7 +1223,7 @@ static inline unsigned int fls_u32(uint32_t x)
  #define HAS_FLS_U32
  #endif