reset upstream subtrees to yocto 2.6

Reset the following subtrees on thud HEAD:

  poky: 87e3a9739d
  meta-openembedded: 6094ae18c8
  meta-security: 31dc4e7532
  meta-raspberrypi: a48743dc36
  meta-xilinx: c42016e2e6

Also re-apply backports that didn't make it into thud:
  poky:
    17726d0 systemd-systemctl-native: handle Install wildcards

  meta-openembedded:
    4321a5d libtinyxml2: update to 7.0.1
    042f0a3 libcereal: Add native and nativesdk classes
    e23284f libcereal: Allow empty package
    030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG
    179a1b9 gtest: update to 1.8.1

Squashed OpenBMC subtree compatibility updates:
  meta-aspeed:
    Brad Bishop (1):
          aspeed: add yocto 2.6 compatibility

  meta-ibm:
    Brad Bishop (1):
          ibm: prepare for yocto 2.6

  meta-ingrasys:
    Brad Bishop (1):
          ingrasys: set layer compatibility to yocto 2.6

  meta-openpower:
    Brad Bishop (1):
          openpower: set layer compatibility to yocto 2.6

  meta-phosphor:
    Brad Bishop (3):
          phosphor: set layer compatibility to thud
          phosphor: libgpg-error: drop patches
          phosphor: react to fitimage artifact rename

    Ed Tanous (4):
          Dropbear: upgrade options for latest upgrade
          yocto2.6: update openssl options
          busybox: remove upstream watchdog patch
          systemd: Rebase CONFIG_CGROUP_BPF patch

Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-xilinx/meta-xilinx-bsp/README.building.md b/meta-xilinx/meta-xilinx-bsp/README.building.md
index e0e3f26..54d61c3 100644
--- a/meta-xilinx/meta-xilinx-bsp/README.building.md
+++ b/meta-xilinx/meta-xilinx-bsp/README.building.md
@@ -11,9 +11,14 @@
 	BBLAYERS ?= " \
 		<path to layer>/oe-core/meta \
 		<path to layer>/meta-xilinx-bsp \
+		<path to layer>/meta-xilinx-standalone \
 		<path to layer>/meta-xilinx-contrib \
 		"
 
+meta-xilinx-standalone layer provides recipes which enable building baremetal
+toolchain for PMU firmware. This layer is required for ZU+ devices which
+depends on PMU firmware
+
 meta-xilinx-contrib is a contribution layer and is optional.
 
 To build a specific target BSP configure the associated machine in `local.conf`:
@@ -27,6 +32,36 @@
 Once complete the images for the target machine will be available in the output
 directory `tmp/deploy/images/<machine name>/`.
 
+Using multiconfig to build ZU+
+------------------------------
+
+multiconfig dependency has to be added in image file or local.conf.
+For example in core-image-minimal you will need  
+do_image[mcdepends] = "multiconfig:zcu102:pmu:pmu-firmware:do_deploy"
+
+Add conf/multiconfig in the build directory and create pmu.conf and zcu102.conf
+
+Add the following in pmu.conf:  
+	MACHINE="zynqmp-pmu"  
+	DISTRO="xilinx-standalone"  
+    	GCCVERSION="7.%"  
+    	TMPDIR="${TOPDIR}/pmutmp"  
+
+Add the following in zcu102.conf:  
+	MACHINE="zcu102-zynqmp"  
+    	DISTRO="poky"  
+
+In local.conf multiconfig is enabled by: BBMULTICONFIG ?= "zcu102 pmu"
+
+bitbake multiconfig:zcu102:core-image-minimal  
+
+More information about multiconfig:
+https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#dev-building-images-for-multiple-targets-using-multiple-configurations
+
+Workaround:  
+There is additional workaround required in u-boot-xlnx recipe. Add the below dependency  
+do_compile[mcdepends] = "multiconfig:zcu102:pmu:pmu-firmware:do_deploy"
+
 Additional Information
 ----------------------
 
diff --git a/meta-xilinx/meta-xilinx-bsp/classes/image-wic-utils.bbclass b/meta-xilinx/meta-xilinx-bsp/classes/image-wic-utils.bbclass
new file mode 100644
index 0000000..6f66d55
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/classes/image-wic-utils.bbclass
@@ -0,0 +1,51 @@
+# Helper/utility functions to work with the IMAGE_BOOT_FILES variable and its
+# expected behvaior with regards to the contents of the DEPLOY_DIR_IMAGE.
+#
+# The use of these functions assume that the deploy directory is populated with
+# any dependent files/etc. Such that the recipe using these functions depends
+# on the recipe that provides the files being used/queried.
+
+def boot_files_split_expand(d):
+    # IMAGE_BOOT_FILES has extra renaming info in the format '<source>;<target>'
+    for f in (d.getVar("IMAGE_BOOT_FILES") or "").split(" "):
+        parts = f.split(";", 1)
+        sources = [parts[0]]
+        if "*" in parts[0]:
+            # has glob part
+            import glob
+            deployroot = d.getVar("DEPLOY_DIR_IMAGE")
+            sources = []
+            for i in glob.glob(os.path.join(deployroot, parts[0])):
+                sources.append(os.path.basename(i))
+
+        # for all sources, yield an entry
+        for s in sources:
+            if len(parts) == 2:
+                yield s, parts[1]
+            yield s, s
+
+def boot_files_bitstream(d):
+    expectedfiles = [("bitstream", True)]
+    expectedexts = [(".bit", True), (".bin", False)]
+    # search for bitstream paths, use the renamed file. First matching is used
+    for source, target in boot_files_split_expand(d):
+        # skip boot.bin and u-boot.bin, it is not a bitstream
+        skip = ["boot.bin", "u-boot.bin"]
+        if source in skip or target in skip:
+            continue
+
+        for e, t in expectedfiles:
+            if source == e or target == e:
+                return target, t
+        for e, t in expectedexts:
+            if source.endswith(e) or target.endswith(e):
+                return target, t
+    return "", False
+
+def boot_files_dtb_filepath(d):
+    dtbs = (d.getVar("IMAGE_BOOT_FILES") or "").split(" ")
+    for source, target in boot_files_split_expand(d):
+        if target.endswith(".dtb"):
+            return target
+    return ""
+
diff --git a/meta-xilinx/meta-xilinx-bsp/classes/kernel-simpleimage.bbclass b/meta-xilinx/meta-xilinx-bsp/classes/kernel-simpleimage.bbclass
new file mode 100644
index 0000000..be70ffa
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/classes/kernel-simpleimage.bbclass
@@ -0,0 +1,22 @@
+python __anonymous () {
+    kerneltypes = set((d.getVar("KERNEL_IMAGETYPE") or "").split())
+    kerneltypes |= set((d.getVar("KERNEL_IMAGETYPES") or "").split())
+    if any(t.startswith("simpleImage.") for t in kerneltypes):
+        # Enable building of simpleImage
+        bb.build.addtask('do_prep_simpleimage', 'do_compile', 'do_configure', d)
+    uarch = d.getVar("UBOOT_ARCH")
+    if uarch == "microblaze":
+        d.appendVarFlag('do_prep_simpleimage', 'depends', ' virtual/dtb:do_populate_sysroot')
+}
+
+do_prep_simpleimage[dirs] += "${B}"
+do_prep_simpleimage () {
+    install -d ${B}/arch/${ARCH}/boot/dts
+    for type in ${KERNEL_IMAGETYPES} ; do
+        if [[ "${type}" =~ "simpleImage" ]] && [ ${ARCH} = "microblaze" ]; then
+            ext="${type##*.}"
+            cp ${RECIPE_SYSROOT}/boot/devicetree/${ext}.dtb ${B}/arch/${ARCH}/boot/dts/
+        fi
+    done
+}
+
diff --git a/meta-xilinx/meta-xilinx-bsp/classes/xilinx-testimage.bbclass b/meta-xilinx/meta-xilinx-bsp/classes/xilinx-testimage.bbclass
new file mode 100644
index 0000000..d9086ec
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/classes/xilinx-testimage.bbclass
@@ -0,0 +1,9 @@
+inherit testimage
+
+HOSTTOOLS += 'ip ping ps scp ssh stty'
+
+python do_testimage_prepend () {
+    from oeqa.core.target.qemu import supported_fstypes
+    supported_fstypes.append('wic.qemu-sd')
+}
+
diff --git a/meta-xilinx/meta-xilinx-bsp/classes/zynqmp-pmu.bbclass b/meta-xilinx/meta-xilinx-bsp/classes/zynqmp-pmu.bbclass
deleted file mode 100644
index 714eb96..0000000
--- a/meta-xilinx/meta-xilinx-bsp/classes/zynqmp-pmu.bbclass
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# This class handles configuring a recipe to build for the ZynqMP PMU
-# architecture. The reason for this class is due to limitations of multilib
-# with regards to multiple architectures (which do not work correctly).
-#
-# This class is specifically intended to extend the binutils-cross, gcc-cross,
-# newlib, libgloss and pmu-firmware recipes so that binaries can be emitted
-# which target the PMU architecture alongside building for the APU architecture
-# (ARM64). But the class can be applied globally via BBCLASSEXTEND in for
-# example a <machine>.conf.
-#
-# This class is almost the same as a multilib variant with custom TUNE_* setup
-# to allow for a switched TUNE_ARCH.
-#
-
-ORIG_TARGET_ARCH := "${TARGET_ARCH}"
-
-# zynqmp-pmu target arch (hardcoded based on pre-gen data from arch-microblaze.inc)
-DEFAULTTUNE = "microblaze"
-ABIEXTENSION = ""
-TUNE_ARCH = "microblazeel"
-#TUNE_FEATURES_tune-microblaze += "v9.2 barrel-shift pattern-compare"
-TUNE_CCARGS = "-mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mno-xl-reorder -mcpu=v9.2 -mxl-soft-mul -mxl-soft-div"
-TUNE_LDARGS = ""
-TUNE_ASARGS = ""
-TUNE_PKGARCH = "microblazeel-v9.2-bs-cmp"
-TARGET_OS = "elf"
-TARGET_FPU = "fpu-soft"
-
-# rebuild the MACHINE overrides
-MACHINEOVERRIDES = "${MACHINE}${@':${SOC_FAMILY}' if d.getVar('SOC_FAMILY') else ''}:microblaze"
-
-# override tune provided archs
-PACKAGE_EXTRA_ARCHS = "${TUNE_PKGARCH}"
-
-# baremetal equivalent config (note the tclibc is not included, this is purely
-# for recipes/etc that check for the value)
-TCLIBC = "baremetal"
-LIBCEXTENSION = ""
-LIBCOVERRIDE = ":libc-baremetal"
-USE_NLS = "no"
-IMAGE_LINGUAS = ""
-LIBC_DEPENDENCIES = ""
-
-# gcc-cross specific baremetal setup (due to the override order this is important)
-EXTRA_OECONF_pn-${MLPREFIX}gcc-cross-${TARGET_ARCH}_append = " --without-headers"
-
-EXTRA_OECONF_GCC_FLOAT = ""
-
-# Setup a multiarch like prefix.
-prefix = "/usr/${TARGET_SYS}"
-# Make sure GCC can search in the prefix dir (for libgcc)
-TOOLCHAIN_OPTIONS += "-B${RECIPE_SYSROOT}${includedir}/ -B${RECIPE_SYSROOT}${libdir}/"
-TOOLCHAIN_OPTIONS += "-I =${includedir} -L =${libdir}"
-
-python multitarget_zynqmp_pmu_virtclass_handler () {
-    variant = "zynqmp-pmu"
-    pn = d.getVar("PN")
-    if not (pn.startswith(variant + "-") or pn.endswith("-" + variant)):
-        return
-
-    if bb.data.inherits_class('native', e.data) or bb.data.inherits_class('nativesdk', e.data) or bb.data.inherits_class('crosssdk', e.data):
-        raise bb.parse.SkipPackage("Can't extend native/nativesdk/crosssdk recipes")
-
-    initialpn = e.data.getVar("PN").replace("-" + variant, "").replace(variant + "-", "")
-    e.data.setVar("MLPREFIX", variant + "-")
-    e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-" + variant)
-
-    # hide multilib variants, this class is not one but this works around recipes thinking it is (due to MLPREFIX).
-    e.data.setVar("MULTILIB_VARIANTS", "")
-
-    # work around for -cross recipes that embed the TARGET_ARCH value
-    if bb.data.inherits_class('cross', e.data):
-        if initialpn.endswith("-" + d.getVar("ORIG_TARGET_ARCH")):
-            initialpn = initialpn.replace("-" + d.getVar("ORIG_TARGET_ARCH"), "-" + d.getVar("TARGET_ARCH"))
-
-    e.data.setVar("PN", variant + "-" + initialpn)
-}
-
-addhandler multitarget_zynqmp_pmu_virtclass_handler
-multitarget_zynqmp_pmu_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
-
-python () {
-    variant = "zynqmp-pmu"
-    pn = d.getVar("PN")
-    if not pn.startswith(variant + "-"):
-        return
-
-    if pn.endswith("gcc-cross-" + d.getVar("TARGET_ARCH")):
-        # work around, DEPENDS _remove being immediate in gcc-cross
-        d.setVar("DEPENDS_remove", "virtual/%slibc-for-gcc" % d.getVar("TARGET_PREFIX"))
-
-    if pn.endswith("libgcc"):
-        # work around, strip depends on libc via do_package* tasks (this class cannot set ASSUME_PROVIDED += libc)
-        for i in ["do_package", "do_package_write_ipk", "do_package_write_deb", "do_package_write_rpm"]:
-            sanitized = " ".join([dep for dep in d.getVarFlag(i, "depends").split() if not dep.startswith("virtual/%s-libc" % variant)])
-            d.setVarFlag(i, "depends", sanitized)
-
-    import oe.classextend
-
-    clsextend = oe.classextend.ClassExtender(variant, d)
-
-    clsextend.map_depends_variable("DEPENDS")
-    clsextend.map_variable("PROVIDES")
-
-    clsextend.rename_packages()
-    clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
-
-    clsextend.map_packagevars()
-    clsextend.map_regexp_variable("PACKAGES_DYNAMIC")
-    clsextend.map_variable("PACKAGE_INSTALL")
-}
-
-# microblaze elf insane definitions not currently in insane.bbclass
-PACKAGEQA_EXTRA_MACHDEFFUNCS += "package_qa_get_machine_dict_microblazeelf"
-def package_qa_get_machine_dict_microblazeelf(machdata, d):
-    machdata["elf"] =  {
-                        "microblaze":  (189,   0,    0,          False,         32),
-                        "microblazeeb":(189,   0,    0,          False,         32),
-                        "microblazeel":(189,   0,    0,          True,          32),
-                      }
-    return machdata
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/layer.conf b/meta-xilinx/meta-xilinx-bsp/conf/layer.conf
index 55f6680..fc51165 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/layer.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/layer.conf
@@ -11,5 +11,5 @@
 
 LAYERDEPENDS_xilinx = "core"
 
