SOC_VARIANT has been remove, we are now only using the YP standard SOC_FAMILY
configuration.  The defined families are: zynq, zynqmp, versal and versal-net.

Our decision of breaking up versal-net from versal, is based on the SoC CPU
changes from cortexa72/r5 to cortexa78/r52, thus we're treating it as a
different SoC family.

In order to capture the individual capabilities that we used to handle via
SOC_VARIANT, we have defined the following features (some may have been
previously defined):
 - mali400 (zynqmp eg and ev)
 - vcu (zynqmp ev)
 - rfsoc (zynqmp dr RF capabiltiies)
 - aie - (versal ai & premium)
 - vdu - (versal ai)

SOC_VARIANT_ARCH and SOC_FAMILY_ARCH are now obsolete and replaced by
MACHINE_ARCH.  This is based on the guideline that any recipes that use
MACHINE_FEATURES should be MACHINE_ARCH specific.

Signed-off-by: Mark Hatle <mark.ha...@amd.com>
---
 .../conf/machine/zc1254-zynqmp.conf           |  4 +-
 .../classes-recipe/qemuboot-xilinx.bbclass    | 12 +--
 meta-xilinx-core/conf/layer.conf              |  2 +-
 meta-xilinx-core/conf/machine/README          |  2 -
 .../conf/machine/include/soc-versal-net.inc   | 26 +++++
 .../conf/machine/include/soc-versal.inc       | 20 ++--
 .../conf/machine/include/soc-zynq.inc         |  8 +-
 .../conf/machine/include/soc-zynqmp.inc       | 26 ++---
 .../machine/include/xilinx-soc-family.inc     | 10 --
 .../conf/machine/versal-ai-core-generic.conf  |  2 +-
 .../conf/machine/versal-ai-edge-generic.conf  |  2 +-
 .../conf/machine/versal-hbm-generic.conf      |  2 -
 .../conf/machine/versal-net-generic.conf      | 98 +++++++++++++++++--
 .../conf/machine/versal-premium-generic.conf  |  2 +-
 .../conf/machine/versal-prime-generic.conf    |  2 -
 .../conf/machine/zynqmp-cg-generic.conf       |  2 -
 .../conf/machine/zynqmp-dr-generic.conf       |  2 +-
 .../conf/machine/zynqmp-eg-generic.conf       |  2 +-
 .../conf/machine/zynqmp-ev-generic.conf       |  2 +-
 .../open-amp/open-amp-xlnx_%.bbappend         |  3 +
 .../recipes-xrt/xrt/xrt_%.bbappend            | 20 ++--
 .../xrt/xrt_202310.2.15.0.bbappend            |  3 +-
 .../xrt/xrt_202320.2.16.0.bbappend            |  3 +-
 meta-xilinx-core/lib/devtool/boot-jtag.py     | 30 +++---
 .../image-update/image-update_1.1.bb          |  3 +-
 .../ai-engine/ai-engine-driver_3.3.bb         | 10 +-
 .../ai-engine/ai-engine-driver_3.4.bb         | 12 +--
 .../ai-engine/ai-engine-driver_3.5.bb         | 12 +--
 .../recipes-bsp/ai-engine/aiefal_1.4.bb       | 10 +-
 .../recipes-bsp/ai-engine/aiefal_1.5.bb       | 12 +--
 .../recipes-bsp/ai-engine/aiefal_1.6.bb       | 12 +--
 .../arm-trusted-firmware.inc                  |  4 +
 .../recipes-bsp/base-pdi/base-pdi_1.0.bb      |  1 +
 .../bootbin/machine-xilinx-versal-net.inc     |  1 +
 .../recipes-bsp/bootbin/xilinx-bootbin_1.0.bb | 18 +++-
 .../recipes-bsp/cdo/extract-cdo_1.0.bb        |  1 +
 .../recipes-bsp/device-tree/device-tree.bb    |  1 +
 .../recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb        |  1 +
 .../recipes-bsp/dfx-mgr/dfx-mgr_2023.1.bb     |  1 +
 .../recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb     |  1 +
 .../recipes-bsp/dfx-mgr/dfx-mgr_2024.1.bb     |  1 +
 .../recipes-bsp/embeddedsw/plmfw.bb           |  1 +
 .../recipes-bsp/embeddedsw/psmfw.bb           |  1 +
 .../recipes-bsp/libdfx/libdfx_1.0.bb          |  1 +
 .../recipes-bsp/libdfx/libdfx_2023.1.bb       |  1 +
 .../recipes-bsp/libdfx/libdfx_2023.2.bb       |  1 +
 .../recipes-bsp/libdfx/libdfx_2024.1.bb       |  1 +
 .../recipes-bsp/u-boot/u-boot-xlnx-scr.bb     | 14 +++
 .../recipes-bsp/u-boot/u-boot-xlnx.inc        |  2 +-
 .../images/core-image-ptest-all.bbappend      |  1 +
 .../images/core-image-ptest-all.bbppend       |  5 -
 .../images/core-image-ptest-fast.bbappend     |  1 +
 .../images/core-image-ptest.bbappend          |  1 +
 .../dp/kernel-module-dp_6.6.10.bb             |  1 +
 .../hdmi/kernel-module-hdmi_6.6.10.bb         |  1 +
 .../linux-xlnx-udev-rules.bb                  |  1 +
 .../recipes-kernel/linux/linux-xlnx.inc       |  3 +
 .../recipes-xrt/zocl/zocl_202310.2.15.0.bb    |  1 +
 .../recipes-xrt/zocl/zocl_202320.2.16.0.bb    |  1 +
 .../recipes-xrt/zocl/zocl_202410.2.17.0.bb    |  1 +
 .../recipes-graphics/wayland/weston.inc       | 15 +--
 .../classes-recipe/esw.bbclass                | 27 ++---
 .../recipes-bsp/embeddedsw/plm-firmware.inc   |  1 +
 .../recipes-bsp/embeddedsw/psm-firmware.inc   |  1 +
 64 files changed, 279 insertions(+), 190 deletions(-)
 create mode 100644 meta-xilinx-core/conf/machine/include/soc-versal-net.inc
 delete mode 100644 meta-xilinx-core/conf/machine/include/xilinx-soc-family.inc
 create mode 100644 
meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_%.bbappend
 create mode 100644 
meta-xilinx-core/recipes-bsp/bootbin/machine-xilinx-versal-net.inc
 delete mode 100644 
meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbppend

diff --git a/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf 
b/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
index c3518577..a9dbe800 100644
--- a/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zc1254-zynqmp.conf
@@ -3,9 +3,7 @@
 #@DESCRIPTION: Machine support for ZC1254 Evaluation Board.
 #
 
-SOC_VARIANT = "dr"
-
-require conf/machine/zynqmp-generic.conf
+require conf/machine/zynqmp-dr-generic.conf
 
 # Add board compatibility override
 MACHINEOVERRIDES .= ":zc1254"
diff --git a/meta-xilinx-core/classes-recipe/qemuboot-xilinx.bbclass 
b/meta-xilinx-core/classes-recipe/qemuboot-xilinx.bbclass
index 5dc21efa..c021ea93 100644
--- a/meta-xilinx-core/classes-recipe/qemuboot-xilinx.bbclass
+++ b/meta-xilinx-core/classes-recipe/qemuboot-xilinx.bbclass
@@ -55,7 +55,7 @@ def qemu_add_extra_args(data):
     # Add kernel image and boot.scr to qemu boot command when initramfs_image 
supplied
     kernel_name = ''
     bootscr_image = '%s/boot.scr' % deploy_dir
-    if soc_family in ('zynqmp', 'versal'):
+    if soc_family in ('zynqmp', 'versal', 'versal-net'):
         kernel_name = 'Image'
         bootscr_loadaddr = '0x20000000'
     if initramfs_image:
@@ -66,10 +66,10 @@ def qemu_add_extra_args(data):
         if kernel_name:
             qb_extra_args = ' -device loader,file=%s,addr=%s,force-raw=on' % 
(kernel_image, kernel_loadaddr)
             qb_extra_args += ' -device loader,file=%s,addr=%s,force-raw=on' % 
(bootscr_image, bootscr_loadaddr)
-        if soc_family == 'versal':
+        if soc_family in ('versal', 'versal-net'):
             qb_extra_args += ' %s' % boot_mode
     else:
-        if soc_family in ('zynqmp', 'versal'):
+        if soc_family in ('zynqmp', 'versal', 'versal-net'):
             qb_extra_args = ' %s' % boot_mode
     return qb_extra_args
 
