Yocto 2.4

Move OpenBMC to Yocto 2.4(rocko)

Tested: Built and verified Witherspoon and Palmetto images
Change-Id: I12057b18610d6fb0e6903c60213690301e9b0c67
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb b/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb
new file mode 100644
index 0000000..a4d159a
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Diod is a user space server for the kernel v9fs client."
+DESCRIPTION = "\
+Diod is a user space server for the kernel v9fs client (9p.ko, 9pnet.ko). \
+Although the kernel client supports several 9P variants, diod only supports \
+9P2000.L, and only in its feature-complete form, as it appeared in 2.6.38."
+SECTION = "console/network"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PV = "1.0.24+git${SRCPV}"
+SRCREV = "0ea3fe3d829b5085307cd27a512708d99ef48199"
+SRC_URI = "git://github.com/chaos/diod.git;protocol=git \
+           file://diod \
+           file://diod.conf \
+           file://0001-build-allow-builds-to-work-with-separate-build-dir.patch \
+           file://0002-auto.diod.in-remove-bashisms.patch \
+          "
+DEPENDS = "libcap ncurses tcp-wrappers lua"
+
+S = "${WORKDIR}/git"
+
+inherit autotools systemd
+
+do_install_append () {
+        # install our init based on start-stop-daemon
+        install -D -m 0755 ${WORKDIR}/diod ${D}${sysconfdir}/init.d/diod
+        # install a real(not commented) configuration file for diod
+        install -m 0644 ${WORKDIR}/diod.conf ${D}${sysconfdir}/diod.conf
+}
+
+FILES_${PN} += "${systemd_unitdir}"
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch b/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
new file mode 100644
index 0000000..f40e0eb
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
@@ -0,0 +1,126 @@
+From 43403468298ef4167baa5d84de2ee2eaf7f4007a Mon Sep 17 00:00:00 2001
+From: Mark Asselstine <mark.asselstine@windriver.com>
+Date: Fri, 9 Jan 2015 18:34:04 +0000
+Subject: [PATCH 1/2] build: allow builds to work with separate build dir
+
+Remove assumptions in include paths that assume the build
+is happening in the source directories.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+---
+ diod/Makefile.am              | 2 +-
+ libdiod/Makefile.am           | 2 +-
+ liblsd/Makefile.am            | 2 +-
+ libnpclient/Makefile.am       | 2 +-
+ scripts/Makefile.am           | 6 +++---
+ tests/kern/dbench/Makefile.am | 4 ++--
+ utils/Makefile.am             | 2 +-
+ 7 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/diod/Makefile.am b/diod/Makefile.am
+index 7644be7..fdaf130 100644
+--- a/diod/Makefile.am
++++ b/diod/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CFLAGS = @GCCWARN@
+ 
+ AM_CPPFLAGS = \
+-	-I../libnpfs -I../liblsd -I../libdiod
++	-I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod
+ 
+ sbin_PROGRAMS = diod
+ 
+diff --git a/libdiod/Makefile.am b/libdiod/Makefile.am
+index 4810e14..6905cdd 100644
+--- a/libdiod/Makefile.am
++++ b/libdiod/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CFLAGS = @GCCWARN@
+ 
+ AM_CPPFLAGS = \
+-	-I../libnpfs -I../libnpclient -I../liblsd
++	-I$(srcdir)/../libnpfs -I$(srcdir)/../libnpclient -I$(srcdir)/../liblsd
+ 
+ noinst_LIBRARIES = libdiod.a
+ 
+diff --git a/liblsd/Makefile.am b/liblsd/Makefile.am
+index c3e5658..7e18bf8 100644
+--- a/liblsd/Makefile.am
++++ b/liblsd/Makefile.am
+@@ -1,6 +1,6 @@
+ AM_CFLAGS = @GCCWARN@
+ 
+-AM_CPPFLAGS = -I../libdiod
++AM_CPPFLAGS = -I$(srcdir)/../libdiod
+ 
+ noinst_LIBRARIES = liblsd.a
+ 
+diff --git a/libnpclient/Makefile.am b/libnpclient/Makefile.am
+index 5305df9..cbaf266 100644
+--- a/libnpclient/Makefile.am
++++ b/libnpclient/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CFLAGS = @GCCWARN@
+ 
+ AM_CPPFLAGS = \
+-	-I../libnpfs
++	-I$(srcdir)/../libnpfs
+ 
+ noinst_LIBRARIES = libnpclient.a
+ 
+diff --git a/scripts/Makefile.am b/scripts/Makefile.am
+index 51c24a3..2aba728 100644
+--- a/scripts/Makefile.am
++++ b/scripts/Makefile.am
+@@ -1,9 +1,9 @@
+-systemddir=$(sysconfdir)/systemd/system
++systemddir=/lib/systemd/system
+ 
+ install-data-local:
+-	$(top_srcdir)/config/install-sh -m 755 $(srcdir)/auto.diod \
++	$(top_srcdir)/config/install-sh -m 755 ./auto.diod \
+ 		$(DESTDIR)$(sysconfdir)/auto.diod
+-	$(top_srcdir)/config/install-sh -m 755 $(srcdir)/diod.service \
++	$(top_srcdir)/config/install-sh -m 644 ./diod.service \
+ 		$(DESTDIR)$(systemddir)/diod.service
+ 
+ uninstall-local:
+diff --git a/tests/kern/dbench/Makefile.am b/tests/kern/dbench/Makefile.am
+index e0cdefa..1704f9f 100644
+--- a/tests/kern/dbench/Makefile.am
++++ b/tests/kern/dbench/Makefile.am
+@@ -2,7 +2,7 @@ AM_CFLAGS = -w
+ 
+ # VERSION=4.00
+ 
+-AM_CPPFLAGS = -DDATADIR=\"$(X_DATADIR)\"
++AM_CPPFLAGS = -I. -DDATADIR=\"$(X_DATADIR)\"
+ 
+ LDADD = $(LIBPOPT)
+ 
+@@ -25,6 +25,6 @@ BUILT_SOURCES = proto.h
+ CLEANFILES = proto.h
+ 
+ proto.h: $(dbench_SOURCES) mkproto.pl
+-	perl mkproto.pl $(dbench_SOURCES) > proto.h
++	$(srcdir)/mkproto.pl $(patsubst %,$(srcdir),$(dbench_SOURCES)) > proto.h
+ 
+ EXTRA_DIST = mkproto.pl
+diff --git a/utils/Makefile.am b/utils/Makefile.am
+index 169b6c4..91d571d 100644
+--- a/utils/Makefile.am
++++ b/utils/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CFLAGS = @GCCWARN@
+ 
+ AM_CPPFLAGS = \
+-	-I../libnpfs -I../liblsd -I../libdiod -I../libnpclient
++	-I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod -I$(srcdir)/../libnpclient
+ 
+ sbin_PROGRAMS = diodmount diodcat dtop diodload diodls diodshowmount dioddate
+ 
+-- 
+2.11.0
+
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch b/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
new file mode 100644
index 0000000..65d6ff6
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
@@ -0,0 +1,47 @@
+From 5a9e09dc5de833db11607530351cd87cecbfd17e Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Thu, 22 Jun 2017 06:32:30 +0000
+Subject: [PATCH 2/2] auto.diod.in: remove bashisms
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ scripts/auto.diod.in | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/scripts/auto.diod.in b/scripts/auto.diod.in
+index f63e004..4d5fc3a 100755
+--- a/scripts/auto.diod.in
++++ b/scripts/auto.diod.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # auto.diod - executable automounter map for diod file systems
+ #
+@@ -41,15 +41,15 @@ dcatopts="${DIOD_TIMEOUT:+-t $DIOD_TIMEOUT}"
+ for server in $DIOD_SERVERS; do
+     $DIOD_DIODCAT -s $server $dcatopts exports | awk '{print $1}' |\
+     while read path; do
+-        if [ "$path" == "/" ]; then
+-            if [ "$key" == "ROOT" ]; then
++        if [ "$path" = "/" ]; then
++            if [ "$key" = "ROOT" ]; then
+                 echo "$prefix $server:$path"
+                 exit 0
+             fi
+-        elif [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
+-          || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
+-          || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
+-          || [ "$key" == "$(basename $path)" ]; then
++        elif [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
++          || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
++          || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
++          || [ "$key" = "$(basename $path)" ]; then
+             echo "$prefix $server:$path"
+             exit 0
+         fi
+-- 
+2.11.0
+
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/diod b/import-layers/meta-virtualization/recipes-extended/diod/files/diod
new file mode 100644
index 0000000..cd0bf98
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/diod/files/diod
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# chkconfig: 35 20 80
+# description: Distributed Input Output Daemon 
+#
+
+# Get function from functions library
+. /etc/init.d/functions
+
+BASE=diod
+PIDFILE=/var/run/$BASE.pid
+PID=`test -f $PIDFILE && cat $PIDFILE`
+DIOD_BIN=/usr/sbin/$BASE
+DIOD_CONF=/etc/$BASE.conf
+DIOD_OPTS="-c $DIOD_CONF"
+DIOD="$DIOD_BIN $DIOD_OPTS"
+RETVAL=0
+
+# Start the service $BASE
+start()
+{
+       # Force creation of the log directory even on a tmpfs /var/log.
+       mkdir -p /var/log/diod
+
+       start-stop-daemon --stop --test --quiet --pidfile $PIDFILE
+       status=$?
+       if [ $status -eq 0 ]; then
+           echo "diod service is already running with pid $PID"
+           exit 1
+       else
+           echo -n "Starting $BASE:"
+           start-stop-daemon --start --pidfile $PIDFILE \
+	     --exec $DIOD_BIN -- $DIOD_OPTS
+           RETVAL=$?
+           echo
+           [ $RETVAL -ne 0 ] && exit $RETVAL
+       fi
+}
+
+# Stop the service $BASE
+stop()
+{
+    echo -n "Stopping $BASE:"
+    start-stop-daemon --stop --test --quiet --pidfile $PIDFILE
+    status=$?
+    if [ $status -eq 0 ]; then
+        start-stop-daemon --stop --quiet --pidfile $PIDFILE
+        [ -w $PIDFILE ] && rm -f $PIDFILE
+    else
+	start-stop-daemon --stop --quiet --name $BASE
+    fi
+}
+
+
+### service arguments ###
+case $1 in
+    start)
+        start
+        ;;
+    stop)
+        stop
+        ;;
+    status)
+        status $BASE
+        ;;
+    restart | force-reload)
+        $0 stop
+        $0 start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|status|restart}."
+        exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf b/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf
new file mode 100644
index 0000000..e97743a
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf
@@ -0,0 +1,15 @@
+--
+-- /etc/diod.conf - config file for diod distributed I/O daemon
+--
+-- NOTE: This config file is a lua script that diod runs, then extracts
+-- the value of certain globally defined variables.  See diod.conf(5).
+
+listen = { "0.0.0.0:564" }
+nwthreads = 16
+auth_required = 1
+logdest = "syslog:daemon:err"
+
+exports = { "/g/g0", "/g/g10" }
+
+allsquash = 0
+squashuser = "nobody"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb
index 0b2a67b..c816545 100644
--- a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb
+++ b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb
@@ -3,7 +3,6 @@
 
 IMAGE_INSTALL = "\
     ${CORE_IMAGE_BASE_INSTALL} \
-    ${ROOTFS_PKGMANAGE_BOOTSTRAP} \
     packagegroup-core-basic \
     openvswitch \
     openvswitch-controller \
@@ -26,9 +25,8 @@
     "
 
 inherit core-image
