meta-xilinx: subtree update:757bac706c..bef2bf9b15

Alejandro Enedino Hernandez Samaniego (76):
      libmali-xlnx: Use update-alternatives to switch between GL backends
      libmali-xlnx: modify REQUIRED_DISTRO_FEATURES
      libmali-xlnx: only use and install dependencies that the DISTRO supports
      libmali-xlnx: fix x11 headers
      libmali-xlnx: Dont provide KHR headers
      libmali-xlnx: Change version on gbm.pc to be compatible with mesa
      libmali-xlnx: modify version on egl.pc for compatibility
      run-postinsts: Pass the output of the scripts run to kmsg
      zynqmp-pmu.conf: Upgrade tune to use Microblaze v10.0
      zynqmp-pmu.conf: Update to Microblaze v11.0
      newlib: export CC_FOR_TARGET as CC
      gcc-cross: Dont override EXTRA_OECONF unless DISTRO is xilinx-standalone
      Adds MACHINE.conf containing default tune for Cortex R5
      Adds MACHINE.conf containing default tune for Cortex A53
      toolchain: Provide specific configuration for cross(-canadian) gcc and binutils
      Adds MACHINE.conf containing default tune for Cortex A72
      xilinx-standalone: switch override and append
      xilinx-standalone: Add staticdev packages for newlib and libgloss to dependencies
      xilinx-standalone: Reorganize toolchain configure options
      toolchain: add cortex-A9 options for gcc and binutils
      gcc-cross-microblazeel: disable multilib
      gcc: Separate binutils options
      gcc: Add multilib-list=aprofile configure option for cortex A9
      gcc-runtime: Enable bulding libsdtc++ for baremetal applications
      gcc-runtime: Set correct overrides now that the build has been fixed in oe-core
      gcc-xilinx-standalone: Enable multilib builds for baremetal microblaze
      gcc-microblaze: Remove multilib builds that arent working (m64)
      meta-xilinx-standalone: Restructure layer properly, gcc and binutils belong on recipes-devtools
      newlib: Keep version numbers on bbappends
      meta-xilinx-standalone: Restructure layer properly, newlib belongs to recipes-bsp
      gcc-runtime: Move gcc-runtime to GCCs directory
      layer.conf: Include recipe files from a pattern with no directory required
      Create machines that use SOC_FAMILY
      Microblaze-pmu: Change overrides to reflect machine name changes from zynqmp-pmu to microblaze-pmu
      cortexr5: Change overrides to reflect machine name changes from cortexr5 to zynqmp and versal variants
      cortexa72: To keep up with a standard rename cortexa72 to add its SOC_FAMILY to its name
      meta-xilinx-bsp: Unify machine confs
      cortexr5-versal.conf: Include the tune inc file from the correct path
      cortexr5-zynqmp.conf: Include the tune inc file from the correct path
      tune-cortexrm: Include PACKAGE_EXTRA_ARCHS to avoid parsing errors
      esw: first step to move everything into an embeddedsw class
      pmufw: Install and hence package and strip the pmufw elf file
      fix license and compatible host for now
      pmufw: fix filename on elf file and fix task order to get stripped elf file deployed
      libxil: add flow for a53 using dtg
      device-tree.bbappend: add appent to support cortexa53 MACHINE
      device-tree: switch to AUTOREV to keep up with the repo changes for now
      zynqmp-fsbl: Sync flow with pmufw
      libxil: fix device tree flags for a53
      libxil: Fix DTB and DTG flow to make it more transparent for the user
      Fix XILINX_RELEASE_VERSION
      Increase layer priority
      device-tree: the Flags used from device tree have to be set on the device tree recipe, not in the libxil one
      esw.bbclass: Fix devtool and externalsrc flow
      esw.bbclass: Install artifacts from the build directory vs WORKDIR
      pmufw: Install artifacts from the build directory vs WORKDIR
      esw.bbclass: Make it possible for packages to use the cmake ncurses gui
      libxil: Unify flow and get DTB using the device-tree recipe instead of creating it manually
      SOC_FAMILY: Change overrides
      Microblaze-pmu: Change overrides to reflect machine name chanches from zynqmp-pmu to microblaze-pmu
      device-tree: Install psu_init files as well
      fsbl: avoid using underscore in the directory filename
      meta-xilinx-standalone: Restructure layer properly, pmufw and fsbl belong on recipes-applications
      meta-xilinx-standalone: device-tree belongs on recipes-bsp
      meta-xilinx-standalone: Restructure layer properly, move existing libraries from decoupling to recipes-libraries
      zynqmp-fsbl: Fix race condition on copy_psu_init
      device-tree: Fix install directory
      meta-xilinx-standalone: clean up layer
      libraries: Add inherit on python3native on libraries that were invoking nativepython3
      meta-xilinx: Include templates for local.conf and bblayers.conf
      esw: fix machines that have been renamed
      libgloss: Dont install libgloss as libxil since we actually have libxil
      esw: Switch release version to 2020.1
      xilinx-standalone: Add buildhistory to the DISTRO to avoid cooker errors
      device-tree: Override repo for supported machines
      system-zcu102: Create heterogeneous machine configuration for ZCU102 evaluation board.

Anirudha Sarangi (4):
      meta-xilinx-standalone: conf: distro: Add new distro for freertos
      meta-xilinx-standalone: classes: Update CMAKE_SYSTEM_NAME for Freertos
      meta-xilinx-standalone: recipes-libraries: Add recipe for freertos
      meta-xilinx-standalone: recipes-applications: freertos-hello-world: Add recipe for freertos hello world

Appana Durga Kedareswara rao (82):
      libxil: Add recipes for libxil and xilstandalone
      pmufw: recipes for pmufw app generation in decoupled flow
      Add recipes for xilffs and xilpm libraries
      Add recipes for building zynqmp fsbl application
      meta-xilinx-standalone: Add support for PLM and dependent library recipes
      zynqmp-fsbl: Copy psu_init files to source code
      meta-xilinx: meta-xilinx-standalone: Update source url path
      meta-xilinx: meta-xilinx-standalone: comment flto flags by default
      meta-xilinx-standalone: Using S instead of WORKDIR
      meta-xilinx-standalone: classes: Add bbclass for building esw examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling csudma driver examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling emacps driver examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axiethernet driver examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axicdma driver examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axidma driver examples
      meta-xilinx-standalone: recipes-drivers: Add recipe for compiling llfifo driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mcdma driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling zdma driver examples
      meta-xilinx-standalone: recipes-applications: Add recipe for compiling hello world application
      meta-xilinx-standalone: classes: Update md5 checksum as per latest license
      meta-xilinx-standalone: Add support for cortexa72 processor
      meta-xilinx-standalone: recipes-libraries: xilstandalone: Cleanup the recipe
      meta-xilinx-standalone: recipes-libraries: libxil: Cleanup the recipe
      meta-xilinx-standalone: classes: cleanup the class
      meta-xilinx-standalone: recipes-applications: hello-world: Remove dependency on esw_examples class
      meta-xilinx-standalone: recipes-libraries: Add recipe for xilmailbox
      cortexa72: Update cortexa72 machine variable naming
      meta-xilinx: Add support for cortexr5 processor
      meta-xilinx-standalone: Add dependencies on python3-dtc-native
      meta-xilinx-standalone: recipes-libraries: xiltimer: Add task for generating cmake meta-data
      meta-xilinx-standalone: recipes-libraries: lwip: Add recipe for lwip
      meta-xilinx-standalone: recipes-applications: lwip-echo-server: Add recipe for compiling lwip echo server application
      meta-xilinx-standalone: Add support for versal cortexr5 processor
      meta-xilinx-standalone: recipes-applications: lwip-tcp-perf-client: Add recipe for compiling lwip tcp perf client application
      meta-xilinx-standalone: recipes-applications: lwip-tcp-perf-server: Add recipe for compiling lwip tcp perf server application
      meta-xilinx-standalone: recipes-applications: lwip-udp-perf-server: Add recipe for compiling lwip udp perf server application
      meta-xilinx-standalone: recipes-applications: lwip-udp-perf-client: Add recipe for compiling lwip udp perf client application
      meta-xilinx-standalone: recipes-applications: freertos-lwip-echo-server: Add recipe for compiling freertos lwip echo server application
      meta-xilinx-standalone: recipes-applications: freertos-lwip-tcp-perf-client: Add recipe for compiling freertos lwip tcp perf client application
      meta-xilinx-standalone: recipes-applications: freertos-lwip-tcp-perf-server: Add recipe for compiling freertos lwip tcp perf server application
      meta-xilinx-standalone: recipes-applications: freertos-lwip-udp-perf-client: Add recipe for compiling freertos lwip udp perf client application
      meta-xilinx-standalone: recipes-applications: freertos-lwip-udp-perf-server: Add recipe for compiling freertos lwip udp perf server application
      meta-xilinx-standalone: recipes-libraries: Update depends list for socket mode
      meta-xilinx-standalone: recipes-libraries: Add recipe for xilpuf
      meta-xilinx-standalone: recipes-libraries: Fix workarounds
      meta-xilinx-standalone: recipes-libraries: xilloader: Update depends list
      meta-xilinx-standalone: recipes-applications: freertos-hello-world: Fix do_deploy elf variable name
      meta-xilinx-standalone: classes: esw: Remove unneeded DISTRO check
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling dmaps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling usbpsu driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling axivdma driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling emaclite driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling xxvethernet driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling scugic driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ttcps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling tmrctr driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling qspipsu driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ospipsv driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling resetps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling clockps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling canfd driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling canps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling can driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling wdtps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling rtcpsu driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling gpiops driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling sdps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ipipsu driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling nandpsu driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling devcfg driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mbox driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mutex driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling uartlite driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling uartps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling gpio driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling spips driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling qspips driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling xadcps driver examples
      meta-xilinx-standalone: recipe-drivers: Add recipe for compiling sysmon driver examples
      device-tree: Install psu_init files as well for zynqmp machines
      meta-xilinx-standalone: recipes-applications: zynqmp-fsbl: Correct cflags based on the machine type
      meta-xilinx-standalone: recipes-bsp: device-tree: Install psu_init* files only for standalone configuration

Bruce Ashfield (1):
      linux-xlnx: cleanup and make yocto-kernel-cache available

Himanshu Choudhary (8):
      xrt_git:zocl_git: added package_class for generating rpm
      zocl_git: added post install script
      xrt_git: added veral flags and dependencies
      xrt_git:zocl_git: license and PV update from meta-xilinx-internal
      xrt,zocl:Update commit id for 2020.1 release
      xrt_git:zocl_git: updated commitid > CR-1063204
      xrt_git:zocl_git: update commitid for 2020.1 release
      xrt_git:zocl_git: update commitid for 2020.1 release

Jaewon Lee (28):
      Update recipes for 2019.2 release
      u-boot-zynq-scr: reworking boot.scr recipe to work for zynq and zynqmp
      u-boot-zynq-scr: Setting sd as default bootmode for versal
      zynq/zynqmp confs: Adding boot.scr to IMAGE_BOOT_FILES
      bootgen_1.0.bb: Adding initial bootgen recipe to build bootgen
      flashstrip utility: Build and ship flash strip utility needed for qemu
      machine-xilinx-default.inc: Adding required dependencies to image_wic
      **TEMPORARY**: Removing preferred provider overrides for mali backend
      meson: Adding patch to add microblaze as supported CPU
      glibc-locale_%.bbappend: Fix directory installed but not shipped issue
      Revert "**TEMPORARY**: Removing preferred provider overrides for mali backend"
      arm-trusted-firmware.inc: Changing generic DEBUG to DEBUG_ATF
      gcc-cross-canadian_%.bbappend:temporary hack to build gcc cross canadian
      gcc-source: Adding microblaze patch to fix compiler crash with -freg-struct-return
      newlib: Adding xilinx specific patches on top of newlib/libgloss 3.1.0
      cortexa*.conf: Change arch-armv8.inc to arch-armv8a.inc
      gdb: Switching microblaze to use upstream gdb version 8.3.1
      microblaze gdb/binutils: Adding necessary patches for microblaze
      Using tune-cortexa72-cortexa53.inc for versal and zynqmp tunes
      qemu-system-aarch64-multiarch: Adding comment for future fix
      xilinx-standalone.conf: Adding qemu to TOOLCHAIN_HOST_TASK
      arm-trusted-firmware.inc: installing elf with standard name
      u-boot-xlnx:Updating defconfig for all zynq machines
      Correcting ':' placement for appending file paths
      Add older version of OpenCV 3.4.3
      opencv_3.4.3.bb: Removing tiny-dnn from SRC_URI
      versal confs: Upping RAM in runqemu command to 8G for versal boards
      versal confs: cleaning up unnecessary file loading in runqemu command

Jean-Francois Dagenais (3):
      libmali-xlnx: clean and fix FILESXTRAPATHS
      libmali-xlnx: make version recognizable
      kernel-module-mali: add patch to check dma_map_page error

Jeegar Patel (1):
      kernel-module-vcu.bb : Autoload dmaproxy module on boot

Madhurkiran Harikrishnan (14):
      libmali-xlnx: MALI will not provide wayland-egl
      libmali-xlnx.bb: ABIs are made consistent for all backends
      libmali-xlnx: Squash all monolithic library name into a variable
      libmali-xlnx: Upgrade the userspace driver to r9p0
      kernel-module-mali: Upgrade the kernel space driver to r9p0
      weston: Migrate ZynqMP specific patches for weston to meta-xilinx
      weston: Remove opaque substitute for ARGB8888 as ZynqMP DP does not support
      kernel-module-mali: Make the driver compatible with kernel 5.4
      Revert "libmali-xlnx: Dont provide KHR headers"
      mesa: Do not provide KHR headers
      cairo: For ZynqMP enable glesv2 packageconfig
      libglu: Add build time dependency on glesv2 for zynqmp
      xf86-video-armsoc: Bypass the exa layer to free the root pixmap
      libmali: Fetch mali binaries from rel-v2020.1 branch

Manjukumar Matha (17):
      libmali-xlnx: upgrade MALI recipe for 2019.2
      xrt_git.bb: Fix xrt recipe for externalsrc
      zocl_git.bb: Update the S path for zocl
      kernel-module-hdmi_git.bb: New Yocto recipe for Xilinx HDMI drivers
      machine-xilinx-default.inc: Add qemu-xilinx-helper-native as preferred provider
      zynq-generic.conf: Add qemu wiring to generic conf
      meta-xilinx-pynq: Add layer to support PYNQ
      image-types-xilinx-qemu.bbclass: Add sector size as 512K
      ultra96-zynqmp.conf: Add support for Ultra96 evaluation board
      linux-firmware_git.bbappend: Add hook for wl18xx and bts file
      vc-p-a2197-00-versal.conf:Add versal Tenzing +SE1 board configuration
      kc705-microblaze: Update u-boot patch for kc705
      layer.conf: Update XILINX_RELEASE_VERSION to v2020.1
      libgpg-error: Add microblaze platform specific gpg-error.h file
      qemu-xilinx-native: Enable packageconfig option for libgcrypt
      qemu-xilinx.inc: Remove stale packageconfig options
      qemu-xilinx.inc: Configure qemu-xilinx with gcrypt