@@ -80,7 +80,6 @@ def qemu_rootfs_params(data, param):
     tune_features = (data.getVar('TUNE_FEATURES') or []).split()
     if 'microblaze' in tune_features:
         soc_family = 'microblaze'
-    soc_variant = data.getVar('SOC_VARIANT') or ""
 
     if param == 'rootfs':
         return 'none' if bundle_image == "1" else ''
@@ -90,7 +89,8 @@ def qemu_rootfs_params(data, param):
             "microblaze": "cpio.gz",
             "zynq": "cpio.gz",
             "zynqmp": "cpio.gz.u-boot",
-            "versal": "cpio.gz.u-boot.qemu-sd-fatimg"
+            "versal": "cpio.gz.u-boot.qemu-sd-fatimg",
+            "versal-net": "cpio.gz.u-boot.qemu-sd-fatimg"
         }
         if not initramfs_image:
             image_fs = data.getVar('IMAGE_FSTYPES')
@@ -104,7 +104,7 @@ def qemu_rootfs_params(data, param):
         sd_index = "1"
         if soc_family == 'zynq':
             sd_index = "0"
-        if soc_family == 'versal' and soc_variant == 'net':
+        if soc_family == 'versal-net':
             sd_index = "0"
 
         # Device is using a disk
diff --git a/meta-xilinx-core/conf/layer.conf b/meta-xilinx-core/conf/layer.conf
index 349463bf..2aa0a1a1 100644
--- a/meta-xilinx-core/conf/layer.conf
+++ b/meta-xilinx-core/conf/layer.conf
@@ -44,7 +44,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
 
 XILINX_RELEASE_VERSION ??= "v2024.1"
 
-BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION"
+BUILDCFG_VARS:append = " XILINX_RELEASE_VERSION"
 
 DEFAULT_XILINX_QEMU = "qemu-xilinx"
 DEFAULT_XILINX_QEMU:arm = "qemu"
diff --git a/meta-xilinx-core/conf/machine/README 
b/meta-xilinx-core/conf/machine/README
index de8cf58d..f664a2f0 100644
--- a/meta-xilinx-core/conf/machine/README
+++ b/meta-xilinx-core/conf/machine/README
@@ -132,8 +132,6 @@ easiy make a local change, if allowed by the machine .conf:
 
 UBOOT_MACHINE - The defconfig for u-boot.  (Note, this may be an error TBD).
 
-SOC_VARIANT - See include/soc-*.inc (Note, most machines this is fixed).
-
 
 The following variables must be set AFTER the 'require' line, using '='
 or '+='/'=+' as required.  Using ':append', ':prepend', or ':remove' will
diff --git a/meta-xilinx-core/conf/machine/include/soc-versal-net.inc 
b/meta-xilinx-core/conf/machine/include/soc-versal-net.inc
new file mode 100644
index 00000000..b59bdacc
--- /dev/null
+++ b/meta-xilinx-core/conf/machine/include/soc-versal-net.inc
@@ -0,0 +1,26 @@
+DEFAULTTUNE ?= "cortexa72-cortexa53"
+SOC_FAMILY ?= "versal-net"
+
+require conf/machine/include/soc-family.inc
+require soc-tune-include.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "Image"
+
+WIC_DEPENDS ?= "virtual/kernel virtual/bootloader virtual/boot-bin 
virtual/arm-trusted-firmware"
+
+UBOOT_ELF ?= "u-boot.elf"
+
+# Default, if multiconfig is off, call plm/psm-firmware directly, otherwise 
call the versal-fw multiconfig version
+# The Linux compatible plm/psm-firmware though requires meta-xilinx-tools
+PLM_DEPENDS ??= ""
+PLM_MCDEPENDS ??= ""
+PLM_DEPLOY_DIR ??= "${DEPLOY_DIR_IMAGE}"
+PLM_IMAGE_NAME ??= "plm-${MACHINE}"
+PLM_DEPLOY_DIR[vardepsexclude] += "TOPDIR"
+
+PSM_DEPENDS ??= ""
+PSM_MCDEPENDS ??= ""
+PSM_FIRMWARE_DEPLOY_DIR ??= "${DEPLOY_DIR_IMAGE}"
+PSM_FIRMWARE_IMAGE_NAME ??= "psm-firmware-${MACHINE}"
+PSM_DEPLOY_DIR[vardepsexclude] += "TOPDIR"
diff --git a/meta-xilinx-core/conf/machine/include/soc-versal.inc 
b/meta-xilinx-core/conf/machine/include/soc-versal.inc
index dcf3796e..daa129af 100644
--- a/meta-xilinx-core/conf/machine/include/soc-versal.inc
+++ b/meta-xilinx-core/conf/machine/include/soc-versal.inc
@@ -1,17 +1,15 @@
 DEFAULTTUNE ?= "cortexa72-cortexa53"
 SOC_FAMILY ?= "versal"
 
-# Available SOC_VARIANT's for versal:
-# "prime"    - Versal deafult Prime Devices
-# "premium"  - Versal Premium Devices
-# "hbm"      - Versal HMB Devices
-# "ai-core"  - Versal AI-core Devices
-# "ai-edge"  - Versal AI-Edge Devices
-# "net"      - Versal Net Devices
-
-SOC_VARIANT ?= "prime"
-
-require xilinx-soc-family.inc
+# Available MACHINE_FETURES for versal processors:
+# prime   - (none)
+# premium - aie
+# hbm     - (none)
+# ai-core - aie, vdu
+# ai-edge - aie, vdu
+# net     - none
+
+require conf/machine/include/soc-family.inc
 require soc-tune-include.inc
 
 # Linux Configuration
diff --git a/meta-xilinx-core/conf/machine/include/soc-zynq.inc 
b/meta-xilinx-core/conf/machine/include/soc-zynq.inc
index eea02a6c..e456a31f 100644
--- a/meta-xilinx-core/conf/machine/include/soc-zynq.inc
+++ b/meta-xilinx-core/conf/machine/include/soc-zynq.inc
@@ -1,13 +1,7 @@
 DEFAULTTUNE ?= "cortexa9thf-neon"
 SOC_FAMILY ?= "zynq"
 
-# Available SOC_VARIANT's for zynq:
-# 7zs - Zynq-7000 Single A9 Core
-# 7z  - Zynq-7000 Dual A9 Core
-
-SOC_VARIANT ?= "7z"
-
-require xilinx-soc-family.inc
+require conf/machine/include/soc-family.inc
 require soc-tune-include.inc
 
 # Linux Configuration
diff --git a/meta-xilinx-core/conf/machine/include/soc-zynqmp.inc 
b/meta-xilinx-core/conf/machine/include/soc-zynqmp.inc
index 95ac54e2..a9c3ad73 100644
--- a/meta-xilinx-core/conf/machine/include/soc-zynqmp.inc
+++ b/meta-xilinx-core/conf/machine/include/soc-zynqmp.inc
@@ -1,27 +1,13 @@
 DEFAULTTUNE ?= "cortexa72-cortexa53"
 SOC_FAMILY ?= "zynqmp"
 
-# Available SOC_VARIANT's for zynqmp:
-# "cg" - Zynq UltraScale+  CG Devices (default lowest common denominator)
-# "eg" - Zynq UltraScale+  EG Devices
-# "ev" - Zynq UltraScale+  EV Devices
-# "dr" - Zynq UltraScale+  DR Devices
-
-SOC_VARIANT ?= "cg"
-
-# Add VCU feature on "ev" devices
-VCU_MACHINE_FEATURE = ""
-VCU_MACHINE_FEATURE:zynqmp-ev = " vcu"
-MACHINE_FEATURES .= "${VCU_MACHINE_FEATURE}"
-
-# Add mali400 a.k.a Mali Utgard, "ev" and "eg" devices
-MALI_MACHINE_FEATURE = ""
-MALI_MACHINE_FEATURE:zynqmp-eg = " mali400"
-MALI_MACHINE_FEATURE:zynqmp-ev = " mali400"
-MACHINE_FEATURES .= "${MALI_MACHINE_FEATURE}"
-
-require xilinx-soc-family.inc
+# Available MACHINE_FETURES for zynqmp processors:
+# zynqmp-cg - (none)
+# zynqmp-eg - mali400
+# zynqmp-ev - mali400, vcu
+# zynqmp-dr - rfsoc
 
+require conf/machine/include/soc-family.inc
 require soc-tune-include.inc
 
 # Linux Configuration