-inherit image-vm
 
-IMAGE_FSTYPES = "vmdk tar.gz"
+IMAGE_FSTYPES = "wic.vmdk tar.gz"
 
 # Ensure extra space for guest images
 #IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb
index e24bf0d..2957506 100644
--- a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb
+++ b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb
@@ -3,7 +3,6 @@
 
 IMAGE_INSTALL = "\
     ${CORE_IMAGE_BASE_INSTALL} \
-    ${ROOTFS_PKGMANAGE_BOOTSTRAP} \
     packagegroup-core-basic \
     openflow \
     qemu \   
@@ -13,6 +12,5 @@
     "
 
 inherit core-image
-inherit image-vm
 
-IMAGE_FSTYPES += "vmdk"
+IMAGE_FSTYPES += "wic.vmdk"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/xen-bootimg.inc b/import-layers/meta-virtualization/recipes-extended/images/xen-bootimg.inc
deleted file mode 100644
index 093aa68..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/xen-bootimg.inc
+++ /dev/null
@@ -1,35 +0,0 @@
-SYSLINUX_TIMEOUT = "10"
-SYSLINUX_LABEL = "boot"
-SYSLINUX_XEN_APPEND = "dom0_mem=1048576"
-SYSLINUX_KERNEL_APPEND = "ramdisk_size=32768 root=/dev/ram0 rw console=tty0 console=ttyS0,115200n8"
-#LABELS_append = " ${SYSLINUX_LABEL} "
-
-INITRD = "${DEPLOY_DIR_IMAGE}/${IMAGE_BASENAME}-${MACHINE}.cpio.lzma"
-
-do_bootimg[depends] += "${IMAGE_BASENAME}:do_rootfs"
-
-inherit bootimg
-
-syslinux_populate_append() {
-	install -m 0444 ${STAGING_LIBDIR}/syslinux/mboot.c32 ${HDDDIR}${SYSLINUXDIR}/mboot.c32
-}
-
-grubefi_populate_append() {
-	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}${EFIDIR}/xen.gz
-}
-
-populate_append() {
-	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}/xen.gz
-}
-
-build_syslinux_cfg() {
-	echo ALLOWOPTIONS 1 > ${SYSLINUXCFG}
-	echo SERIAL 0 115200 > ${SYSLINUXCFG}
-	echo DEFAULT ${SYSLINUX_LABEL} >> ${SYSLINUXCFG}
-	echo TIMEOUT ${SYSLINUX_TIMEOUT} >> ${SYSLINUXCFG}
-	echo PROMPT 1 >> ${SYSLINUXCFG}
-	echo LABEL ${SYSLINUX_LABEL} >> ${SYSLINUXCFG}
-	echo KERNEL mboot.c32 >> ${SYSLINUXCFG}
-	echo APPEND xen.gz ${SYSLINUX_XEN_APPEND} --- vmlinuz ${SYSLINUX_KERNEL_APPEND} --- initrd >> ${SYSLINUXCFG}
-}
-
diff --git a/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb b/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb
index ab7e92c..d311eae 100644
--- a/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb
+++ b/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb
@@ -1,14 +1,19 @@
 DESCRIPTION = "A Xen guest image."
 