Mark Hatle (82):
      binutils/gcc: Refactor the oeconf
      Revert "binutils/gcc: Refactor the oeconf"
      gcc-runtime: Make the baremetal changes specific to class-target
      binutils/gcc: Refactor the oeconf
      gcc: Remove cortexa53 errata fixes
      binutils: Merge latest binutils work
      Revert "gcc-microblaze: Remove multilib builds that arent working (m64)"
      gcc-cross-canadian: Fix issue being unable to find stdio.h
      Enable multilib baremetal toolchains
      gcc-runtime: Fix C++ multilib headers
      Limit multilib toolchains to symlinks to the main toolchain
      Create new baremetal toolchain machines
      Fix arm cortex r/m profiles
      microblaze-tc: Minor update and corrections
      Adjust the microblaze standalone toolchain to match vitis expectations.
      newlib: Adjust configuration for standalone to allow BSP library
      qemu-xilinx: Point to master branch by default
      distro/xilinx-standalone: Make LTO optional
      distr/xilinx-standalone: Switch default optimization from ESW to Distro
      cortex-r5: Add cortexr5f configuration
      xilinx-standalone: When building for cortexr5, add -DARMR5 for CCARGS
      newlib: Move microblaze support
      newlib: Cleanup and merge the two newlib bbappends into a single append
      python3-dtc: Add python3 dtc module
      Ensure that bbappends do not affect task hashes
      xlnx-compatible-os.bbclass: Class to allow recipes to list OS compatibility
      Remove hardcoded XILINX_RELEASE_VERSION in recipes
      meta-xilinx-standalone: Add dependencies on python3-dtc
      meta-xilinx-standalone/device-tree: remove duplicate internal references
      lopper: Add lopper utility
      xilinx-standalone: sync distros
      xilinx-standalone.inc: Replace qemu dependency with mingw32 specific recipe
      lopper: Add runtime dependency of python3-dtc
      cortexa53-zynqmp/cortexa72-versal: Fix cortex based BSPs
      README.md: revise README.md based
      README.md: Add information about the new embeddedsw support
      microblaze_dtb.py: Convert a dtb to one or more microblaze TUNE_FEATURES
      linux-xlnx: Use new default defconfigs
      meta-xilinx-bsp: Rename soc configuration masquerading as a tune file
      meta-xilinx-bsp: Remove default values
      machine-xilinx-overrides: Make this generic
      meta-xilinx-bsp: Update recipes to use SOC_FAMILY_ARCH and SOC_VARIANT_ARCH
      meta-xilinx-bsp: rename machine-xilinx-override to xilinx-soc-family.inc
      meta-xilinx-standalone: Move soc overrides from meta-xilinx-default
      meta-xilinx-bsp: Adjust soc to permit multiple CPU/TUNES
      libmali-xlnx: Remove virtual provides
      meta-xilinx-bsp: remove redundant PREFERRED_PROVIDER
      Revert "libmali-xlnx: Remove virtual provides"
      meta-xilinx-bsp: machine-xilinx-default.inc allow empty WIC_DEPENDS
      microblaze_dtb.py: Move to scripts subdir
      zc706-zynq7: Add qemu wiring for zc706 machine
      qemu-zynq7: Add qemu wiring for zc706 machine
      meta-xilinx-bsp: cleanup qemu references
      xilinx-qemu: Move -multiarch extension to the machine-xilinx-qemu
      *-generic.conf: Add QEMU support to each of the generic BSPs
      versal-generic: Move from vck190 to vc-p-a2197-00-versal
      esw.bbclass: Adjust get_xlnx_cmake_process to use both tune and machine
      Revise COMPATIBLE_MACHINE settings
      esw.bbclass: Move DTBFILE to a single definition
      xilinx-standalone.conf: Add workaround for microblaze -Os bug
      Revert "linux-xlnx: Use new default defconfigs"
      qemu-xilinx.inc: Move the URL to 'gitsm' and disable compile time submodules
      esw.bbclass: Only work with xilinx-standalone distro
      Rename plm_git.bb to plm-standalong_git.bb
      meta-xilinx-standalone esw.bbclass: Allow SRCREV and SRC_URI to be overwritten
      esw.bbclass: Change 'or' to 'and' to verify EXTERNALSRC is defined
      Revert "xlnx-compatible-os.bbclass: Class to allow recipes to list OS compatibility"
      Define COMPATIBLE_HOST to prevent mix of Linux and Baremetal recipes
      device-tree.bbappend: Move to COMPATIBLE_HOST
      machines: Move from SERIAL_CONSOLE (deprecated) to SERIAL_CONSOLES
      machines: Move from SERIAL_CONSOLE (deprecated) to SERIAL_CONSOLES
      machines: Allow the user to override SERIAL_CONSOLES
      machines: Remove default SERIAL_CONSOLES_CHECK
      machines: Allow user to override SERIAL_CONSOLE
      microblaze machines: Set LINKER_HASH_STYLE defaults
      kernel-module-mali: WIP
      libcma: Fix SRC_URI definition
      binutils: Microblaze integrate fix from upstream
      init-ifupdown: Fix BSPs that were setting partial overrides
      zynq-generic.conf: Remove the qemu overrides, not needed
      meta-xilinx-standalone gcc: Fix microblaze crtend.o
      lopper: Fix python3 reference in lopper_sanity.py

Min Ma (1):
      xrt_git.bb: update XRT dependency

Mubin Usman Sayyed (3):
      meta-xilinx-bsp: conf: machine: Add standalone based machine for zynq
      meta-xilinx-standalone: Add support for zynq
      meta-xilinx-standalone: classes: esw: Update ESW_CFLAGS with spec file

Mukund PVVN (3):
      zcu1275-zynqmp.conf: Rename zc1275 to zcu1275
      zcu1285-zynqmp.conf: Update UBOOT_MACHINE
      v350-versal.conf:Add versal board configuration

Peter Ogden (1):
      python3-pynq.bb: Update PYNQ to 2.5.1

Sai Hari Chandana Kalluri (54):
      u-boot-xlnx_2019.2.bb: Rename zc1275 to zcu1275 board name
      ultra96-zynqmp.conf: Include mipi as MACHINE_FEATURE
      linux-xlnx.inc: Add MIPI kernel configuration for Ultra96
      pynq-ultra96-*: Add Ultra96 specific pynq example demo:
      vck-sc-zynqmp: Machine configuration for vck190 system controller
      v350-versal.conf: Enforce system.dtb name when using virtual/dtb
      vmk180-versal.conf: Add machine configuration for vmk180-versal
      tune-versal.inc: Set default SOC_VARIANT = s80
      arm-trusted-firmware_2019.2.bbappend: Update compilation flag
      u-boot-xlnx: Add the platform init file for zcu216-zynqmp
      plm_2019.2.bb: recipe to build plm standalone
      psm-firmware_2019.2.bb: Create psm-firmware recipe for standalone build
      versal-mb.conf: Add machine configuration to support standalone build for versal components like plm, psm-firmware
      vck190-versal.conf: Add deploy dir for psm and plm firmware
      tune-versal.inc: Rename include file from arch-armv8 to arch-armv8a
      Move recipes to use _%.bb instead of version
      qemu-*: Upgrade QEMU version 2.11 -> 4.1.5
      Upgrade recipes to 2020.1
      libmali-xlnx: Provide single shlib provider for libMali.so.9
      "**TEMPORARY**" linux-xlnx.inc: Trim PV variable expansion
      Revert "Revert "**TEMPORARY**: Removing preferred provider overrides for mali backend""
      versal-generic: Add versal-generic machine configuration
      Revert  "**TEMPORARY**: Removing preferred provider overrides for mali backend"""
      qemu-xilinx*: Enable qemu-xilinx-native as PROVIDER for qemu-native
      u-boot-zyqn-scr.bb: Update DEVICETREE and KERNEL LOAD ADDRESS for zynqmp machines
      u-boot-xlnx:Update UBOOT-MACHINE to xilinx_zynqmp_virt_defconfig for all zynqmp machines
      qemu-xilinx: Enable qemu-xilinx to provide nativesdk-qemu
      zedboard-zynq7.conf:update u-boot binary name
      qemu-system-aarch64-multiarch: Update the binpath for qemu targets
      zcu102-zynqmp.conf: Modify PMU_FIRMWARE_DEPLOY_DIR and PMU_FIRMWARE_IMAGE_NAME
      Update KERNEL_VERSION to 5.4
      zcu102-zynqmp.conf: Pass dtb and dtb load address as QB_OPT args for qemuboot
      Enable kernel configurations for viruatlization distro feature
      zc702-zynq7: Add qemu wiring for zc702 machine
      qemu-xilinx-multiarch-helper-native_1.0.bb: Move multiarch wrapper script to bindir
      qemuboot-xilinx.bbclass: Remove the subdir added to the qemu target path
      external-hdf.bbappend: move to meta-xilinx-tools layer
      xrt: Remove references to PACKAGE_CLASSES from xrt recipes
      kernel-module-hdmi: Update LICENSE_CHECKSUM for kenrel-module-hdmi
      xilinx-kmeta: Upstream xen and ocicontainer configs to YP kernel-cache
      Update commit ids for 2020.1 release
      arm-trusted-firmware.inc: Update package version
      Update commit ids for 2020.1 release
      lopper: Update commit id for 2020.1 release
      layer.conf: Set layer compat to dunfell & gatesgarth
      qemu-xilinx-native.inc: Fix the patch file names for dunfell Fix patch file names for dunfell
      libmali-xlnx: Inherit features_check instead of distro_features_check
      gcc-9*: Upgrade gcc from 9.2->10.1
      libgloss, newlib: Upgrade version from 3.1 -> 3.3
      meson_%.bbappend: Remove bbappend from layer
      qemu-xilinx.inc: Add patch to enable/disbable libudev in qemu configure
      python3-dtc_1.5.1.bb: Explicitly set the path to run make during configure
      qemu-devicetrees: Use python3 instead of python
      u-boot-xlnx.inc: Explicitly set builddir path

Sandeep Gundlupet Raju (2):
      conf/machine/kc705-microbalzeel.conf: Fix U-boot defconfig
      local.conf.sample: Updating XILINX_VER_MAIN

Swagath Gadde (4):
      u-boot-zynq-scr: Add pxeboot support in u-boot-scr
      zcu216-zynqmp: Add support for zcu216 board
      u-boot-zynq-scr:Add initrd label to pxe config
      zcu208-zynqmp: Add support for zcu208 board

Varalaxmi Bingi (4):
      Update XILINX_RELEASE_VERSION to v2020.1
      zcu1285-zynqmp.conf:using common u-boot defconfig
      u-boot-xlnx.inc:u-boot-xlnx_2020.1.bb: kc705 patch
      removing kc705 patch

Vishal Sagar (3):
      kernel-module-hdmi_git.bb: Add versal support
      kernel-module-hdmi: Update for 2020.1 release
      kernel-module-hdmi: Update commit id and license md5sum for 2020.1

