diff --git a/poky/meta/lib/oeqa/core/target/ssh.py b/poky/meta/lib/oeqa/core/target/ssh.py
index e650302..f22836d 100644
--- a/poky/meta/lib/oeqa/core/target/ssh.py
+++ b/poky/meta/lib/oeqa/core/target/ssh.py
@@ -253,6 +253,9 @@
                 except InterruptedError:
                     logger.debug('InterruptedError')
                     continue
+                except BlockingIOError:
+                    logger.debug('BlockingIOError')
+                    continue
 
             process.stdout.close()
 
@@ -270,6 +273,7 @@
                             " running time: %d seconds." % (timeout, endtime))
                 logger.debug('Received data from SSH call:\n%s ' % lastline)
                 output += lastline
+                process.wait()
 
         else:
             output_raw = process.communicate()[0]
@@ -287,6 +291,7 @@
                 except OSError:
                     logger.debug('OSError')
                     pass
+                process.wait()
 
     options = {
         "stdout": subprocess.PIPE,
@@ -313,6 +318,8 @@
         # whilst running and ensure we don't leave a process behind.
         if process.poll() is None:
             process.kill()
+        if process.returncode == None:
+            process.wait()
         logger.debug('Something went wrong, killing SSH process')
         raise
 
diff --git a/poky/meta/lib/oeqa/runtime/cases/ltp.py b/poky/meta/lib/oeqa/runtime/cases/ltp.py
index 29c26d7..c7e7943 100644
--- a/poky/meta/lib/oeqa/runtime/cases/ltp.py
+++ b/poky/meta/lib/oeqa/runtime/cases/ltp.py
@@ -71,9 +71,14 @@
             cmd = '/opt/ltp/runltp -f %s -q -r /opt/ltp -l /opt/ltp/results/%s -I 1 -d /opt/ltp' % (ltp_group, ltp_group)
 
             starttime = time.time()
-            (status, output) = self.target.run(cmd)
+            (status, output) = self.target.run(cmd, timeout=1200)
             endtime = time.time()
 
+            # status of 1 is 'just' tests failing. 255 likely was a command output timeout 
+            if status and status != 1:
+                msg = 'Command %s returned exit code %s' % (cmd, status)
+                self.target.logger.warning(msg)
+
             # Write the console log to disk for convenience
             with open(os.path.join(self.ltptest_log_dir, "%s-raw.log" % ltp_group), 'w') as f:
                 f.write(output)
diff --git a/poky/meta/lib/oeqa/runtime/cases/rust.py b/poky/meta/lib/oeqa/runtime/cases/rust.py
index c9c60e16..9bf0312 100644
--- a/poky/meta/lib/oeqa/runtime/cases/rust.py
+++ b/poky/meta/lib/oeqa/runtime/cases/rust.py
@@ -48,15 +48,3 @@
         status, output = self.target.run('cargo run --manifest-path=/tmp/hello/Cargo.toml')
         msg = 'running compiled file failed, output: %s' % output
         self.assertEqual(status, 0, msg=msg)
-
-class RustHelloworldTest(OERuntimeTestCase):
-    @OETestDepends(['ssh.SSHTest.test_ssh'])
-    @OEHasPackage(['rust-hello-world'])
-    def test_rusthelloworld(self):
-        cmd = "rust-hello-world"
-        status, output = self.target.run(cmd)
-        msg = 'Exit status was not 0. Output: %s' % output
-        self.assertEqual(status, 0, msg=msg)
-
-        msg = 'Incorrect output: %s' % output
-        self.assertEqual(output, "Hello, world!", msg=msg)
diff --git a/poky/meta/lib/oeqa/selftest/cases/binutils.py b/poky/meta/lib/oeqa/selftest/cases/binutils.py
index bf6fdca..1688eab 100644
--- a/poky/meta/lib/oeqa/selftest/cases/binutils.py
+++ b/poky/meta/lib/oeqa/selftest/cases/binutils.py
@@ -4,6 +4,7 @@
 # SPDX-License-Identifier: MIT
 #
 import os
+import time
 from oeqa.core.decorator import OETestTag
 from oeqa.core.case import OEPTestResultTestCase
 from oeqa.selftest.case import OESelftestTestCase
@@ -36,15 +37,19 @@
         bb_vars = get_bb_vars(["B", "TARGET_SYS", "T"], recipe)
         builddir, target_sys, tdir = bb_vars["B"], bb_vars["TARGET_SYS"], bb_vars["T"]
 
+        start_time = time.time()
+
         bitbake("{0} -c check".format(recipe))
 
+        end_time = time.time()
+
         sumspath = os.path.join(builddir, suite, "{0}.sum".format(suite))
         if not os.path.exists(sumspath):
             sumspath = os.path.join(builddir, suite, "testsuite", "{0}.sum".format(suite))
         logpath = os.path.splitext(sumspath)[0] + ".log"
 
         ptestsuite = "binutils-{}".format(suite) if suite != "binutils" else suite
-        self.ptest_section(ptestsuite, logfile = logpath)
+        self.ptest_section(ptestsuite, duration = int(end_time - start_time), logfile = logpath)
         with open(sumspath, "r") as f:
             for test, result in parse_values(f):
                 self.ptest_result(ptestsuite, test, result)
diff --git a/poky/meta/lib/oeqa/selftest/cases/distrodata.py b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
index 111bd3c..ad952c0 100644
--- a/poky/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -39,42 +39,6 @@
 """ + "\n".join(regressed_successes)
         self.assertTrue(len(regressed_failures) == 0 and len(regressed_successes) == 0, msg)
 
-    def test_missing_homepg(self):
-        """
-        Summary:     Test for oe-core recipes that don't have a HOMEPAGE or DESCRIPTION
-        Expected:    All oe-core recipes should have a DESCRIPTION entry
-        Expected:    All oe-core recipes should have a HOMEPAGE entry except for recipes that are not fetched from external sources.
-        Product:     oe-core
-        """
-        with bb.tinfoil.Tinfoil() as tinfoil:
-            tinfoil.prepare(config_only=False)
-            no_description = []
-            no_homepage = []
-            for fn in tinfoil.all_recipe_files(variants=False):
-                if not '/meta/recipes-' in fn:
-                    # We are only interested in OE-Core
-                    continue
-                rd = tinfoil.parse_recipe_file(fn, appends=False)
-                pn = rd.getVar('BPN')
-                srcfile = rd.getVar('SRC_URI').split()
-                #Since DESCRIPTION defaults to SUMMARY if not set, we are only interested in recipes without DESCRIPTION or SUMMARY
-                if not (rd.getVar('SUMMARY') or rd.getVar('DESCRIPTION')):
-                    no_description.append((pn, fn))
-                if not rd.getVar('HOMEPAGE'):
-                    if srcfile and srcfile[0].startswith('file') or not rd.getVar('SRC_URI'):
-                        # We are only interested in recipes SRC_URI fetched from external sources
-                        continue
-                    no_homepage.append((pn, fn))
-        if no_homepage:
-            self.fail("""
-The following recipes do not have a HOMEPAGE. Please add an entry for HOMEPAGE in the recipe.
-""" + "\n".join(['%s (%s)' % i for i in no_homepage]))
-
-        if no_description:
-            self.fail("""
-The following recipes do not have a DESCRIPTION. Please add an entry for DESCRIPTION in the recipe.
-""" + "\n".join(['%s (%s)' % i for i in no_description]))
-
     def test_maintainers(self):
         """
         Summary:     Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
diff --git a/poky/meta/lib/oeqa/selftest/cases/gcc.py b/poky/meta/lib/oeqa/selftest/cases/gcc.py
index 6b9022e..8936017 100644
--- a/poky/meta/lib/oeqa/selftest/cases/gcc.py
+++ b/poky/meta/lib/oeqa/selftest/cases/gcc.py
@@ -4,6 +4,7 @@
 # SPDX-License-Identifier: MIT
 #
 import os
+import time
 from oeqa.core.decorator import OETestTag
 from oeqa.core.case import OEPTestResultTestCase
 from oeqa.selftest.case import OESelftestTestCase
@@ -43,8 +44,13 @@
         self.write_config("\n".join(features))
 
         recipe = "gcc-runtime"
+
+        start_time = time.time()
+
         bitbake("{} -c check".format(recipe))
 
+        end_time = time.time()
+
         bb_vars = get_bb_vars(["B", "TARGET_SYS"], recipe)
         builddir, target_sys = bb_vars["B"], bb_vars["TARGET_SYS"]
 
@@ -58,7 +64,7 @@
 
             ptestsuite = "gcc-{}".format(suite) if suite != "gcc" else suite
             ptestsuite = ptestsuite + "-user" if ssh is None else ptestsuite
-            self.ptest_section(ptestsuite, logfile = logpath)
+            self.ptest_section(ptestsuite, duration = int(end_time - start_time), logfile = logpath)
             with open(sumspath, "r") as f:
                 for test, result in parse_values(f):
                     self.ptest_result(ptestsuite, test, result)
diff --git a/poky/meta/lib/oeqa/selftest/cases/glibc.py b/poky/meta/lib/oeqa/selftest/cases/glibc.py
index 4ec4b85..bd56b2f 100644
--- a/poky/meta/lib/oeqa/selftest/cases/glibc.py
+++ b/poky/meta/lib/oeqa/selftest/cases/glibc.py
@@ -4,6 +4,7 @@
 # SPDX-License-Identifier: MIT
 #
 import os
+import time
 import contextlib
 from oeqa.core.decorator import OETestTag
 from oeqa.core.case import OEPTestResultTestCase
@@ -31,12 +32,16 @@
             features.append('EGLIBCPARALLELISM:task-check:pn-glibc-testsuite = "PARALLELMFLAGS="-j1""')
         self.write_config("\n".join(features))
 
+        start_time = time.time()
+
         bitbake("glibc-testsuite -c check")
 
+        end_time = time.time()
+
         builddir = get_bb_var("B", "glibc-testsuite")
 
         ptestsuite = "glibc-user" if ssh is None else "glibc"
-        self.ptest_section(ptestsuite)
+        self.ptest_section(ptestsuite, duration = int(end_time - start_time))
         with open(os.path.join(builddir, "tests.sum"), "r",  errors='replace') as f:
             for test, result in parse_values(f):
                 self.ptest_result(ptestsuite, test, result)
@@ -45,7 +50,7 @@
         with contextlib.ExitStack() as s:
             # use the base work dir, as the nfs mount, since the recipe directory may not exist
             tmpdir = get_bb_var("BASE_WORKDIR")
-            nfsport, mountport = s.enter_context(unfs_server(tmpdir))
+            nfsport, mountport = s.enter_context(unfs_server(tmpdir, udp = False))
 
             # build core-image-minimal with required packages
             default_installed_packages = [
@@ -65,7 +70,7 @@
             bitbake("core-image-minimal")
 
             # start runqemu
-            qemu = s.enter_context(runqemu("core-image-minimal", runqemuparams = "nographic"))
+            qemu = s.enter_context(runqemu("core-image-minimal", runqemuparams = "nographic", qemuparams = "-m 1024"))
 
             # validate that SSH is working
             status, _ = qemu.run("uname")
@@ -74,7 +79,7 @@
             # setup nfs mount
             if qemu.run("mkdir -p \"{0}\"".format(tmpdir))[0] != 0:
                 raise Exception("Failed to setup NFS mount directory on target")
-            mountcmd = "mount -o noac,nfsvers=3,port={0},udp,mountport={1} \"{2}:{3}\" \"{3}\"".format(nfsport, mountport, qemu.server_ip, tmpdir)
+            mountcmd = "mount -o noac,nfsvers=3,port={0},mountport={1} \"{2}:{3}\" \"{3}\"".format(nfsport, mountport, qemu.server_ip, tmpdir)
             status, output = qemu.run(mountcmd)
             if status != 0:
                 raise Exception("Failed to setup NFS mount on target ({})".format(repr(output)))
diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
index 0292c88..a5e069d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -250,7 +250,7 @@
 DISTRO_FEATURES:append = " pam opengl wayland"
 
 # Switch to systemd
-DISTRO_FEATURES:append = " systemd"
+DISTRO_FEATURES:append = " systemd usrmerge"
 VIRTUAL-RUNTIME_init_manager = "systemd"
 VIRTUAL-RUNTIME_initscripts = ""
 VIRTUAL-RUNTIME_syslog = ""
diff --git a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
index b4f0663..4031ded 100644
--- a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
+++ b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -58,7 +58,7 @@
 
         config = """
 IMAGE_INSTALL:append = " overlayfs-user"
-DISTRO_FEATURES:append = " systemd overlayfs"
+DISTRO_FEATURES:append = " systemd overlayfs usrmerge"
 """
 
         self.write_config(config)
@@ -79,7 +79,7 @@
 
         config = """
 IMAGE_INSTALL:append = " overlayfs-user"
-DISTRO_FEATURES += "systemd overlayfs"
+DISTRO_FEATURES += "systemd overlayfs usrmerge"
 OVERLAYFS_QA_SKIP[mnt-overlay] = "mount-configured"
 """
 
@@ -97,7 +97,7 @@
 
         config = """
 IMAGE_INSTALL:append = " overlayfs-user"
-DISTRO_FEATURES:append = " systemd overlayfs"
+DISTRO_FEATURES:append = " systemd overlayfs usrmerge"
 """
 
         self.write_config(config)
@@ -115,7 +115,7 @@
 
         config = """
 IMAGE_INSTALL:append = " overlayfs-user"
-DISTRO_FEATURES:append = " systemd overlayfs"
+DISTRO_FEATURES:append = " systemd overlayfs usrmerge"
 """
 
         wrong_machine_config = """
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 0f7e6eb..4c6ed4e 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -212,10 +212,9 @@
 
         config = textwrap.dedent('''\
             PACKAGE_CLASSES = "{package_classes}"
-            INHIBIT_PACKAGE_STRIP = "1"
             TMPDIR = "{tmpdir}"
             LICENSE_FLAGS_ACCEPTED = "commercial"
-            DISTRO_FEATURES:append = ' systemd pam'
+            DISTRO_FEATURES:append = ' pam'
             USERADDEXTENSION = "useradd-staticids"
             USERADD_ERROR_DYNAMIC = "skip"
             USERADD_UID_TABLES += "files/static-passwd"
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index 81b8d05..463679d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -294,7 +294,7 @@
                 features += 'IMAGE_FEATURES += "package-management empty-root-password"\n'
                 features += 'PACKAGE_CLASSES = "%s"\n' % classes
                 if init_manager == "systemd":
-                    features += 'DISTRO_FEATURES:append = " systemd"\n'
+                    features += 'DISTRO_FEATURES:append = " systemd usrmerge"\n'
                     features += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n'
                     features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n'
                     features += 'VIRTUAL-RUNTIME_initscripts = ""\n'
diff --git a/poky/meta/lib/oeqa/selftest/cases/rust.py b/poky/meta/lib/oeqa/selftest/cases/rust.py
index 7a0fd70..7d14814 100644
--- a/poky/meta/lib/oeqa/selftest/cases/rust.py
+++ b/poky/meta/lib/oeqa/selftest/cases/rust.py
@@ -1,6 +1,7 @@
 # SPDX-License-Identifier: MIT
 import os
 import subprocess
+import time
 from oeqa.core.decorator import OETestTag
 from oeqa.core.case import OEPTestResultTestCase
 from oeqa.selftest.case import OESelftestTestCase
@@ -40,6 +41,7 @@
     def test_rust(self, *args, **kwargs):
         # build remote-test-server before image build
         recipe = "rust"
+        start_time = time.time()
         bitbake("{} -c test_compile".format(recipe))
         builddir = get_bb_var("RUSTSRC", "rust")
         # build core-image-minimal with required packages
@@ -49,6 +51,221 @@
         features.append('CORE_IMAGE_EXTRA_INSTALL += "{0}"'.format(" ".join(default_installed_packages)))
         self.write_config("\n".join(features))
         bitbake("core-image-minimal")
+
+        # Exclude the test folders that error out while building
+        # TODO: Fix the errors and include them for testing
+        # no-fail-fast: Run all tests regardless of failure.
+        # bless: First runs rustfmt to format the codebase,
+        # then runs tidy checks.
+        exclude_list =  [
+                            'compiler/rustc',
+                            'compiler/rustc_interface/src/tests.rs',
+                            'library/panic_abort',
+                            'library/panic_unwind',
+                            'library/test/src/stats/tests.rs',
+                            'src/bootstrap/builder/tests.rs',
+                            'src/doc/rustc',
+                            'src/doc/rustdoc',
+                            'src/doc/unstable-book',
+                            'src/librustdoc',
+                            'src/rustdoc-json-types',
+                            'src/tools/compiletest/src/common.rs',
+                            'src/tools/lint-docs',
+                            'src/tools/rust-analyzer',
+                            'src/tools/rustdoc-themes',
+                            'src/tools/tidy',
+                            'tests/assembly/asm/aarch64-outline-atomics.rs',
+                            'tests/codegen/abi-main-signature-32bit-c-int.rs',
+                            'tests/codegen/abi-repr-ext.rs',
+                            'tests/codegen/abi-x86-interrupt.rs',
+                            'tests/codegen/branch-protection.rs',
+                            'tests/codegen/catch-unwind.rs',
+                            'tests/codegen/cf-protection.rs',
+                            'tests/codegen/enum-bounds-check-derived-idx.rs',
+                            'tests/codegen/force-unwind-tables.rs',
+                            'tests/codegen/intrinsic-no-unnamed-attr.rs',
+                            'tests/codegen/issues/issue-103840.rs',
+                            'tests/codegen/issues/issue-47278.rs',
+                            'tests/codegen/issues/issue-73827-bounds-check-index-in-subexpr.rs',
+                            'tests/codegen/lifetime_start_end.rs',
+                            'tests/codegen/local-generics-in-exe-internalized.rs',
+                            'tests/codegen/match-unoptimized.rs',
+                            'tests/codegen/noalias-rwlockreadguard.rs',
+                            'tests/codegen/non-terminate/nonempty-infinite-loop.rs',
+                            'tests/codegen/noreturn-uninhabited.rs',
+                            'tests/codegen/repr-transparent-aggregates-3.rs',
+                            'tests/codegen/sse42-implies-crc32.rs',
+                            'tests/codegen/thread-local.rs',
+                            'tests/codegen/uninit-consts.rs',
+                            'tests/pretty/raw-str-nonexpr.rs',
+                            'tests/run-make',
+                            'tests/run-make/cdylib-fewer-symbols/foo.rs',
+                            'tests/run-make/doctests-keep-binaries/t.rs',
+                            'tests/run-make-fulldeps',
+                            'tests/run-make/issue-22131/foo.rs',
+                            'tests/run-make/issue-36710/Makefile',
+                            'tests/run-make/issue-47551',
+                            'tests/run-make/pgo-branch-weights',
+                            'tests/run-make/pgo-gen',
+                            'tests/run-make/pgo-gen-lto',
+                            'tests/run-make/pgo-indirect-call-promotion',
+                            'tests/run-make/pgo-use',
+                            'tests/run-make/pointer-auth-link-with-c/Makefile',
+                            'tests/run-make/profile',
+                            'tests/run-make/static-pie',
+                            'tests/run-make/sysroot-crates-are-unstable',
+                            'tests/run-make/target-specs',
+                            'tests/rustdoc',
+                            'tests/rustdoc/async-move-doctest.rs',
+                            'tests/rustdoc/async-trait.rs',
+                            'tests/rustdoc/auto-traits.rs',
+                            'tests/rustdoc/check-source-code-urls-to-def.rs',
+                            'tests/rustdoc/comment-in-doctest.rs',
+                            'tests/rustdoc/const-generics/const-generics-docs.rs',
+                            'tests/rustdoc/cross-crate-hidden-assoc-trait-items.rs',
+                            'tests/rustdoc/cross-crate-hidden-impl-parameter.rs',
+                            'tests/rustdoc/cross-crate-links.rs',
+                            'tests/rustdoc/cross-crate-primitive-doc.rs',
+                            'tests/rustdoc/doctest-manual-crate-name.rs',
+                            'tests/rustdoc/edition-doctest.rs',
+                            'tests/rustdoc/edition-flag.rs',
+                            'tests/rustdoc/elided-lifetime.rs',
+                            'tests/rustdoc/external-macro-src.rs',
+                            'tests/rustdoc/extern-html-root-url.rs',
+                            'tests/rustdoc/extern-impl-trait.rs',
+                            'tests/rustdoc/hide-unstable-trait.rs',
+                            'tests/rustdoc/inline_cross/add-docs.rs',
+                            'tests/rustdoc/inline_cross/default-trait-method.rs',
+                            'tests/rustdoc/inline_cross/dyn_trait.rs',
+                            'tests/rustdoc/inline_cross/impl_trait.rs',
+                            'tests/rustdoc/inline_cross/issue-24183.rs',
+                            'tests/rustdoc/inline_cross/macros.rs',
+                            'tests/rustdoc/inline_cross/trait-vis.rs',
+                            'tests/rustdoc/inline_cross/use_crate.rs',
+                            'tests/rustdoc/intra-doc-crate/self.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/additional_doc.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/basic.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/crate.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/hidden.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/macro.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/module.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/submodule-inner.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/submodule-outer.rs',
+                            'tests/rustdoc/intra-doc/cross-crate/traits.rs',
+                            'tests/rustdoc/intra-doc/extern-builtin-type-impl.rs',
+                            'tests/rustdoc/intra-doc/extern-crate-only-used-in-link.rs',
+                            'tests/rustdoc/intra-doc/extern-crate.rs',
+                            'tests/rustdoc/intra-doc/extern-inherent-impl.rs',
+                            'tests/rustdoc/intra-doc/extern-reference-link.rs',
+                            'tests/rustdoc/intra-doc/issue-103463.rs',
+                            'tests/rustdoc/intra-doc/issue-104145.rs',
+                            'tests/rustdoc/intra-doc/issue-66159.rs',
+                            'tests/rustdoc/intra-doc/pub-use.rs',
+                            'tests/rustdoc/intra-doc/reexport-additional-docs.rs',
+                            'tests/rustdoc/issue-18199.rs',
+                            'tests/rustdoc/issue-23106.rs',
+                            'tests/rustdoc/issue-23744.rs',
+                            'tests/rustdoc/issue-25944.rs',
+                            'tests/rustdoc/issue-30252.rs',
+                            'tests/rustdoc/issue-38129.rs',
+                            'tests/rustdoc/issue-40936.rs',
+                            'tests/rustdoc/issue-43153.rs',
+                            'tests/rustdoc/issue-46727.rs',
+                            'tests/rustdoc/issue-48377.rs',
+                            'tests/rustdoc/issue-48414.rs',
+                            'tests/rustdoc/issue-53689.rs',
+                            'tests/rustdoc/issue-54478-demo-allocator.rs',
+                            'tests/rustdoc/issue-57180.rs',
+                            'tests/rustdoc/issue-61592.rs',
+                            'tests/rustdoc/issue-73061-cross-crate-opaque-assoc-type.rs',
+                            'tests/rustdoc/issue-75588.rs',
+                            'tests/rustdoc/issue-85454.rs',
+                            'tests/rustdoc/issue-86620.rs',
+                            'tests/rustdoc-json',
+                            'tests/rustdoc-js-std',
+                            'tests/rustdoc/macro_pub_in_module.rs',
+                            'tests/rustdoc/masked.rs',
+                            'tests/rustdoc/normalize-assoc-item.rs',
+                            'tests/rustdoc/no-stack-overflow-25295.rs',
+                            'tests/rustdoc/primitive-reexport.rs',
+                            'tests/rustdoc/process-termination.rs',
+                            'tests/rustdoc/pub-extern-crate.rs',
+                            'tests/rustdoc/pub-use-extern-macros.rs',
+                            'tests/rustdoc/reexport-check.rs',
+                            'tests/rustdoc/reexport-dep-foreign-fn.rs',
+                            'tests/rustdoc/reexport-doc.rs',
+                            'tests/rustdoc/reexports-priv.rs',
+                            'tests/rustdoc/reexports.rs',
+                            'tests/rustdoc/rustc,-incoherent-impls.rs',
+                            'tests/rustdoc/test_option_check/bar.rs',
+                            'tests/rustdoc/test_option_check/test.rs',
+                            'tests/rustdoc/trait-alias-mention.rs',
+                            'tests/rustdoc/trait-visibility.rs',
+                            'tests/rustdoc-ui/cfg-test.rs',
+                            'tests/rustdoc-ui/check-cfg-test.rs',
+                            'tests/rustdoc-ui/display-output.rs',
+                            'tests/rustdoc-ui/doc-comment-multi-line-attr.rs',
+                            'tests/rustdoc-ui/doc-comment-multi-line-cfg-attr.rs',
+                            'tests/rustdoc-ui/doc-test-doctest-feature.rs',
+                            'tests/rustdoc-ui/doctest-multiline-crate-attribute.rs',
+                            'tests/rustdoc-ui/doctest-output.rs',
+                            'tests/rustdoc-ui/doc-test-rustdoc-feature.rs',
+                            'tests/rustdoc-ui/failed-doctest-compile-fail.rs',
+                            'tests/rustdoc-ui/issue-80992.rs',
+                            'tests/rustdoc-ui/issue-91134.rs',
+                            'tests/rustdoc-ui/nocapture-fail.rs',
+                            'tests/rustdoc-ui/nocapture.rs',
+                            'tests/rustdoc-ui/no-run-flag.rs',
+                            'tests/rustdoc-ui/run-directory.rs',
+                            'tests/rustdoc-ui/test-no_std.rs',
+                            'tests/rustdoc-ui/test-type.rs',
+                            'tests/rustdoc/unit-return.rs',
+                            'tests/ui/abi/stack-probes-lto.rs',
+                            'tests/ui/abi/stack-probes.rs',
+                            'tests/ui/array-slice-vec/subslice-patterns-const-eval-match.rs',
+                            'tests/ui/asm/x86_64/sym.rs',
+                            'tests/ui/associated-type-bounds/fn-apit.rs',
+                            'tests/ui/associated-type-bounds/fn-dyn-apit.rs',
+                            'tests/ui/associated-type-bounds/fn-wrap-apit.rs',
+                            'tests/ui/debuginfo/debuginfo-emit-llvm-ir-and-split-debuginfo.rs',
+                            'tests/ui/drop/dynamic-drop.rs',
+                            'tests/ui/empty_global_asm.rs',
+                            'tests/ui-fulldeps/deriving-encodable-decodable-box.rs',
+                            'tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs',
+                            'tests/ui-fulldeps/deriving-global.rs',
+                            'tests/ui-fulldeps/deriving-hygiene.rs',
+                            'tests/ui-fulldeps/dropck_tarena_sound_drop.rs',
+                            'tests/ui-fulldeps/empty-struct-braces-derive.rs',
+                            'tests/ui-fulldeps/internal-lints/bad_opt_access.rs',
+                            'tests/ui-fulldeps/internal-lints/bad_opt_access.stderr',
+                            'tests/ui-fulldeps/internal-lints/default_hash_types.rs',
+                            'tests/ui-fulldeps/internal-lints/diagnostics.rs',
+                            'tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs',
+                            'tests/ui-fulldeps/internal-lints/qualified_ty_ty_ctxt.rs',
+                            'tests/ui-fulldeps/internal-lints/query_stability.rs',
+                            'tests/ui-fulldeps/internal-lints/rustc_pass_by_value.rs',
+                            'tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs',
+                            'tests/ui-fulldeps/issue-14021.rs',
+                            'tests/ui-fulldeps/lint-group-denied-lint-allowed.rs',
+                            'tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs',
+                            'tests/ui-fulldeps/lint-pass-macros.rs',
+                            'tests/ui-fulldeps/regions-mock-tcx.rs',
+                            'tests/ui-fulldeps/rustc_encodable_hygiene.rs',
+                            'tests/ui-fulldeps/session-diagnostic/enforce_slug_naming.rs',
+                            'tests/ui/functions-closures/fn-help-with-err.rs',
+                            'tests/ui/linkage-attr/issue-10755.rs',
+                            'tests/ui/macros/restricted-shadowing-legacy.rs',
+                            'tests/ui/process/nofile-limit.rs',
+                            'tests/ui/process/process-panic-after-fork.rs',
+                            'tests/ui/process/process-sigpipe.rs',
+                            'tests/ui/simd/target-feature-mixup.rs',
+                            'tests/ui/structs-enums/multiple-reprs.rs'
+                        ]
+
+        exclude_fail_tests = " ".join([" --exclude " + item for item in exclude_list])
+        # Add exclude_fail_tests with other test arguments
+        testargs =  exclude_fail_tests + " --doc --no-fail-fast --bless"
+
         # wrap the execution with a qemu instance.
         # Tests are run with 512 tasks in parallel to execute all tests very quickly
         with runqemu("core-image-minimal", runqemuparams = "nographic", qemuparams = "-m 512") as qemu:
@@ -65,13 +282,6 @@
             rustlibpath = get_bb_var("WORKDIR", "rust")
             tmpdir = get_bb_var("TMPDIR", "rust")
 
-            # Exclude the test folders that error out while building
-            # TODO: Fix the errors and include them for testing
-            # no-fail-fast: Run all tests regardless of failure.
-            # bless: First runs rustfmt to format the codebase,
-            # then runs tidy checks.
-            testargs = "--exclude tests/rustdoc --exclude src/tools/rust-analyzer  --exclude tests/rustdoc-json  --exclude tests/run-make-fulldeps --exclude src/tools/tidy --exclude src/tools/rustdoc-themes --exclude src/rustdoc-json-types --exclude src/librustdoc --exclude src/doc/unstable-book --exclude src/doc/rustdoc --exclude src/doc/rustc --exclude compiler/rustc --exclude library/panic_abort --exclude library/panic_unwind --exclude src/tools/lint-docs  --exclude tests/rustdoc-js-std --doc --no-fail-fast --bless"
-
             # Set path for target-poky-linux-gcc, RUST_TARGET_PATH and hosttools.
             cmd = " export PATH=%s/recipe-sysroot-native/usr/bin:$PATH;" % rustlibpath
             cmd = cmd + " export TARGET_VENDOR=\"-poky\";"
@@ -81,9 +291,10 @@
             cmd = cmd + " export TEST_DEVICE_ADDR=\"%s:12345\";" % qemu.ip
             cmd = cmd + " cd %s; python3 src/bootstrap/bootstrap.py test %s --target %s > summary.txt 2>&1;" % (builddir, testargs, targetsys)
             runCmd(cmd)
+            end_time = time.time()
 
             ptestsuite = "rust"
-            self.ptest_section(ptestsuite, logfile = builddir + "/summary.txt")
+            self.ptest_section(ptestsuite, duration = int(end_time - start_time), logfile = builddir + "/summary.txt")
             filename = builddir + "/summary.txt"
             test_results = parse_results(filename)
             for test in test_results:
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
index febafdb..3fa3038 100644
--- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -691,3 +691,86 @@
         self.maxDiff = None
         self.assertCountEqual(files1, files2)
 
+class SStateFindSiginfo(SStateBase):
+    def test_sstate_compare_sigfiles_and_find_siginfo(self):
+        """
+        Test the functionality of the find_siginfo: basic function and callback in compare_sigfiles
+        """
+        self.write_config("""
+TMPDIR = \"${TOPDIR}/tmp-sstates-findsiginfo\"
+TCLIBCAPPEND = \"\"
+MACHINE = \"qemux86-64\"
+require conf/multilib.conf
+MULTILIBS = "multilib:lib32"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
+BB_SIGNATURE_HANDLER = "OEBasicHash"
+""")
+        self.track_for_cleanup(self.topdir + "/tmp-sstates-findsiginfo")
+
+        pns = ["binutils", "binutils-native", "lib32-binutils"]
+        target_configs = [
+"""
+TMPVAL1 = "tmpval1"
+TMPVAL2 = "tmpval2"
+do_tmptask1() {
+    echo ${TMPVAL1}
+}
+do_tmptask2() {
+    echo ${TMPVAL2}
+}
+addtask do_tmptask1
+addtask tmptask2 before do_tmptask1
+""",
+"""
+TMPVAL3 = "tmpval3"
+TMPVAL4 = "tmpval4"
+do_tmptask1() {
+    echo ${TMPVAL3}
+}
+do_tmptask2() {
+    echo ${TMPVAL4}
+}
+addtask do_tmptask1
+addtask tmptask2 before do_tmptask1
+"""
+        ]
+
+        for target_config in target_configs:
+            self.write_recipeinc("binutils", target_config)
+            for pn in pns:
+                bitbake("%s -c do_tmptask1 -S none" % pn)
+            self.delete_recipeinc("binutils")
+
+        with bb.tinfoil.Tinfoil() as tinfoil:
+            tinfoil.prepare(config_only=True)
+
+            def find_siginfo(pn, taskname, sigs=None):
+                result = None
+                tinfoil.set_event_mask(["bb.event.FindSigInfoResult",
+                                "bb.command.CommandCompleted"])
+                ret = tinfoil.run_command("findSigInfo", pn, taskname, sigs)
+                if ret:
+                    while True:
+                        event = tinfoil.wait_event(1)
+                        if event:
+                            if isinstance(event, bb.command.CommandCompleted):
+                                break
+                            elif isinstance(event, bb.event.FindSigInfoResult):
+                                result = event.result
+                return result
+
+            def recursecb(key, hash1, hash2):
+                nonlocal recursecb_count
+                recursecb_count += 1
+                hashes = [hash1, hash2]
+                hashfiles = find_siginfo(key, None, hashes)
+                self.assertCountEqual(hashes, hashfiles)
+                bb.siggen.compare_sigfiles(hashfiles[hash1], hashfiles[hash2], recursecb)
+
+            for pn in pns:
+                recursecb_count = 0
+                filedates = find_siginfo(pn, "do_tmptask1")
+                self.assertGreaterEqual(len(filedates), 2)
+                latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-2:]
+                bb.siggen.compare_sigfiles(latestfiles[-2], latestfiles[-1], recursecb)
+                self.assertEqual(recursecb_count,1)
diff --git a/poky/meta/lib/oeqa/utils/nfs.py b/poky/meta/lib/oeqa/utils/nfs.py
index b66ed42..903469b 100644
--- a/poky/meta/lib/oeqa/utils/nfs.py
+++ b/poky/meta/lib/oeqa/utils/nfs.py
@@ -12,7 +12,7 @@
 from oeqa.utils.network import get_free_port
 
 @contextlib.contextmanager
-def unfs_server(directory, logger = None):
+def unfs_server(directory, logger = None, udp = True):
     unfs_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "unfs3-native")
     if not os.path.exists(os.path.join(unfs_sysroot, "usr", "bin", "unfsd")):
         # build native tool
@@ -26,7 +26,7 @@
             exports.write("{0} (rw,no_root_squash,no_all_squash,insecure)\n".format(directory).encode())
 
         # find some ports for the server
-        nfsport, mountport = get_free_port(udp = True), get_free_port(udp = True)
+        nfsport, mountport = get_free_port(udp), get_free_port(udp)
 
         nenv = dict(os.environ)
         nenv['PATH'] = "{0}/sbin:{0}/usr/sbin:{0}/usr/bin:".format(unfs_sysroot) + nenv.get('PATH', '')