diff --git a/meta-xilinx-core/conf/machine/include/xilinx-soc-family.inc 
b/meta-xilinx-core/conf/machine/include/xilinx-soc-family.inc
deleted file mode 100644
index dd54f5c6..00000000
--- a/meta-xilinx-core/conf/machine/include/xilinx-soc-family.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-SOC_VARIANT ??= ""
-MACHINEOVERRIDES =. "${@['', '${SOC_FAMILY}-${SOC_VARIANT}:']['${SOC_VARIANT}' 
!= '']}"
-
-require conf/machine/include/soc-family.inc
-
-SOC_FAMILY_ARCH ?= "${SOC_FAMILY}"
-SOC_VARIANT_ARCH ?= 
"${@['${SOC_FAMILY}-${SOC_VARIANT}','${SOC_FAMILY}'][d.getVar('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-core/conf/machine/versal-ai-core-generic.conf 
b/meta-xilinx-core/conf/machine/versal-ai-core-generic.conf
index 34f57691..3b7218c1 100644
--- a/meta-xilinx-core/conf/machine/versal-ai-core-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-ai-core-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'versal-ai-core-generic:']['versal-ai-core-generic'
 
 require conf/machine/versal-generic.conf
 
-SOC_VARIANT = "ai-core"
+MACHINE_FEATURES += "aie vdu"
 
 #### No additional settings should be after the Postamble
 #### Postamble
diff --git a/meta-xilinx-core/conf/machine/versal-ai-edge-generic.conf 
b/meta-xilinx-core/conf/machine/versal-ai-edge-generic.conf
index 1028ac04..2b4f94d2 100644
--- a/meta-xilinx-core/conf/machine/versal-ai-edge-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-ai-edge-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'versal-ai-edge-generic:']['versal-ai-edge-generic'
 
 require conf/machine/versal-generic.conf
 
-SOC_VARIANT = "ai-edge"
+MACHINE_FEATURES += "aie vdu"
 
 # VEK280 board has 12GB memory only but default versal-generic has QB_MEM set 
to
 # 8G, Hence we need set 12G in QB_MEM.
diff --git a/meta-xilinx-core/conf/machine/versal-hbm-generic.conf 
b/meta-xilinx-core/conf/machine/versal-hbm-generic.conf
index 3e72da60..9fef78f3 100644
--- a/meta-xilinx-core/conf/machine/versal-hbm-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-hbm-generic.conf
@@ -4,8 +4,6 @@ MACHINEOVERRIDES =. "${@['', 
'versal-hbm-generic:']['versal-hbm-generic' != '${M
 
 require conf/machine/versal-generic.conf
 
-SOC_VARIANT = "hbm"
-
 # VHK158 has 32GB memory only but default versal-generic has QB_MEM set to 8G,
 # Since versal-vhk158-reva.dts has 32GB set, we need set same in QB_MEM
 QB_MEM = "-m 32G"
diff --git a/meta-xilinx-core/conf/machine/versal-net-generic.conf 
b/meta-xilinx-core/conf/machine/versal-net-generic.conf
index eb450bbf..d6524510 100644
--- a/meta-xilinx-core/conf/machine/versal-net-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-net-generic.conf
@@ -6,30 +6,83 @@
 MACHINEOVERRIDES =. "${@['', 'versal-net-generic:']['versal-net-generic' != 
'${MACHINE}']}"
 #### Regular settings follow
 
-# Must be set first, or versal-generic will set it
-UBOOT_MACHINE ?= "xilinx_versal_net_virt_defconfig"
+# Variables that changes based on hw design or board specific requirement must 
be
+# defined before calling the required inclusion file else pre-expansion value
+# defined in local.conf without machine override will not be reflected.
 
-# Yocto Versal Net device-tree variables
+# Yocto Versal device-tree variables
 YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= 
"psx_wizard_0_psxl_0_psx_sbsauart_0"
+DT_PADDING_SIZE:pn-device-tree ?= "0x1000"
+DTC_FLAGS:pn-device-tree = "-@"
 YAML_DT_BOARD_FLAGS ?= "{BOARD versal-net-ipp-rev1.9}"
 
-# Yocto Versal Net PLM variables
+# Yocto Versal u-boot-xlnx variables
+UBOOT_MACHINE ?= "xilinx_versal_net_virt_defconfig"
+BOOTMODE ?= "generic.root"
+
+# Yocto Versal arm-trusted-firmware(TF-A) variables
+TFA_BL33_LOAD ?= "0x8000000"
+
+# Yocto Versal PLM variables
 YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware ?= 
"psx_wizard_0_psxl_0_psx_sbsauart_0"
 YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= 
"psx_wizard_0_psxl_0_psx_sbsauart_0"
 
+# Yocto Versal KERNEL Variables
+UBOOT_ENTRYPOINT  ?= "0x200000"
+UBOOT_LOADADDRESS ?= "0x200000"
+
 # Versal Serial Console
 SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;ttyAMA1"
 YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
 
-require conf/machine/versal-generic.conf
+require conf/machine/include/soc-versal-net.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
 
-SOC_VARIANT = "net"
-
-# versal-generic.conf uses vck190-versal xsa as reference input.
+# versal-net-generic.conf uses a qemu only xsa as reference input.
 # User can override with custom xsa using HDF_BASE and HDF_PATH variables from
 # local.conf.
 HDF_MACHINE = "versal-net-generic"
 
+MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+# Add wic.qemu-sd only if initramfs_image not set due to circular dependecies
+IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == 
'' else 'cpio.gz.u-boot.qemu-sd-fatimg'}"
+
+EXTRA_IMAGEDEPENDS += " \
+    libyaml-native \
+    python3-cython-native \
+    python3-pyyaml-native \
+    arm-trusted-firmware \
+    virtual/boot-bin \
+    virtual/bootloader \
+    virtual/psm-firmware \
+    virtual/plm \
+    u-boot-xlnx-scr \
+    qemu-devicetrees:do_deploy \
+    virtual/cdo:do_deploy \
+    "
+
+IMAGE_BOOT_FILES += " \
+    boot.bin \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 
'system.dtb', '', d)} \
+    Image \
+    boot.scr \
+    "
+
+# Versal QEMU Configurations
+# This machine has a QEMU model, runqemu setup:
+QB_MEM = "-m 8G"
+QB_DEFAULT_KERNEL = "none"
+# Iteration appears to be eth0 then eth1
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@ -net nic"
+QB_KERNEL_CMDLINE_APPEND ?= ""
+
+QEMU_HW_DTB_PATH = "${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch"
 QEMU_HW_DTB_PS =  "${QEMU_HW_DTB_PATH}/board-versal-net-psx-spp-1.4.dtb"
 QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmx-virt.dtb"
 
@@ -41,7 +94,34 @@ QEMU_HW_DTB_PMC = 
"${QEMU_HW_DTB_PATH}/board-versal-pmx-virt.dtb"
 # hw serial3 pl011 (0xf1930000)        - linux serial1 (ttyAMA1)
 QB_XILINX_SERIAL = "-serial null -serial null -serial mon:stdio -serial null"
 
+QB_OSPI_FILE ??= ""
+
+QB_OPT_APPEND += " \
+    -hw-dtb ${QEMU_HW_DTB_PS} \
+    ${@qemu_add_extra_args(d)} \
+    ${@'-bootbin ${QB_OSPI_FILE}' if d.getVar('QB_OSPI_FILE') != '' else ''} \
+    "
+
+# PLM instance args
+QB_PLM_OPT = " \
+    -M microblaze-fdt \
+    -device loader,addr=0xf0000000,data=0xba020004,data-len=4 \
+    -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 \
+    -device loader,addr=0xF1110624,data=0x0,data-len=4 \
+    -device loader,addr=0xF1110620,data=0x1,data-len=4 \
+    -hw-dtb ${QEMU_HW_DTB_PMC} \
+    -display none \
+    "
+
+QB_FW_FILES = " \
+    -device 
loader,file=${DEPLOY_DIR_IMAGE}/BOOT-${MACHINE}_bh.bin,addr=0xF201E000,force-raw
 \
+    -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 \
+"
+QB_PLM_OPT += "${@'' if d.getVar('QB_OSPI_FILE') else d.getVar('QB_FW_FILES')}"
+
+QB_OPT_APPEND += " -plm-args '${QB_PLM_OPT}'"
+
 #### No additional settings should be after the Postamble
 #### Postamble
 PACKAGE_EXTRA_ARCHS:append = "${@['', ' 