ch vamshi krishna (1):
      xrt_git.bb: Add icd support for edge platforms

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I71ace4a7992c023b84c864abd45e634b5e48f751
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch32-tc.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch32-tc.conf
new file mode 100644
index 0000000..72fbc80
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch32-tc.conf
@@ -0,0 +1,220 @@
+require conf/multilib.conf
+require conf/machine/include/tune-cortexa9.inc
+require conf/machine/include/baremetal-tc.conf
+
+# Define all of the multilibs supproted by this configuration
+MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+
+MULTILIBS  = "multilib:libarmv5tesoftfp multilib:libarmv5tehard"
+MULTILIBS += "multilib:libnofp"
+MULTILIBS += "multilib:libv7nofp multilib:libv7fpsoftfp multilib:libv7fphard"
+MULTILIBS += "multilib:libv7anofp"
+MULTILIBS += "multilib:libv7afpsoftfp"
+MULTILIBS += "multilib:libv7afpthf multilib:libv7asimdsoftfp"
+MULTILIBS += "multilib:libv7asimdhard multilib:libv7vesimdsoftfp"
+MULTILIBS += "multilib:libvtvesimdhf"
+MULTILIBS += "multilib:libv8anofp"
+MULTILIBS += "multilib:libv8asimdsoftfp multilib:libv8asimdhard"
+
+TUNE_CCARGS = "${TUNE_CCARGS_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+
+# Base configuration
+# CFLAGS:
+DEFAULTTUNE = "aarch32"
+
+AVAILTUNES += "aarch32"
+PACKAGE_EXTRA_ARCHS_tune-aarch32 = "${TUNE_PKGARCH_tune-aarch32}"
+BASE_LIB_tune-aarch32 = "lib"
+TUNE_FEATURES_tune-aarch32 = "arm"
+TUNE_CCARGS_tune-aarch32 = ""
+TUNE_PKGARCH_tune-aarch32 = "aarch32"
+
+
+# arm/v5te/softfp
+# CFLAGS: -marm -march=armv5te+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libarmv5tesoftfp = "armv5tesoftfp"
+
+AVAILTUNES += "armv5tesoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tesoftfp = "${TUNE_PKGARCH_tune-armv5tesoftfp}"
+BASE_LIB_tune-armv5tesoftfp = "lib/arm/v5te/softfp"
+TUNE_FEATURES_tune-armv5tesoftfp = "arm"
+TUNE_CCARGS_tune-armv5tesoftfp = "-marm -march=armv5te+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv5tesoftfp = "armv5tefp"
+
+
+# arm/v5te/hard
+# CFLAGS: -marm -march=armv5te+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libarmv5tehard = "armv5tehard"
+
+AVAILTUNES += "armv5tehard"
+PACKAGE_EXTRA_ARCHS_tune-armv5tehard = "${TUNE_PKGARCH_tune-armv5tehard}"
+BASE_LIB_tune-armv5tehard = "lib/arm/v5te/hard"
+TUNE_FEATURES_tune-armv5tehard = "arm"
+TUNE_CCARGS_tune-armv5tehard = "-marm -march=armv5te+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv5tehard = "armv5tefphf"
+
+
+# thumb/nofp
+# CFLAGS: -mthumb -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libnofp = "armnofp"
+
+AVAILTUNES += "armnofp"
+PACKAGE_EXTRA_ARCHS_tune-armnofp = "${TUNE_PKGARCH_tune-armnofp}"
+BASE_LIB_tune-armnofp = "lib/thumb/nofp"
+TUNE_FEATURES_tune-armnofp = "arm"
+TUNE_CCARGS_tune-armnofp = "-mthumb -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armnofp = "armt"
+
+
+# thumb/v7/nofp
+# CFLAGS: -mthumb -march=armv7 -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv7nofp = "armv7nofp"
+
+AVAILTUNES += "armv7nofp"
+PACKAGE_EXTRA_ARCHS_tune-armv7nofp = "${TUNE_PKGARCH_tune-armv7nofp}"
+BASE_LIB_tune-armv7nofp = "lib/thumb/v7/nofp"
+TUNE_FEATURES_tune-armv7nofp = "arm"
+TUNE_CCARGS_tune-armv7nofp = "-mthumb -march=armv7 -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv7nofp = "armv7t"
+
+
+# thumb/v7+fp/softfp
+# CFLAGS: -mthumb -march=armv7+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7fpsoftfp = "armv7fpsoftfp"
+
+AVAILTUNES += "armv7fpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7fpsoftfp = "${TUNE_PKGARCH_tune-armv7fpsoftfp}"
+BASE_LIB_tune-armv7fpsoftfp = "lib/thumb/v7+fp/softfp"
+TUNE_FEATURES_tune-armv7fpsoftfp = "arm"
+TUNE_CCARGS_tune-armv7fpsoftfp = "-mthumb -march=armv7+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7fpsoftfp = "armv7fpt"
+
+
+# thumb/v7+fp/hard
+# CFLAGS: -mthumb -march=armv7+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7fphard = "armv7fphard"
+
+AVAILTUNES += "armv7fphard"
+PACKAGE_EXTRA_ARCHS_tune-armv7fphard = "${TUNE_PKGARCH_tune-armv7fphard}"
+BASE_LIB_tune-armv7fphard = "lib/thumb/v7+fp/hard"
+TUNE_FEATURES_tune-armv7fphard = "arm"
+TUNE_CCARGS_tune-armv7fphard = "-mthumb -march=armv7+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7fphard = "armv7fpthf"
+
+
+# thumb/v7-a/nofp
+# CFLAGS: -mthumb -march=armv7-a -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv7anofp = "armv7anofp"
+
+AVAILTUNES += "armv7anofp"
+PACKAGE_EXTRA_ARCHS_tune-armv7anofp = "${TUNE_PKGARCH_tune-armv7anofp}"
+BASE_LIB_tune-armv7anofp = "lib/thumb/v7-a/nofp"
+TUNE_FEATURES_tune-armv7anofp = "arm"
+TUNE_CCARGS_tune-armv7anofp = "-mthumb -march=armv7-a -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv7anofp = "armv7at"
+
+
+# thumb/v7-a+fp/softfp
+# CFLAGS: -mthumb -march=armv7-a+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7afpsoftfp = "armv7afpsoftfp"
+
+AVAILTUNES += "armv7afpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7afpsoftfp = "${TUNE_PKGARCH_tune-armv7afpsoftfp}"
+BASE_LIB_tune-armv7afpsoftfp = "lib/thumb/v7-a+fp/softfp"
+TUNE_FEATURES_tune-armv7afpsoftfp = "arm"
+TUNE_CCARGS_tune-armv7afpsoftfp = "-mthumb -march=armv7-a+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7afpsoftfp = "armv7afpt"
+
+
+# thumb/v7-a+fp/hard
+# CFLAGS: -mthumb -march=armv7-a+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7afpthf = "armv7afpthf"
+
+AVAILTUNES += "armv7afpthf"
+PACKAGE_EXTRA_ARCHS_tune-armv7afpthf = "${TUNE_PKGARCH_tune-armv7afpthf}"
+BASE_LIB_tune-armv7afpthf = "lib/thumb/v7-a+fp/hard"
+TUNE_FEATURES_tune-armv7afpthf = "arm"
+TUNE_CCARGS_tune-armv7afpthf = "-mthumb -march=armv7-a+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7afpthf = "armv7afpthf"
+
+# thumb/v7-a+simd/softfp
+# CFLAGS: -mthumb -march=armv7-a+simd -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7asimdsoftfp = "armv7asimdsoftfp"
+
+AVAILTUNES += "armv7asimdsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7asimdsoftfp = "${TUNE_PKGARCH_tune-armv7asimdsoftfp}"
+BASE_LIB_tune-armv7asimdsoftfp = "lib/thumb/v7-a+simd/softfp"
+TUNE_FEATURES_tune-armv7asimdsoftfp = "arm"
+TUNE_CCARGS_tune-armv7asimdsoftfp = "-mthumb -march=armv7-a+simd -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7asimdsoftfp = "armv7asimdt"
+
+
+# thumb/v7-a+simd/hard
+# CFLAGS: -mthumb -march=armv7-a+simd -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7asimdhard = "armv7asimdhard"
+
+AVAILTUNES += "armv7asimdhard"
+PACKAGE_EXTRA_ARCHS_tune-armv7asimdhard = "${TUNE_PKGARCH_tune-armv7asimdhard}"
+BASE_LIB_tune-armv7asimdhard = "lib/thumb/v7-a+simd/hard"
+TUNE_FEATURES_tune-armv7asimdhard = "arm"
+TUNE_CCARGS_tune-armv7asimdhard = "-mthumb -march=armv7-a+simd -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7asimdhard = "armv7asimdthf"
+
+
+# thumb/v7ve+simd/softfp
+# CFLAGS: -mthumb -march=armv7ve+simd -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7vesimdsoftfp = "armv7vesimdsoftfp"
+
+AVAILTUNES += "armv7vesimdsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vesimdsoftfp = "${TUNE_PKGARCH_tune-armv7vesimdsoftfp}"
+BASE_LIB_tune-armv7vesimdsoftfp = "lib/thumb/v7ve+simd/softfp"
+TUNE_FEATURES_tune-armv7vesimdsoftfp = "arm"
+TUNE_CCARGS_tune-armv7vesimdsoftfp = "-mthumb -march=armv7ve+simd -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7vesimdsoftfp = "armv7vesimdt"
+
+# thumb/v7ve+simd/hard
+# CFLAGS: -mthumb -march=armv7ve+simd -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libvtvesimdhf = "armvtvesimdhf"
+
+AVAILTUNES += "armvtvesimdhf"
+PACKAGE_EXTRA_ARCHS_tune-armvtvesimdhf = "${TUNE_PKGARCH_tune-armvtvesimdhf}"
+BASE_LIB_tune-armvtvesimdhf = "lib/thumb/v7ve+simd/hard"
+TUNE_FEATURES_tune-armvtvesimdhf = "arm"
+TUNE_CCARGS_tune-armvtvesimdhf = "-mthumb -march=armv7ve+simd -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armvtvesimdhf = "armv7vesimdthf"
+
+
+# thumb/v8-a/nofp
+# CFLAGS: -mthumb -march=armv8-a -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv8anofp = "armv8anofp"
+
+AVAILTUNES += "armv8anofp"
+PACKAGE_EXTRA_ARCHS_tune-armv8anofp = "${TUNE_PKGARCH_tune-armv8anofp}"
+BASE_LIB_tune-armv8anofp = "lib/thumb/v8-a/nofp"
+TUNE_FEATURES_tune-armv8anofp = "arm"
+TUNE_CCARGS_tune-armv8anofp = "-mthumb -march=armv8-a -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv8anofp = "armv8at"
+
+# thumb/v8-a+simd/softfp
+# CFLAGS: -mthumb -march=armv8-a+simd -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv8asimdsoftfp = "armv8asimdsoftfp"
+
+AVAILTUNES += "armv8asimdsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8asimdsoftfp = "${TUNE_PKGARCH_tune-armv8asimdsoftfp}"
+BASE_LIB_tune-armv8asimdsoftfp = "lib/thumb/v8-a+simd/softfp"
+TUNE_FEATURES_tune-armv8asimdsoftfp = "arm"
+TUNE_CCARGS_tune-armv8asimdsoftfp = "-mthumb -march=armv8-a+simd -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv8asimdsoftfp = "armv8asimdt"
+
+
+# thumb/v8-a+simd/hard
+# CFLAGS:  -mthumb -march=armv8-a+simd -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv8asimdhard = "armv8asimdhard"
+
+AVAILTUNES += "armv8asimdhard"
+PACKAGE_EXTRA_ARCHS_tune-armv8asimdhard = "${TUNE_PKGARCH_tune-armv8asimdhard}"
+BASE_LIB_tune-armv8asimdhard = "lib/thumb/v8-a+simd/hard"
+TUNE_FEATURES_tune-armv8asimdhard = "arm"
+TUNE_CCARGS_tune-armv8asimdhard = "-mthumb -march=armv8-a+simd -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv8asimdhard = "armv8asimdthf"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch64-tc.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch64-tc.conf
new file mode 100644
index 0000000..e9e0412
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/aarch64-tc.conf
@@ -0,0 +1,29 @@
+require conf/multilib.conf
+require conf/machine/include/tune-cortexa72-cortexa53.inc
+require conf/machine/include/baremetal-tc.conf
+
+# Define ilp32 variant (not in tune files)
+TUNEVALID[ilp32] = "ilp32 ABI"
+
+TUNE_CCARGS .= '${@bb.utils.contains("TUNE_FEATURES", "ilp32", " -mabi=ilp32", "", d)}'
+
+# ILP request an alternative machine dictionary
+INHERIT += "xlnx-standalone"
+PACKAGEQA_EXTRA_MACHDEFFUNCS .= '${@bb.utils.contains("TUNE_FEATURES", "ilp32", " xlnx_ilp32_dict", "", d)}'
+
+# Define all of the multilibs supported by this configuration
+MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+MULTILIBS = "multilib:libilp32"
+
+# Base configuration
+# CFLAGS:
+DEFAULTTUNE = "cortexa72-cortexa53"
+
+# CFLAGS: -mabi=ilp32
+DEFAULTTUNE_virtclass-multilib-libilp32 = "cortexa72-cortexa53-ilp32"
+
+AVAILTUNES += "cortexa72-cortexa53-ilp32"
+ARMPKGARCH_tune-cortexa72-cortexa53-ilp32 = "${ARMPKGARCH_tune-cortexa72-cortexa53}_ilp32"
+TUNE_FEATURES_tune-cortexa72-cortexa53-ilp32 = "${TUNE_FEATURES_tune-cortexa72-cortexa53} ilp32"
+PACKAGE_EXTRA_ARCHS_tune-cortexa72-cortexa53-ilp32 = "${PACKAGE_EXTRA_ARCHS_tune-cortexa72-cortexa53} cortexa72-cortexa53-ilp32"
+BASE_LIB_tune-cortexa72-cortexa53-ilp32 = "lib/ilp32"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/arm-rm-tc.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/arm-rm-tc.conf
new file mode 100644
index 0000000..c131333
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/arm-rm-tc.conf
@@ -0,0 +1,264 @@
+require conf/multilib.conf
+require conf/machine/include/tune-cortexrm.inc
+require conf/machine/include/baremetal-tc.conf
+
+# Define all of the multilibs supproted by this configuration
+MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+
+MULTILIBS  = "multilib:libarmv5tesoftfp multilib:libarmv5tehard"
+MULTILIBS += "multilib:libnofp"
+MULTILIBS += "multilib:libv7nofp multilib:libv7fpsoftfp multilib:libv7fphard"
+MULTILIBS += "multilib:libv6mnofp"
+MULTILIBS += "multilib:libv7mnofp"
+MULTILIBS += "multilib:libv7emnofp multilib:libv7emfpsoftfp"
+MULTILIBS += "multilib:libv7emfphard multilib:libv7emdpsoftfp"
+MULTILIBS += "multilib:libv7emdphard"
+MULTILIBS += "multilib:libv8mbasenofp"
+MULTILIBS += "multilib:libv8mmainnofp multilib:libv8mmainfpsoftfp multilib:libv8mmainfphard multilib:libv8mmaindpsoftfp multilib:libv8mmaindphard"
+
+TUNE_CCARGS = "${TUNE_CCARGS_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+
+# Base configuration
+# CFLAGS:
+DEFAULTTUNE = "armrm"
+
+AVAILTUNES += "armrm"
+PACKAGE_EXTRA_ARCHS_tune-armrm = "${TUNE_PKGARCH_tune-armrm}"
+BASE_LIB_tune-armrm = "lib"
+TUNE_FEATURES_tune-armrm = "arm armrm"
+TUNE_CCARGS_tune-armrm = ""
+TUNE_PKGARCH_tune-armrm = "armrm"
+
+
+# arm/v5te/softfp
+# CFLAGS:  -marm -march=armv5te+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libarmv5tesoftfp = "armv5tesoftfp"
+
+AVAILTUNES += "armv5tesoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv5tesoftfp = "${TUNE_PKGARCH_tune-armv5tesoftfp}"
+BASE_LIB_tune-armv5tesoftfp = "lib/arm/v5te/softfp"
+TUNE_FEATURES_tune-armv5tesoftfp = "arm armrm"
+TUNE_CCARGS_tune-armv5tesoftfp = "-marm -march=armv5te+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv5tesoftfp = "armv5tefp"
+
+
+# arm/v5te/hard
+# CFLAGS: -marm -march=armv5te+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libarmv5tehard = "armv5tehard"
+
+AVAILTUNES += "armv5tehard"
+PACKAGE_EXTRA_ARCHS_tune-armv5tehard = "${TUNE_PKGARCH_tune-armv5tehard}"
+BASE_LIB_tune-armv5tehard = "lib/arm/v5te/hard"
+TUNE_FEATURES_tune-armv5tehard = "arm armrm"
+TUNE_CCARGS_tune-armv5tehard = "-marm -march=armv5te+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv5tehard = "armv5tefphf"
+
+
+# thumb/nofp
+# CFLAGS: -mthumb -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libnofp = "armnofp"
+
+AVAILTUNES += "armnofp"
+PACKAGE_EXTRA_ARCHS_tune-armnofp = "${TUNE_PKGARCH_tune-armnofp}"
+BASE_LIB_tune-armnofp = "lib/thumb/nofp"
+TUNE_FEATURES_tune-armnofp = "arm armrm"
+TUNE_CCARGS_tune-armnofp = "-mthumb -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armnofp = "armt"
+
+
+# thumb/v7/nofp
+# CFLAGS: -mthumb -march=armv7 -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv7nofp = "armv7nofp"
+
+AVAILTUNES += "armv7nofp"
+PACKAGE_EXTRA_ARCHS_tune-armv7nofp = "${TUNE_PKGARCH_tune-armv7nofp}"
+BASE_LIB_tune-armv7nofp = "lib/thumb/v7/nofp"
+TUNE_FEATURES_tune-armv7nofp ="arm armrm"
+TUNE_CCARGS_tune-armv7nofp = "-mthumb -march=armv7 -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv7nofp = "armv7t"
+
+
+# thumb/v7+fp/softfp
+# CFLAGS: -mthumb -march=armv7+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7fpsoftfp = "armv7fpsoftfp"
+
+AVAILTUNES += "armv7fpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7fpsoftfp = "${TUNE_PKGARCH_tune-armv7fpsoftfp}"
+BASE_LIB_tune-armv7fpsoftfp = "lib/thumb/v7+fp/softfp"
+TUNE_FEATURES_tune-armv7fpsoftfp ="arm armrm"
+TUNE_CCARGS_tune-armv7fpsoftfp = "-mthumb -march=armv7+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7fpsoftfp = "armv7fpt"
+
+
+# thumb/v7+fp/hard
+# CFLAGS: -mthumb -march=armv7+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7fphard = "armv7fphard"
+
+AVAILTUNES += "armv7fphard"
+PACKAGE_EXTRA_ARCHS_tune-armv7fphard = "${TUNE_PKGARCH_tune-armv7fphard}"
+BASE_LIB_tune-armv7fphard = "lib/thumb/v7+fp/hard"
+TUNE_FEATURES_tune-armv7fphard ="arm armrm"
+TUNE_CCARGS_tune-armv7fphard = "-mthumb -march=armv7+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7fphard = "armv7fpthf"
+
+
+# thumb/v6-m/nofp
+# CFLAGS: -mthumb -march=armv6s-m -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv6mnofp = "armv6mnofp"
+
+# Workaround for this multilib in newlib
+# newlib/libc/sys/arm/trap.S:88: Error: lo register required -- `sub ip,sp,ip
+EXTRA_OECONF_append_pn-libv6mnofp-newlib     = " --disable-newlib-supplied-syscalls"
+
+AVAILTUNES += "armv6mnofp"
+PACKAGE_EXTRA_ARCHS_tune-armv6mnofp = "${TUNE_PKGARCH_tune-armv6mnofp}"
+BASE_LIB_tune-armv6mnofp = "lib/thumb/v6-m/nofp"
+TUNE_FEATURES_tune-armv6mnofp ="arm armrm"
+TUNE_CCARGS_tune-armv6mnofp = "-mthumb -march=armv6s-m -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv6mnofp = "armv6smt"
+
+
+# thumb/v7-m/nofp
+# CFLAGS: -mthumb -march=armv7-m -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv7mnofp = "armv7mnofp"
+
+AVAILTUNES += "armv7mnofp"
+PACKAGE_EXTRA_ARCHS_tune-armv7mnofp = "${TUNE_PKGARCH_tune-armv7mnofp}"
+BASE_LIB_tune-armv7mnofp = "lib/thumb/v7-m/nofp"
+TUNE_FEATURES_tune-armv7mnofp ="arm armrm"
+TUNE_CCARGS_tune-armv7mnofp = "-mthumb -march=armv7-m -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv7mnofp = "armv7mt"
+
+
+# thumb/v7e-m/nofp
+# CFLAGS: -mthumb -march=armv7e-m -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv7emnofp = "armv7emnofp"
+
+AVAILTUNES += "armv7emnofp"
+PACKAGE_EXTRA_ARCHS_tune-armv7emnofp = "${TUNE_PKGARCH_tune-armv7emnofp}"
+BASE_LIB_tune-armv7emnofp = "lib/thumb/v7e-m/nofp"
+TUNE_FEATURES_tune-armv7emnofp ="arm armrm"
+TUNE_CCARGS_tune-armv7emnofp = "-mthumb -march=armv7e-m -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv7emnofp = "armv7emt"
+
+
+# thumb/v7e-m+fp/softfp
+# CFLAGS: -mthumb -march=armv7e-m+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7emfpsoftfp = "armv7emfpsoftfp"
+
+AVAILTUNES += "armv7emfpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7emfpsoftfp = "${TUNE_PKGARCH_tune-armv7emfpsoftfp}"
+BASE_LIB_tune-armv7emfpsoftfp = "lib/thumb/v7e-m+fp/softfp"
+TUNE_FEATURES_tune-armv7emfpsoftfp ="arm armrm"
+TUNE_CCARGS_tune-armv7emfpsoftfp = "-mthumb -march=armv7e-m+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7emfpsoftfp = "armv7emfpt"
+
+
+# thumb/v7e-m+fp/hard
+# CFLAGS: -mthumb -march=armv7e-m+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7emfphard = "armv7emfphard"
+
+AVAILTUNES += "armv7emfphard"
+PACKAGE_EXTRA_ARCHS_tune-armv7emfphard = "${TUNE_PKGARCH_tune-armv7emfphard}"
+BASE_LIB_tune-armv7emfphard = "lib/thumb/v7e-m+fp/hard"
+TUNE_FEATURES_tune-armv7emfphard ="arm armrm"
+TUNE_CCARGS_tune-armv7emfphard = "-mthumb -march=armv7e-m+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7emfphard = "armv7emfpthf"
+
+
+# thumb/v7e-m+dp/softfp
+# CFLAGS: -mthumb -march=armv7e-m+fp.dp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv7emdpsoftfp = "armv7emdpsoftfp"
+
+AVAILTUNES += "armv7emdpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7emdpsoftfp = "${TUNE_PKGARCH_tune-armv7emdpsoftfp}"
+BASE_LIB_tune-armv7emdpsoftfp = "lib/thumb/v7e-m+dp/softfp"
+TUNE_FEATURES_tune-armv7emdpsoftfp ="arm armrm"
+TUNE_CCARGS_tune-armv7emdpsoftfp = "-mthumb -march=armv7e-m+fp.dp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv7emdpsoftfp = "armv7emdp"
+
+# thumb/v7e-m+dp/hard
+# CFLAGS: -mthumb -march=armv7e-m+fp.dp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv7emdphard = "armv7emdphard"
+
+AVAILTUNES += "armv7emdphard"
+PACKAGE_EXTRA_ARCHS_tune-armv7emdphard = "${TUNE_PKGARCH_tune-armv7emdphard}"
+BASE_LIB_tune-armv7emdphard = "lib/thumb/v7e-m+dp/hard"
+TUNE_FEATURES_tune-armv7emdphard ="arm armrm"
+TUNE_CCARGS_tune-armv7emdphard = "-mthumb -march=armv7e-m+fp.dp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv7emdphard = "armv7emdpthf"
+
+
+# thumb/v8-m.base/nofp
+# CFLAGS: -mthumb -march=armv8-m.base -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv8mbasenofp = "armv8mbasenofp"
+
+# Workaround for this multilib in newlib
+# newlib/libc/sys/arm/trap.S:88: Error: lo register required -- `sub ip,sp,ip'
+EXTRA_OECONF_append_pn-libv8mbasenofp-newlib = " --disable-newlib-supplied-syscalls"
+
+AVAILTUNES += "armv8mbasenofp"
+PACKAGE_EXTRA_ARCHS_tune-armv8mbasenofp = "${TUNE_PKGARCH_tune-armv8mbasenofp}"
+BASE_LIB_tune-armv8mbasenofp = "lib/thumb/v8-m.base/nofp"
+TUNE_FEATURES_tune-armv8mbasenofp ="arm armrm"
+TUNE_CCARGS_tune-armv8mbasenofp = "-mthumb -march=armv8-m.base -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv8mbasenofp = "armv8mbaset"
+
+# thumb/v8-m.main/nofp
+# CFLAGS: -mthumb -march=armv8-m.main -mfloat-abi=soft
+DEFAULTTUNE_virtclass-multilib-libv8mmainnofp = "armv8mmainnofp"
+
+AVAILTUNES += "armv8mmainnofp"
+PACKAGE_EXTRA_ARCHS_tune-armv8mmainnofp = "${TUNE_PKGARCH_tune-armv8mmainnofp}"
+BASE_LIB_tune-armv8mmainnofp = "lib/thumb/v8-m.main/nofp"
+TUNE_FEATURES_tune-armv8mmainnofp ="arm armrm"
+TUNE_CCARGS_tune-armv8mmainnofp = "-mthumb -march=armv8-m.main -mfloat-abi=soft"
+TUNE_PKGARCH_tune-armv8mmainnofp = "armv8mmaint"
+
+
+# thumb/v8-m.main+fp/softfp
+# CFLAGS: -mthumb -march=armv8-m.main+fp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv8mmainfpsoftfp = "armv8mmainfpsoftfp"
+
+AVAILTUNES += "armv8mmainfpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8mmainfpsoftfp = "${TUNE_PKGARCH_tune-armv8mmainfpsoftfp}"
+BASE_LIB_tune-armv8mmainfpsoftfp = "lib/thumb/v8-m.main+fp/softfp"
+TUNE_FEATURES_tune-armv8mmainfpsoftfp ="arm armrm"
+TUNE_CCARGS_tune-armv8mmainfpsoftfp = "-mthumb -march=armv8-m.main+fp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv8mmainfpsoftfp = "armv8mmainfpt"
+
+# thumb/v8-m.main+fp/hard
+# CFLAGS: -mthumb -march=armv8-m.main+fp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv8mmainfphard = "armv8mmainfphard"
+
+AVAILTUNES += "armv8mmainfphard"
+PACKAGE_EXTRA_ARCHS_tune-armv8mmainfphard = "${TUNE_PKGARCH_tune-armv8mmainfphard}"
+BASE_LIB_tune-armv8mmainfphard = "lib/thumb/v8-m.main+fp/hard"
+TUNE_FEATURES_tune-armv8mmainfphard ="arm armrm"
+TUNE_CCARGS_tune-armv8mmainfphard = "-mthumb -march=armv8-m.main+fp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv8mmainfphard = "armv8mmainfpthf"
+
+
+# thumb/v8-m.main+dp/softfp
+# CFLAGS: -mthumb -march=armv8-m.main+fp.dp -mfloat-abi=softfp
+DEFAULTTUNE_virtclass-multilib-libv8mmaindpsoftfp = "armv8mmaindpsoftfp"
+
+AVAILTUNES += "armv8mmaindpsoftfp"
+PACKAGE_EXTRA_ARCHS_tune-armv8mmaindpsoftfp = "${TUNE_PKGARCH_tune-armv8mmaindpsoftfp}"
+BASE_LIB_tune-armv8mmaindpsoftfp = "lib/thumb/v8-m.main+dp/softfp"
+TUNE_FEATURES_tune-armv8mmaindpsoftfp ="arm armrm"
+TUNE_CCARGS_tune-armv8mmaindpsoftfp = "-mthumb -march=armv8-m.main+fp.dp -mfloat-abi=softfp"
+TUNE_PKGARCH_tune-armv8mmaindpsoftfp = "armv8mmainfpdpt"
+
+
+# thumb/v8-m.main+dp/hard
+# CFLAGS: -mthumb -march=armv8-m.main+fp.dp -mfloat-abi=hard
+DEFAULTTUNE_virtclass-multilib-libv8mmaindphard = "armv8mmaindphard"
+
+AVAILTUNES += "armv8mmaindphard"
+PACKAGE_EXTRA_ARCHS_tune-armv8mmaindphard = "${TUNE_PKGARCH_tune-armv8mmaindphard}"
+BASE_LIB_tune-armv8mmaindphard = "lib/thumb/v8-m.main+dp/hard"
+TUNE_FEATURES_tune-armv8mmaindphard ="arm armrm"
+TUNE_CCARGS_tune-armv8mmaindphard = "-mthumb -march=armv8-m.main+fp.dp -mfloat-abi=hard"
+TUNE_PKGARCH_tune-armv8mmaindphard = "armv8mmainfpdpthf"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa53-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa53-zynqmp.conf
new file mode 100644
index 0000000..d2bbab0
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa53-zynqmp.conf
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "cortexa53"
+
+require conf/machine/include/soc-zynqmp.inc
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa72-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa72-versal.conf
new file mode 100644
index 0000000..27e109c
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa72-versal.conf
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "cortexa72"
+
+require conf/machine/include/soc-versal.inc
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa9-zynq.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa9-zynq.conf
new file mode 100644
index 0000000..0256810
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexa9-zynq.conf
@@ -0,0 +1 @@
+require conf/machine/include/soc-zynq.inc
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-versal.conf
new file mode 100644
index 0000000..fa58dc0
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-versal.conf
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "cortexr5f"
+
+require conf/machine/include/soc-versal.inc
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-zynqmp.conf
new file mode 100644
index 0000000..817150f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/cortexr5-zynqmp.conf
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "cortexr5f"
+
+require conf/machine/include/soc-zynqmp.inc
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/baremetal-tc.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/baremetal-tc.conf
new file mode 100644
index 0000000..a53ceac
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/baremetal-tc.conf
@@ -0,0 +1,7 @@
+# This is specific to baremetal toolchains only.
+#
+# Some of the operations we want to do are different then regular Yocto
+# Project SDK workflows, so wrap baremetal toolchain items in a custom
+# override:
+
+MACHINEOVERRIDES_append = ":baremetal-multilib-tc"
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 1367e57..f2533be 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
@@ -6,26 +6,20 @@
 IMAGE_FSTYPES ?= "tar.gz cpio cpio.gz.u-boot"
 
 # Kernel Configuration
