 +	echo "do_configure()"
 +	# Specify any needed configure commands here
 +	rm -rf edk2
-+	git clone http://ssg-sw.cambridge.arm.com/gerrit/css/src/fw/uefi/edk2
++	git clone https://github.com/tianocore/edk2
 +	cd edk2
-+	git checkout integration
++	git checkout c0584d0bdd4463551db8f8c62a5e2936ec97b407
 +	ln -s ../SctPkg SctPkg
 +	chmod +x SctPkg/build_sbbr.sh
 +	cd ..

diff --git a/build_luvos.sh b/build_luvos.sh
new file mode 100755
index 0000000..e24f05e
--- /dev/null
+++ b/build_luvos.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+# The material contained herein is not a license, either
+# expressly or impliedly, to any intellectual property owned

 		install -m 0644 ${DEPLOY_DIR_IMAGE}/bootaa64.efi ${HDDDIR}${EFIDIR}
 	fi
 	install -m 0644 ${GRUBCFG} ${HDDDIR}${EFIDIR}
diff --git a/meta-luv/recipes-core/initscripts/initscripts/luv-collect-results b/meta-luv/recipes-core/initscripts/initscripts/luv-collect-results
new file mode 100644
index 0000000..5f4d57f
--- /dev/null
+++ b/meta-luv/recipes-core/initscripts/initscripts/luv-collect-results
@@ -0,0 +1,172 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import re
+import codecs
+
+def log_fwts(d):
+    testCategory = ""
+    testName = ""
+    testPasses = 0
+    testFails = 0
+    testSkips = 0
+    totalPasses = 0
+    totalFails = 0
+    totalSkips = 0
+
+    # Finding latest FWTS results directory.
+    directory = os.listdir(d)
+    fwtsDir = ""
+    for folder in directory:
+        if "luv-results-" in folder and folder > fwtsDir:
+            fwtsDir = folder
+
+    # Opening FWTS raw output file.
+    fwtsRawPath = os.path.join(d, fwtsDir, "raw", "fwts")
+    try:
+        fwtsRaw = open(fwtsRawPath, "r")
+    except IOError:
+        print "FWTS raw results file \"%s\" could not be opened, skipping." % fwtsRawPath
+        return -1
+
+    # Printing .MD file header for FWTS results.
+    outFile.write("# FWTS Test Results\n")
+    outFile.write("| Category | Test Case | Passes | Skips | Failures |\n")
+    outFile.write("| :--- | :--- | ---: | ---: | ---: |\n")
+
+    # Scraping FWTS output.
+    while True:
+        # Getting a line from file.
+        line = fwtsRaw.readline()
+        if line == "":
+            if testCategory != "":
+                outFile.write ("| %s | %s | %d | %d | %d |\n" % (testCategory, testName, testPasses, testSkips, testFails))
+                outFile.write ("| Total |  | %d | %d | %d |\n" % (totalPasses, totalSkips, totalFails))
+            return 0
+        line = line.rstrip()
+
+        # Checking if line is the beginning of a new test results block.
+        matchString = re.search(r"INF Test \d", line, re.M|re.I)
+        if matchString:
+            # Printing information for previous test before we move to next one.
+            if testName != "":
+                outFile.write ("| %s | %s | %d | %d | %d |\n" % (testCategory, testName, testPasses, testSkips, testFails))
+                testCategory = ""
+            currentTest = line.split()[2] + " " + line.split()[3]
+            testCategory = line.split()[0]
+            testName = line[(line.index(":") + 2):]
+            testPasses = 0
+            testFails = 0
+            testSkips = 0
+            testInfos = 0
+            while testName[len(testName) - 1] != ".":
+                line = fwtsRaw.readline().rstrip()
+                if ";INF" not in line:
+                    break
+                testName = testName + " " + line[20:]
+
+        # Checking if line is a pass/fail/skip for currentTest.
+        if "PASSED" in line and currentTest in line:
+            testPasses = testPasses + 1
+            totalPasses = totalPasses + 1
+        if "SKIPPED" in line and currentTest in line:
+            testSkips = testSkips + 1
+            totalSkips = totalSkips + 1
+        if "FAILED" in line and currentTest in line:
+            testFails = testFails + 1
+            totalFails = totalFails + 1
+
+def log_sbbr(d):
+    testCategory = ""
+    testName = ""
+    testCase = ""
+    testDescription = ""
+    testPasses = 0
+    testWarnings = 0
+    testErrors = 0
+    totalPasses = 0
+    totalWarnings = 0
+    totalErrors = 0
+
+    # Finding SCT test results.
+    sbbrDir = os.path.join(d, "SCT", "Log")
+    if os.path.isdir(sbbrDir) == False:
+        print "SBBR SCT results directory \"%s\" not found.  Skipping." % sbbrDir
+        return -1
+
+    # Printing .MD file header for SCT results.
+    outFile.write("# UEFI SBBR SCT Test Results\n")
+    outFile.write("| Category | Test File | Test Case | Description | Passes | Warnings | Errors |\n")
+    outFile.write("| :--- | :--- | :--- | :--- | ---: | ---: | ---: |\n")
+
+    # Recursively walking through SBBR results folders.
+    for dirpath, dirnames, filenames in os.walk(sbbrDir):
+        for entry in filenames:
+            if ".log" in entry:
+                path, testName = os.path.split(dirpath)
+                testName = testName.split("0")[0]
+                path, testCategory = os.path.split(path)
+                with codecs.open(os.path.join(dirpath, entry), mode="r", encoding="utf-16") as logfile:
+                    i = 1
+                    while True:
+                        line = logfile.readline()
+                        if line == "":
+                            break
+                        if i == 2:
+                            testCase = line.rstrip()
+                        if i == 11:
+                            testDescription = line.rstrip()
+                        if "Passes..........." in line:
+                            testPasses = int(line.split()[1])
+                        if "Warnings........." in line:
+                            testWarnings = int(line.split()[1])
+                        if "Errors..........." in line:
+                            testErrors = int(line.split()[1])
+                        i = i + 1
+                    outFile.write("| %s | %s | %s | %s | %d | %d | %d |\n" % (testCategory, testName, testCase, testDescription, testPasses, testWarnings, testErrors))
+                    totalPasses = totalPasses + testPasses
+                    totalWarnings = totalWarnings + testWarnings
+                    totalErrors = totalErrors + testErrors
+
+    # Print totals.
+    outFile.write("| Total | | | | %d | %d | %d |" % (totalPasses, totalWarnings, totalErrors))
+
+
+# Script entry point.
+
+# This script needs to be run on a stripped out yocto distribution so we can't use argparse.
+if "-h" in sys.argv or "--help" in sys.argv:
+    print "Usage:"
+    print " python %s [-h] LUV_RESULTS OUTPUT_FILE" % sys.argv[0]
+    print "Options:"
+    print " -h, --help              Display this help and exit."
+    print " LUV_RESULTS             Path to luv-results directory/drive."
+    print " OUTPUT_FILE             File for script output, must have .md file extension."
+    exit()
+
+arg_directory = sys.argv[1]
+arg_output = sys.argv[2]
+
+# Validating parameter and opening output file.
+filename, fileext = os.path.splitext(arg_output)
+if fileext != ".md" and fileext != ".MD":
+    print "Output file must have .md file extension. Exiting."
+    exit()
+try:
+    outFile = open(arg_output, "w")
+except IOError:
+    print "Could not open \"%s\" for writing. Exiting." % arg_output
+    exit()
+
+# Scanning FWTS.
+print "Gathering FWTS test results..."
+log_fwts(arg_directory)
+
+# Scanning SBBR.
+print "Gathering UEFI SBBR SCT test results..."
+log_sbbr(arg_directory)
+
+outFile.close()
+
+print "Done, test results can be found in \"%s\"" % arg_output
diff --git a/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager b/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager
index 326683d..0abe8c6 100644
--- a/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager
+++ b/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager
@@ -251,7 +251,8 @@ done | awk '/\[\+/  { units += 1 }
 		suites, units, passes, fails, skips, warns)
     }' | html_inline ${LUV_HTML_REPORT} | tee -a /dev/kmsg /tmp/luv.results \
          ${LUV_SAVE_RESULTS_DIR}/luv.results