-LAYERSERIES_COMPAT_xilinx = "sumo"
+LAYERSERIES_COMPAT_xilinx = "sumo thud"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc
index ba9a36b..17041e4 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc
@@ -2,5 +2,3 @@
 
 EXTRA_IMAGEDEPENDS += "virtual/bootloader"
 
-IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} ${UBOOT_BINARY}"
-
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc
index 77fbec8..153a47f 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc
@@ -25,6 +25,14 @@
 UBOOT_ELF ?= "u-boot"
 UBOOT_ELF_aarch64 ?= "u-boot.elf"
 
+#Hardware accelaration
+PREFERRED_PROVIDER_virtual/libgles1_mali400 = "libmali-xlnx"
+PREFERRED_PROVIDER_virtual/libgles2_mali400 = "libmali-xlnx"
+PREFERRED_PROVIDER_virtual/egl_mali400 = "libmali-xlnx"
+PREFERRED_PROVIDER_virtual/libgl_mali400 = "mesa-gl"
+PREFERRED_PROVIDER_virtual/mesa_mali400 = "mesa-gl"
+
+
 XSERVER ?= " \
 	xserver-xorg \
 	xf86-input-evdev \
@@ -34,6 +42,35 @@
 	${XSERVER_EXT} \
 	"
 
+IMAGE_BOOT_FILES ?= "${@get_default_image_boot_files(d)}"
+
+def get_default_image_boot_files(d):
+    files = []
+
+    # kernel images
+    kerneltypes = set((d.getVar("KERNEL_IMAGETYPE") or "").split())
+    kerneltypes |= set((d.getVar("KERNEL_IMAGETYPES") or "").split())
+    for i in kerneltypes:
+        files.append(i)
+
+    # u-boot image
+    if d.getVar("UBOOT_BINARY"):
+        files.append(d.getVar("UBOOT_BINARY"))
+
+    # device trees (device-tree only), these are first as they are likely desired over the kernel ones
+    if "device-tree" in (d.getVar("MACHINE_ESSENTIAL_EXTRA_RDEPENDS") or ""):
+        files.append("devicetree/*.dtb")
+
+
+    # device trees (kernel only)
+    if d.getVar("KERNEL_DEVICETREE"):
+        dtbs = d.getVar("KERNEL_DEVICETREE").split(" ")
+        dtbs = [os.path.basename(d) for d in dtbs]
+        for dtb in dtbs:
+            files.append(dtb)
+
+    return " ".join(files)
+
 XSERVER_EXT ?= ""
 XSERVER_EXT_zynqmp ?= "xf86-video-armsoc"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc
index dd275f3..5eb4b5c 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc
@@ -8,15 +8,11 @@
     if d.getVar("IMAGE_BOOT_FILES", True):
         dtbs = d.getVar("IMAGE_BOOT_FILES", True).split(" ")
         # IMAGE_BOOT_FILES has extra renaming info in the format '<source>;<target>'
+        # Note: Wildcard sources work here only because runqemu expands them at run time
         dtbs = [f.split(";")[0] for f in dtbs]
         dtbs = [f for f in dtbs if f.endswith(".dtb")]
         if len(dtbs) != 0:
             return dtbs[0]
-    if d.getVar("KERNEL_DEVICETREE", True):
-        dtbs = d.getVar("KERNEL_DEVICETREE", True).split(" ")
-        dtbs = [os.path.basename(d) for d in dtbs]
-        if len(dtbs) != 0:
-            return d.getVar("KERNEL_IMAGETYPE", True) + "-" + dtbs[0]
     return ""
 
 def qemu_default_serial(d):
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-versal.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-versal.inc
new file mode 100644
index 0000000..83acf6e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-versal.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "aarch64"
+SOC_FAMILY ?= "versal"
+
+# Available SOC_VARIANT's for versal:
+# virt
+
+SOC_VARIANT ?= ""
+
+require conf/machine/include/arm/arch-armv8.inc
+require conf/machine/include/soc-family.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "Image"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc
deleted file mode 100644
index fd9e980..0000000
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Enable the use of zynqmp-pmu for specific recipes only
-def zynqmp_pmu_enable_for_bpns(d):
-    bpn = d.getVar("BPN")
-    crossbpns = ["binutils", "gcc"]
-    targetbpns = ["libgcc", "newlib", "libgloss"]
-    if bpn in targetbpns:
-        return True
-    if bpn in crossbpns and bb.data.inherits_class('cross', d):
-        return True
-    return False
-
-BBCLASSEXTEND_append = "${@' zynqmp-pmu' if zynqmp_pmu_enable_for_bpns(d) else ''}"
-
-# Add the pkgarch to the extra list, this is done to avoid warnings about
-# missing manifests due to implicit dependency chains on populate_sysroot when
-# a recipe/task depends on a IMAGE_EXTRADEPENDS/do_deploy task which is
-# provided by a zynqmp-pmu-* target.
-PACKAGE_EXTRA_ARCHS_append = " microblazeel-v9.2-bs-cmp"
-
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
index b777c24..73ff40f 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
@@ -5,7 +5,6 @@
 
 require conf/machine/include/tune-microblaze.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 TUNE_FEATURES_tune-microblaze += "v10.0 barrel-shift reorder pattern-compare multiply-high divide-hard"
 
@@ -20,6 +19,6 @@
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
 
-EXTRA_IMAGEDEPENDS += "virtual/bitstream"
+EXTRA_IMAGEDEPENDS += "virtual/bitstream virtual/bootloader"
 
 UBOOT_MACHINE ?= "microblaze-generic_config"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
index 9cc97ec..8869424 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
@@ -7,27 +7,26 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
 UBOOT_MACHINE = "zynq_microzed_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
 
-MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+KERNEL_DEVICETREE = "zynq-microzed.dtb"
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
-		${MACHINE}.dtb \
 		uEnv.txt \
 		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
index 8762832..911bf90 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
@@ -11,18 +11,18 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
 UBOOT_MACHINE = "zynq_picozed_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
@@ -31,7 +31,6 @@
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
-		${MACHINE}.dtb \
 		uEnv.txt \
 		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
index 2c86edb..9725104 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
@@ -14,7 +14,6 @@
 SERIAL_CONSOLE = "115200 ttyPS0"
 
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
-IMAGE_BOOT_FILES += "${MACHINE}.dtb"
 
 # Use the networking setup from qemuarm
 FILESOVERRIDES_append_pn-init-ifupdown = ":qemuarm"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
index 9b08d1b..fbd58a6 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
@@ -13,25 +13,28 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
 # u-boot configuration
 UBOOT_MACHINE = "zynq_zc702_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zc702.dtb"
 
-IMAGE_BOOT_FILES += "boot.bin uEnv.txt ${KERNEL_IMAGETYPE}-zynq-zc702.dtb"
+IMAGE_BOOT_FILES += " \
+		boot.bin \
+		uEnv.txt \
+		"
 
 # Although not fully supported you can run this machine on the mainline QEMU 'xilinx-zynq-a9' machine
 IMAGE_CLASSES += "qemuboot"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
index 628d404..741ef5d 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
@@ -14,18 +14,18 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost usbgadget"
 
 # u-boot configuration
 UBOOT_MACHINE = "zynq_zc706_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
@@ -34,7 +34,6 @@
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
-		${KERNEL_IMAGETYPE}-zynq-zc706.dtb \
 		uEnv.txt \
 		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
index d7f19ca..fba55a3 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
@@ -7,14 +7,12 @@
 require conf/machine/include/tune-zynqmp.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 require conf/machine/include/machine-xilinx-qemu.inc
-include conf/machine/include/zynqmp-pmu-config.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
 UBOOT_MACHINE = "xilinx_zynqmp_zcu102_rev1_0_defconfig"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 # Default SD image build onfiguration, use qemu-sd to pad
 IMAGE_CLASSES += "image-types-xilinx-qemu"