-XILINX_DEFAULT_KERNEL := "linux-xlnx"
-XILINX_DEFAULT_KERNEL_microblaze := "linux-yocto"
-XILINX_DEFAULT_KERNEL_zynqmp := "linux-yocto"
-PREFERRED_PROVIDER_virtual/kernel ??= "${XILINX_DEFAULT_KERNEL}"
+PREFERRED_PROVIDER_virtual/kernel ??= "linux-xlnx"
 
 # U-Boot Configuration
-XILINX_DEFAULT_UBOOT := "u-boot-xlnx"
-XILINX_DEFAULT_UBOOT_zynqmp := "u-boot"
-PREFERRED_PROVIDER_virtual/bootloader ??= "${XILINX_DEFAULT_UBOOT}"
+PREFERRED_PROVIDER_virtual/bootloader ??= "u-boot-xlnx"
 PREFERRED_PROVIDER_virtual/boot-bin ??= "${PREFERRED_PROVIDER_virtual/bootloader}"
 
+do_image_wic[depends] += "${@' '.join('%s:do_deploy' % r for r in (d.getVar('WIC_DEPENDS') or "").split())}"
+
 UBOOT_SUFFIX ?= "img"
-UBOOT_SUFFIX_zynqmp ?= "bin"
 UBOOT_SUFFIX_microblaze ?= "bin"
 
 UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
 UBOOT_ELF ?= "u-boot"
-UBOOT_ELF_zynq ?= "u-boot.elf"
 UBOOT_ELF_aarch64 ?= "u-boot.elf"
-UBOOT_ELF_versal ?= "u-boot.elf"
 
 #Hardware accelaration
 PREFERRED_PROVIDER_virtual/libgles1_mali400 = "libmali-xlnx"
@@ -39,6 +33,8 @@
 GLIBCPIE_microblaze = ""
 SECURITY_CFLAGS_microblaze = ""
 SECURITY_LDFLAGS_microblaze = ""
+# Microblaze does not support gnu hash style
+LINKER_HASH_STYLE_microblaze = "sysv"
 
 XSERVER ?= " \
 	xserver-xorg \
@@ -79,9 +75,5 @@
     return " ".join(files)
 
 XSERVER_EXT ?= ""
-XSERVER_EXT_zynqmp ?= "xf86-video-armsoc"
-
-# For MicroBlaze default all microblaze machines to use GDB 7.7.1 (for gdbserver/gdb)
-PREFERRED_VERSION_gdb_microblaze = "7.7.1"
 
 FPGA_MNGR_RECONFIG_ENABLE ?= "${@bb.utils.contains('IMAGE_FEATURES', 'fpga-manager', '1', '0', d)}"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-overrides.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-overrides.inc
deleted file mode 100644
index 30049bc..0000000
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/machine-xilinx-overrides.inc
+++ /dev/null
@@ -1,21 +0,0 @@
-SOC_VARIANT ??= ""
-MACHINEOVERRIDES =. "${@['', '${SOC_FAMILY}${SOC_VARIANT}:']['${SOC_VARIANT}' != '']}"
-
-# Here we can extend overrides for the corresponding family and variant
-def get_soc_overrides(fam, var, d):
-  extender = ''
-  if (fam == 'zynqmp'):
-    if (var == 'eg'):
-      extender = 'mali400:'
-    elif (var == 'ev'):
-      extender = 'mali400:vcu:'
-  return extender
-
-# Gets OVERRIDES extender depending on the board
-SOC_OVERRIDES = "${@get_soc_overrides(d.getVar('SOC_FAMILY'),d.getVar('SOC_VARIANT'), d)}"
-
-MACHINEOVERRIDES  =. "${SOC_OVERRIDES}"
-
-PACKAGE_EXTRA_ARCHS_append = " ${SOC_FAMILY}"
-PACKAGE_EXTRA_ARCHS_append = "${@['', ' ${SOC_FAMILY}${SOC_VARIANT}']['${SOC_VARIANT}' != '']}"
-
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 5eb4b5c..886cad2 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
@@ -1,8 +1,14 @@
 # This include is used to setup default QEMU and qemuboot config for meta-xilinx
 # machines.
 
+# Use the xilinx specific version for these users
+IMAGE_CLASSES += "qemuboot-xilinx"
+
 # depend on qemu-helper-native, which will depend on QEMU
-EXTRA_IMAGEDEPENDS += "qemu-helper-native"
+EXTRA_IMAGEDEPENDS += "qemu-xilinx-helper-native"
+
+PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+PREFERRED_PROVIDER_qemu = "qemu-xilinx"
 
 def qemu_default_dtb(d):
     if d.getVar("IMAGE_BOOT_FILES", True):
@@ -16,8 +22,9 @@
     return ""
 
 def qemu_default_serial(d):
-    if d.getVar("SERIAL_CONSOLE", True):
-        speed, console = d.getVar("SERIAL_CONSOLE", True).split(" ", 1)
+    if d.getVar("SERIAL_CONSOLES", True):
+        first_console = d.getVar("SERIAL_CONSOLES", True).split(" ")[0]
+        speed, console = first_console.split(";", 1)
         # zynqmp uses earlycon and stdout (in dtb)
         if "zynqmp" in d.getVar("MACHINEOVERRIDES", True).split(":"):
             return ""
@@ -38,6 +45,7 @@
     return "-device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4 -device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4"
 
 # For qemuboot, default setup across all machines in meta-xilinx
+QB_SYSTEM_NAME_aarch64 ?= "${@qemu_target_binary(d)}-multiarch"
 QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
 QB_DEFAULT_FSTYPE ?= "cpio"
 QB_DTB ?= "${@qemu_default_dtb(d)}"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc
new file mode 100644
index 0000000..7b6bd12
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc
@@ -0,0 +1,14 @@
+# Unfortunately various tunefiles don't include each other, so create
+# a list of things to require based on the DEFAULTTUNE setting.
+TUNEFILE[cortexr5] = "conf/machine/include/tune-cortexrm.inc"
+TUNEFILE[cortexr5f] = "conf/machine/include/tune-cortexrm.inc"
+TUNEFILE[cortexa9thf-neon] = "conf/machine/include/tune-cortexa9.inc"
+TUNEFILE[cortexa53] = "conf/machine/include/tune-cortexa53.inc"
+TUNEFILE[cortexa72] = "conf/machine/include/tune-cortexa72.inc"
+TUNEFILE[cortexa72-cortexa53] = "conf/machine/include/tune-cortexa72-cortexa53.inc"
+TUNEFILE[microblaze] = "conf/machine/include/tune-microblaze.inc"
+
+# Default to arch-armv8a.inc
+TUNEFILE = "${@ d.getVarFlag('TUNEFILE', d.getVar('DEFAULTTUNE')) if d.getVarFlag('TUNEFILE', d.getVar('DEFAULTTUNE')) else 'conf/machine/include/arm/arch-armv8a.inc'}"
+
+require ${TUNEFILE}
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-versal.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-versal.inc
new file mode 100644
index 0000000..c32880b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-versal.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "cortexa72-cortexa53"
+SOC_FAMILY ?= "versal"
+
+# Available SOC_VARIANT's for versal:
+# virt
+
+SOC_VARIANT ?= "s80"
+
+require soc-tune-include.inc
+require xilinx-soc-family.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "Image"
+
+WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin virtual/arm-trusted-firmware"
+
+UBOOT_ELF ?= "u-boot.elf"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynq.inc
similarity index 69%
rename from meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc
rename to meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynq.inc
index f700602..0111cbd 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynq.inc
@@ -7,8 +7,8 @@
 
 SOC_VARIANT ?= "7z"
 
-require conf/machine/include/tune-cortexa9.inc
-require conf/machine/include/soc-family.inc
+require soc-tune-include.inc
+require xilinx-soc-family.inc
 
 # Linux Configuration
 KERNEL_IMAGETYPE ?= "uImage"
@@ -17,3 +17,8 @@
 # Set default load address.
 # Override with KERNEL_EXTRA_ARGS_<board> += "..." in machine file if required
 KERNEL_EXTRA_ARGS_zynq += "UIMAGE_LOADADDR=0x8000"
+
+# WIC Specific dependencies
+WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin"
+
+UBOOT_ELF ?= "u-boot.elf"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc
new file mode 100644
index 0000000..8d421fb
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/soc-zynqmp.inc
@@ -0,0 +1,28 @@
+DEFAULTTUNE ?= "cortexa72-cortexa53"
+SOC_FAMILY ?= "zynqmp"
+
+# Available SOC_VARIANT's for zynqmp:
+# "cg" - Zynq UltraScale+  CG Devices
+# "eg" - Zynq UltraScale+  EG Devices
+# "ev" - Zynq UltraScale+  EV Devices
+# "dr" - Zynq UltraScale+  DR Devices
+
+SOC_VARIANT ?= "eg"
+
+MACHINEOVERRIDES_prepend_zynqmpeg = "mali400:"
+MACHINEOVERRIDES_prepend_zynqmpev = "mali400:vcu:"
+
+require soc-tune-include.inc
+require xilinx-soc-family.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "Image"
+
+# Support multilib on zynqmp
+DEFAULTTUNE_virtclass-multilib-lib32 ?= "armv7vethf-neon-vfpv4"
+
+WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin virtual/arm-trusted-firmware"
+
+UBOOT_SUFFIX ?= "bin"
+
+XSERVER_EXT_zynqmp ?= "xf86-video-armsoc"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-cortexrm.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-cortexrm.inc
new file mode 100644
index 0000000..66edbdb
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-cortexrm.inc
@@ -0,0 +1,21 @@
+DEFAULTTUNE ?= "cortexr5"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+TUNEVALID[armrm] = "Enable ARM Cortex-R/M Family"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armrm', 'armrm:', '' ,d)}"
+
+TUNEVALID[cortexr5] = "Enable Cortex-r5 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr5', ' -mcpu=cortex-r5', '', d)}"
+
+AVAILTUNES += "cortexr5"
+ARMPKGARCH_tune-cortexr5 = "cortexr5"
+
+TUNE_FEATURES_tune-cortexr5 = "armrm cortexr5"
+PACKAGE_EXTRA_ARCHS_tune-cortexr5 = "${TUNE_PKGARCH}"
+
+AVAILTUNES += "cortexr5f"
+ARMPKGARCH_tune-cortexr5f = "cortexr5f"
+
+TUNE_FEATURES_tune-cortexr5f = "armrm cortexr5 vfpv3d16 callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-cortexr5f = "${TUNE_PKGARCH}"
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
deleted file mode 100644
index 83acf6e..0000000
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-versal.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-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/tune-zynqmp.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc
deleted file mode 100644
index cbfa47b..0000000
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-DEFAULTTUNE ?= "aarch64"
-SOC_FAMILY ?= "zynqmp"
-
-# Available SOC_VARIANT's for zynqmp:
-# "cg" - Zynq UltraScale+  CG Devices
-# "eg" - Zynq UltraScale+  EG Devices
-# "ev" - Zynq UltraScale+  EV Devices
-
-SOC_VARIANT ?= "eg"
-
-require conf/machine/include/arm/arch-armv8a.inc
-require conf/machine/include/soc-family.inc
-
-# Linux Configuration
-KERNEL_IMAGETYPE ?= "Image"
-
-# Support multilib on zynqmp
-DEFAULTTUNE_virtclass-multilib-lib32 ?= "armv7vethf-neon-vfpv4"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/include/xilinx-soc-family.inc b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/xilinx-soc-family.inc
new file mode 100644
index 0000000..e6c62cc
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/include/xilinx-soc-family.inc
@@ -0,0 +1,10 @@
+require conf/machine/include/soc-family.inc
+
+SOC_VARIANT ??= ""
+MACHINEOVERRIDES =. "${@['', '${SOC_FAMILY}${SOC_VARIANT}:']['${SOC_VARIANT}' != '']}"
+
+SOC_FAMILY_ARCH ?= "${SOC_FAMILY}"
+SOC_VARIANT_ARCH ?= "${SOC_FAMILY}${SOC_VARIANT}"
+
+PACKAGE_EXTRA_ARCHS_append = " ${SOC_FAMILY_ARCH}"
+PACKAGE_EXTRA_ARCHS_append = "${@['', ' ${SOC_VARIANT_ARCH}'][d.getVar('SOC_VARIANT_ARCH') != d.getVar('SOC_FAMILY_ARCH')]}"
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 d79e4ef..73f5b04 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
@@ -11,14 +11,12 @@
 MACHINE_FEATURES = ""
 
 USE_VT = ""
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
 
 KERNEL_IMAGETYPE ?= "linux.bin.ub"
 
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
 
 EXTRA_IMAGEDEPENDS += "virtual/bitstream virtual/bootloader"
 