versal_net_generic']['versal-net-generic' != "${MACHINE}"]}"
-
diff --git a/meta-xilinx-core/conf/machine/versal-premium-generic.conf 
b/meta-xilinx-core/conf/machine/versal-premium-generic.conf
index d785edff..357e852d 100644
--- a/meta-xilinx-core/conf/machine/versal-premium-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-premium-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'versal-premium-generic:']['versal-premium-generic'
 
 require conf/machine/versal-generic.conf
 
-SOC_VARIANT = "premium"
+MACHINE_FEATURES += "aie"
 
 #### No additional settings should be after the Postamble
 #### Postamble
diff --git a/meta-xilinx-core/conf/machine/versal-prime-generic.conf 
b/meta-xilinx-core/conf/machine/versal-prime-generic.conf
index 206f0e2a..edce3577 100644
--- a/meta-xilinx-core/conf/machine/versal-prime-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-prime-generic.conf
@@ -4,8 +4,6 @@ MACHINEOVERRIDES =. "${@['', 
'versal-prime-generic:']['versal-prime-generic' !=
 
 require conf/machine/versal-generic.conf
 
-SOC_VARIANT = "prime"
-
 QEMU_HW_DTB_PS = "${QEMU_HW_DTB_PATH}/board-versal-ps-vmk180.dtb"
 
 #### No additional settings should be after the Postamble
diff --git a/meta-xilinx-core/conf/machine/zynqmp-cg-generic.conf 
b/meta-xilinx-core/conf/machine/zynqmp-cg-generic.conf
index 38c9126f..44169186 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-cg-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-cg-generic.conf
@@ -4,8 +4,6 @@ MACHINEOVERRIDES =. "${@['', 
'zynqmp-cg-generic:']['zynqmp-cg-generic' != '${MAC
 
 require conf/machine/zynqmp-generic.conf
 
-SOC_VARIANT = "cg"
-
 #### No additional settings should be after the Postamble
 #### Postamble
 PACKAGE_EXTRA_ARCHS:append = "${@['', ' 
zynqmp_cg_generic']['zynqmp-cg-generic' != "${MACHINE}"]}"
diff --git a/meta-xilinx-core/conf/machine/zynqmp-dr-generic.conf 
b/meta-xilinx-core/conf/machine/zynqmp-dr-generic.conf
index fbe445aa..316175af 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-dr-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-dr-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'zynqmp-dr-generic:']['zynqmp-dr-generic' != '${MAC
 
 require conf/machine/zynqmp-generic.conf
 
-SOC_VARIANT = "dr"
+MACHINE_FEATURES += "rfsoc"
 
 #### No additional settings should be after the Postamble
 #### Postamble
diff --git a/meta-xilinx-core/conf/machine/zynqmp-eg-generic.conf 
b/meta-xilinx-core/conf/machine/zynqmp-eg-generic.conf
index 33375b46..239ded34 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-eg-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-eg-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'zynqmp-eg-generic:']['zynqmp-eg-generic' != '${MAC
 
 require conf/machine/zynqmp-generic.conf
 
-SOC_VARIANT = "eg"
+MACHINE_FEATURES += "mali400"
 
 #### No additional settings should be after the Postamble
 #### Postamble
diff --git a/meta-xilinx-core/conf/machine/zynqmp-ev-generic.conf 
b/meta-xilinx-core/conf/machine/zynqmp-ev-generic.conf
index f2ffe40f..31d94f63 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-ev-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-ev-generic.conf
@@ -4,7 +4,7 @@ MACHINEOVERRIDES =. "${@['', 
'zynqmp-ev-generic:']['zynqmp-ev-generic' != '${MAC
 
 require conf/machine/zynqmp-generic.conf
 
-SOC_VARIANT = "ev"
+MACHINE_FEATURES += "mali400 vcu"
 
 #### No additional settings should be after the Postamble
 #### Postamble
diff --git 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_%.bbappend
 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_%.bbappend
new file mode 100644
index 00000000..33cd55c1
--- /dev/null
+++ 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_%.bbappend
@@ -0,0 +1,3 @@
+# Prevents parse failrues on zynq
+
+COMPATIBLE_MACHINE:zynq = "^$"
diff --git 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_%.bbappend 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_%.bbappend
index 4d21c98b..0e7f3693 100644
--- 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_%.bbappend
+++ 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_%.bbappend
@@ -1,14 +1,8 @@
 # Use libmetal for systems with AIE
-# For vck190 kind of devices
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
-EXTRA_OECMAKE:append:versal-ai-core = " -DXRT_AIE_BUILD=true"
-TARGET_CXXFLAGS:append:versal-ai-core = " -DXRT_ENABLE_AIE -DFAL_LINUX=on"
-DEPENDS:append:versal-ai-core = " libxaiengine aiefal"
-RDEPENDS:${PN}:append:versal-ai-core = " libxaiengine aiefal"
-
-# For vek280 kind of devices
-PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
-EXTRA_OECMAKE:append:versal-ai-edge = " -DXRT_AIE_BUILD=true"
-TARGET_CXXFLAGS:append:versal-ai-edge = " -DXRT_ENABLE_AIE -DFAL_LINUX=on"
-DEPENDS:append:versal-ai-edge = " libxaiengine aiefal"
-RDEPENDS:${PN}:append:versal-ai-edge = " libxaiengine aiefal"
+# For versal devices with the ai-engine
+PACKAGE_ARCH_orig := "${PACKAGE_ARCH}"
+PACKAGE_ARCH = "${@bb.utils.contains('MACHINE_FEATURES', 'aie', 
'${MACHINE_ARCH}', '${PACKAGE_ARCH_orig}', d)}"
+EXTRA_OECMAKE .= "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' 
-DXRT_AIE_BUILD=true', '', d)}"
+TARGET_CXXFLAGS .= "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' 
-DXRT_ENABLE_AIE -DFAL_LINUX=on', '', d)}"
+DEPENDS .= "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' libxaiengine 
aiefal', '', d)}"
+RDEPENDS:${PN} += "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' 
libxaiengine aiefal', '', d)}"
diff --git 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202310.2.15.0.bbappend
 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202310.2.15.0.bbappend
index 89f1b4ad..362dc45a 100644
--- 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202310.2.15.0.bbappend
+++ 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202310.2.15.0.bbappend
@@ -1,3 +1,2 @@
 # Older xrt requires a manual dependency on libmetal
-DEPENDS:append:versal-ai-core = " libmetal"
-DEPENDS:append:versal-ai-edge = " libmetal"
+DEPENDS .= "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' libmetal', '', 
d)}"
diff --git 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202320.2.16.0.bbappend
 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202320.2.16.0.bbappend
index 89f1b4ad..362dc45a 100644
--- 
a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202320.2.16.0.bbappend
+++ 
b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-xrt/xrt/xrt_202320.2.16.0.bbappend
@@ -1,3 +1,2 @@
 # Older xrt requires a manual dependency on libmetal
-DEPENDS:append:versal-ai-core = " libmetal"
-DEPENDS:append:versal-ai-edge = " libmetal"
+DEPENDS .= "${@bb.utils.contains('MACHINE_FEATURES', 'aie', ' libmetal', '', 
d)}"
diff --git a/meta-xilinx-core/lib/devtool/boot-jtag.py 
b/meta-xilinx-core/lib/devtool/boot-jtag.py
index 53d70262..247851ec 100644
--- a/meta-xilinx-core/lib/devtool/boot-jtag.py
+++ b/meta-xilinx-core/lib/devtool/boot-jtag.py
@@ -32,7 +32,6 @@ def bootjtag(args, config, basepath, workspace):
         machine = rd.getVar('MACHINE')
         arch =  rd.getVar('TARGET_ARCH')
         soc = rd.getVar("SOC_FAMILY")
-        soc_variant = rd.getVar("SOC_VARIANT")
         ddr_base_addr = rd.getVar('DDR_BASEADDR')
         kernel_img_name = rd.getVar('KERNEL_IMAGE')
         kernel_load_addr = rd.getVar('KERNEL_LOAD_ADDRESS')
@@ -59,7 +58,7 @@ def bootjtag(args, config, basepath, workspace):
     # MB = (DDR base address + DDR Size) - 0xe00000
     # Zynq 7000 = DDR base address + 0x3000000
     # ZynqMP = DDR base address + 0x20000000
-    # Versal = DDR base address + 0x20000000
+    # Versal & Versal-net = DDR base address + 0x20000000
     if arch == 'microblazeel':
         # Assuming DDR size is 2GB
         bootscr_addr = hex(int(ddr_base_addr, 16) + 0x80000000 - 0xe00000)
@@ -93,7 +92,7 @@ def bootjtag(args, config, basepath, workspace):
         data['atf'] = os.path.join(deploy_dir, 'arm-trusted-firmware.elf')
         data['pmufw'] = os.path.join(deploy_dir, 'pmu-firmware-' + machine + 
'.elf')
 