@@ -28,23 +26,25 @@
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-PREFERRED_PROVIDER_virtual/pmu-firmware ?= "zynqmp-pmu-pmu-firmware"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		arm-trusted-firmware \
 		qemu-devicetrees \
-		virtual/pmu-firmware \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
-IMAGE_BOOT_FILES += "uEnv.txt atf-uboot.ub ${KERNEL_IMAGETYPE}-zynqmp-zcu102-rev1.0.dtb"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		"
 
 # This machine has a QEMU model, runqemu setup:
 IMAGE_CLASSES += "qemuboot-xilinx"
 QB_MACHINE = "-machine xlnx-zcu102"
 QB_MEM = "-m 4096"
-QB_OPT_APPEND = "-nographic -serial mon:stdio -serial null"
+QB_OPT_APPEND ?= "-nographic -serial mon:stdio -serial null"
 QB_NETWORK_DEVICE = "-net nic -net nic -net nic -net nic,netdev=net0,macaddr=@MAC@"
 
 # Use qemu-xilinx instead of mainline
@@ -68,14 +68,18 @@
 
 # PMU instance args
 PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
+PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
+PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
+
 QB_PMU_OPT = " \
 		-M microblaze-fdt \
 		-display none \
 		-hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/zynqmp-pmu.dtb \
 		-kernel ${PMU_ROM} \
-		-device loader,file=${DEPLOY_DIR_IMAGE}/pmu-firmware-${MACHINE}.elf \
+		-device loader,file=${PMU_FIRMWARE_DEPLOY_DIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf \
 		-device loader,addr=0xfd1a0074,data=0x1011003,data-len=4 \
 		-device loader,addr=0xfd1a007C,data=0x1010f03,data-len=4 \
 		"
 QB_OPT_APPEND_append_qemuboot-xilinx = " -pmu-args '${QB_PMU_OPT}'"
 
+do_write_qemuboot_conf[depends] += "u-boot-zynq-uenv:do_deploy"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
index f5a2af9..c4b4a03 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
@@ -8,13 +8,11 @@
 require conf/machine/include/tune-zynqmp.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
-include conf/machine/include/zynqmp-pmu-config.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
 UBOOT_MACHINE = "xilinx_zynqmp_zcu104_revC_defconfig"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 SERIAL_CONSOLE ?= "115200 ttyPS0"
 
@@ -24,15 +22,20 @@
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-PREFERRED_PROVIDER_virtual/pmu-firmware ?= "zynqmp-pmu-pmu-firmware"
+
+PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
+PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		arm-trusted-firmware \
-		virtual/pmu-firmware \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
-IMAGE_BOOT_FILES += "uEnv.txt atf-uboot.ub ${KERNEL_IMAGETYPE}-zynqmp-zcu104-revC.dtb"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		"
 
 MACHINE_HWCODECS = "libomxil-xlnx"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
index 628ec6c..136efb9 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
@@ -7,13 +7,11 @@
 require conf/machine/include/tune-zynqmp.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
-include conf/machine/include/zynqmp-pmu-config.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
 UBOOT_MACHINE = "xilinx_zynqmp_zcu106_revA_defconfig"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
@@ -22,15 +20,20 @@
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-PREFERRED_PROVIDER_virtual/pmu-firmware ?= "zynqmp-pmu-pmu-firmware"
+
+PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
+PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		arm-trusted-firmware \
-		virtual/pmu-firmware \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
-IMAGE_BOOT_FILES += "uEnv.txt atf-uboot.ub ${KERNEL_IMAGETYPE}-zynqmp-zcu106-revA.dtb"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		"
 
 MACHINE_HWCODECS = "libomxil-xlnx"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
index a329074..36c51b7 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
@@ -13,20 +13,23 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 # u-boot configuration
 UBOOT_MACHINE = "zynq_zed_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zed.dtb"
 
-IMAGE_BOOT_FILES += "boot.bin uEnv.txt ${KERNEL_IMAGETYPE}-zynq-zed.dtb"
+IMAGE_BOOT_FILES += " \
+		boot.bin \
+		uEnv.txt \
+		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf
index 27b6d07..ba355d5 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf
@@ -10,7 +10,6 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
@@ -21,18 +20,18 @@
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
 
 UBOOT_MACHINE = "zynq_zybo_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 FORCE_PLATFORM_INIT = "1"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bitstream \
+		virtual/bootloader \
 		"
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
-		${MACHINE}.dtb \
 		bitstream \
 		uEnv.txt \
 		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
index 5b40563..049add9 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
@@ -11,18 +11,18 @@
 require conf/machine/include/tune-zynq.inc
 require conf/machine/include/machine-xilinx-overrides.inc
 require conf/machine/include/machine-xilinx-default.inc
-require conf/machine/include/machine-xilinx-board.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
 UBOOT_MACHINE = "zynq_zybo_config"
-SPL_BINARY = "spl/boot.bin"
+SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
+		virtual/bootloader \
 		"
 
 SERIAL_CONSOLE = "115200 ttyPS0"
@@ -31,7 +31,6 @@
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
-		${KERNEL_IMAGETYPE}-zynq-zybo.dtb \
 		uEnv.txt \
 		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
index 02bbc73..d64fad9 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
@@ -1,7 +1,7 @@
 DESCRIPTION = "ARM Trusted Firmware"
 
 LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://license.rst;md5=33065335ea03d977d0569f270b39603e"
+LIC_FILES_CHKSUM = "file://license.rst;md5=e927e02bca647e14efd87e9e914b2443"
 
 PROVIDES = "virtual/arm-trusted-firmware"
 
@@ -28,6 +28,7 @@
 COMPATIBLE_MACHINE = "zynqmp"
 PLATFORM_zynqmp = "zynqmp"
 
+
 # requires CROSS_COMPILE set by hand as there is no configure script
 export CROSS_COMPILE="${TARGET_PREFIX}"
 
@@ -37,8 +38,23 @@
 AS[unexport] = "1"
 LD[unexport] = "1"
 
+ATF_CONSOLE ?= ""
+ATF_CONSOLE_zynqmp = "cadence"
+
+DEBUG ?= ""
+EXTRA_OEMAKE_zynqmp_append = "${@' ZYNQMP_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
+EXTRA_OEMAKE_append = " ${@bb.utils.contains('DEBUG', '1', ' DEBUG=${DEBUG}', '', d)}"
+
+OUTPUT_DIR = "${@bb.utils.contains('DEBUG', '1', '${B}/${PLATFORM}/debug', '${B}/${PLATFORM}/release', d)}"
+
+ATF_MEM_BASE ?= ""
+ATF_MEM_SIZE ?= ""
+
+EXTRA_OEMAKE_zynqmp_append = "${@' ZYNQMP_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}"
+EXTRA_OEMAKE_zynqmp_append = "${@' ZYNQMP_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}"
+
 do_configure() {
-	:
+	oe_runmake clean -C ${S} BUILD_BASE=${B} PLAT=${PLATFORM}
 }
 
 do_compile() {
@@ -49,8 +65,6 @@
 	:
 }
 