-UBOOT_MACHINE ?= "microblaze-generic_config"
+UBOOT_MACHINE = "microblaze-generic_defconfig"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-plm.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-plm.conf
new file mode 100644
index 0000000..9ab8a46
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-plm.conf
@@ -0,0 +1,10 @@
+DEFAULTTUNE ?= "microblaze"
+
+require conf/machine/include/soc-versal.inc
+
+# Endianess, multiplier, barrel shift, pattern compare, floating point double or single, are the possibilities
+AVAILTUNES += "microblaze"
+TUNE_FEATURES_tune-microblaze = "microblaze v11.0 barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
+
+LINKER_HASH_STYLE_microblaze = "sysv"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-pmu.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-pmu.conf
new file mode 100644
index 0000000..09fd3c8
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-pmu.conf
@@ -0,0 +1,10 @@
+DEFAULTTUNE ?= "microblaze"
+
+require conf/machine/include/soc-zynqmp.inc
+
+# Endianess, multiplier, barrel shift, pattern compare, floating point double or single, are the possibilities
+AVAILTUNES += "microblaze"
+TUNE_FEATURES_tune-microblaze = "microblaze v11.0 barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
+
+LINKER_HASH_STYLE_microblaze = "sysv"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-tc.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-tc.conf
new file mode 100644
index 0000000..bc80ad7
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblaze-tc.conf
@@ -0,0 +1,541 @@
+require conf/multilib.conf
+require conf/machine/include/microblaze/arch-microblaze.inc
+require conf/machine/include/baremetal-tc.conf
+
+# ILP request an alternative machine dictionary
+INHERIT += "xlnx-standalone"
+PACKAGEQA_EXTRA_MACHDEFFUNCS .= '${@bb.utils.contains("TUNE_FEATURES", "64-bit", " xlnx_mb64_dict", "", d)}'
+
+# GNU hash style not supported
+LINKER_HASH_STYLE_microblaze = ""
+
+# Define all of the multilibs supproted by this configuration
+MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+
+MULTILIBS += "multilib:libmble"
+MULTILIBS += "multilib:libmbbs"
+MULTILIBS += "multilib:libmbp"
+MULTILIBS += "multilib:libmbm"
+MULTILIBS += "multilib:libmbfpd"
+MULTILIBS += "multilib:libmbmfpd"
+MULTILIBS += "multilib:libmbpm"
+MULTILIBS += "multilib:libmbpfpd"
+MULTILIBS += "multilib:libmbpmfpd"
+MULTILIBS += "multilib:libmbbsp"
+MULTILIBS += "multilib:libmbbsm"
+MULTILIBS += "multilib:libmbbsfpd"
+MULTILIBS += "multilib:libmbbsmfpd"
+MULTILIBS += "multilib:libmbbspm"
+MULTILIBS += "multilib:libmbbspfpd"
+MULTILIBS += "multilib:libmbbspmfpd"
+MULTILIBS += "multilib:libmblem64"
+MULTILIBS += "multilib:libmblebs"
+MULTILIBS += "multilib:libmblep"
+MULTILIBS += "multilib:libmblem"
+MULTILIBS += "multilib:libmblefpd"
+MULTILIBS += "multilib:libmblemfpd"
+MULTILIBS += "multilib:libmblepm"
+MULTILIBS += "multilib:libmblepfpd"
+MULTILIBS += "multilib:libmblepmfpd"
+MULTILIBS += "multilib:libmblebsp"
+MULTILIBS += "multilib:libmblebsm"
+MULTILIBS += "multilib:libmblebsfpd"
+MULTILIBS += "multilib:libmblebsmfpd"
+MULTILIBS += "multilib:libmblebspm"
+MULTILIBS += "multilib:libmblebspfpd"
+MULTILIBS += "multilib:libmblebspmfpd"
+MULTILIBS += "multilib:libmblem64bs"
+MULTILIBS += "multilib:libmblem64p"
+MULTILIBS += "multilib:libmblem64m"
+MULTILIBS += "multilib:libmblem64fpd"
+MULTILIBS += "multilib:libmblem64mfpd"
+MULTILIBS += "multilib:libmblem64pm"
+MULTILIBS += "multilib:libmblem64pfpd"
+MULTILIBS += "multilib:libmblem64pmfpd"
+MULTILIBS += "multilib:libmblem64bsp"
+MULTILIBS += "multilib:libmblem64bsm"
+MULTILIBS += "multilib:libmblem64bsfpd"
+MULTILIBS += "multilib:libmblem64bsmfpd"
+MULTILIBS += "multilib:libmblem64bspm"
+MULTILIBS += "multilib:libmblem64bspfpd"
+MULTILIBS += "multilib:libmblem64bspmfpd"
+
+
+# Base configuration
+# CFLAGS:
+DEFAULTTUNE = "microblaze"
+
+AVAILTUNES += "microblaze"
+BASE_LIB_tune-microblaze = "lib"
+TUNE_FEATURES_tune-microblaze = "microblaze bigendian"
+PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
+
+
+# le
+# CFLAGS: -mlittle-endian
+DEFAULTTUNE_virtclass-multilib-libmble = "microblazele"
+
+AVAILTUNES += "microblazele"
+BASE_LIB_tune-microblazele = "lib/le"
+TUNE_FEATURES_tune-microblazele = "microblaze"
+PACKAGE_EXTRA_ARCHS_tune-microblazele = "${TUNE_PKGARCH}"
+
+
+# bs
+# CFLAGS: -mxl-barrel-shift
+DEFAULTTUNE_virtclass-multilib-libmbbs = "microblazebs"
+
+AVAILTUNES += "microblazebs"
+BASE_LIB_tune-microblazebs = "lib/bs"
+TUNE_FEATURES_tune-microblazebs = "microblaze bigendian barrel-shift"
+PACKAGE_EXTRA_ARCHS_tune-microblazebs = "${TUNE_PKGARCH}"
+
+
+# p
+# CFLAGS: -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmbp = "microblazep"
+
+AVAILTUNES += "microblazep"
+BASE_LIB_tune-microblazep = "lib/p"
+TUNE_FEATURES_tune-microblazep = "microblaze bigendian pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazep = "${TUNE_PKGARCH}"
+
+
+# m
+# CFLAGS: -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmbm = "microblazem"
+
+AVAILTUNES += "microblazem"
+BASE_LIB_tune-microblazem = "lib/m"
+TUNE_FEATURES_tune-microblazem = "microblaze bigendian multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazem = "${TUNE_PKGARCH}"
+
+
+# fpd
+# CFLAGS: -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbfpd = "microblazefpd"
+
+AVAILTUNES += "microblazefpd"
+BASE_LIB_tune-microblazefpd = "lib/fpd"
+TUNE_FEATURES_tune-microblazefpd = "microblaze bigendian fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazefpd = "${TUNE_PKGARCH}"
+
+
+# m/fpd
+# CFLAGS: -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbmfpd = "microblazemfpd"
+
+AVAILTUNES += "microblazemfpd"
+BASE_LIB_tune-microblazemfpd = "lib/m/fpd"
+TUNE_FEATURES_tune-microblazemfpd = "microblaze bigendian multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazemfpd = "${TUNE_PKGARCH}"
+
+
+# p/m
+# CFLAGS: -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmbpm = "microblazepm"
+
+AVAILTUNES += "microblazepm"
+BASE_LIB_tune-microblazepm = "lib/p/m"
+TUNE_FEATURES_tune-microblazepm = "microblaze bigendian pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazepm = "${TUNE_PKGARCH}"
+
+
+# p/fpd
+# CFLAGS: -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbpfpd = "microblazepfpd"
+
+AVAILTUNES += "microblazepfpd"
+BASE_LIB_tune-microblazepfpd = "lib/p/fpd"
+TUNE_FEATURES_tune-microblazepfpd = "microblaze bigendian pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazepfpd = "${TUNE_PKGARCH}"
+
+
+# p/m/fpd
+# CFLAGS: -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbpmfpd = "microblazepmfpd"
+
+AVAILTUNES += "microblazepmfpd"
+BASE_LIB_tune-microblazepmfpd = "lib/p/m/fpd"
+TUNE_FEATURES_tune-microblazepmfpd = "microblaze bigendian pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazepmfpd = "${TUNE_PKGARCH}"
+
+
+# bs/p
+# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmbbsp = "microblazebsp"
+
+AVAILTUNES += "microblazebsp"
+BASE_LIB_tune-microblazebsp = "lib/bs/p"
+TUNE_FEATURES_tune-microblazebsp = "microblaze bigendian barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazebsp = "${TUNE_PKGARCH}"
+
+
+# bs/m
+# CFLAGS: -mxl-barrel-shift -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmbbsm = "microblazebsm"
+
+AVAILTUNES += "microblazebsm"
+BASE_LIB_tune-microblazebsm = "lib/bs/m"
+TUNE_FEATURES_tune-microblazebsm = "microblaze bigendian barrel-shift multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazebsm = "${TUNE_PKGARCH}"
+
+
+# bs/fpd
+# CFLAGS: -mxl-barrel-shift -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbbsfpd = "microblazebsfpd"
+
+AVAILTUNES += "microblazebsfpd"
+BASE_LIB_tune-microblazebsfpd = "lib/bs/fpd"
+TUNE_FEATURES_tune-microblazebsfpd = "microblaze bigendian barrel-shift fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazebsfpd = "${TUNE_PKGARCH}"
+
+
+# bs/m/fpd
+# CFLAGS: -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbbsmfpd = "microblazebsmfpd"
+
+AVAILTUNES += "microblazebsmfpd"
+BASE_LIB_tune-microblazebsmfpd = "lib/bs/m/fpd"
+TUNE_FEATURES_tune-microblazebsmfpd = "microblaze bigendian barrel-shift multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazebsmfpd = "${TUNE_PKGARCH}"
+
+
+# bs/p/m
+# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmbbspm = "microblazebspm"
+
+AVAILTUNES += "microblazebspm"
+BASE_LIB_tune-microblazebspm = "lib/bs/p/m"
+TUNE_FEATURES_tune-microblazebspm = "microblaze bigendian barrel-shift pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazebspm = "${TUNE_PKGARCH}"
+
+
+# bs/p/fpd
+# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbbspfpd = "microblazebspfpd"
+
+AVAILTUNES += "microblazebspfpd"
+BASE_LIB_tune-microblazebspfpd = "lib/bs/p/fpd"
+TUNE_FEATURES_tune-microblazebspfpd = "microblaze bigendian barrel-shift pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazebspfpd = "${TUNE_PKGARCH}"
+
+
+# bs/p/m/fpd
+# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmbbspmfpd = "microblazebspmfpd"
+
+AVAILTUNES += "microblazebspmfpd"
+BASE_LIB_tune-microblazebspmfpd = "lib/bs/p/m/fpd"
+TUNE_FEATURES_tune-microblazebspmfpd = "microblaze bigendian barrel-shift pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazebspmfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64
+# CFLAGS: -mlittle-endian -m64
+DEFAULTTUNE_virtclass-multilib-libmblem64 = "microblazele64"
+
+AVAILTUNES += "microblazele64"
+BASE_LIB_tune-microblazele64 = "lib/le/m64"
+TUNE_FEATURES_tune-microblazele64 = "microblaze 64-bit"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64 = "${TUNE_PKGARCH}"
+
+
+# le/bs
+# CFLAGS: -mlittle-endian -mxl-barrel-shift
+DEFAULTTUNE_virtclass-multilib-libmblebs = "microblazelebs"
+
+AVAILTUNES += "microblazelebs"
+BASE_LIB_tune-microblazelebs = "lib/le/bs"
+TUNE_FEATURES_tune-microblazelebs = "microblaze barrel-shift"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebs = "${TUNE_PKGARCH}"
+
+
+# le/p
+# CFLAGS: -mlittle-endian -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmblep = "microblazelep"
+
+AVAILTUNES += "microblazelep"
+BASE_LIB_tune-microblazelep = "lib/le/p"
+TUNE_FEATURES_tune-microblazelep = "microblaze pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazelep = "${TUNE_PKGARCH}"
+
+
+# le/m
+# CFLAGS: -mlittle-endian -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblem = "microblazelem"
+
+AVAILTUNES += "microblazelem"
+BASE_LIB_tune-microblazelem = "lib/le/m"
+TUNE_FEATURES_tune-microblazelem = "microblaze multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazelem = "${TUNE_PKGARCH}"
+
+
+# le/fpd
+# CFLAGS: -mlittle-endian -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblefpd = "microblazelefpd"
+
+AVAILTUNES += "microblazelefpd"
+BASE_LIB_tune-microblazelefpd = "lib/le/fpd"
+TUNE_FEATURES_tune-microblazelefpd = "microblaze fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelefpd = "${TUNE_PKGARCH}"
+
+
+# le/m/fpd
+# CFLAGS: -mlittle-endian -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblemfpd = "microblazelemfpd"
+
+AVAILTUNES += "microblazelemfpd"
+BASE_LIB_tune-microblazelemfpd = "lib/le/m/fpd"
+TUNE_FEATURES_tune-microblazelemfpd = "microblaze multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelemfpd = "${TUNE_PKGARCH}"
+
+
+# le/p/m
+# CFLAGS: -mlittle-endian -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblepm = "microblazelepm"
+
+AVAILTUNES += "microblazelepm"
+BASE_LIB_tune-microblazelepm = "lib/le/p/m"
+TUNE_FEATURES_tune-microblazelepm = "microblaze pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazelepm = "${TUNE_PKGARCH}"
+
+
+# le/p/fpd
+# CFLAGS: -mlittle-endian -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblepfpd = "microblazelepfpd"
+
+AVAILTUNES += "microblazelepfpd"
+BASE_LIB_tune-microblazelepfpd = "lib/le/p/fpd"
+TUNE_FEATURES_tune-microblazelepfpd = "microblaze pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelepfpd = "${TUNE_PKGARCH}"
+
+
+# le/p/m/fpd
+# CFLAGS: -mlittle-endian -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblepmfpd = "microblazelepmfpd"
+
+AVAILTUNES += "microblazelepmfpd"
+BASE_LIB_tune-microblazelepmfpd = "lib/le/p/m/fpd"
+TUNE_FEATURES_tune-microblazelepmfpd = "microblaze pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelepmfpd = "${TUNE_PKGARCH}"
+
+
+# le/bs/p
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmblebsp = "microblazelebsp"
+
+AVAILTUNES += "microblazelebsp"
+BASE_LIB_tune-microblazelebsp = "lib/le/bs/p"
+TUNE_FEATURES_tune-microblazelebsp = "microblaze barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebsp = "${TUNE_PKGARCH}"
+
+
+# le/bs/m
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblebsm = "microblazelebsm"
+
+AVAILTUNES += "microblazelebsm"
+BASE_LIB_tune-microblazelebsm = "lib/le/bs/m"
+TUNE_FEATURES_tune-microblazelebsm = "microblaze barrel-shift multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebsm = "${TUNE_PKGARCH}"
+
+
+# le/bs/fpd
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblebsfpd = "microblazelebsfpd"
+
+AVAILTUNES += "microblazelebsfpd"
+BASE_LIB_tune-microblazelebsfpd = "lib/le/bs/fpd"
+TUNE_FEATURES_tune-microblazelebsfpd = "microblaze barrel-shift fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebsfpd = "${TUNE_PKGARCH}"
+
+
+# le/bs/m/fpd
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblebsmfpd = "microblazelebsmfpd"
+
+AVAILTUNES += "microblazelebsmfpd"
+BASE_LIB_tune-microblazelebsmfpd = "lib/le/bs/m/fpd"
+TUNE_FEATURES_tune-microblazelebsmfpd = "microblaze barrel-shift multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebsmfpd = "${TUNE_PKGARCH}"
+
+
+# le/bs/p/m
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblebspm = "microblazelebspm"
+
+AVAILTUNES += "microblazelebspm"
+BASE_LIB_tune-microblazelebspm = "lib/le/bs/p/m"
+TUNE_FEATURES_tune-microblazelebspm = "microblaze barrel-shift pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebspm = "${TUNE_PKGARCH}"
+
+
+# le/bs/p/fpd
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblebspfpd = "microblazelebspfpd"
+
+AVAILTUNES += "microblazelebspfpd"
+BASE_LIB_tune-microblazelebspfpd = "lib/le/bs/p/fpd"
+TUNE_FEATURES_tune-microblazelebspfpd = "microblaze barrel-shift pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebspfpd = "${TUNE_PKGARCH}"
+
+
+# le/bs/p/m/fpd
+# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblebspmfpd = "microblazelebspmfpd"
+
+AVAILTUNES += "microblazelebspmfpd"
+BASE_LIB_tune-microblazelebspmfpd = "lib/le/bs/p/m/fpd"
+TUNE_FEATURES_tune-microblazelebspmfpd = "microblaze barrel-shift pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazelebspmfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift
+DEFAULTTUNE_virtclass-multilib-libmblem64bs = "microblazele64bs"
+
+AVAILTUNES += "microblazele64bs"
+BASE_LIB_tune-microblazele64bs = "lib/le/m64/bs"
+TUNE_FEATURES_tune-microblazele64bs = "microblaze 64-bit barrel-shift"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bs = "${TUNE_PKGARCH}"
+
+
+# le/m64/p
+# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmblem64p = "microblazele64p"
+
+AVAILTUNES += "microblazele64p"
+BASE_LIB_tune-microblazele64p = "lib/le/m64/p"
+TUNE_FEATURES_tune-microblazele64p = "microblaze 64-bit pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64p = "${TUNE_PKGARCH}"
+
+
+# le/m64/m
+# CFLAGS: -mlittle-endian -m64 -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblem64m = "microblazele64m"
+
+AVAILTUNES += "microblazele64m"
+BASE_LIB_tune-microblazele64m = "lib/le/m64/m"
+TUNE_FEATURES_tune-microblazele64m = "microblaze 64-bit multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64m = "${TUNE_PKGARCH}"
+
+
+# le/m64/fpd
+# CFLAGS: -mlittle-endian -m64 -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64fpd = "microblazele64fpd"
+
+AVAILTUNES += "microblazele64fpd"
+BASE_LIB_tune-microblazele64fpd = "lib/le/m64/fpd"
+TUNE_FEATURES_tune-microblazele64fpd = "microblaze 64-bit fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64fpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/m/fpd
+# CFLAGS: -mlittle-endian -m64 -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64mfpd = "microblazele64mfpd"
+
+AVAILTUNES += "microblazele64mfpd"
+BASE_LIB_tune-microblazele64mfpd = "lib/le/m64/m/fpd"
+TUNE_FEATURES_tune-microblazele64mfpd = "microblaze 64-bit multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64mfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/p/m
+# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblem64pm = "microblazele64pm"
+
+AVAILTUNES += "microblazele64pm"
+BASE_LIB_tune-microblazele64pm = "lib/le/m64/p/m"
+TUNE_FEATURES_tune-microblazele64pm = "microblaze 64-bit pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64pm = "${TUNE_PKGARCH}"
+
+
+# le/m64/p/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64pfpd = "microblazele64pfpd"
+
+AVAILTUNES += "microblazele64pfpd"
+BASE_LIB_tune-microblazele64pfpd = "lib/le/m64/p/fpd"
+TUNE_FEATURES_tune-microblazele64pfpd = "microblaze 64-bit pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64pfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/p/m/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64pmfpd = "microblazele64pmfpd"
+
+AVAILTUNES += "microblazele64pmfpd"
+BASE_LIB_tune-microblazele64pmfpd = "lib/le/m64/p/m/fpd"
+TUNE_FEATURES_tune-microblazele64pmfpd = "microblaze 64-bit pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64pmfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/p
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare
+DEFAULTTUNE_virtclass-multilib-libmblem64bsp = "microblazele64bsp"
+
+AVAILTUNES += "microblazele64bsp"
+BASE_LIB_tune-microblazele64bsp = "lib/le/m64/bs/p"
+TUNE_FEATURES_tune-microblazele64bsp = "microblaze 64-bit barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bsp = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/m
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblem64bsm = "microblazele64bsm"
+
+AVAILTUNES += "microblazele64bsm"
+BASE_LIB_tune-microblazele64bsm = "lib/le/m64/bs/m"
+TUNE_FEATURES_tune-microblazele64bsm = "microblaze 64-bit barrel-shift multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bsm = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64bsfpd = "microblazele64bsfpd"
+
+AVAILTUNES += "microblazele64bsfpd"
+BASE_LIB_tune-microblazele64bsfpd = "lib/le/m64/bs/fpd"
+TUNE_FEATURES_tune-microblazele64bsfpd = "microblaze 64-bit barrel-shift fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bsfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/m/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64bsmfpd = "microblazele64bsmfpd"
+
+AVAILTUNES += "microblazele64bsmfpd"
+BASE_LIB_tune-microblazele64bsmfpd = "lib/le/m64/bs/m/fpd"
+TUNE_FEATURES_tune-microblazele64bsmfpd = "microblaze 64-bit barrel-shift multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bsmfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/p/m
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
+DEFAULTTUNE_virtclass-multilib-libmblem64bspm = "microblazele64bspm"
+
+AVAILTUNES += "microblazele64bspm"
+BASE_LIB_tune-microblazele64bspm = "lib/le/m64/bs/p/m"
+TUNE_FEATURES_tune-microblazele64bspm = "microblaze 64-bit barrel-shift pattern-compare multiply-low"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bspm = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/p/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64bspfpd = "microblazele64bspfpd"
+
+AVAILTUNES += "microblazele64bspfpd"
+BASE_LIB_tune-microblazele64bspfpd = "lib/le/m64/bs/p/fpd"
+TUNE_FEATURES_tune-microblazele64bspfpd = "microblaze 64-bit barrel-shift pattern-compare fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bspfpd = "${TUNE_PKGARCH}"
+
+
+# le/m64/bs/p/m/fpd
+# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
+DEFAULTTUNE_virtclass-multilib-libmblem64bspmfpd = "microblazele64bspmfpd"
+
+AVAILTUNES += "microblazele64bspmfpd"
+BASE_LIB_tune-microblazele64bspmfpd = "lib/le/m64/bs/p/m/fpd"
+TUNE_FEATURES_tune-microblazele64bspmfpd = "microblaze 64-bit barrel-shift pattern-compare multiply-low fpu-hard"
+PACKAGE_EXTRA_ARCHS_tune-microblazele64bspmfpd = "${TUNE_PKGARCH}"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf
index 00aede1..ed4e2ac 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf
@@ -12,6 +12,6 @@
 KERNEL_IMAGETYPE = "linux.bin.ub"
 KERNEL_IMAGETYPES = ""
 
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
 
 EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf
index 30afbd7..f154197 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf
@@ -12,6 +12,6 @@
 KERNEL_IMAGETYPE = "linux.bin.ub"
 KERNEL_IMAGETYPES = ""
 
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
 
 EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
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 83c5fc1..c531dbb 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
@@ -2,27 +2,25 @@
 #@NAME: microzed-zynq7
 #@DESCRIPTION: Machine support for microZed. (http://www.microzed.org/)
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
-UBOOT_MACHINE = "zynq_microzed_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
-UBOOT_ELF_zynq = "u-boot"
+UBOOT_ELF = "u-boot"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-microzed.dtb"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf
index f4ddb6d..3e5d623 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf
@@ -11,15 +11,15 @@
 MACHINE_FEATURES = ""
 
 USE_VT = ""
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
 
 KERNEL_IMAGETYPE ?= "linux.bin.ub"
 
 # Use the networking setup from qemuarm
+MACHINEOVERRIDES_prepend_pn-init-ifupdown = "qemuall:"
 FILESOVERRIDES_append_pn-init-ifupdown = ":qemuarm"
 
 # This machine is a targeting a QEMU model, runqemu setup:
-IMAGE_CLASSES += "qemuboot"
 QB_MEM = "-m 256"
 QB_MACHINE = "-machine petalogix-ml605"
 QB_OPT_APPEND = "-nographic -serial mon:stdio"
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 c229dac..17e8333 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
@@ -6,27 +6,25 @@
 # the picozed SOM. It also covers the multiple SKUs for the picoZed
 # including 7010, 7020, 7015 and 7030.
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
-UBOOT_MACHINE = "zynq_picozed_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
-UBOOT_ELF_zynq = "u-boot"
+UBOOT_ELF = "u-boot"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
 
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 9725104..8bccfde 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
@@ -2,26 +2,39 @@
 #@NAME: qemu-zynq7
 #@DESCRIPTION: Zynq QEMU machine support ('xilinx-zynq-a9' model)
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "ext2 vfat"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
 
+HDF_MACHINE = "zc702-zynq7"
+
 # Use the networking setup from qemuarm
+MACHINEOVERRIDES_prepend_pn-init-ifupdown = "qemuall:"
 FILESOVERRIDES_append_pn-init-ifupdown = ":qemuarm"
 
-# This machine is a targeting a QEMU model, runqemu setup:
-IMAGE_CLASSES += "qemuboot"
 QB_MEM = "-m 1024"
-QB_MACHINE = "-machine xilinx-zynq-a9"
-QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
-QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+QB_NETWORK_DEVICE = "-net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic"
+QB_DEFAULT_KERNEL_qemuboot-xilinx = "zImage"
 
+QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
+QB_DEFAULT_FSTYPE = "cpio.gz.u-boot"
+QB_DTB = "system.dtb"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND = " \
+	-nographic -serial null -serial mon:stdio \
+	-initrd ${DEPLOY_DIR_IMAGE}/petalinux-image-minimal-qemu-zynq7.cpio.gz.u-boot \
+	-gdb tcp::9000 \
+	-device loader,addr=0xf8000008,data=0xDF0D,data-len=4 \
+	-device loader,addr=0xf8000140,data=0x00500801,data-len=4 \
+	-device loader,addr=0xf800012c,data=0x1ed044d,data-len=4 \
+	-device loader,addr=0xf8000108,data=0x0001e008,data-len=4 \
+	-device loader,addr=0xF8000910,data=0xF,data-len=0x4 \
+	"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf
index 3a21eb7..1ce6329 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf
@@ -11,12 +11,11 @@
 MACHINE_FEATURES = ""
 
 USE_VT = ""
-SERIAL_CONSOLE = "115200 ttyUL0"
+SERIAL_CONSOLES ?= "115200;ttyUL0"
 
 KERNEL_IMAGETYPE ?= "linux.bin.ub"
 
 # This machine is a targeting a QEMU model, runqemu setup:
-IMAGE_CLASSES += "qemuboot"
 QB_MEM = "-m 256"
 QB_MACHINE = "-machine petalogix-s3adsp1800"
 QB_OPT_APPEND = "-nographic -serial mon:stdio"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/system-zcu102.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/system-zcu102.conf
new file mode 100644
index 0000000..5d3bbd2
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/system-zcu102.conf
@@ -0,0 +1,61 @@
+#@TYPE: Machine
+#@NAME: system-zcu102
+#@DESCRIPTION: Machine supporting the architectures in the ZCU102 evaluation board.
+
+# This machine sets up a build for a heterogeneous architecture board.
+# In this specific case, this refers to a zcu102-zynqmp board, which
+# should build artifacts for the hard microblaze architecture, and the
+# cortex-a53.
+
+# This is meant to be used as a base case and adapting it to
+# other boards should be fairly simple.
+
+# To build a full system, simply invoke the command:
+# $ bitbake <image>
+# which is analogous to
+# $ bitbake mc::<image>
+# Where image can be core-image-minimal for example
+# If a user wants to build a package for a certain architecture
+# a similar command can be invoked, just changing the parameter
+# between : and : to the desired multiconfig from one of the
+# declared values below.
+# For example, to build the xilstandalone library for the microblaze:
+# $ bitbake mc:pmumc:xilstandalone
+# or to build fsbl for cortexa53:
+# $ bitbake mc:fsblmc:zyqmp-fsbl
+
+
+# These artifacts are the pmu firmware along with the fsbl and the
+# Linux OS respectively
+
+# Keep in mind that there would still be a wiring required to merge
+# the artifacts from their respective deploy directories using bootgen.
+BBMULTICONFIG = "fsblmc pmumc"
+
+# The following should be changed to the machine which corresponds to
+# the architecture of a specific device, in this case cortexa53
+# But there are several hard coded expected values from several
+# repos, e.g. linux-xlnx which expects a defconfig depending on
+# the machine that is being used, as a TEMPORARY solution and
+# to prove how multiconfig can be used to build a full system
+# with heterogeneous architectures we'll use MACHINE=zcu102-zynqmp.
+
+# The downside is that this stills needs xsct and would technically
+# build two pmu firmwrares and two fsbls, one coming from our
+# multiconfig and one that uses xsct respectively, once the values
+# mentioned above are fixed, this should work properly with:
+# MACHINE = "cortexa53-zynqmp"
+
+MACHINE = "zcu102-zynqmp"
+require conf/machine/${MACHINE}.conf
+
+# Use the same format for TMPDIR  as in the other multiconfigs so its less confusing.
+TMPDIR = "${TOPDIR}/tmp-${MACHINE}-${TCLIBC}"
+
+# Create dependencies for Linux only, other multiconfig applications,
+# can be built separately, e.g. bitbake mc:pmumc:pmufw
+# in this case, linux cannot, also worth mentioning that these should
+# eventually be set on a recipe level and would probably be useful to
+# create a chain of dependencies: pmufw<-fsbl<-Linux
+do_image[mcdepends] += "multiconfig::fsblmc:zynqmp-fsbl:do_deploy"
+do_image[mcdepends] += "multiconfig::pmumc:pmufw:do_deploy"
\ No newline at end of file
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf
new file mode 100644
index 0000000..045e942
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/ultra96-zynqmp.conf
@@ -0,0 +1,35 @@
+#@TYPE: Machine
+#@NAME: ultra96-zynqmp
+#@DESCRIPTION: Machine support for Ultra96 Evaluation Board.
+#
+
+require conf/machine/include/soc-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost usbgadget wifi bluetooth mipi"
+
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+
+KERNEL_DEVICETREE = "xilinx/zynqmp-zcu100-revC.dtb"
+
+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/boot-bin \
+		virtual/bootloader \
+		u-boot-zynq-scr \
+		"
+IMAGE_BOOT_FILES += " \
+               uEnv.txt \
+               atf-uboot.ub \
+               boot.scr \
+               "
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "linux-firmware-wl18xx"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/v350-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/v350-versal.conf
new file mode 100644
index 0000000..6741e2f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/v350-versal.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: v350-versal
+##@DESCRIPTION: Machine support for v350 versal.
+
+require conf/machine/include/soc-versal.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0"
+
+EXTRA_IMAGEDEPENDS += " \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   virtual/psm-firmware \
+   virtual/plm \
+   u-boot-zynq-scr \
+"
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+    Image \
+    boot.scr \
+"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/vc-p-a2197-00-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/vc-p-a2197-00-versal.conf
new file mode 100644
index 0000000..f6337af
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/vc-p-a2197-00-versal.conf
@@ -0,0 +1,71 @@
+#@TYPE: Machine
+#@NAME: vc-p-a2197-versal
+##@DESCRIPTION: Machine support for vc-p-a2197 versal .
+
+require conf/machine/include/soc-versal.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+IMAGE_FSTYPES += "wic.qemu-sd"
+WKS_FILES ?= "sdimage-bootpart.wks"
+
+EXTRA_IMAGEDEPENDS += " \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   virtual/psm-firmware \
+   virtual/plm \
+   u-boot-zynq-scr \
+   qemu-devicetrees \
+   virtual/cdo \
+"
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    system.dtb \
+    Image \
+    boot.scr \
+"
+# This machine has a QEMU model, runqemu setup:
+QB_MACHINE = "-M arm-generic-fdt"
+QB_MEM = "-m 8G"
+QB_DEFAULT_KERNEL = "none"
+QB_NETWORK_DEVICE = ""
+QB_KERNEL_CMDLINE_APPEND ?= ""
+QB_NET = "none"
+
+QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
+QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# Use booti 80000 6000000 4000000 to launch
+QB_OPT_APPEND ?= " -serial null -serial null -serial mon:stdio -display none"
+
+QB_OPT_APPEND_append_qemuboot-xilinx = " \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-ps-vc-p-a2197-00.dtb \
+    -display none \
+    -net nic -net user,tftp=${DEPLOY_DIR_IMAGE} \
+    "
+# PLM instance args
+QB_PLM_OPT = " \
+    -M microblaze-fdt \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/BOOT-${MACHINE}_bh.bin,addr=0xF201E000,force-raw  \
+    -device loader,addr=0xf0000000,data=0xba020004,data-len=4 \
+    -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/CDO/pmc_cdo.bin,addr=0xf2000000,force-raw \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/plm-${MACHINE}.elf,cpu-num=1 \
+    -device loader,addr=0xF1110624,data=0x0,data-len=4 \
+    -device loader,addr=0xF1110620,data=0x1,data-len=4 \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-pmc-vc-p-a2197-00.dtb \
+    -display none \
+    "
+QB_OPT_APPEND_append_qemuboot-xilinx = " -plm-args '${QB_PLM_OPT}'"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf
new file mode 100644
index 0000000..6a453a2
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/vck-sc-zynqmp.conf
@@ -0,0 +1,32 @@
+#@TYPE: Machine
+#@NAME: vck-sc-zynqmp 
+##@DESCRIPTION: Machine support for vck190 system controller.
+
+
+require conf/machine/include/soc-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE ?= "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+# PMU instance args
+PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
+PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
+
+EXTRA_IMAGEDEPENDS += " \
+   u-boot-zynq-uenv \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   u-boot-zynq-scr \
+"
+IMAGE_BOOT_FILES += " \
+    uEnv.txt \
+    atf-uboot.ub \
+    boot.scr \
+"
+
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/vck190-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/vck190-versal.conf
new file mode 100644
index 0000000..028c2b1
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/vck190-versal.conf
@@ -0,0 +1,77 @@
+#@TYPE: Machine
+#@NAME: vck-versal
+##@DESCRIPTION: Machine support for vck-versal .
+
+require conf/machine/include/soc-versal.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+IMAGE_FSTYPES += "wic.qemu-sd"
+WKS_FILES ?= "sdimage-bootpart.wks"
+
+EXTRA_IMAGEDEPENDS += " \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   virtual/psm-firmware \
+   virtual/plm \
+   u-boot-zynq-scr \
+   qemu-devicetrees \
+   virtual/cdo \
+"
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+    Image \
+    boot.scr \
+"
+PLM_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
+PLM_IMAGE_NAME ?= "plm-versal-mb"
+PSM_FIRMWARE_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
+PSM_FIRMWARE_IMAGE_NAME ?= "psm-firmware-versal-mb"
+
+
+# This machine has a QEMU model, runqemu setup:
+QB_MACHINE = "-M arm-generic-fdt"
+QB_MEM = "-m 8G"
+QB_DEFAULT_KERNEL = "none"
+QB_NETWORK_DEVICE = ""
+QB_KERNEL_CMDLINE_APPEND ?= ""
+QB_NET = "none"
+
+QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
+QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# Use booti 80000 6000000 4000000 to launch
+QB_OPT_APPEND ?= " -serial null -serial null -serial mon:stdio -display none"
+
+QB_OPT_APPEND_append_qemuboot-xilinx = " \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-ps-vc-p-a2197-00.dtb \
+    -display none \
+    -net nic -net user,tftp=${DEPLOY_DIR_IMAGE} \
+    "
+
+# PLM instance args
+QB_PLM_OPT = " \
+    -M microblaze-fdt \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/BOOT-${MACHINE}_bh.bin,addr=0xF201E000,force-raw  \
+    -device loader,addr=0xf0000000,data=0xba020004,data-len=4 \
+    -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/CDO/pmc_cdo.bin,addr=0xf2000000,force-raw \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/plm-${MACHINE}.elf,cpu-num=1 \
+    -device loader,addr=0xF1110624,data=0x0,data-len=4 \
+    -device loader,addr=0xF1110620,data=0x1,data-len=4 \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-pmc-vc-p-a2197-00.dtb \
+    -display none \
+    "
+QB_OPT_APPEND_append_qemuboot-xilinx = " -plm-args '${QB_PLM_OPT}'"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-generic.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-generic.conf
new file mode 100644
index 0000000..9bf3593
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-generic.conf
@@ -0,0 +1,81 @@
+#@TYPE: Machine
+#@NAME: Generic versal
+#@DESCRIPTION: versal devices
+
+require conf/machine/include/soc-versal.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
+
+UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+IMAGE_FSTYPES += "wic.qemu-sd"
+WKS_FILES ?= "sdimage-bootpart.wks"
+
+EXTRA_IMAGEDEPENDS += " \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   virtual/psm-firmware \
+   virtual/plm \
+   u-boot-zynq-scr \
+   qemu-devicetrees \
+   virtual/cdo \
+"
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+    Image \
+    boot.scr \
+"
+PLM_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
+PLM_IMAGE_NAME ?= "plm-versal-mb"
+PSM_FIRMWARE_DEPLOY_DIR ?= "{TOPDIR}/versalmbtmp/deploy/images/versal-mb"
+PSM_FIRMWARE_IMAGE_NAME ?= "psm-firmware-versal-mb"
+
+# We use the vc-p-a2197-00-versal DTB from the external-hdf.
+HDF_MACHINE = "vc-p-a2197-00-versal"
+
+# This machine has a QEMU model, runqemu setup:
+QB_MACHINE = "-M arm-generic-fdt"
+QB_MEM = "-m 8G"
+QB_DEFAULT_KERNEL = "none"
+QB_NETWORK_DEVICE = ""
+QB_KERNEL_CMDLINE_APPEND ?= ""
+QB_NET = "none"
+
+QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
+QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# Use booti 80000 6000000 4000000 to launch
+QB_OPT_APPEND ?= " -serial null -serial null -serial mon:stdio -display none"
+
+QB_OPT_APPEND_append_qemuboot-xilinx = " \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-ps-vc-p-a2197-00.dtb \
+    -display none \
+    -net nic -net user,tftp=${DEPLOY_DIR_IMAGE} \
+    "
+
+# PLM instance args
+QB_PLM_OPT = " \
+    -M microblaze-fdt \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/BOOT-${MACHINE}_bh.bin,addr=0xF201E000,force-raw  \
+    -device loader,addr=0xf0000000,data=0xba020004,data-len=4 \
+    -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/CDO/pmc_cdo.bin,addr=0xf2000000,force-raw \
+    -device loader,file=${DEPLOY_DIR_IMAGE}/plm-${MACHINE}.elf,cpu-num=1 \
+    -device loader,addr=0xF1110624,data=0x0,data-len=4 \
+    -device loader,addr=0xF1110620,data=0x1,data-len=4 \
+    -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/board-versal-pmc-vc-p-a2197-00.dtb \
+    -display none \
+    "
+QB_OPT_APPEND_append_qemuboot-xilinx = " -plm-args '${QB_PLM_OPT}'"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-mb.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-mb.conf
new file mode 100644
index 0000000..f40b8bc
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/versal-mb.conf
@@ -0,0 +1,10 @@
+DEFAULTTUNE ?= "microblaze"
+
+require conf/machine/include/soc-versal.inc
+
+# Endianess, multiplier, barrel shift, pattern compare, floating point double or single, are the possibilities
+AVAILTUNES += "microblaze"
+TUNE_FEATURES_tune-microblaze = "microblaze v11.0 barrel-shift pattern-compare"
+PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
+
+LINKER_HASH_STYLE_microblaze = ""
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/vmk180-versal.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/vmk180-versal.conf
new file mode 100644
index 0000000..99379c6
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/vmk180-versal.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: vmk180-versal
+##@DESCRIPTION: Machine support for vmk180-versal .
+
+require conf/machine/include/soc-versal.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0"
+
+EXTRA_IMAGEDEPENDS += " \
+   arm-trusted-firmware \
+   virtual/boot-bin \
+   virtual/bootloader \
+   virtual/psm-firmware \
+   virtual/plm \
+   u-boot-zynq-scr \
+"
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+    Image \
+    boot.scr \
+"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
index 51dd2a9..3bdb215 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
@@ -5,24 +5,19 @@
 
 SOC_VARIANT ?= "dr"
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zc1254_revA_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
-SERIAL_CONSOLE ?= "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zc1254-revA.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
 PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
@@ -31,8 +26,10 @@
 		arm-trusted-firmware \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		boot.scr \
 		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1275-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1275-zynqmp.conf
deleted file mode 100644
index 1e5cd0d..0000000
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc1275-zynqmp.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-#@TYPE: Machine
-#@NAME: zc1275-zynqmp
-#@DESCRIPTION: Machine support for ZC1275 Evaluation Board.
-#
-
-SOC_VARIANT ?= "dr"
-
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
-require conf/machine/include/machine-xilinx-default.inc
-
-MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
-
-UBOOT_MACHINE = "xilinx_zynqmp_zc1275_revB_defconfig"
-SPL_BINARY ?= "spl/boot.bin"
-
-SERIAL_CONSOLE ?= "115200 ttyPS0"
-
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
-
-KERNEL_DEVICETREE = "xilinx/zynqmp-zc1275-revB.dtb"
-
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
-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/boot-bin \
-		virtual/bootloader \
-		"
-IMAGE_BOOT_FILES += " \
-		uEnv.txt \
-		atf-uboot.ub \
-		"
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 fbd58a6..edd3cb2 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
@@ -8,43 +8,51 @@
 #     http://www.xilinx.com/support/index.html/content/xilinx/en/supportNav/boards_and_kits/zynq-7000_soc_boards_and_kits/zynq-7000_soc_zc702_evaluation_kit.html
 # For the FSBL 'zynq_fsbl_0.elf' refer to UG873 and the associated design files.
 #