-
+# collecting test results
+python /etc/luv-collect-results ${LUV_STORAGE} ${LUV_STORAGE}/results.md
 html_finish ${LUV_HTML_REPORT}
 
 mountpoint -q ${LUV_EFI}
diff --git a/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend b/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend
index 676bc81..b0d9305 100644
--- a/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend
+++ b/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend
@@ -5,7 +5,8 @@ SRC_URI += "file://luv-test-manager file://luv-test-parser \
             file://luv-netconsole \
             file://luv-netconsole-params \
             file://luv-scripts \
-            file://luv-css-styles"
+            file://luv-css-styles \
+            file://luv-collect-results"
 
 RDEPENDS_${PN}+= "kernel-modules iputils iproute2 bash init-ifupdown dhcp-client"
 
@@ -40,6 +41,9 @@ do_install_append() {
         install -d ${D}${datadir}/luv/html
         install -m 0644 ${WORKDIR}/luv-scripts ${D}${datadir}/luv/html
         install -m 0644 ${WORKDIR}/luv-css-styles ${D}${datadir}/luv/html
+
+        # Install luv-collect-results script
+        install -m 755 ${WORKDIR}/luv-collect-results ${D}${sysconfdir}/
 }
 
 FILES_${PN} += "${datadir}/luv/html/luv-scripts ${datadir}/luv/html/luv-css-styles"
diff --git a/meta-luv/recipes-kernel/linux/linux-yocto-efi-test/0005-ACPI-Console-Through-SPCR-Table.patch b/meta-luv/recipes-kernel/linux/linux-yocto-efi-test/0005-ACPI-Console-Through-SPCR-Table.patch
new file mode 100644
index 0000000..19ad9e8