-OUTPUT_DIR = "${B}/${PLATFORM}/release"
-
 do_deploy() {
 	install -d ${DEPLOYDIR}
 	install -m 0644 ${OUTPUT_DIR}/bl31/bl31.elf ${DEPLOYDIR}/${ATF_BASE_NAME}.elf
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.1.bb
deleted file mode 100644
index 6a9eea6..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.1.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-ATF_VERSION = "1.4"
-XILINX_RELEASE_VERSION = "v2018.1"
-BRANCH ?= "master"
-SRCREV ?= "df4a7e97d57494c7d79de51b1e0e450d982cea98"
-
-include arm-trusted-firmware.inc
-
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.3.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.3.bb
new file mode 100644
index 0000000..8c8a5d0
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2018.3.bb
@@ -0,0 +1,7 @@
+ATF_VERSION = "1.5"
+XILINX_RELEASE_VERSION = "v2018.3"
+BRANCH ?= "master"
+SRCREV ?= "08560c36ea5b6f48b962cb4bd9a79b35bb3d95ce"
+
+include arm-trusted-firmware.inc
+
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb
index dc49cbb..81965c1 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb
@@ -1,85 +1,39 @@
-SUMMARY = "Device Trees for BSPs"
-DESCRIPTION = "Device Tree generation and packaging for BSP Device Trees."
+SUMMARY = "Xilinx BSP device trees"
+DESCRIPTION = "Xilinx BSP device trees from within layer."
 SECTION = "bsp"
 
+# the device trees from within the layer are licensed as MIT, kernel includes are GPL
 LICENSE = "MIT & GPLv2"
 LIC_FILES_CHKSUM = " \
 		file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \
 		file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
 		"
 
-inherit deploy kernel-arch
+inherit devicetree
 
 PROVIDES = "virtual/dtb"
 
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS += "dtc-native"
+# common zynq include
+SRC_URI_append_zynq = " file://zynq-7000-qspi-dummy.dtsi"
 
-COMPATIBLE_MACHINE ?= "^$"
+# device tree sources for the various machines
+COMPATIBLE_MACHINE_picozed-zynq7 = ".*"
+SRC_URI_append_picozed-zynq7 = " file://picozed-zynq7.dts"
 
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE_qemu-zynq7 = ".*"
+SRC_URI_append_qemu-zynq7 = " file://qemu-zynq7.dts"
 
-FILES_${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo"
-
-S = "${WORKDIR}"
-B = "${WORKDIR}/build"
-
-SYSROOT_DIRS += "/boot/devicetree"
-
-# By default provide the current kernel arch's boot/dts and boot/dts/include.
-KERNEL_DTS_INCLUDE ??= " \
-		${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts \
-		${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/include \
-		"
-# For arm64/zynqmp the xilinx specific includes are subdired under a vendor directory.
-KERNEL_DTS_INCLUDE_append_zynqmp = " \
-		${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/xilinx \
+COMPATIBLE_MACHINE_zybo-linux-bd-zynq7 = ".*"
+SRC_URI_append_zybo-linux-bd-zynq7 = " \
+		file://zybo-linux-bd-zynq7.dts \
+		file://pcw.dtsi \
+		file://pl.dtsi \
 		"
 
-DTS_FILES_PATH ?= "${S}"
-DTS_INCLUDE ?= "${DTS_FILES_PATH} ${KERNEL_DTS_INCLUDE}"
-
-DT_PADDING_SIZE ?= "0x3000"
-DEVICETREE_FLAGS ?= " \
-		-R 8 -p ${DT_PADDING_SIZE} -b 0 \
-		${@' '.join(['-i %s' % i for i in d.getVar('DTS_INCLUDE', True).split()])} \
-               "
-DEVICETREE_OFLAGS ?= "-@ -H epapr"
-DEVICETREE_PP_FLAGS ?= " \
-		-nostdinc -Ulinux -x assembler-with-cpp \
-		${@' '.join(['-I%s' % i for i in d.getVar('DTS_INCLUDE', True).split()])} \
+COMPATIBLE_MACHINE_kc705-microblazeel = ".*"
+SRC_URI_append_kc705-microblazeel = " \
+		file://kc705-microblazeel.dts \
+		file://pl.dtsi \
+		file://system-conf.dtsi \
 		"
 
-python () {
-    # auto add dependency on kernel tree
-    if d.getVar("KERNEL_DTS_INCLUDE") != "":
-        d.appendVarFlag("do_compile", "depends", " virtual/kernel:do_configure")
-}
-
-do_compile() {
-	for DTS_FILE in ${DTS_FILES_PATH}/*.dts; do
-		DTS_NAME=`basename -s .dts ${DTS_FILE}`
-		${BUILD_CPP} ${DEVICETREE_PP_FLAGS} -o `basename ${DTS_FILE}`.pp ${DTS_FILE}
-
-		# for now use the existance of the '/plugin/' tag to detect overlays
-		if grep -qse "/plugin/;" `basename ${DTS_FILE}`.pp; then
-			dtc ${DEVICETREE_OFLAGS} -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtbo `basename ${DTS_FILE}`.pp
-		else
-			dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtb `basename ${DTS_FILE}`.pp
-		fi
-	done
-}
-
-do_install() {
-	for DTB_FILE in `ls *.dtb *.dtbo`; do
-		install -Dm 0644 ${B}/${DTB_FILE} ${D}/boot/devicetree/${DTB_FILE}
-	done
-}
-
-do_deploy() {
-	for DTB_FILE in `ls *.dtb *.dtbo`; do
-		install -Dm 0644 ${B}/${DTB_FILE} ${DEPLOYDIR}/${DTB_FILE}
-	done
-}
-addtask deploy before do_build after do_install
-
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend
deleted file mode 100644
index e128e0e..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend
+++ /dev/null
@@ -1,30 +0,0 @@
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-# common zynq include
-SRC_URI_append_zynq = " file://zynq-7000-qspi-dummy.dtsi"
-
-# device tree sources for the various machines
-COMPATIBLE_MACHINE_picozed-zynq7 = ".*"
-SRC_URI_append_picozed-zynq7 = " file://picozed-zynq7.dts"
-
-COMPATIBLE_MACHINE_microzed-zynq7 = ".*"
-SRC_URI_append_microzed-zynq7 = " file://microzed-zynq7.dts"
-
-COMPATIBLE_MACHINE_qemu-zynq7 = ".*"
-SRC_URI_append_qemu-zynq7 = " file://qemu-zynq7.dts"
-
-COMPATIBLE_MACHINE_zybo-linux-bd-zynq7 = ".*"
-SRC_URI_append_zybo-linux-bd-zynq7 = " \
-		file://zybo-linux-bd-zynq7.dts \
-		file://pcw.dtsi \
-		file://pl.dtsi \
-		"
-
-COMPATIBLE_MACHINE_kc705-microblazeel = ".*"
-SRC_URI_append_kc705-microblazeel = " \
-		file://kc705-microblazeel.dts \
-		file://pl.dtsi \
-		file://system-conf.dtsi \
-		"
-
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/files/microzed-zynq7.dts b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/files/microzed-zynq7.dts
deleted file mode 100644
index b9376a4..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/files/microzed-zynq7.dts
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2011 - 2014 Xilinx
- * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-/dts-v1/;
-/include/ "zynq-7000.dtsi"
-
-/ {
-	model = "Zynq MicroZED Development Board";
-	compatible = "xlnx,zynq-microzed", "xlnx,zynq-7000";
-
-	aliases {
-		ethernet0 = &gem0;
-		serial0 = &uart1;
-	};
-
-	memory {
-		device_type = "memory";
-		reg = <0x0 0x40000000>;
-	};
-
-	chosen {
-		bootargs = "earlycon";
-		stdout-path = "serial0:115200n8";
-	};
-
-	usb_phy0: phy0 {
-		compatible = "usb-nop-xceiv";
-		#phy-cells = <0>;
-	};
-};
-
-&clkc {
-	ps-clk-frequency = <33333333>;
-};
-
-&gem0 {
-	status = "okay";
-	phy-mode = "rgmii-id";
-	phy-handle = <&ethernet_phy>;
-
-	ethernet_phy: ethernet-phy@0 {
-		reg = <0>;
-	};
-};
-
-&sdhci0 {
-	status = "okay";
-};
-
-&uart1 {
-	status = "okay";
-};
-
-&usb0 {
-	status = "okay";
-	dr_mode = "host";
-	usb-phy = <&usb_phy0>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_usb0_default>;
-};
-
-&pinctrl0 {
-	pinctrl_usb0_default: usb0-default {
-		mux {
-			groups = "usb0_0_grp";
-			function = "usb0";
-		};
-
-		conf {
-			groups = "usb0_0_grp";
-			slew-rate = <0>;
-			io-standard = <1>;
-		};
-
-		conf-rx {
-			pins = "MIO29", "MIO31", "MIO36";
-			bias-high-impedance;
-		};
-
-		conf-tx {
-			pins = "MIO28", "MIO30", "MIO32", "MIO33", "MIO34",
-			       "MIO35", "MIO37", "MIO38", "MIO39";
-			bias-disable;
-		};
-	};
-};
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/pmu-firmware/pmu-firmware_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/pmu-firmware/pmu-firmware_2018.1.bb
deleted file mode 100644
index e54e103..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/pmu-firmware/pmu-firmware_2018.1.bb
+++ /dev/null
@@ -1,99 +0,0 @@
-SUMMARY = "Firmware for the PMU on the ZynqMP Programmable Silicon"
-HOMEPAGE = "https://github.com/Xilinx/embeddedsw"
-SECTION = "bsp"
-
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc newlib libgloss libgcc"
-
-# force this recipe to provide a target virtual/pmu-firmware. this is applied
-# after any class extender mapping and results in this recipe always providing
-# 'virtual/pmu-firmware'.
-python append_target_provides () {
-    d.appendVar("PROVIDES", " virtual/pmu-firmware")
-}
-addhandler append_target_provides
-append_target_provides[eventmask] = "bb.event.RecipeParsed"
-
-# This source links in a number of components with differing licenses, and some
-# licenses are not Open Source compatible. Additionally the pmu-firmware source
-# itself is licensed under a modified MIT license which restricts use to Xilinx
-# devices only.
-LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=04841c5ad8409b474da7180de5391926"
-
-inherit deploy
-
-XILINX_RELEASE_VERSION = "v2018.1"
-SRCREV = "aaa566bc3fa19255de4d434ebfa57ae3a9d261b2"
-PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
-
-SRC_URI = "git://github.com/Xilinx/embeddedsw.git;protocol=https;nobranch=1"
-
-COMPATIBLE_HOST = "microblaze.*-elf"
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE_zynqmp = "zynqmp"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-S = "${WORKDIR}/git/lib/sw_apps/zynqmp_pmufw/src"
-
-# The makefile does not handle parallelization
-PARALLEL_MAKE = ""
-
-do_configure() {
-	# manually do the copy_bsp step first, so as to be able to fix up use of
-	# mb-* commands
-	${S}/../misc/copy_bsp.sh
-}
-
-COMPILER = "${CC}"
-COMPILER_FLAGS = "-O2 -c"
-EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects"
-ARCHIVER = "${AR}"
-
-# HACK: fix the dirty bug where xilsecure wants to call this PSVersion
-# function, which is not implemented for microblaze. The symbols never make it
-# into the final elf as the xilsecure function that uses it is not called in
-# pmufw.
-EXTRA_COMPILER_FLAGS_append = " -DXGetPSVersion_Info=atexit"
-
-BSP_DIR ?= "${S}/../misc/zynqmp_pmufw_bsp"
-BSP_TARGETS_DIR ?= "${BSP_DIR}/psu_pmu_0/libsrc"
-
-def bsp_make_vars(d):
-    s = ["COMPILER", "CC", "COMPILER_FLAGS", "EXTRA_COMPILER_FLAGS", "ARCHIVER", "AR", "AS"]
-    return " ".join(["\"%s=%s\"" % (v, d.getVar(v)) for v in s])
-
-do_compile() {
-	# the Makefile in ${S}/../misc/Makefile, does not handle CC, AR, AS, etc
-	# properly. So do its job manually. Preparing the includes first, then libs.
-	for i in $(ls ${BSP_TARGETS_DIR}/*/src/Makefile); do
-		oe_runmake -C $(dirname $i) -s include ${@bsp_make_vars(d)}
-	done
-	for i in $(ls ${BSP_TARGETS_DIR}/*/src/Makefile); do
-		oe_runmake -C $(dirname $i) -s libs ${@bsp_make_vars(d)}
-	done
-
-	# --build-id=none is required due to linker script not defining a location for it.
-	oe_runmake CC="${CC}" CC_FLAGS="-MMD -MP -Wl,--build-id=none"
-}
-
-do_install() {
-	:
-}
-
-PMU_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
-
-do_deploy() {
-	install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
-	ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
-	ln -sf ${BPN}-${MACHINE}.elf ${DEPLOYDIR}/pmu-${MACHINE}.elf
-	${OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
-	install -m 0644 ${B}/executable.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
-	ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
-	ln -sf ${BPN}-${MACHINE}.bin ${DEPLOYDIR}/pmu-${MACHINE}.bin
-}
-addtask deploy before do_build after do_install
-
-BBCLASSEXTEND = "zynqmp-pmu"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.3.bb
similarity index 90%
rename from meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.1.bb
rename to meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.3.bb
index 0b6ca20..6a2ca7c 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.1.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2018.3.bb
@@ -16,8 +16,8 @@
 BSP_NAME = "xilinx-kc705"
 BSP_FILE = "${BSP_NAME}-v${PV}-final.bsp"
 SRC_URI = "https://www.xilinx.com/member/forms/download/xef.html?filename=${BSP_FILE};downloadfilename=${BSP_FILE}"
-SRC_URI[md5sum] = "53e5e0ad87d0388fe5b11fa5fc029288"
-SRC_URI[sha256sum] = "301f994bd836ad78ebfc92af6c16470b53253121ca31762dc1f770a9ff11dc18"
+SRC_URI[md5sum] = "5c0365a8a26cc27b4419aa1d7dd82351"
+SRC_URI[sha256sum] = "a909a91a37a9925ee2f972ccb10f986a26ff9785c1a71a483545a192783bf773"
 
 PROVIDES = "virtual/bitstream"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
index 9cf09ff..cf8b9b7 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
@@ -64,10 +64,8 @@
         d.setVar("SPL_BINARY", "")
 
     if providesbin and d.getVar("SOC_FAMILY") in ["zynqmp"]:
-        # depend on the pmu-firmware build
-        d.appendVar("DEPENDS", " virtual/pmu-firmware")
         # determine the path relative to the source tree
-        relpath = os.path.relpath(d.expand("${DEPLOY_DIR_IMAGE}/pmu-${MACHINE}.bin"), d.getVar("S"))
+        relpath = os.path.relpath(d.expand("${PMU_FIRMWARE_DEPLOY_DIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin"), d.getVar("S"))
         # setup PMU Firmware path via MAKEFLAGS
         d.appendVar("EXTRA_OEMAKE", " CONFIG_PMUFW_INIT_FILE=\"{0}\"".format(relpath))
 }
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx/v2018.1/microblaze-kc705-Convert-microblaze-generic-to-k.patch b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx/v2018.3/microblaze-kc705-Convert-microblaze-generic-to-k.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx/v2018.1/microblaze-kc705-Convert-microblaze-generic-to-k.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx/v2018.3/microblaze-kc705-Convert-microblaze-generic-to-k.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.3.bb
similarity index 69%
rename from meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.1.bb
rename to meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.3.bb
index fb2c618..c87672e 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.1.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-xlnx_2018.3.bb
@@ -1,9 +1,9 @@
 UBOOT_VERSION = "v2018.01"
-XILINX_RELEASE_VERSION = "v2018.1"
+XILINX_RELEASE_VERSION = "v2018.3"
 
 UBRANCH ?= "master"
 
-SRCREV ?= "949e5cb9a736bac32ea8886e3953da55bdd30754"
+SRCREV ?= "d8fc4b3b70bccf1577dab69f6ddfd4ada9a93bac"
 
 include u-boot-xlnx.inc
 include u-boot-spl-zynq-init.inc
@@ -23,5 +23,10 @@
 		xilinx_zynqmp_zcu102_rev1_0_config \
 		xilinx_zynqmp_zcu106_revA_config \
 		xilinx_zynqmp_zcu104_revC_config \
+		xilinx_zynqmp_zcu100_revC_config \
+		xilinx_zynqmp_zcu111_revA_config \
+		xilinx_zynqmp_zc1275_revA_config \
+		xilinx_zynqmp_zc1275_revB_config \
+		xilinx_zynqmp_zc1254_revA_config \
 		"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-uenv.bb b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-uenv.bb
index f6c2a00..952077d 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-uenv.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-uenv.bb
@@ -5,43 +5,28 @@
 INHIBIT_DEFAULT_DEPS = "1"
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
+python () {
+    # The device trees must be populated in the deploy directory to correctly
+    # detect them and their names. This means that this recipe needs to depend
+    # on those deployables just like the image recipe does.
+    deploydeps = ["virtual/kernel"]
+    for i in (d.getVar("MACHINE_ESSENTIAL_EXTRA_RDEPENDS") or "").split():
+        if i != d.getVar("BPN"):
+            deploydeps.append(i)
+    for i in (d.getVar("EXTRA_IMAGEDEPENDS") or "").split():
+        if i != d.getVar("BPN"):
+            deploydeps.append(i)
+
+    # add as DEPENDS since the targets might not have do_deploy tasks
+    if len(deploydeps) != 0:
+        d.appendVar("DEPENDS", " " + " ".join(deploydeps))
+}
+
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE_zynq = ".*"
 COMPATIBLE_MACHINE_zynqmp = ".*"
 
-inherit deploy
-
-def bootfiles_bitstream(d):
-    expectedfiles = [("bitstream", True)]
-    expectedexts = [(".bit", True), (".bin", False)]
-    # search for bitstream paths, use the renamed file. First matching is used
-    for f in (d.getVar("IMAGE_BOOT_FILES") or "").split():
-        sf, rf = f, f
-        if ';' in f:
-            sf, rf = f.split(';')
-
-        # skip boot.bin and u-boot.bin, it is not a bitstream
-        skip = ["boot.bin", "u-boot.bin"]
-        if sf in skip or rf in skip:
-            continue
-
-        for e, t in expectedfiles:
-            if sf == e or rf == e:
-                return rf, t
-        for e, t in expectedexts:
-            if sf.endswith(e) or rf.endswith(e):
-                return rf, t
-    return "", False
-
-def bootfiles_dtb_filepath(d):
-    if d.getVar("IMAGE_BOOT_FILES"):
-        dtbs = d.getVar("IMAGE_BOOT_FILES").split(" ")
-        # IMAGE_BOOT_FILES has extra renaming info in the format '<source>;<target>'
-        dtbs = [f.split(";")[0] for f in dtbs]
-        dtbs = [f for f in dtbs if f.endswith(".dtb")]
-        if len(dtbs) != 0:
-            return dtbs[0]
-    return ""
+inherit deploy image-wic-utils
 
 def uboot_boot_cmd(d):
     if d.getVar("KERNEL_IMAGETYPE") in ["uImage", "fitImage"]:
@@ -61,7 +46,7 @@
     env["kernel_image"] = d.getVar("KERNEL_IMAGETYPE")
     env["kernel_load_address"] = d.getVar("KERNEL_LOAD_ADDRESS")
 
-    env["devicetree_image"] = bootfiles_dtb_filepath(d)
+    env["devicetree_image"] = boot_files_dtb_filepath(d)
     env["devicetree_load_address"] = d.getVar("DEVICETREE_LOAD_ADDRESS")
 
     env["bootargs"] = d.getVar("KERNEL_BOOTARGS")
@@ -73,7 +58,7 @@
     # default uenvcmd does not load bitstream
     env["uenvcmd"] = "run bootkernel"
 
-    bitstream, bitstreamtype = bootfiles_bitstream(d)
+    bitstream, bitstreamtype = boot_files_bitstream(d)
     if bitstream:
         env["bitstream_image"] = bitstream
         env["bitstream_load_address"] = "0x100000"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/libgloss_3.0.0.bb b/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/libgloss_3.0.0.bb
deleted file mode 100644
index cff4a26..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/libgloss_3.0.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-
-require newlib.inc
-
-DEPENDS += "newlib"
-
-do_configure() {
-	${S}/libgloss/configure ${EXTRA_OECONF}
-}
-
-do_install_prepend() {
-	# install doesn't create this itself, avoid install error
-	install -d ${D}${prefix}/${TARGET_SYS}/lib
-}
-
-do_install_append() {
-	# Move libs to default directories so they can be picked up later
-	mv -v ${D}${prefix}/${TARGET_SYS}/lib ${D}${libdir}
-
-	# Remove original directory
-	rmdir ${D}${prefix}/${TARGET_SYS}
-}
-
-# Split packages correctly
-FILES_${PN} += "${libdir}/*.ld ${libdir}/*.specs"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib.inc b/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib.inc
deleted file mode 100644
index 37ad6be..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib.inc
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "Newlib is a C library intended for use on embedded systems"
-HOMEPAGE = "https://sourceware.org/newlib/"
-DESCRIPTION = "It is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products."
-SECTION = "libs"
-
-LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2"
-LIC_FILES_CHKSUM = " \
-		file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-		file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
-		file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
-		file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \
-		file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-		file://COPYING.NEWLIB;md5=956a4b1487f7677cdcceeee8f05a21f0 \
-		file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
-		file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0 \
-		"
-
-SRC_URI = "ftp://sourceware.org/pub/newlib/newlib-${PV}.tar.gz"
-SRC_URI[md5sum] = "81ec873108b8593c586f91ca65963952"
-SRC_URI[sha256sum] = "c8566335ee74e5fcaeb8595b4ebd0400c4b043d6acb3263ecb1314f8f5501332"
-
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
-
-PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
-STAGINGCC = "${MLPREFIX}gcc-cross-initial-${TARGET_ARCH}"
-
-S = "${WORKDIR}/newlib-${PV}"
-B = "${WORKDIR}/build"
-
-# Disable use of a link hash style
-TARGET_LINK_HASH_STYLE_microblaze = ""
-
-# disable stdlib
-TARGET_CC_ARCH_append = " -nostdlib"
-
-EXTRA_OECONF = " \
-                --build=${BUILD_SYS}  \
-                --target=${TARGET_SYS} \
-		--host=${HOST_SYS} \
-                --prefix=${prefix}  \
-                --exec-prefix=${exec_prefix} \
-                --bindir=${bindir} \
-                --libdir=${libdir} \
-                --includedir=${includedir} \
-		--enable-languages=c \
-		--with-newlib \
-		--with-gnu-as \
-		--with-gnu-ld \
-		--disable-multilib \
-		"
-
-do_configure[cleandirs] = "${B}"
-
-do_install() {
-	oe_runmake install DESTDIR='${D}'
-}
-
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib_3.0.0.bb b/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib_3.0.0.bb
deleted file mode 100644
index 3d31350..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-core/newlib/newlib_3.0.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require newlib.inc
-
-do_configure_prepend_microblaze() {
-	# hack for microblaze, which needs xilinx.ld to literally do any linking (its hard coded in its LINK_SPEC)
-	export CC="${CC} -L${S}/libgloss/microblaze"
-}
-
-do_configure() {
-	${S}/configure ${EXTRA_OECONF}
-}
-
-do_install_append() {
-	# Move include files and libs to default directories so they can be picked up later
-	mv -v ${D}${prefix}/${TARGET_SYS}/lib ${D}${libdir}
-	mv -v ${D}${prefix}/${TARGET_SYS}/include ${D}${includedir}
-
-	# Remove original directory
-	rmdir ${D}${prefix}/${TARGET_SYS}
-}
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/memfd.patch b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/memfd.patch
deleted file mode 100644
index 62e8d38..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/memfd.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Tue, 28 Nov 2017 11:51:27 +0100
-Subject: [PATCH] memfd: fix configure test
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Recent glibc added memfd_create in sys/mman.h.  This conflicts with
-the definition in util/memfd.c:
-
-    /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
-
-Fix the configure test, and remove the sys/memfd.h inclusion since the
-file actually does not exist---it is a typo in the memfd_create(2) man
-page.
-
-Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
----
- configure    | 2 +-
- util/memfd.c | 4 +---
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/configure b/configure
-index 9c8aa5a98b..99ccc1725a 100755
---- a/configure
-+++ b/configure
-@@ -3923,7 +3923,7 @@ fi
- # check if memfd is supported
- memfd=no
- cat > $TMPC << EOF
--#include <sys/memfd.h>
-+#include <sys/mman.h>
- 
- int main(void)
- {
-diff --git a/util/memfd.c b/util/memfd.c
-index 4571d1aba8..412e94a405 100644
---- a/util/memfd.c
-+++ b/util/memfd.c
-@@ -31,9 +31,7 @@
- 
- #include "qemu/memfd.h"
- 
--#ifdef CONFIG_MEMFD
--#include <sys/memfd.h>
--#elif defined CONFIG_LINUX
-+#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
- #include <sys/syscall.h>
- #include <asm/unistd.h>
- 
--- 
-2.11.0
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
index 15124c1..2c92c68 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
@@ -1,32 +1,54 @@
-#!/bin/bash
+#!/usr/bin/env python3
 
-BINPATH=$(dirname $0)
-MACHINE_PATH=$(mktemp -d)
+# Xilinx QEMU wrapper to launch both PMU and APU instances (multiarch)
+import os
+import subprocess
+import sys
+import tempfile
+import shutil
 
-APU_ARGS=
-PMU_ARGS=
+binpath = os.path.dirname(os.path.abspath(__file__))
+mach_path = tempfile.mkdtemp()
 
-while [ ! -z "$1" ]; do
-	if [ "$1" = "-pmu-args" ]; then
-		PMU_ARGS+=" $2"
-		shift
-	else
-		APU_ARGS+=" $1"
-	fi
-	shift
-done
 
-PMU_ROM=$(last=; for i in $PMU_ARGS; do if [ "$last" = "-kernel" ]; then echo "$i"; break; fi; last=$i; done)
-if [ ! -e $PMU_ROM ]; then
-	echo "------"
-	echo "Error: Missing PMU ROM - $PMU_ROM"
-	echo "    See 'meta-xilinx/README.qemu.md' for more information on accquiring the PMU ROM."
-	echo "------"
-	exit 255
-fi
+# Separate PMU and APU arguments
+APU_args = sys.argv[1:]
+PMU_args = APU_args[APU_args.index('-pmu-args')+1]
+APU_args.remove('-pmu-args')
+APU_args.remove(PMU_args)
+PMU_args = PMU_args.split()
 
-# start the PMU instance
-$BINPATH/qemu-system-microblazeel $PMU_ARGS -machine-path $MACHINE_PATH &
-# start the APU instance
-$BINPATH/qemu-system-aarch64 $APU_ARGS -machine-path $MACHINE_PATH
+PMU_rom = PMU_args[PMU_args.index('-kernel')+1]
+error_msg = None
 
+if os.path.exists(PMU_rom):
+
+    # We need to switch tcp serial arguments (if they exist, e.g. qemurunner) to get the output correctly
+    tcp_serial_ports = [i for i, s in enumerate(APU_args) if 'tcp:127.0.0.1:' in s]
+
+    # We can only switch these if there are exactly two, otherwise we can't assume what is being executed so we leave it as is
+    if len(tcp_serial_ports) == 2:
+        APU_args[tcp_serial_ports[0]],APU_args[tcp_serial_ports[1]] = APU_args[tcp_serial_ports[1]],APU_args[tcp_serial_ports[0]]
+
+    pmu_cmd =  binpath + '/qemu-system-microblazeel ' + ' '.join(PMU_args) + ' -machine-path ' + mach_path
+    apu_cmd =  binpath + '/qemu-system-aarch64 ' + ' '.join(APU_args) + ' -machine-path ' + mach_path
+
+    # Debug prints
+    print('\nPMU instance cmd: %s\n' % pmu_cmd)
+    print('APU instance cmd: %s\n' % apu_cmd)
+
+
+    # Invoke QEMU pmu instance
+    process_pmu = subprocess.Popen(pmu_cmd, shell=True, stderr=subprocess.PIPE)
+
+    # Invoke QEMU APU instance
+    process_apu = subprocess.Popen(apu_cmd, shell=True, stderr=subprocess.PIPE)
+    if process_apu.wait():
+        error_msg = '\nQEMU APU instance failed:\n%s' % process_apu.stderr.read().decode()
+
+else:
+    error_msg = '\nError: Missing PMU ROM: %s' % PMU_rom
+    error_msg += '\nSee "meta-xilinx/README.qemu.md" for more information on accquiring the PMU ROM.\n'
+
+shutil.rmtree(mach_path)
+sys.exit(error_msg)
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.1.bb
deleted file mode 100644
index a73b9e5..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.1.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require qemu-devicetrees.inc
-
-XILINX_RELEASE_VERSION = "v2018.1"
-
-BRANCH ?= "master"
-SRCREV ?= "d5017f8119b6493d8b2fcdfd5caa4e8b16580877"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.3.bb b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.3.bb
new file mode 100644
index 0000000..6f8eda2
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2018.3.bb
@@ -0,0 +1,6 @@
+require qemu-devicetrees.inc
+
+XILINX_RELEASE_VERSION = "v2018.3"
+
+BRANCH ?= "master"
+SRCREV ?= "e3e40b8829894a479c7d7380fc8137886645dda8"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc
index b6c5dee..daff5ff 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc
@@ -17,9 +17,7 @@
 REPO ?= "git://github.com/Xilinx/qemu.git;protocol=https"
 
 BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
-SRC_URI = "${REPO};${BRANCHARG} \
-	file://memfd.patch \
-	"
+SRC_URI = "${REPO};${BRANCHARG}"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.1.bb
deleted file mode 100644
index 1d6697c..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.1.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require qemu-xilinx.inc
-
-XILINX_RELEASE_VERSION = "v2018.1"
-XILINX_QEMU_VERSION ?= "v2.11.0"
-BRANCH ?= "master"
-SRCREV ?= "1d5516986ea296d91a599ac23252e302a4003914"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.3.bb b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.3.bb
new file mode 100644
index 0000000..57547df
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2018.3.bb
@@ -0,0 +1,6 @@
+require qemu-xilinx.inc
+
+XILINX_RELEASE_VERSION = "v2018.3"
+XILINX_QEMU_VERSION ?= "v2.11.0"
+BRANCH ?= "master"
+SRCREV ?= "f70bd86859c7a1a075ac864b4765168f821f1aae"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/gbm.pc b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/gbm.pc
new file mode 100644
index 0000000..02ea94e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/gbm.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=/usr/lib
+includedir=/usr/include
+
+Name: gbm
+Description: MALI gbm library
+Requires.private:
+Version: r8p0
+Libs: -L${libdir} -lgbm
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/wayland-egl.pc b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/wayland-egl.pc
new file mode 100644
index 0000000..719fb3e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/files/wayland-egl.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=/usr/lib
+includedir=/usr/include
+
+Name: wayland-egl
+Description: MALI wayland-egl library
+Requires.private:
+Version: r8p0
+Libs: -L${libdir} -lwayland-egl
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb
index 3e675d9..8c6ab3e 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb
@@ -9,7 +9,7 @@
 
 ANY_OF_DISTRO_FEATURES = "fbdev x11"
 
-PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl"
+PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
 
 FILESEXTRAPATHS_append := " \
                 ${THISDIR}/files: \
@@ -26,10 +26,12 @@
     file://glesv1_cm.pc \
     file://glesv1.pc \
     file://glesv2.pc \
+    file://wayland-egl.pc \
+    file://gbm.pc \
     "
 
-SRC_URI[md5sum] = "e75b147c8b4ee96616e24572cdc9c21f"
-SRC_URI[sha256sum] = "7b179ec2df54ee05a886cca1535c0bdc6cba77a646e22742adedc79bfc2b3017"
+SRC_URI[md5sum] = "4fd3456564ef8c818e21432221c9e1b7"
+SRC_URI[sha256sum] = "26d473ae77c36104a215710beca55a22a712850dc26547dde950c7398210602c"
 
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE_zynqmpeg = "zynqmpeg"
@@ -50,14 +52,16 @@
 
 DEPENDS = "\
 	${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)} \
+	${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland libdrm', '', d)} \
 	"
 
-EGL_TYPE = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11',  \
-               bb.utils.contains('DISTRO_FEATURES', 'fbdev',  'fbdev', '', d), d)}"
+USE_X11 = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "yes", "no", d)}"
+USE_FB = "${@bb.utils.contains("DISTRO_FEATURES", "fbdev", "yes", "no", d)}"
+USE_WL = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}"
 
 do_compile() {
 	# Extract the MALI binaries into workdir
-	tar -xf ${WORKDIR}/mali/rel-v2018.1/r8p0-01rel0.tar -C ${S}
+	tar -xf ${WORKDIR}/mali/rel-v2018.3/r8p0-01rel0.tar -C ${S}
 }
 
 do_install() {
@@ -71,13 +75,13 @@
 
     # install headers
     install -d -m 0655 ${D}${includedir}/EGL
-    install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/EGL/*.h ${D}${includedir}/EGL/
+    install -m 0644 ${S}/${PV}/glesHeaders/EGL/*.h ${D}${includedir}/EGL/
     install -d -m 0655 ${D}${includedir}/GLES
-    install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES/*.h ${D}${includedir}/GLES/
+    install -m 0644 ${S}/${PV}/glesHeaders/GLES/*.h ${D}${includedir}/GLES/
     install -d -m 0655 ${D}${includedir}/GLES2
-    install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES2/*.h ${D}${includedir}/GLES2/
+    install -m 0644 ${S}/${PV}/glesHeaders/GLES2/*.h ${D}${includedir}/GLES2/
     install -d -m 0655 ${D}${includedir}/KHR
-    install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/KHR/*.h ${D}${includedir}/KHR/
+    install -m 0644 ${S}/${PV}/glesHeaders/KHR/*.h ${D}${includedir}/KHR/
 
     install -d ${D}${libdir}/pkgconfig
     install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
@@ -86,7 +90,26 @@
     install -m 0644 ${WORKDIR}/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
 
     install -d ${D}${libdir}
-    cp -a --no-preserve=ownership ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/lib/*.so* ${D}${libdir}
+    install -d ${D}${includedir}
+
+    cp -a --no-preserve=ownership ${S}/${PV}/${ARCH_PLATFORM_DIR}/common/*.so* ${D}${libdir}
+
+    if [ "${USE_WL}" = "yes" ]; then
+	install -m 0644 ${S}/${PV}/glesHeaders/GBM/gbm.h ${D}${includedir}/
+	install -m 0644 ${WORKDIR}/gbm.pc ${D}${libdir}/pkgconfig/gbm.pc
+	install -m 0644 ${WORKDIR}/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc
+	install -Dm 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/wayland/libMali.so.8.0 ${D}${libdir}/wayland/libMali.so.8.0
+	ln -snf wayland/libMali.so.8.0 ${D}${libdir}/libMali.so.8.0
+    elif [ "${USE_X11}" = "yes" ]; then
+	install -Dm 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/x11/libMali.so.8.0 ${D}${libdir}/x11/libMali.so.8.0
+	ln -snf x11/libMali.so.8.0 ${D}${libdir}/libMali.so.8.0
+    elif [ "${USE_FB}" = "yes" ]; then
+	install -Dm 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/fbdev/libMali.so.8.0 ${D}${libdir}/fbdev/libMali.so.8.0
+	ln -snf fbdev/libMali.so.8.0 ${D}${libdir}/libMali.so.8.0
+    else
+	install -Dm 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/headless/libMali.so.8.0 ${D}${libdir}/headless/libMali.so.8.0
+	ln -snf headless/libMali.so.8.0 ${D}${libdir}/libMali.so.8.0
+    fi
 
     if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
         sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if (1)/' ${D}${includedir}/EGL/eglplatform.h
@@ -99,10 +122,11 @@
 INHIBIT_PACKAGE_STRIP = "1"
 INHIBIT_SYSROOT_STRIP = "1"
 
-RREPLACES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
-RPROVIDES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
-RCONFLICTS_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
+RREPLACES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2 libgbm"
+RPROVIDES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2 libgbm"
+RCONFLICTS_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2 libgbm"
 
 # These libraries shouldn't get installed in world builds unless something
 # explicitly depends upon them.
 EXCLUDE_FROM_WORLD = "1"
+FILES_${PN} += "${libdir}/*"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx.inc b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx.inc
index 7b4f9ac..ec056db 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx.inc
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx.inc
@@ -23,6 +23,8 @@
 	[ -n "${KBUILD_DEFCONFIG}" ] && [ -e ${WORKDIR}/defconfig ] && rm ${WORKDIR}/defconfig
 }
 
+inherit kernel-simpleimage
+
 # Default to be only compatible with specific machines or soc families
 COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE_zynq = ".*"
@@ -42,4 +44,7 @@
 # MicroBlaze BSP fragments
 KERNEL_FEATURES_append_kc705-microblazeel = " bsp/kc705-microblazeel/kc705-microblazeel.scc"
 
-KERNEL_FEATURES_zynqmp += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' bsp/xilinx/xen.scc', '', d)}"
+KERNEL_FEATURES_append_zynqmp = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' bsp/xilinx/xen.scc', '', d)}"
+
+KERNEL_FEATURES_append_zynqmp = "${@bb.utils.contains('IMAGE_FEATURES', 'fpga-manager', ' features/overlay/overlay.scc', '', d)}"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.1.bb b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.1.bb
deleted file mode 100644
index c3a8f76..0000000
--- a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.1.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-LINUX_VERSION = "4.14"
-XILINX_RELEASE_VERSION = "v2018.1"
-KBRANCH ?= "xlnx_rebase_v4.14"
-SRCREV ?= "4ac76ffacb54712b0361e51d0b7156e53d062e3c"
-
-include linux-xlnx.inc
-
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.3.bb b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.3.bb
new file mode 100644
index 0000000..ade13e3
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.3.bb
@@ -0,0 +1,7 @@
+LINUX_VERSION = "4.14"
+XILINX_RELEASE_VERSION = "v2018.3"
+KBRANCH ?= "xlnx_rebase_v4.14"
+SRCREV ?= "eeab73d1207d6fc2082776c954eb19fd7290bfbe"
+
+include linux-xlnx.inc
+
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.cfg b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.cfg
new file mode 100644
index 0000000..44462be
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.cfg
@@ -0,0 +1,3 @@
+# Device Tree support
+CONFIG_OF_CONFIGFS=y
+CONFIG_OF_OVERLAY=y
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.scc b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.scc
new file mode 100644
index 0000000..14f05ff
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/xilinx-kmeta/features/overlay/overlay.scc
@@ -0,0 +1,4 @@
+define KFEATURE_DESCRIPTION "Enable overlay"
+define KFEATURE_COMPATIBILITY board
+
+kconfig hardware overlay.cfg
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils%.bbappend b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils%.bbappend
index 795c671..4470972 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils%.bbappend
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils%.bbappend
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_append_microblaze := "${THISDIR}/binutils-2.30:"
+FILESEXTRAPATHS_append_microblaze := "${THISDIR}/binutils-2.31:"
 SRC_URI_append_microblaze = " \
 		file://0001-MicroBlaze-Add-wdc.ext.clear-and-wdc.ext.flush-insns.patch \
 		file://0002-MicroBlaze-add-mlittle-endian-and-mbig-endian-flags.patch \
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0001-MicroBlaze-Add-wdc.ext.clear-and-wdc.ext.flush-insns.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0001-MicroBlaze-Add-wdc.ext.clear-and-wdc.ext.flush-insns.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0001-MicroBlaze-Add-wdc.ext.clear-and-wdc.ext.flush-insns.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0001-MicroBlaze-Add-wdc.ext.clear-and-wdc.ext.flush-insns.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0002-MicroBlaze-add-mlittle-endian-and-mbig-endian-flags.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0002-MicroBlaze-add-mlittle-endian-and-mbig-endian-flags.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0002-MicroBlaze-add-mlittle-endian-and-mbig-endian-flags.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0002-MicroBlaze-add-mlittle-endian-and-mbig-endian-flags.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0003-Disable-the-warning-message-for-eh_frame_hdr.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0003-Disable-the-warning-message-for-eh_frame_hdr.patch
similarity index 65%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0003-Disable-the-warning-message-for-eh_frame_hdr.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0003-Disable-the-warning-message-for-eh_frame_hdr.patch
index 2b30c46..aee0c01 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0003-Disable-the-warning-message-for-eh_frame_hdr.patch
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0003-Disable-the-warning-message-for-eh_frame_hdr.patch
@@ -3,30 +3,35 @@
 Date: Mon, 28 Aug 2017 19:53:54 -0700
 Subject: [PATCH] Disable the warning message for eh_frame_hdr
 
+Upstream-Status: Inappropriate [workaround]
+
+Rebased to 2.31
+ - Error hanlder changed
+
+Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
 Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
 Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
-Upstream-Status: Inappropriate [workaround]
 
 ---
  bfd/elf-eh-frame.c | 9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)
 
-diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c
-index 95697c4..704121d 100644
---- a/bfd/elf-eh-frame.c
-+++ b/bfd/elf-eh-frame.c
-@@ -1042,10 +1042,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
+Index: git/bfd/elf-eh-frame.c
+===================================================================
+--- git.orig/bfd/elf-eh-frame.c
++++ git/bfd/elf-eh-frame.c
+@@ -1042,10 +1042,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
    goto success;
  
   free_no_table:
--  (*info->callbacks->einfo)
+-  _bfd_error_handler
 +  /* FIXME: Remove the microblaze specifics when relaxing gets fixed.  */
 +  if (bfd_get_arch(abfd) != bfd_arch_microblaze) {
      /* xgettext:c-format */
--    (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"),
+-    (_("error in %pB(%pA); no .eh_frame_hdr table will be created"),
 -     abfd, sec);
-+    (*info->callbacks->einfo)
-+      (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"),
++    _bfd_error_handler
++      (_("error in %pB(%pA); no .eh_frame_hdr table will be created"),
 +       abfd, sec);
 +  }
    hdr_info->u.dwarf.table = FALSE;
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0004-Fix-relaxation-of-assembler-resolved-references.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0004-Fix-relaxation-of-assembler-resolved-references.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0004-Fix-relaxation-of-assembler-resolved-references.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0004-Fix-relaxation-of-assembler-resolved-references.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch
similarity index 76%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch
index 3817234..6cdd2cc 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0005-Fixup-MicroBlaze-debug_loc-sections-after-linker-rel.patch
@@ -11,8 +11,9 @@
 This is a workaround for design flaws in the assembler to
 linker interface with regards to linker relaxation.
 
-03/2018
-Rebased for binutils 2.30
+08/2018
+Rebased for binutils 2.31
+ - Some RELOC_NUMBERs were added upstream, rebased to use 33 instead of 30
 
 Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
 Signed-off-by: Nagaraju Mekala <nmekala@xilinx.com>
@@ -31,11 +32,11 @@
  include/elf/microblaze.h   |  1 +
  7 files changed, 61 insertions(+), 10 deletions(-)
 
-diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 4228603..1906195 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -5826,10 +5826,15 @@ value relative to the read-write small data area anchor  */
+Index: git/bfd/bfd-in2.h
+===================================================================
+--- git.orig/bfd/bfd-in2.h
++++ git/bfd/bfd-in2.h
+@@ -5791,10 +5791,15 @@ value relative to the read-write small d
  expressions of the form "Symbol Op Symbol"  */
    BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
  
@@ -53,11 +54,11 @@
  
  /* This is a 64 bit reloc that stores the 32 bit pc relative
  value in two words (with an imm instruction).  The relocation is
-diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c
-index a1d810c..fc0d3e1 100644
---- a/bfd/elf32-microblaze.c
-+++ b/bfd/elf32-microblaze.c
-@@ -176,6 +176,20 @@ static reloc_howto_type microblaze_elf_howto_raw[] =
+Index: git/bfd/elf32-microblaze.c
+===================================================================
+--- git.orig/bfd/elf32-microblaze.c
++++ git/bfd/elf32-microblaze.c
+@@ -176,6 +176,20 @@ static reloc_howto_type microblaze_elf_h
  	  0x0000ffff,		/* Dest Mask.  */
  	  FALSE),		/* PC relative offset?  */
  
@@ -78,7 +79,7 @@
     /* This reloc does nothing.	Used for relaxation.  */
     HOWTO (R_MICROBLAZE_64_NONE,	/* Type.  */
  	  0,			/* Rightshift.  */
-@@ -532,6 +546,9 @@ microblaze_elf_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
+@@ -562,6 +576,9 @@ microblaze_elf_reloc_type_lookup (bfd *
      case BFD_RELOC_NONE:
        microblaze_reloc = R_MICROBLAZE_NONE;
        break;
@@ -88,7 +89,7 @@
      case BFD_RELOC_MICROBLAZE_64_NONE:
        microblaze_reloc = R_MICROBLAZE_64_NONE;
        break;
-@@ -1832,14 +1849,23 @@ microblaze_elf_relax_section (bfd *abfd,
+@@ -1918,14 +1935,23 @@ microblaze_elf_relax_section (bfd *abfd,
  		}
  	      break;
  	    case R_MICROBLAZE_NONE:
@@ -112,7 +113,7 @@
  		irel->r_addend -= (efix - sfix);
  		/* Should use HOWTO.  */
  		microblaze_bfd_write_imm_value_32 (abfd, contents + irel->r_offset,
-@@ -1887,12 +1913,16 @@ microblaze_elf_relax_section (bfd *abfd,
+@@ -1973,12 +1999,16 @@ microblaze_elf_relax_section (bfd *abfd,
  	  irelscanend = irelocs + o->reloc_count;
  	  for (irelscan = irelocs; irelscan < irelscanend; irelscan++)
  	    {
@@ -130,7 +131,7 @@
                    /* This was a PC-relative instruction that was completely resolved.  */
                    if (ocontents == NULL)
                      {
-@@ -1917,15 +1947,16 @@ microblaze_elf_relax_section (bfd *abfd,
+@@ -2003,15 +2033,16 @@ microblaze_elf_relax_section (bfd *abfd,
                          }
                      }
  
@@ -152,7 +153,7 @@
  	      if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32)
  		{
  		  isym = isymbuf + ELF32_R_SYM (irelscan->r_info);
-@@ -1985,7 +2016,7 @@ microblaze_elf_relax_section (bfd *abfd,
+@@ -2071,7 +2102,7 @@ microblaze_elf_relax_section (bfd *abfd,
  			      elf_section_data (o)->this_hdr.contents = ocontents;
  			    }
  			}
@@ -161,11 +162,11 @@
  							+ isym->st_value,
  							0,
  							sec);
-diff --git a/bfd/libbfd.h b/bfd/libbfd.h
-index 2f5f16e..854bb0c 100644
---- a/bfd/libbfd.h
-+++ b/bfd/libbfd.h
-@@ -2853,6 +2853,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
+Index: git/bfd/libbfd.h
+===================================================================
+--- git.orig/bfd/libbfd.h
++++ git/bfd/libbfd.h
+@@ -2862,6 +2862,7 @@ static const char *const bfd_reloc_code_
    "BFD_RELOC_MICROBLAZE_32_ROSDA",
    "BFD_RELOC_MICROBLAZE_32_RWSDA",
    "BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM",
@@ -173,11 +174,11 @@
    "BFD_RELOC_MICROBLAZE_64_NONE",
    "BFD_RELOC_MICROBLAZE_64_GOTPC",
    "BFD_RELOC_MICROBLAZE_64_GOT",
-diff --git a/bfd/reloc.c b/bfd/reloc.c
-index a1353a2..4b57de7 100644
---- a/bfd/reloc.c
-+++ b/bfd/reloc.c
-@@ -6903,6 +6903,12 @@ ENUMDOC
+Index: git/bfd/reloc.c
+===================================================================
+--- git.orig/bfd/reloc.c
++++ git/bfd/reloc.c
+@@ -6865,6 +6865,12 @@ ENUMDOC
    This is a 32 bit reloc for the microblaze to handle
    expressions of the form "Symbol Op Symbol"
  ENUM
@@ -190,26 +191,26 @@
    BFD_RELOC_MICROBLAZE_64_NONE
  ENUMDOC
    This is a 64 bit reloc that stores the 32 bit pc relative
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index fed0387..92f655d 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -12774,6 +12774,10 @@ is_none_reloc (Filedata * filedata, unsigned int reloc_type)
+Index: git/binutils/readelf.c
+===================================================================
+--- git.orig/binutils/readelf.c
++++ git/binutils/readelf.c
+@@ -12908,6 +12908,10 @@ is_none_reloc (Filedata * filedata, unsi
  	      || reloc_type == 32 /* R_AVR_DIFF32.  */);
      case EM_METAG:
        return reloc_type == 3; /* R_METAG_NONE.  */
 +    case EM_MICROBLAZE:
-+      return reloc_type == 30 /* R_MICROBLAZE_32_NONE.  */
++      return reloc_type == 33 /* R_MICROBLAZE_32_NONE.  */
 +             || reloc_type == 0 /* R_MICROBLAZE_NONE.  */
 +             || reloc_type == 9; /* R_MICROBLAZE_64_NONE.  */
      case EM_NDS32:
        return (reloc_type == 0       /* R_XTENSA_NONE.  */
  	      || reloc_type == 204  /* R_NDS32_DIFF8.  */
-diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
-index 50dbfc7..d66e949 100644
---- a/gas/config/tc-microblaze.c
-+++ b/gas/config/tc-microblaze.c
-@@ -2179,7 +2179,9 @@ md_apply_fix (fixS *   fixP,
+Index: git/gas/config/tc-microblaze.c
+===================================================================
+--- git.orig/gas/config/tc-microblaze.c
++++ git/gas/config/tc-microblaze.c
+@@ -2201,7 +2201,9 @@ md_apply_fix (fixS *   fixP,
        /* This fixup has been resolved.  Create a reloc in case the linker
  	 moves code around due to relaxing.  */
        if (fixP->fx_r_type == BFD_RELOC_64_PCREL)
@@ -220,7 +221,7 @@
        else
  	fixP->fx_r_type = BFD_RELOC_NONE;
        fixP->fx_addsy = section_symbol (absolute_section);
-@@ -2401,6 +2403,7 @@ tc_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
+@@ -2426,6 +2428,7 @@ tc_gen_reloc (asection * section ATTRIBU
    switch (fixp->fx_r_type)
      {
      case BFD_RELOC_NONE:
@@ -228,15 +229,15 @@
      case BFD_RELOC_MICROBLAZE_64_NONE:
      case BFD_RELOC_32:
      case BFD_RELOC_MICROBLAZE_32_LO:
-diff --git a/include/elf/microblaze.h b/include/elf/microblaze.h
-index ae98099..c8cc57b 100644
---- a/include/elf/microblaze.h
-+++ b/include/elf/microblaze.h
-@@ -58,6 +58,7 @@ START_RELOC_NUMBERS (elf_microblaze_reloc_type)
-   RELOC_NUMBER (R_MICROBLAZE_TLSDTPREL64, 27)   /* TLS Offset Within TLS Block */
-   RELOC_NUMBER (R_MICROBLAZE_TLSGOTTPREL32, 28) /* TLS Offset From Thread Pointer */
-   RELOC_NUMBER (R_MICROBLAZE_TLSTPREL32, 29)    /* TLS Offset From Thread Pointer */
-+  RELOC_NUMBER (R_MICROBLAZE_32_NONE, 30)
-    
+Index: git/include/elf/microblaze.h
+===================================================================
+--- git.orig/include/elf/microblaze.h
++++ git/include/elf/microblaze.h
+@@ -61,6 +61,7 @@ START_RELOC_NUMBERS (elf_microblaze_relo
+   RELOC_NUMBER (R_MICROBLAZE_TEXTPCREL_64, 30)  /* PC-relative TEXT offset.  */
+   RELOC_NUMBER (R_MICROBLAZE_TEXTREL_64, 31)    /* TEXT Entry offset 64-bit.  */
+   RELOC_NUMBER (R_MICROBLAZE_TEXTREL_32_LO, 32) /* TEXT Entry offset 32-bit.  */
++  RELOC_NUMBER (R_MICROBLAZE_32_NONE, 33)
  END_RELOC_NUMBERS (R_MICROBLAZE_max)
  
+ /* Global base address names.  */
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch
similarity index 82%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch
index a671cf8..8d3d538 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0006-Fix-bug-in-MicroBlaze-TLSTPREL-Relocation.patch
@@ -1,4 +1,4 @@
-From 0cad227ce495a975b32c10a8b6b0970c45024dd6 Mon Sep 17 00:00:00 2001
+From ca0336a49c33ccb78962530f2affff8982027e8e Mon Sep 17 00:00:00 2001
 From: Nagaraju Mekala <nagaraju.mekala@xilinx.com>
 Date: Mon, 28 Aug 2017 19:53:58 -0700
 Subject: [PATCH] Fix bug in MicroBlaze TLSTPREL Relocation
@@ -18,10 +18,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c
-index fc0d3e1..a94799f 100644
+index 1dc56f7..d4e53de 100644
 --- a/bfd/elf32-microblaze.c
 +++ b/bfd/elf32-microblaze.c
-@@ -1402,9 +1402,9 @@ microblaze_elf_relocate_section (bfd *output_bfd,
+@@ -1451,9 +1451,9 @@ microblaze_elf_relocate_section (bfd *output_bfd,
  	      relocation += addend;
  	      relocation -= dtprel_base(info);
  	      bfd_put_16 (input_bfd, (relocation >> 16) & 0xffff,
@@ -31,5 +31,5 @@
 -			  contents + offset + 2 + INST_WORD_SIZE);
 +			  contents + offset + endian + INST_WORD_SIZE);
  	      break;
- 	    case (int) R_MICROBLAZE_64_PCREL :
- 	    case (int) R_MICROBLAZE_64:
+ 	    case (int) R_MICROBLAZE_TEXTREL_64:
+ 	    case (int) R_MICROBLAZE_TEXTREL_32_LO:
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0007-Add-MicroBlaze-address-extension-instructions.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0007-Add-MicroBlaze-address-extension-instructions.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0007-Add-MicroBlaze-address-extension-instructions.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0007-Add-MicroBlaze-address-extension-instructions.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0008-Add-new-MicroBlaze-bit-field-instructions.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0008-Add-new-MicroBlaze-bit-field-instructions.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0008-Add-new-MicroBlaze-bit-field-instructions.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0008-Add-new-MicroBlaze-bit-field-instructions.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0009-Fixing-MicroBlaze-IMM-bug.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0009-Fixing-MicroBlaze-IMM-bug.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0009-Fixing-MicroBlaze-IMM-bug.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0009-Fixing-MicroBlaze-IMM-bug.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0010-Fixed-bug-in-GCC-so-that-it-will-support-.long-0U-an.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0010-Fixed-bug-in-GCC-so-that-it-will-support-.long-0U-an.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0010-Fixed-bug-in-GCC-so-that-it-will-support-.long-0U-an.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0010-Fixed-bug-in-GCC-so-that-it-will-support-.long-0U-an.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0011-Fixing-MicroBlaze-constant-range-check-issue.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0011-Fixing-MicroBlaze-constant-range-check-issue.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0011-Fixing-MicroBlaze-constant-range-check-issue.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0011-Fixing-MicroBlaze-constant-range-check-issue.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0012-MicroBlaze-fix-mask-for-barrel-shift-instructions.patch b/meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0012-MicroBlaze-fix-mask-for-barrel-shift-instructions.patch
similarity index 100%
rename from meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.30/0012-MicroBlaze-fix-mask-for-barrel-shift-instructions.patch
rename to meta-xilinx/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0012-MicroBlaze-fix-mask-for-barrel-shift-instructions.patch
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/kernel-module-vcu.bb b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/kernel-module-vcu.bb
index e09dd5d..8d1380f 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/kernel-module-vcu.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/kernel-module-vcu.bb
@@ -5,14 +5,14 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
 
 XILINX_VCU_VERSION = "1.0.0"
-XILINX_RELEASE_VERSION = "2018.1"
+XILINX_RELEASE_VERSION = "2018.3"
 PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
 BRANCH ?= "master"
 REPO ?= "git://github.com/xilinx/vcu-modules.git;protocol=https"
-SRCREV ?= "646185390cc1850969c0fa3db59fc8f0e511922e"
+SRCREV ?= "f6a9093ec32ee97a2df065aee8b8e676c2024f01"
 
 BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
 SRC_URI = "${REPO};${BRANCHARG}"
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libomxil-xlnx.bb b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libomxil-xlnx.bb
index 76fdb9a..18fa032 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libomxil-xlnx.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libomxil-xlnx.bb
@@ -4,12 +4,12 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
 
 XILINX_VCU_VERSION = "1.0.0"
-XILINX_RELEASE_VERSION = "2018.1"
+XILINX_RELEASE_VERSION = "2018.3"
 PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
 
 BRANCH ?= "master"
 REPO   ?= "git://github.com/xilinx/vcu-omx-il.git;protocol=https"
-SRCREV ?= "68e385ace99ab699feaa50f24b7a78680c411f75"
+SRCREV ?= "cf4b031ac88c7889e4f29ac7fc8ca7592bf12144"
 
 BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
 SRC_URI = "${REPO};${BRANCHARG}"
@@ -37,8 +37,8 @@
 
     install -m 0644 ${S}/omx_header/*.h ${D}${includedir}/vcu-omx-il
 
-    install -Dm 0755 ${S}/bin/omx_decoder.exe ${D}/${bindir}/omx_decoder.exe
-    install -Dm 0755 ${S}/bin/omx_encoder.exe ${D}/${bindir}/omx_encoder.exe
+    install -Dm 0755 ${S}/bin/omx_decoder ${D}/${bindir}/omx_decoder
+    install -Dm 0755 ${S}/bin/omx_encoder ${D}/${bindir}/omx_encoder
 
     oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/
     oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libvcu-xlnx.bb b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libvcu-xlnx.bb
index 8e2369b..b068aa8 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libvcu-xlnx.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/libvcu-xlnx.bb
@@ -4,12 +4,12 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
 
 XILINX_VCU_VERSION = "1.0.0"
-XILINX_RELEASE_VERSION = "2018.1"
+XILINX_RELEASE_VERSION = "2018.3"
 PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
 
 BRANCH ?= "master"
 REPO   ?= "git://github.com/xilinx/vcu-ctrl-sw.git;protocol=https"
-SRCREV = "aa4b6871346c915f28a069190afec5d30963762f"
+SRCREV ?= "1cb5281d319ea4f3c0eb5514864c80d95e78fe6e"
 
 BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
 SRC_URI = "${REPO};${BRANCHARG}"
@@ -29,8 +29,8 @@
     install -d ${D}${libdir}
     install -d ${D}${includedir}/vcu-ctrl-sw/include
 
-    install -Dm 0755 ${S}/bin/AL_Encoder.exe ${D}/${bindir}/AL_Encoder.exe
-    install -Dm 0755 ${S}/bin/AL_Decoder.exe ${D}/${bindir}/AL_Decoder.exe
+    install -Dm 0755 ${S}/bin/ctrlsw_encoder ${D}/${bindir}/ctrlsw_encoder
+    install -Dm 0755 ${S}/bin/ctrlsw_decoder ${D}/${bindir}/ctrlsw_decoder
 
     oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include
     oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
diff --git a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/vcu-firmware.bb b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/vcu-firmware.bb
index 1cb2125..da447fc 100644
--- a/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/vcu-firmware.bb
+++ b/meta-xilinx/meta-xilinx-bsp/recipes-multimedia/vcu/vcu-firmware.bb
@@ -4,14 +4,14 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=63b45903a9a50120df488435f03cf498"
 
 XILINX_VCU_VERSION = "1.0.0"
-XILINX_RELEASE_VERSION = "2018.1"
+XILINX_RELEASE_VERSION = "2018.3"
 PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
 
 S  = "${WORKDIR}/git"
 
 BRANCH ?= "master"
 REPO ?= "git://github.com/xilinx/vcu-firmware.git;protocol=https"
-SRCREV ?= "7c6f282da07253c1987665846ed676059925ef40"
+SRCREV ?= "d01951905e1aedb179d838a6b86016f34e2f4966"
 
 BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
 SRC_URI   = "${REPO};${BRANCHARG}"