-inherit core-image
+inherit core-image distro_features_check
 
 IMAGE_INSTALL += " \
     packagegroup-core-boot \
     ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'kernel-module-xen-acpi-processor', '', d)} \
     "
 
-IMAGE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' xf86-video-fbdev', '', d)}"
-IMAGE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
+IMAGE_INSTALL += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-fbdev', '', d)}"
+
+# Install xf86-video-vesa on x86 platforms.
+IMAGE_INSTALL_append_x86-64 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
+IMAGE_INSTALL_append_x86    = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
+
+REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' x11', '', d)} xen"
 
 LICENSE = "MIT"
 
diff --git a/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb b/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb
index b8c2002..c39d378 100644
--- a/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb
+++ b/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb
@@ -10,12 +10,17 @@
     kernel-module-xen-gntalloc \
     kernel-module-xen-gntdev \
     kernel-module-xen-netback \
-    ${@bb.utils.contains('MACHINE_FEATURES', 'pci', 'kernel-module-xen-pciback', '', d)} \
+    ${@bb.utils.contains('MACHINE_FEATURES', 'pci', "${XEN_PCIBACK_MODULE}", '', d)} \
     kernel-module-xen-wdt \
     xen-base \
     qemu \
     "
 
+# Linux kernel option CONFIG_XEN_PCIDEV_BACKEND depends on X86
+XEN_PCIBACK_MODULE = ""
+XEN_PCIBACK_MODULE_x86    = "kernel-module-xen-pciback"
+XEN_PCIBACK_MODULE_x86-64 = "kernel-module-xen-pciback"
+
 LICENSE = "MIT"
 
 inherit core-image