-    if soc == 'versal':
+    if soc in ('versal', 'versal-net'):
         data['bootbin'] = os.path.join(deploy_dir, 'boot.bin')
 
     data['bootscr'] = os.path.join(deploy_dir, 'boot.scr')
@@ -165,12 +164,17 @@ def bootjtag(args, config, basepath, workspace):
         lines.append('puts stderr "INFO: Downloading BOOT bin file: ' + 
data['bootbin'] + '"')
         lines.append('device program \"' + data['bootbin'] + '\"')
         lines.append('')
-
-        if soc_variant == 'net':
-            lines.append('targets -set -nocase -filter {name =~ \"*A78*#0\"}')
-        else:
-            lines.append('targets -set -nocase -filter {name =~ \"*A72*#0\"}')
-
+        lines.append('targets -set -nocase -filter {name =~ \"*A72*#0\"}')
+        lines.append('stop')
+        lines.append('')
+        lines.append('targets -set -nocase -filter {name =~ \"*Versal*\"}')
+    elif soc == 'versal-net':
+        # Download boot.bin to versal device
+        lines.append('targets -set -nocase -filter {name =~ \"*PMC*\"}')
+        lines.append('puts stderr "INFO: Downloading BOOT bin file: ' + 
data['bootbin'] + '"')
+        lines.append('device program \"' + data['bootbin'] + '\"')
+        lines.append('')
+        lines.append('targets -set -nocase -filter {name =~ \"*A78*#0\"}')
         lines.append('stop')
         lines.append('')
         lines.append('targets -set -nocase -filter {name =~ \"*Versal*\"}')
@@ -235,10 +239,10 @@ def bootjtag(args, config, basepath, workspace):
 
     # Select A72 Core 0 to load and run Versal images
     if soc == 'versal':
-        if soc_variant == 'net':
-            lines.append('targets -set -nocase -filter {name =~ \"*A78*#0\"}')
-        else:
-            lines.append('targets -set -nocase -filter {name =~ \"*A72*#0\"}')
+        lines.append('targets -set -nocase -filter {name =~ \"*A72*#0\"}')
+
+    if soc == 'versal-net':
+        lines.append('targets -set -nocase -filter {name =~ \"*A78*#0\"}')
 
     lines.append('con')
     lines.append('exit\n')