-SOC_VARIANT ?= "7z"
 
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
 # u-boot configuration
-UBOOT_MACHINE = "zynq_zc702_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zc702.dtb"
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
 		uEnv.txt \
+		boot.scr \
 		"
 
-# Although not fully supported you can run this machine on the mainline QEMU 'xilinx-zynq-a9' machine
-IMAGE_CLASSES += "qemuboot"
 QB_MEM = "-m 1024"
-QB_MACHINE = "-machine xilinx-zynq-a9"
-QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
-QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+QB_NETWORK_DEVICE = "-net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic"
+QB_DEFAULT_KERNEL_qemuboot-xilinx = "zImage"
 
-# Xilinx's fork of QEMU has much better results, so let's default to that
-# Use qemu-xilinx instead of mainline
-PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
+QB_DEFAULT_FSTYPE = "cpio.gz.u-boot"
+QB_DTB = "system.dtb"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
 
-IMAGE_CLASSES += "qemuboot-xilinx"
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND = " \
+        -nographic -serial null -serial mon:stdio \
+	-initrd ${DEPLOY_DIR_IMAGE}/petalinux-image-minimal-zc702-zynq7.cpio.gz.u-boot \
+	-gdb tcp::9000 \
+	-device loader,addr=0xf8000008,data=0xDF0D,data-len=4 \
+	-device loader,addr=0xf8000140,data=0x00500801,data-len=4 \
+ 	-device loader,addr=0xf800012c,data=0x1ed044d,data-len=4 \
+	-device loader,addr=0xf8000108,data=0x0001e008,data-len=4 \
+	-device loader,addr=0xF8000910,data=0xF,data-len=0x4 \
+	"
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 741ef5d..10b5e29 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
@@ -9,43 +9,50 @@
 # For the FSBL 'zynq_fsbl_0.elf' refer to UG873 and the associated design files.
 #
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.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"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zc706.dtb"
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
 		uEnv.txt \
+		boot.scr \
 		"
 
-# Although not fully supported you can run this machine on the mainline QEMU 'xilinx-zynq-a9' machine
-IMAGE_CLASSES += "qemuboot"
 QB_MEM = "-m 1024"
-QB_MACHINE = "-machine xilinx-zynq-a9"
-QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
-QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+QB_NETWORK_DEVICE = "-net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic"
+QB_DEFAULT_KERNEL_qemuboot-xilinx = "zImage"
 
-# Xilinx's fork of QEMU has much better results, so let's default to that
-# Use qemu-xilinx instead of mainline
-PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
+QB_DEFAULT_FSTYPE = "cpio.gz.u-boot"
+QB_DTB = "system.dtb"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
 
-IMAGE_CLASSES += "qemuboot-xilinx"
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND = " \
+	-nographic -serial null -serial mon:stdio \
+	-initrd ${DEPLOY_DIR_IMAGE}/petalinux-image-minimal-zc706-zynq7.cpio.gz.u-boot \
+	-gdb tcp::9000 \
+	-device loader,addr=0xf8000008,data=0xDF0D,data-len=4 \
+	-device loader,addr=0xf8000140,data=0x00500801,data-len=4 \
+	-device loader,addr=0xf800012c,data=0x1ed044d,data-len=4 \
+	-device loader,addr=0xf8000108,data=0x0001e008,data-len=4 \
+	-device loader,addr=0xF8000910,data=0xF,data-len=0x4 \
+	"
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 281110d..edd932c 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
@@ -2,16 +2,13 @@
 #@NAME: zcu102-zynqmp
 #@DESCRIPTION: Machine support for ZCU102 Evaluation Board.
 
-SOC_VARIANT ?= "eg"
-
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zcu102_rev1_0_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
 # Default SD image build onfiguration, use qemu-sd to pad
@@ -19,46 +16,39 @@
 IMAGE_FSTYPES += "wic.qemu-sd"
 WKS_FILES ?= "sdimage-bootpart.wks"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zcu102-rev1.0.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		arm-trusted-firmware \
 		qemu-devicetrees \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+		boot.scr \
 		"
 
 # 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_NETWORK_DEVICE = "-net nic -net nic -net nic -net nic,netdev=net0,macaddr=@MAC@"
 
-# Use qemu-xilinx instead of mainline
-PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
-
-# Use the multiarch script instead of launching QEMU directly
-QB_SYSTEM_NAME_append = "-multiarch"
-
 # Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
 QB_OPT_APPEND_append_qemuboot-xilinx = " \
 		-hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/zcu102-arm.dtb \
 		${@qemu_zynqmp_unhalt(d, True)} \
 		-device loader,file=${DEPLOY_DIR_IMAGE}/arm-trusted-firmware.elf,cpu-num=0 \
 		-device loader,file=${DEPLOY_DIR_IMAGE}/u-boot.elf \
+		-device loader,file=${DEPLOY_DIR_IMAGE}/system.dtb,addr=0x100000 \
 		"
 
 # Attach the rootfs disk image to the second SD interface of QEMU (which is SD0)
@@ -68,8 +58,8 @@
 
 # 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"
+PMU_FIRMWARE_DEPLOY_DIR ?=  "${@ '${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu' if d.getVar('BMULTICONFIG') == 'pmu' else '${TOPDIR}/tmp/deploy/images/${MACHINE}'}"
+PMU_FIRMWARE_IMAGE_NAME ?= "${@ 'pmu-firmware-zynqmp-pmu' if d.getVar('BBMULTICONFIG') == 'pmu' else 'pmu-zcu102-zynqmp'}"
 
 QB_PMU_OPT = " \
 		-M microblaze-fdt \
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 c4b4a03..17a677f 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf
@@ -5,24 +5,19 @@
 
 SOC_VARIANT ?= "ev"
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zcu104_revC_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
-SERIAL_CONSOLE ?= "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zcu104-revC.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
 PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
@@ -31,10 +26,12 @@
 		arm-trusted-firmware \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		boot.scr \
 		"
 
 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 136efb9..27ab2a9 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf
@@ -4,23 +4,18 @@
 
 SOC_VARIANT ?= "ev"
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zcu106_revA_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zcu106-revA.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
 PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
@@ -29,11 +24,13 @@
 		arm-trusted-firmware \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		boot.scr \
 		"
 
 MACHINE_HWCODECS = "libomxil-xlnx"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
index 068e489..24e96ad 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf
@@ -5,24 +5,19 @@
 
 SOC_VARIANT ?= "dr"
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zcu111_revA_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
-SERIAL_CONSOLE ?= "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zcu111-revA.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
 PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
@@ -31,8 +26,10 @@
 		arm-trusted-firmware \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		boot.scr \
 		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
new file mode 100644
index 0000000..2ac4004
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
@@ -0,0 +1,35 @@
+#@TYPE: Machine
+#@NAME: zcu1275-zynqmp
+#@DESCRIPTION: Machine support for ZCU1275 Evaluation Board.
+#
+
+SOC_VARIANT ?= "dr"
+
+require conf/machine/include/soc-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+
+KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1275-revB.dtb"
+
+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/boot-bin \
+		virtual/bootloader \
+		u-boot-zynq-scr \
+		"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		boot.scr \
+		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
index 0450854..d7d41d4 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
@@ -5,24 +5,19 @@
 
 SOC_VARIANT ?= "dr"
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-UBOOT_MACHINE = "xilinx_zynqmp_zc1275_revB_defconfig"
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 
-SERIAL_CONSOLE ?= "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
-SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
 
 KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1285-revA.dtb"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
-
 PMU_FIRMWARE_IMAGE_NAME ?= "pmu-firmware-zynqmp-pmu"
 PMU_FIRMWARE_DEPLOY_DIR ?= "${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu"
 
@@ -31,8 +26,10 @@
 		arm-trusted-firmware \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 IMAGE_BOOT_FILES += " \
 		uEnv.txt \
 		atf-uboot.ub \
+		boot.scr \
 		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf
new file mode 100644
index 0000000..c69b5f3
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: zcu208-zynqmp
+#@DESCRIPTION: Machine support for ZCU208 Evaluation Board.
+#
+
+SOC_VARIANT ?= "dr"
+
+require conf/machine/include/soc-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+
+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/boot-bin \
+		virtual/bootloader \
+		u-boot-zynq-scr \
+		"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		boot.scr \
+		"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf
new file mode 100644
index 0000000..4f07e0e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: zcu216-zynqmp
+#@DESCRIPTION: Machine support for ZCU216 Evaluation Board.
+#
+
+SOC_VARIANT ?= "dr"
+
+require conf/machine/include/soc-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+
+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/boot-bin \
+		virtual/bootloader \
+		u-boot-zynq-scr \
+		"
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		boot.scr \
+		"
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 0b0a0de..d731b6b 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
@@ -8,29 +8,27 @@
 #     http://www.zedboard.org/reference-designs-categories/zynq-concepts-tools-and-techniques-zedboard
 #
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 # u-boot configuration
-UBOOT_MACHINE = "zynq_zed_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
-UBOOT_ELF_zynq = "u-boot"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zed.dtb"
 
 IMAGE_BOOT_FILES += " \
 		boot.bin \
 		uEnv.txt \
+		boot.scr \
 		"
 
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 87634fc..b6a21e4 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
@@ -5,30 +5,27 @@
 # generated base on ZYBO linux-bd project
 #
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
 
 MACHINE_FEATURES = "ext2 vfat usbhost usbgadget keyboard screen alsa sdio"
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
 
-UBOOT_MACHINE = "zynq_zybo_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
 FORCE_PLATFORM_INIT = "1"
-UBOOT_ELF_zynq = "u-boot"
+UBOOT_ELF = "u-boot"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bitstream \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
 IMAGE_BOOT_FILES += " \
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 732fa94..d7af056 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
@@ -6,27 +6,25 @@
 #     https://www.digilentinc.com/Products/Detail.cfm?Prod=ZYBO
 #
 
-SOC_VARIANT ?= "7z"
-
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
 
 MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
 
 # u-boot configuration
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
-UBOOT_MACHINE = "zynq_zybo_config"
+UBOOT_MACHINE = "xilinx_zynq_virt_defconfig"
 SPL_BINARY ?= "spl/boot.bin"
-UBOOT_ELF_zynq = "u-boot"
+UBOOT_ELF = "u-boot"
 
 EXTRA_IMAGEDEPENDS += " \
 		u-boot-zynq-uenv \
 		virtual/boot-bin \
 		virtual/bootloader \
+		u-boot-zynq-scr \
 		"
 
-SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES ?= "115200;ttyPS0"
 
 KERNEL_DEVICETREE = "zynq-zybo.dtb"
 
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zynq-generic.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zynq-generic.conf
index 12fd138..0f38e32 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zynq-generic.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zynq-generic.conf
@@ -1,11 +1,40 @@
 #@TYPE: Machine
-#@NAME:
-#@DESCRIPTION: zynq devices
+#@NAME: Generic Zynq
+#@DESCRIPTION: Generic Zynq Device
 
-require conf/machine/include/tune-zynq.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+require conf/machine/include/soc-zynq.inc
 require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost usbgadget"
 
 EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
+
+UBOOT_MACHINE ?= "xilinx_zynq_virt_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+
+HDF_MACHINE = "zc702-zynq7"
+
+QB_MEM = "-m 1024"
+QB_NETWORK_DEVICE = "-net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic"
+QB_DEFAULT_KERNEL_qemuboot-xilinx = "zImage"
+
+QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
+QB_DEFAULT_FSTYPE = "cpio.gz.u-boot"
+QB_DTB = "system.dtb"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND = " \
+	-nographic -serial null -serial mon:stdio \
+	-initrd ${DEPLOY_DIR_IMAGE}/petalinux-image-minimal-zynq-generic.cpio.gz.u-boot \
+	-gdb tcp::9000 \
+	-device loader,addr=0xf8000008,data=0xDF0D,data-len=4 \
+	-device loader,addr=0xf8000140,data=0x00500801,data-len=4 \
+	-device loader,addr=0xf800012c,data=0x1ed044d,data-len=4 \
+	-device loader,addr=0xf8000108,data=0x0001e008,data-len=4 \
+	-device loader,addr=0xF8000910,data=0xF,data-len=0x4 \
+	"
diff --git a/meta-xilinx/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf b/meta-xilinx/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
index 98385d2..7aa0198 100644
--- a/meta-xilinx/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
+++ b/meta-xilinx/meta-xilinx-bsp/conf/machine/zynqmp-generic.conf
@@ -1,15 +1,82 @@
 #@TYPE: Machine
-#@NAME:
+#@NAME: Generic zynqmp
 #@DESCRIPTION: zynqmp devices
 
-require conf/machine/include/tune-zynqmp.inc
-require conf/machine/include/machine-xilinx-overrides.inc
+# CG is the lowest common demoninator, so use this by default
+SOC_VARIANT ?= "cg"
+
+require conf/machine/include/soc-zynqmp.inc
 require conf/machine/include/machine-xilinx-default.inc
 require conf/machine/include/machine-xilinx-qemu.inc
 
 MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
 
-PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
-
 EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
 
+UBOOT_MACHINE = "xilinx_zynqmp_virt_defconfig"
+SPL_BINARY ?= "spl/boot.bin"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+IMAGE_FSTYPES += "wic.qemu-sd"
+WKS_FILES ?= "sdimage-bootpart.wks"
+
+SERIAL_CONSOLES ?= "115200;ttyPS0"
+
+# We need a generic one that works with QEMU...
+HDF_MACHINE = "zcu102-zynqmp"
+KERNEL_DEVICETREE = "xilinx/zynqmp-zcu102-rev1.0.dtb"
+
+EXTRA_IMAGEDEPENDS += " \
+		u-boot-zynq-uenv \
+		arm-trusted-firmware \
+		qemu-devicetrees \
+		virtual/boot-bin \
+		virtual/bootloader \
+		u-boot-zynq-scr \
+		"
+
+IMAGE_BOOT_FILES += " \
+		uEnv.txt \
+		atf-uboot.ub \
+		${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
+		boot.scr \
+		"
+
+# This machine has a QEMU model, runqemu setup:
+QB_MACHINE = "-machine xlnx-zcu102"
+QB_MEM = "-m 4096"
+QB_OPT_APPEND ?= "-nographic -serial mon:stdio -serial null"
+QB_NETWORK_DEVICE = "-net nic -net nic -net nic -net nic,netdev=net0,macaddr=@MAC@"
+
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND_append_qemuboot-xilinx = " \
+		-hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/zcu102-arm.dtb \
+		${@qemu_zynqmp_unhalt(d, True)} \
+		-device loader,file=${DEPLOY_DIR_IMAGE}/arm-trusted-firmware.elf,cpu-num=0 \
+		-device loader,file=${DEPLOY_DIR_IMAGE}/u-boot.elf \
+		-device loader,file=${DEPLOY_DIR_IMAGE}/system.dtb,addr=0x100000 \
+		"
+
+# Attach the rootfs disk image to the second SD interface of QEMU (which is SD0)
+QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
+QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=5"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# PMU instance args
+PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
+PMU_FIRMWARE_DEPLOY_DIR ?=  "${@ '${TOPDIR}/pmutmp/deploy/images/zynqmp-pmu' if d.getVar('BMULTICONFIG') == 'pmu' else '${TOPDIR}/tmp/deploy/images/${MACHINE}'}"
+PMU_FIRMWARE_IMAGE_NAME ?= "${@ 'pmu-firmware-zynqmp-pmu' if d.getVar('BBMULTICONFIG') == 'pmu' else 'pmu-${MACHINE}'}"
+
+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=${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"