@@ -42,7 +47,7 @@
 	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}${EFIDIR}/xen.gz
 }
 
-populate_append() {
+syslinux_populate_append() {
 	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}/xen.gz
 }
 
@@ -50,12 +55,12 @@
 SYSLINUX_KERNEL_ARGS ?= "ramdisk_size=32768 root=/dev/ram0 rw console=hvc0 earlyprintk=xen console=tty0 panic=10 LABEL=boot debugshell=5"
 
 build_syslinux_cfg () {
-	echo "ALLOWOPTIONS 1" > ${SYSLINUXCFG}
-	echo "DEFAULT boot" >> ${SYSLINUXCFG}
-	echo "TIMEOUT 10" >> ${SYSLINUXCFG}
-	echo "PROMPT 1" >> ${SYSLINUXCFG}
-	echo "LABEL boot" >> ${SYSLINUXCFG}
-	echo "  KERNEL mboot.c32" >> ${SYSLINUXCFG}
-	echo "  APPEND /xen.gz ${SYSLINUX_XEN_ARGS} --- /vmlinuz ${SYSLINUX_KERNEL_ARGS} --- /initrd" >> ${SYSLINUXCFG}
+	echo "ALLOWOPTIONS 1" > ${SYSLINUX_CFG}
+	echo "DEFAULT boot" >> ${SYSLINUX_CFG}
+	echo "TIMEOUT 10" >> ${SYSLINUX_CFG}
+	echo "PROMPT 1" >> ${SYSLINUX_CFG}
+	echo "LABEL boot" >> ${SYSLINUX_CFG}
+	echo "  KERNEL mboot.c32" >> ${SYSLINUX_CFG}
+	echo "  APPEND /xen.gz ${SYSLINUX_XEN_ARGS} --- /vmlinuz ${SYSLINUX_KERNEL_ARGS} --- /initrd" >> ${SYSLINUX_CFG}
 }
 
