Add recipes for Witherspoon VCS workaround

Create vcs-workaround machine feature p9.inc
Add new recipe vcs-pre-post.bb
Add new recipe p9-vcs-workaround.bb
Add new recipe start_host.bb
Create preferred providers
Create host control machine/distro/image feature
Add dependencies

Partially resolves openbmc/openbmc#647

Change-Id: I285cafc81afda20977fdf360ad8ad34d15e38685
Signed-off-by: Sergey Solomin <sergey.solomin@us.ibm.com>
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/p9-vcs-workaround.bb b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/p9-vcs-workaround.bb
new file mode 100644
index 0000000..530085b
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/p9-vcs-workaround.bb
@@ -0,0 +1,29 @@
+SUMMARY = "POWER9 VCS workaround"
+DESCRIPTION = "Apply fixes over FSI to POWER9 CPUs prior to host power on"
+PR = "r1"
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/op-pdbg-host-control:"
+
+RDEPENDS_${PN} += "pdbg \
+                   virtual-p9-vcs-workaround"
+
+S = "${WORKDIR}"
+SRC_URI += "file://vcs_workaround.sh"
+
+do_install() {
+        install -d ${D}${bindir}
+        install -m 0755 ${WORKDIR}/vcs_workaround.sh \
+                        ${D}${bindir}/vcs_workaround.sh
+}
+
+TMPL = "vcs_workaround@.service"
+INSTFMT = "vcs_workaround@{0}.service"
+TGTFMT = "obmc-chassis-start@{0}.target"
+FMT = "../${TMPL}:${TGTFMT}.wants/${INSTFMT}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_SUBSTITUTIONS += "MACHINE:${MACHINE}:${TMPL}"