diff --git a/meta-xilinx-core/recipes-apps/image-update/image-update_1.1.bb 
b/meta-xilinx-core/recipes-apps/image-update/image-update_1.1.bb
index 7080379f..df3b1188 100644
--- a/meta-xilinx-core/recipes-apps/image-update/image-update_1.1.bb
+++ b/meta-xilinx-core/recipes-apps/image-update/image-update_1.1.bb
@@ -17,8 +17,9 @@ S = "${UNPACKDIR}/git"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
-PACKAGE_ARCH:zynqmp = "${SOC_FAMILY_ARCH}"
+PACKAGE_ARCH:zynqmp = "${MACHINE_ARCH}"
 
 # Force the make system to use the flags we want!
 EXTRA_OEMAKE = 'CC="${CC} ${TARGET_CFLAGS} ${TARGET_LDFLAGS}" all'
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb
index 0803887d..0b3effe2 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb
@@ -9,9 +9,11 @@ AIEDIR ?= "${S}/driver"
 S = "${UNPACKDIR}/git"
 I = "${AIEDIR}/include"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -42,5 +44,3 @@ do_install(){
        install -d ${D}${libdir}
        cp -dr ${AIEDIR}/src/*.so* ${D}${libdir}
 }
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
index 8ee45d22..88d4995f 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
@@ -9,9 +9,11 @@ AIEDIR ?= "${S}/driver"
 S = "${UNPACKDIR}/git"
 I = "${AIEDIR}/include"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -42,7 +44,3 @@ do_install(){
        install -d ${D}${libdir}
        cp -dr ${AIEDIR}/src/*.so* ${D}${libdir}
 }
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
-PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
-
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.5.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.5.bb
index 2ed7aece..0710a2bb 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.5.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.5.bb
@@ -9,9 +9,11 @@ AIEDIR ?= "${S}/driver"
 S = "${UNPACKDIR}/git"
 I = "${AIEDIR}/include"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -42,7 +44,3 @@ do_install(){
        install -d ${D}${libdir}
        cp -dr ${AIEDIR}/src/*.so* ${D}${libdir}
 }
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
-PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
-
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb
index f47c4eef..73cbfdd6 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb
@@ -8,9 +8,11 @@ SECTION        = "devel"
 XAIEFAL_DIR ?= "fal"
 S = "${UNPACKDIR}/git"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -29,5 +31,3 @@ EXTRA_OECMAKE:append = "${@'-DWITH_EXAMPLES=ON' if 
d.getVar('WITH_EXAMPLES') ==
 FILES:${PN}-demos = " \
     ${bindir}/* \
 "
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
index 6c232a37..ab65f319 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
@@ -8,9 +8,11 @@ SECTION        = "devel"
 XAIEFAL_DIR ?= "fal"
 S = "${UNPACKDIR}/git"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -29,7 +31,3 @@ EXTRA_OECMAKE:append = "${@'-DWITH_EXAMPLES=ON' if 
d.getVar('WITH_EXAMPLES') ==
 FILES:${PN}-demos = " \
     ${bindir}/* \
 "
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
-PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
-
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.6.bb 
b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.6.bb
index 425ec5ca..11c88d34 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.6.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.6.bb
@@ -8,9 +8,11 @@ SECTION        = "devel"
 XAIEFAL_DIR ?= "fal"
 S = "${UNPACKDIR}/git"
 
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
-COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
+inherit features_check
+
+REQUIRED_MACHINE_FEATURES = "aie"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 IOBACKENDS ?= "Linux"
 
@@ -29,7 +31,3 @@ EXTRA_OECMAKE:append = "${@'-DWITH_EXAMPLES=ON' if 
d.getVar('WITH_EXAMPLES') ==
 FILES:${PN}-demos = " \
     ${bindir}/* \
 "
-
-PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
-PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
-
diff --git 
a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc 
b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
index 1678c17b..9e9d8e8f 100644
--- a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
@@ -28,6 +28,7 @@ ATF_BASE_NAME ?= 
"${PN}-${PKGE}-${PKGV}-${PKGR}${IMAGE_VERSION_SUFFIX}"
 COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
@@ -47,10 +48,12 @@ LD[unexport] = "1"
 ATF_CONSOLE_DEFAULT = ""
 ATF_CONSOLE_DEFAULT:zynqmp = "cadence"
 ATF_CONSOLE_DEFAULT:versal = "pl011"
+ATF_CONSOLE_DEFAULT:versal-net = "pl011"
 ATF_CONSOLE ?= "${ATF_CONSOLE_DEFAULT}"
 
 DEBUG_ATF_DEFAULT = ""
 DEBUG_ATF_DEFAULT:versal = "1"
+DEBUG_ATF_DEFAULT:versal-net = "1"
 DEBUG_ATF ?= "${DEBUG_ATF_DEFAULT}"
 
 EXTRA_OEMAKE:append:zynqmp = "${@' ZYNQMP_CONSOLE=${ATF_CONSOLE}' if 
d.getVar('ATF_CONSOLE', True) != '' else ''}"
@@ -125,3 +128,4 @@ FILES:${PN} += "/boot/*.elf /boot/*.bin /boot/*.ub"
 
 # Disable buildpaths QA check warnings for Versal.
 INSANE_SKIP:${PN}:append:versal = " buildpaths"
+INSANE_SKIP:${PN}:append:versal-net = " buildpaths"
diff --git a/meta-xilinx-core/recipes-bsp/base-pdi/base-pdi_1.0.bb 
b/meta-xilinx-core/recipes-bsp/base-pdi/base-pdi_1.0.bb
index b74f07fe..ba4d2964 100644
--- a/meta-xilinx-core/recipes-bsp/base-pdi/base-pdi_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/base-pdi/base-pdi_1.0.bb
@@ -7,6 +7,7 @@ PROVIDES = "virtual/base-pdi"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:microblaze = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 PACKAGE_ARCH ?= "${MACHINE_ARCH}"
 
diff --git a/meta-xilinx-core/recipes-bsp/bootbin/machine-xilinx-versal-net.inc 
b/meta-xilinx-core/recipes-bsp/bootbin/machine-xilinx-versal-net.inc
new file mode 100644
index 00000000..46191720
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/bootbin/machine-xilinx-versal-net.inc
@@ -0,0 +1 @@
+require machine-xilinx-versal.inc
diff --git a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb 
b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
index 38824238..4ee9b62e 100644
--- a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
@@ -14,6 +14,7 @@ COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynq = ".*"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 PROVIDES = "virtual/boot-bin"
 
@@ -36,8 +37,11 @@ SRC_URI += "${@('file://' + d.getVar("BIF_FILE_PATH")) if 
d.getVar("BIF_FILE_PAT
 # zynqmp     : zynqmp
 # versal     : versal
 # versal-net : versalnet
-BOOTGEN_ARCH_DEFAULT = "${SOC_FAMILY}"
-BOOTGEN_ARCH_DEFAULT:versal-net = "${SOC_FAMILY}${SOC_VARIANT}"
+BOOTGEN_ARCH_DEFAULT = "undefined"
+BOOTGEN_ARCH_DEFAULT:zynq = "zynq"
+BOOTGEN_ARCH_DEFAULT:zynqmp = "zynqmp"
+BOOTGEN_ARCH_DEFAULT:versal = "versal"
+BOOTGEN_ARCH_DEFAULT:versal-net = "versalnet"
 BOOTGEN_ARCH ?= "${BOOTGEN_ARCH_DEFAULT}"
 BOOTGEN_EXTRA_ARGS ?= ""
 
@@ -135,7 +139,7 @@ python do_configure() {
             attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {}
             if arch in ['zynq', 'zynqmp']:
                 create_zynq_bif(bifattr, attrflags,'','', 1, biffd, d)
-            elif arch in ['versal']:
+            elif arch in ['versal', 'versal-net']:
                 create_versal_bif(bifattr, attrflags,'','', 1, biffd, d)
             else:
                 create_bif(bifattr, attrflags,'','', 1, biffd, d)
@@ -147,7 +151,7 @@ python do_configure() {
             ids = d.getVarFlags("BIF_PARTITION_ID") or {}
             if arch in ['zynq', 'zynqmp']:
                 create_zynq_bif(bifpartition, attrflags, attrimage, ids, 0, 
biffd, d)
-            elif arch in ['versal']:
+            elif arch in ['versal', 'versal-net']:
                 create_versal_bif(bifpartition, attrflags, attrimage, ids, 0, 
biffd, d)
             else:
                 create_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, 
d)
@@ -197,6 +201,12 @@ do_deploy:append:versal () {
     ln -sf ${BOOTBIN_BASE_NAME}_bh.bin ${DEPLOYDIR}/BOOT-${MACHINE}_bh.bin
 }
 
+do_deploy:append:versal-net () {
+
+    install -m 0644 ${B}/BOOT_bh.bin ${DEPLOYDIR}/${BOOTBIN_BASE_NAME}_bh.bin
+    ln -sf ${BOOTBIN_BASE_NAME}_bh.bin ${DEPLOYDIR}/BOOT-${MACHINE}_bh.bin
+}
+
 FILES:${PN} += "/boot/BOOT.bin"
 SYSROOT_DIRS += "/boot"
 
diff --git a/meta-xilinx-core/recipes-bsp/cdo/extract-cdo_1.0.bb 
b/meta-xilinx-core/recipes-bsp/cdo/extract-cdo_1.0.bb
index 7238823d..04cbab69 100644
--- a/meta-xilinx-core/recipes-bsp/cdo/extract-cdo_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/cdo/extract-cdo_1.0.bb
@@ -12,6 +12,7 @@ do_compile[depends] += "virtual/boot-bin:do_deploy"
 
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 PACKAGE_ARCH ?= "${MACHINE_ARCH}"
 
diff --git a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb 
b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
index f62e9512..87dddfce 100644
--- a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
+++ b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
@@ -49,6 +49,7 @@ SRC_URI:append = " ${@" ".join(["file://%s" % f for f in 
(d.getVar('EXTRA_OVERLA
 COMPATIBLE_MACHINE:zynq   = ".*"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 DEPENDS += "python3-dtc-native"
 
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb 
b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb
index 9066a63d..9e0f07ac 100644
--- a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb
@@ -17,6 +17,7 @@ SOVERSION = "${SOMAJOR}.${SOMINOR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.1.bb 
b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.1.bb
index f341061f..2699a55d 100644
--- a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.1.bb
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.1.bb
@@ -17,6 +17,7 @@ SOVERSION = "${SOMAJOR}.${SOMINOR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb 
b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb
index 0f31bb13..da2f3e26 100644
--- a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb
@@ -17,6 +17,7 @@ SOVERSION = "${SOMAJOR}.${SOMINOR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2024.1.bb 
b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2024.1.bb
index a8b9d62e..261156f9 100644
--- a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2024.1.bb
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2024.1.bb
@@ -17,6 +17,7 @@ SOVERSION = "${SOMAJOR}.${SOMINOR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/embeddedsw/plmfw.bb 
b/meta-xilinx-core/recipes-bsp/embeddedsw/plmfw.bb
index a10d3924..80063f85 100644
--- a/meta-xilinx-core/recipes-bsp/embeddedsw/plmfw.bb
+++ b/meta-xilinx-core/recipes-bsp/embeddedsw/plmfw.bb
@@ -9,6 +9,7 @@ INHIBIT_DEFAULT_DEPS = "1"
 
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 # Since we're just copying, we can run any config
 COMPATIBLE_HOST = ".*"
diff --git a/meta-xilinx-core/recipes-bsp/embeddedsw/psmfw.bb 
b/meta-xilinx-core/recipes-bsp/embeddedsw/psmfw.bb
index d47ab114..3fa6d98c 100644
--- a/meta-xilinx-core/recipes-bsp/embeddedsw/psmfw.bb
+++ b/meta-xilinx-core/recipes-bsp/embeddedsw/psmfw.bb
@@ -9,6 +9,7 @@ INHIBIT_DEFAULT_DEPS = "1"
 
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 # Since we're just copying, we can run any config
 COMPATIBLE_HOST = ".*"
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb 
b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
index 471de84d..7727b93d 100644
--- a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
@@ -13,6 +13,7 @@ SRCREV = "f2b7bbca9d6936141024becfb92266600eeefc2b"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.1.bb 
b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.1.bb
index 3bfa7085..e64687f5 100644
--- a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.1.bb
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.1.bb
@@ -13,6 +13,7 @@ SRCREV = "52c1d83c72a2b2e85d256411a199ed1baed12ae1"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb 
b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb
index ce9c07b2..06d991df 100644
--- a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb
@@ -13,6 +13,7 @@ SRCREV = "52c1d83c72a2b2e85d256411a199ed1baed12ae1"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2024.1.bb 
b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2024.1.bb
index 3450872e..9eea4fbe 100644
--- a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2024.1.bb
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2024.1.bb
@@ -13,6 +13,7 @@ SRCREV = "c8275891ead62b3dfce68c00cf466715f0ac75f1"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
 
 S = "${UNPACKDIR}/git"
 
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb 
b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
index 24fd46e5..f823e478 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
@@ -14,6 +14,7 @@ COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:zynq = "zynq"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal"
 COMPATIBLE_MACHINE:microblaze = "microblaze"
 
 KERNELDT = "${@os.path.basename(d.getVar('KERNEL_DEVICETREE').split(' ')[0]) 
if d.getVar('KERNEL_DEVICETREE') else ''}"
@@ -27,6 +28,7 @@ PXERAMDISK_IMAGE ?= "${@'${RAMDISK_IMAGE1}' if 
d.getVar('INITRAMFS_IMAGE') and d
 KERNEL_BOOTCMD:zynqmp ?= "booti"
 KERNEL_BOOTCMD:zynq ?= "bootm"
 KERNEL_BOOTCMD:versal ?= "booti"
+KERNEL_BOOTCMD:versal-net ?= "booti"
 KERNEL_BOOTCMD:microblaze ?= "bootm"
 
 BOOTMODE ??= "generic"
@@ -58,6 +60,7 @@ UENV_TEXTFILE ?= "uEnv.txt"
 UENV_MMC_OFFSET:zynqmp ??= "0x200000"
 UENV_MMC_OFFSET:zynq ??= "0x2080000"
 UENV_MMC_OFFSET:versal ??= "0x200000"
+UENV_MMC_OFFSET:versal-net ??= "0x200000"
 UENV_MMC_OFFSET:microblaze ??= "0x0"
 
 UENV_MMC_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('UENV_MMC_OFFSET'))}"
@@ -73,11 +76,13 @@ DEVICETREE_OFFSET:microblaze ??= "0x1e00000"
 DEVICETREE_OFFSET:zynqmp ??= "0x100000"
 DEVICETREE_OFFSET:zynq ??= "0x100000"
 DEVICETREE_OFFSET:versal ??= "0x1000"
+DEVICETREE_OFFSET:versal-net ??= "0x1000"
 
 DEVICETREE_OVERLAY_OFFSET:microblaze ??= "0x1e00000"
 DEVICETREE_OVERLAY_OFFSET:zynqmp ??= "0x100000"
 DEVICETREE_OVERLAY_OFFSET:zynq ??= "0x100000"
 DEVICETREE_OVERLAY_OFFSET:versal ??= "0x1000"
+DEVICETREE_OVERLAY_OFFSET:versal-net ??= "0x1000"
 DEVICETREE_OVERLAY_PADSIZE ??= "0xf00000"
 
 DEVICETREE_OVERLAY_ADDRESS ?= 
"${@hex(int(append_baseaddr(d,d.getVar('DEVICETREE_OVERLAY_OFFSET')),16) \
@@ -89,6 +94,7 @@ KERNEL_OFFSET:microblaze ??= "0x0"
 KERNEL_OFFSET:zynqmp ??= "0x200000"
 KERNEL_OFFSET:zynq ??= "0x200000"
 KERNEL_OFFSET:versal ??= "0x200000"
+KERNEL_OFFSET:versal-net ??= "0x200000"
 
 KERNEL_IMAGE ?= "${KERNEL_IMAGETYPE}"
 
@@ -98,6 +104,7 @@ RAMDISK_OFFSET:microblaze ??= "0x2e00000"
 RAMDISK_OFFSET:zynq ??= "0x4000000"
 RAMDISK_OFFSET:zynqmp ??= "0x4000000"
 RAMDISK_OFFSET:versal ??= "0x4000000"
+RAMDISK_OFFSET:versal-net ??= "0x4000000"
 
 FIT_IMAGE_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('FIT_IMAGE_OFFSET'))}"
 FIT_IMAGE_OFFSET ??= "0x10000000"
@@ -143,18 +150,25 @@ QSPI_RAMDISK_SIZE:zynqmpdr ??= "0x1D00000"
 ## For versal
 ## Load boot.scr at 0x7F80000 -> 127MB of QSPI/NAND Memory
 QSPI_KERNEL_OFFSET:versal ??= "0xF00000"
+QSPI_KERNEL_OFFSET:versal-net ??= "0xF00000"
 QSPI_RAMDISK_OFFSET:versal ??= "0x2E00000"
+QSPI_RAMDISK_OFFSET:versal-net ??= "0x2E00000"
 
 NAND_KERNEL_OFFSET:versal ??= "0x4100000"
+NAND_KERNEL_OFFSET:versal-net ??= "0x4100000"
 NAND_RAMDISK_OFFSET:versal ??= "0x8200000"
+NAND_RAMDISK_OFFSET:versal-net ??= "0x8200000"
 
 QSPI_KERNEL_SIZE:versal ??= "0x1D00000"
+QSPI_KERNEL_SIZE:versal-net ??= "0x1D00000"
 QSPI_RAMDISK_SIZE:versal ??= "0x4000000"
+QSPI_RAMDISK_SIZE:versal-net ??= "0x4000000"
 
 QSPI_KERNEL_IMAGE:microblaze ?= "image.ub"
 QSPI_KERNEL_IMAGE:zynq ?= "image.ub"
 QSPI_KERNEL_IMAGE:zynqmp ?= "image.ub"
 QSPI_KERNEL_IMAGE:versal ?= "image.ub"
+QSPI_KERNEL_IMAGE:versal-net ?= "image.ub"
 
 NAND_KERNEL_IMAGE ?= "image.ub"
 
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc 
b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
index bd9711f5..e2ee2c3f 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
@@ -75,7 +75,7 @@ do_deploy:prepend() {
     fi
 
     # In ZynqMP u-boot.dtb is generated by default but not for versal, Hence 
manually deploy.
-    if [ "${SOC_FAMILY}" == "versal" ]; then
+    if [ "${SOC_FAMILY}" == "versal" -o "${SOC_FAMILY}" == "versal-net" ]; then
         if [ -f ${B}/arch/arm/dts/${UBOOT_USER_SPECIFIED_DTS}.dtb ]; then
             install -Dm 0644 ${B}/arch/arm/dts/${UBOOT_USER_SPECIFIED_DTS}.dtb 
${DEPLOYDIR}/u-boot.dtb
         fi
diff --git a/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbappend 
b/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbappend
index fd3a3c11..8901a611 100644
--- a/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbappend
+++ b/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbappend
@@ -3,3 +3,4 @@ QB_MEM:microblaze = "-m 2G"
 QB_MEM:zynq       = "-m 1G"
 QB_MEM:zynqmp     = "-m 4G"
 QB_MEM:versal     = "-m 16G"
+QB_MEM:versal-net = "-m 16G"
diff --git a/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbppend 
b/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbppend
deleted file mode 100644
index fd3a3c11..00000000
--- a/meta-xilinx-core/recipes-core/images/core-image-ptest-all.bbppend
+++ /dev/null
@@ -1,5 +0,0 @@
-# Minimum board memory required for each type
-QB_MEM:microblaze = "-m 2G"
-QB_MEM:zynq       = "-m 1G"
-QB_MEM:zynqmp     = "-m 4G"
-QB_MEM:versal     = "-m 16G"
diff --git 
a/meta-xilinx-core/recipes-core/images/core-image-ptest-fast.bbappend 
b/meta-xilinx-core/recipes-core/images/core-image-ptest-fast.bbappend
index e748c9e4..e7133ca9 100644
--- a/meta-xilinx-core/recipes-core/images/core-image-ptest-fast.bbappend
+++ b/meta-xilinx-core/recipes-core/images/core-image-ptest-fast.bbappend
@@ -3,6 +3,7 @@ QB_MEM:microblaze = "-m 2G"
 QB_MEM:zynq       = "-m 1G"
 QB_MEM:zynqmp     = "-m 4G"
 QB_MEM:versal     = "-m 16G"
+QB_MEM:versal-net = "-m 16G"
 
 # Zynq can't build qemu-xilinx or it's ptests
 PTESTS_FAST:remove:zynq = "qemu-ptest"
diff --git a/meta-xilinx-core/recipes-core/images/core-image-ptest.bbappend 
b/meta-xilinx-core/recipes-core/images/core-image-ptest.bbappend
index fd3a3c11..8901a611 100644
--- a/meta-xilinx-core/recipes-core/images/core-image-ptest.bbappend
+++ b/meta-xilinx-core/recipes-core/images/core-image-ptest.bbappend
@@ -3,3 +3,4 @@ QB_MEM:microblaze = "-m 2G"
 QB_MEM:zynq       = "-m 1G"
 QB_MEM:zynqmp     = "-m 4G"
 QB_MEM:versal     = "-m 16G"
+QB_MEM:versal-net = "-m 16G"
diff --git a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_6.6.10.bb 
b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_6.6.10.bb
index 083604dd..23f31802 100644
--- a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_6.6.10.bb
+++ b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_6.6.10.bb
@@ -23,3 +23,4 @@ EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
diff --git a/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_6.6.10.bb 
b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_6.6.10.bb
index 72bad7aa..da056896 100644
--- a/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_6.6.10.bb
+++ b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_6.6.10.bb
@@ -23,3 +23,4 @@ EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:zynqmp = "zynqmp"
 COMPATIBLE_MACHINE:versal = "versal"
+COMPATIBLE_MACHINE:versal-net = "versal-net"
diff --git 
a/meta-xilinx-core/recipes-kernel/linux-xlnx-udev-rules/linux-xlnx-udev-rules.bb
 
b/meta-xilinx-core/recipes-kernel/linux-xlnx-udev-rules/linux-xlnx-udev-rules.bb
index a2fc6765..8eb742c9 100644
--- 
a/meta-xilinx-core/recipes-kernel/linux-xlnx-udev-rules/linux-xlnx-udev-rules.bb
+++ 
b/meta-xilinx-core/recipes-kernel/linux-xlnx-udev-rules/linux-xlnx-udev-rules.bb
@@ -16,6 +16,7 @@ COMPATIBLE_MACHINE:zynq = ".*"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:microblaze = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 do_configure[noexec] = '1'
 do_compile[noexec] = '1'
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc 
b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
index 27d79964..3133c485 100644
--- a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
@@ -46,6 +46,7 @@ COMPATIBLE_MACHINE:zynq = ".*"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:microblaze = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 # Use DEFCONFIGs for configuring linux-xlnx kernels
 KCONFIG_MODE ?= "alldefconfig"
@@ -53,11 +54,13 @@ KBUILD_DEFCONFIG:zynqmp ?= "xilinx_defconfig"
 KBUILD_DEFCONFIG:zynq ?= "xilinx_zynq_defconfig"
 KBUILD_DEFCONFIG:microblaze ?= "mmu_defconfig"
 KBUILD_DEFCONFIG:versal ?= "xilinx_defconfig"
+KBUILD_DEFCONFIG:versal-net ?= "xilinx_defconfig"
 
 KERNEL_FEATURES:append:zynqmp = "${@bb.utils.contains('DISTRO_FEATURES', 
'xen', ' features/xen/xen.scc', '', d)}"
 
 KERNEL_FEATURES:append:zynqmp = "${@' 
features/xilinx/overlay_of/overlay_of.scc' if 
d.getVar('FPGA_MNGR_RECONFIG_ENABLE') == '1' else ''}"
 
 KERNEL_FEATURES:append:versal = "${@bb.utils.contains('DISTRO_FEATURES', 
'xen', ' features/xen/xen.scc', '', d)} 
features/xilinx/hdmi-module/hdmi-module.scc"
+KERNEL_FEATURES:append:versal-net = "${@bb.utils.contains('DISTRO_FEATURES', 
'xen', ' features/xen/xen.scc', '', d)} 
features/xilinx/hdmi-module/hdmi-module.scc"
 
 KERNEL_FEATURES:append = " ${@bb.utils.contains('DISTRO_FEATURES', 
'virtualization', ' features/ocicontainer/ocicontainer.scc', '', d)}"
diff --git a/meta-xilinx-core/recipes-xrt/zocl/zocl_202310.2.15.0.bb 
b/meta-xilinx-core/recipes-xrt/zocl/zocl_202310.2.15.0.bb
index ee6edac4..998ff99c 100644
--- a/meta-xilinx-core/recipes-xrt/zocl/zocl_202310.2.15.0.bb
+++ b/meta-xilinx-core/recipes-xrt/zocl/zocl_202310.2.15.0.bb
@@ -11,6 +11,7 @@ LICENSE = "GPL-2.0-or-later & Apache-2.0"
 COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 S = "${UNPACKDIR}/git/src/runtime_src/core/edge/drm/zocl"
 
diff --git a/meta-xilinx-core/recipes-xrt/zocl/zocl_202320.2.16.0.bb 
b/meta-xilinx-core/recipes-xrt/zocl/zocl_202320.2.16.0.bb
index ee6edac4..998ff99c 100644
--- a/meta-xilinx-core/recipes-xrt/zocl/zocl_202320.2.16.0.bb
+++ b/meta-xilinx-core/recipes-xrt/zocl/zocl_202320.2.16.0.bb
@@ -11,6 +11,7 @@ LICENSE = "GPL-2.0-or-later & Apache-2.0"
 COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 S = "${UNPACKDIR}/git/src/runtime_src/core/edge/drm/zocl"
 
diff --git a/meta-xilinx-core/recipes-xrt/zocl/zocl_202410.2.17.0.bb 
b/meta-xilinx-core/recipes-xrt/zocl/zocl_202410.2.17.0.bb
index ee6edac4..998ff99c 100644
--- a/meta-xilinx-core/recipes-xrt/zocl/zocl_202410.2.17.0.bb
+++ b/meta-xilinx-core/recipes-xrt/zocl/zocl_202410.2.17.0.bb
@@ -11,6 +11,7 @@ LICENSE = "GPL-2.0-or-later & Apache-2.0"
 COMPATIBLE_MACHINE ?= "^$"
 COMPATIBLE_MACHINE:zynqmp = ".*"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 S = "${UNPACKDIR}/git/src/runtime_src/core/edge/drm/zocl"
 
diff --git a/meta-xilinx-mali400/recipes-graphics/wayland/weston.inc 
b/meta-xilinx-mali400/recipes-graphics/wayland/weston.inc
index fadc9486..f18cae89 100644
--- a/meta-xilinx-mali400/recipes-graphics/wayland/weston.inc
+++ b/meta-xilinx-mali400/recipes-graphics/wayland/weston.inc
@@ -1,15 +1,4 @@
 SRC_URI:append:zynqmp = " 
file://0001-libweston-Remove-substitute-format-for-ARGB8888.patch"
 
-# Due to the SRC_URI zynqmp specific change, this needs to be SOC_FAMILY_ARCH 
specific
-SOC_FAMILY_ARCH ??= "${TUNE_PKGARCH}"
-DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
-DEFAULT_PACKAGE_ARCH:zynqmp = "${SOC_FAMILY_ARCH}"
-PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}"
-
-
-# Links to libmali-xlnx, so it becomes MACHINE_ARCH specific
-DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
-MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH"
-MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if 
d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else 
'${DEFAULT_PACKAGE_ARCH}'}"
-PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH"
-PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 
virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', 
'${DEFAULT_PACKAGE_ARCH}', d)}"
+# Due to the SRC_URI zynqmp specific change, this needs to be MACHINE_ARCH 
specific
+PACKAGE_ARCH:zynqmp = "${MACHINE_ARCH}"
diff --git a/meta-xilinx-standalone-sdt/classes-recipe/esw.bbclass 
b/meta-xilinx-standalone-sdt/classes-recipe/esw.bbclass
index ba453a75..17d8b159 100644
--- a/meta-xilinx-standalone-sdt/classes-recipe/esw.bbclass
+++ b/meta-xilinx-standalone-sdt/classes-recipe/esw.bbclass
@@ -36,19 +36,7 @@ do_configure[depends] += "device-tree:do_deploy"
 do_compile[depends] += "device-tree:do_deploy"
 do_install[depends] += "device-tree:do_deploy"
 
-def get_xlnx_cmake_machine(fam, variant, d):
-    cmake_machine = fam
-    if (fam == 'zynqmp'):
-        cmake_machine = 'ZynqMP'
-    elif (fam == 'versal'):
-        cmake_machine = 'Versal'
-        if (variant == 'net'):
-            cmake_machine = 'VersalNet'
-    elif (fam == 'zynq'):
-        cmake_machine = 'Zynq'
-    return cmake_machine
-
-def get_xlnx_cmake_processor(tune, machine, variant, d):
+def get_xlnx_cmake_processor(tune, machine, d):
     cmake_processor = tune
     if tune.startswith('microblaze'):
         if (machine == 'psu_pmu_0'):
@@ -67,12 +55,17 @@ def get_xlnx_cmake_processor(tune, machine, variant, d):
         cmake_processor = 'cortexa53'
     elif tune == 'cortexa72':
         cmake_processor = 'cortexa72'
-        if (variant == 'net'):
-            cmake_processor = 'cortexa78'
+    elif tune == 'cortexa78':
+        cmake_processor = 'cortexa78'
     return cmake_processor
 
-XLNX_CMAKE_MACHINE = "${@get_xlnx_cmake_machine(d.getVar('SOC_FAMILY'), 
d.getVar('SOC_VARIANT'), d)}"
-XLNX_CMAKE_PROCESSOR = "${@get_xlnx_cmake_processor(d.getVar('DEFAULTTUNE'), 
d.getVar('ESW_MACHINE'), d.getVar('SOC_VARIANT'), d)}"
+XLNX_CMAKE_MACHINE = "undefined"
+XLNX_CMAKE_MACHINE:zynq = "Zynq"
+XLNX_CMAKE_MACHINE:zynqmp = "ZynqMP"
+XLNX_CMAKE_MACHINE:versal = "Versal"
+XLNX_CMAKE_MACHINE:versal-net = "VersalNet"
+
+XLNX_CMAKE_PROCESSOR = "${@get_xlnx_cmake_processor(d.getVar('DEFAULTTUNE'), 
d.getVar('ESW_MACHINE'), d)}"
 XLNX_CMAKE_SYSTEM_NAME ?= "Generic"
 XLNX_CMAKE_BSP_VARS ?= ""
 
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc 
b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
index c2735424..2a00afac 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware.inc
@@ -6,6 +6,7 @@ inherit xlnx-embeddedsw deploy
 COMPATIBLE_HOST = "microblaze.*-elf"
 COMPATIBLE_MACHINE = "none"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc 
b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
index e12aeb6f..2bdb17ed 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware.inc
@@ -6,6 +6,7 @@ inherit xlnx-embeddedsw deploy
 COMPATIBLE_HOST = "microblaze.*-elf"
 COMPATIBLE_MACHINE = "none"
 COMPATIBLE_MACHINE:versal = ".*"
+COMPATIBLE_MACHINE:versal-net = ".*"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#5404): 
https://lists.yoctoproject.org/g/meta-xilinx/message/5404
Mute This Topic: https://lists.yoctoproject.org/mt/106609995/21656
Group Owner: meta-xilinx+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/meta-xilinx/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to