diff --git a/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb b/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb
index d52c567..c0c8a7b 100644
--- a/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb
+++ b/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb
@@ -8,7 +8,7 @@
 PV = "gitr${SRCPV}"
 PR = "r0"
 
-SRC_URI = "git://git.ipxe.org/ipxe.git;protocol=git"
+SRC_URI = "git://git.ipxe.org/ipxe.git;protocol=https"
 
 FILES_${PN} = "/usr/share/firmware/*.rom"
 
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
new file mode 100644
index 0000000..63911fc
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
@@ -0,0 +1,27 @@
+From bcd954ffdb9383030e02d356b51e09e4e2a7105a Mon Sep 17 00:00:00 2001
+From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+Date: Sun, 5 Nov 2017 12:39:52 +0100
+Subject: [PATCH 1/2] kvmtool: 9p: fixed compilation error
+
+makedev is defined in sys/sysmacros.h
+
+Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+---
+ virtio/9p.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/virtio/9p.c b/virtio/9p.c
+index 6acbfdd..1dee2c2 100644
+--- a/virtio/9p.c
++++ b/virtio/9p.c
+@@ -15,6 +15,7 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <sys/vfs.h>
++#include <sys/sysmacros.h>
+ 
+ #include <linux/virtio_ring.h>
+ #include <linux/virtio_9p.h>
+-- 
+2.15.0
+
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
new file mode 100644
index 0000000..262531c
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
@@ -0,0 +1,29 @@
+From 977a4d41012d1814f5a5330cacc2e4944de387cc Mon Sep 17 00:00:00 2001
+From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+Date: Sun, 5 Nov 2017 12:39:21 +0100
+Subject: [PATCH 2/2] kvmtool: add EXTRA_CFLAGS variable
+
+to avoid CFLAGS overriding introduce new EXTRA_CFLAGS variable
+for setting via command argument
+
+Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+---
+ Makefile | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Makefile b/Makefile
+index 64a0a16..bca1b26 100644
+--- a/Makefile
++++ b/Makefile
+@@ -2,6 +2,8 @@
+ # Define WERROR=0 to disable -Werror.
+ #
+ 
++CFLAGS += $(EXTRA_CFLAGS)
++
+ ifeq ($(strip $(V)),)
+ 	E = @echo
+ 	Q = @
+-- 
+2.15.0
+
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb b/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb
index b3bf202..33fec31 100644
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb
+++ b/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb
@@ -5,10 +5,15 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
 
 DEPENDS = "dtc libaio zlib"
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+inherit kernel-arch
 
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git \
            file://external-crosscompiler.patch \
            file://0001-Avoid-pointers-for-address-of-packed-members.patch \
+           file://0001-kvmtool-9p-fixed-compilation-error.patch \
+           file://0002-kvmtool-add-EXTRA_CFLAGS-variable.patch \
            "
 
 SRCREV = "3fea89a924511f9f8fe05a892098fad77c1eca0d"
@@ -16,7 +21,7 @@
 
 S = "${WORKDIR}/git"
 
-EXTRA_OEMAKE='ARCH="${TARGET_ARCH}" V=1'
+EXTRA_OEMAKE='V=1 EXTRA_CFLAGS="-I${STAGING_KERNEL_DIR}/arch/${ARCH}/include -I${STAGING_KERNEL_BUILDDIR}/arch/${ARCH}/include/generated/"'
 
 do_install() {
     install -d ${D}${bindir}
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb
index 19b7567..8ed2505 100644
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb
+++ b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb
@@ -14,7 +14,7 @@
 #
 RDEPENDS_${PN} = "gettext-runtime"
 
-RDEPENDS_${PN}-ptest += "make gawk"
+RDEPENDS_${PN}-ptest += "make gawk perl"
 
 RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
 RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
diff --git a/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb b/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb
index 5c095ac..144b13c 100644
--- a/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb
+++ b/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb
@@ -4,7 +4,7 @@
 SECTION = "firmware"
 
 SRC_URI = " \
-    http://code.coreboot.org/p/seabios/downloads/get/${PN}-${PV}.tar.gz \
+    https://code.coreboot.org/p/seabios/downloads/get/${PN}-${PV}.tar.gz \
     file://hostcc.patch \
     "
 
diff --git a/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb b/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb
new file mode 100644
index 0000000..e66bade
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "biossums tool for building Plex86/Bochs LGPL VGABios"
+HOMEPAGE = "http://www.nongnu.org/vgabios/"
+LICENSE = "LGPLv2.1"
+SECTION = "firmware"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
+
+SRC_URI =  "http://savannah.gnu.org/download/vgabios/vgabios-${PV}.tgz"
+
+SRC_URI[md5sum] = "2c0fe5c0ca08082a9293e3a7b23dc900"
+SRC_URI[sha256sum] = "9d24c33d4bfb7831e2069cf3644936a53ef3de21d467872b54ce2ea30881b865"
+
+BBCLASSEXTEND = "native"
+
+FILES_${PN} = "${bindir}/biossums"
+
+S = "${WORKDIR}/vgabios-${PV}"
+
+do_configure() {
+    # Don't override the compiler or its flags:
+    sed 's,^CC,DISABLED_CC,' -i Makefile
+    sed 's,^CFLAGS,DISABLED_CFLAGS,' -i Makefile
+    sed 's,^LDFLAGS,DISABLED_LDFLAGS,' -i Makefile
+    # Supply the C flags to the compiler:
+    sed 's,-o biossums,$(CFLAGS) -o biossums,' -i Makefile
+}
+
+do_compile() {
+    # clean removes binaries distributed with source
+    oe_runmake clean
+    oe_runmake biossums
+}
+
+do_install() {
+    mkdir -p "${D}${bindir}"
+    install -m 0755 biossums "${D}${bindir}"
+}
diff --git a/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb b/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb
index 0ed8bb4..8c89041 100644
--- a/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb
+++ b/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb
@@ -3,7 +3,7 @@
 LICENSE = "LGPLv2.1"
 SECTION = "firmware"
 
-DEPENDS = "dev86-native"
+DEPENDS = "dev86-native biossums-native"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
 
@@ -20,7 +20,9 @@
 S = "${WORKDIR}/${PN}-${PV}"
 
 do_configure() {
-    echo "Skip do_configure"
+    # Override to use the native-built biossums tool:
+    sed 's,./biossums,biossums,' -i Makefile
+    sed 's,$(CC) -o biossums biossums.c,touch biossums,' -i Makefile
 }
 
 do_install() {
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/fix-libxc-xc_dom_arm-missing-initialization.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/fix-libxc-xc_dom_arm-missing-initialization.patch
new file mode 100644
index 0000000..05016a7
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/xen/files/fix-libxc-xc_dom_arm-missing-initialization.patch
@@ -0,0 +1,36 @@
+commit 88bfbf90e35f1213f9967a97dee0b2039f9998a4
+Author: Bernd Kuhls <bernd.kuhls@t-online.de>
+Date:   Sat Aug 19 16:21:42 2017 +0200
+
+    tools/libxc/xc_dom_arm: add missing variable initialization
+    
+    The variable domctl.u.address_size.size may remain uninitialized if
+    guest_type is not one of xen-3.0-aarch64 or xen-3.0-armv7l. And the
+    code precisely checks if this variable is still 0 to decide if the
+    guest type is supported or not.
+    
+    This fixes the following build failure with gcc 7.x:
+    
+    xc_dom_arm.c:229:31: error: 'domctl.u.address_size.size' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+         if ( domctl.u.address_size.size == 0 )
+    
+    Patch originally taken from
+    https://www.mail-archive.com/xen-devel@lists.xen.org/msg109313.html.
+    
+    Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+    Acked-by: Wei Liu <wei.liu2@citrix.com>
+
+diff --git a/tools/libxc/xc_dom_arm.c b/tools/libxc/xc_dom_arm.c
+index e7d4bd0..e669fb0 100644
+--- a/tools/libxc/xc_dom_arm.c
++++ b/tools/libxc/xc_dom_arm.c
+@@ -223,6 +223,8 @@ static int set_mode(xc_interface *xch, domid_t domid, char *guest_type)
+ 
+     domctl.domain = domid;
+     domctl.cmd    = XEN_DOMCTL_set_address_size;
++    domctl.u.address_size.size = 0;
++
+     for ( i = 0; i < ARRAY_SIZE(types); i++ )
+         if ( !strcmp(types[i].guest, guest_type) )
+             domctl.u.address_size.size = types[i].size;
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen.inc b/import-layers/meta-virtualization/recipes-extended/xen/xen.inc
index 37fb4ce..cb314f8 100644
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen.inc
+++ b/import-layers/meta-virtualization/recipes-extended/xen/xen.inc
@@ -914,6 +914,9 @@
 
     # do configure
     oe_runconf
+    if [ ! -e ${STAGING_INCDIR}/bits/long-double-32.h ]; then
+        cp ${STAGING_INCDIR}/bits/long-double-64.h ${STAGING_INCDIR}/bits/long-double-32.h
+    fi
 }
 
 do_compile() {
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.8.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen_4.8.0.bb
deleted file mode 100644
index 35c9137..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.8.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xen.inc
-
-SRC_URI = " \
-    https://downloads.xenproject.org/release/xen/${PV}/xen-${PV}.tar.gz \
-    "
-
-SRC_URI[md5sum] = "d738f7c741110342621cb8a4d10b0191"
-SRC_URI[sha256sum] = "1e15c713ab7ba3bfda8b4a285ed973529364fd1100e6dd5a61f29583dc667b04"
-
-S = "${WORKDIR}/xen-${PV}"
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.0.bb
new file mode 100644
index 0000000..8e9c802
--- /dev/null
+++ b/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.0.bb
@@ -0,0 +1,12 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+require xen.inc
+
+SRC_URI = " \
+    https://downloads.xenproject.org/release/xen/${PV}/xen-${PV}.tar.gz \
+    file://fix-libxc-xc_dom_arm-missing-initialization.patch \
+    "
+
+SRC_URI[md5sum] = "f0a753637630f982dfbdb64121fd71e1"
+SRC_URI[sha256sum] = "cade643fe3310d4d6f97d0c215c6fa323bc1130d7e64d7e2043ffaa73a96f33b"
+
+S = "${WORKDIR}/xen-${PV}"