Signed-off-by: Olivia Yin <hong-hua.yin(a)freescale.com>
This patch adds support to set the device trees file.
---
docs/formatdomain.html.in | 5 +++++
docs/schemas/domaincommon.rng | 5 +++++
src/conf/domain_conf.c | 4 ++++
src/conf/domain_conf.h | 1 +
4 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 4cafc92..e589df5 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -232,6 +232,7 @@
<kernel>/root/f8-i386-vmlinuz</kernel>
<initrd>/root/f8-i386-initrd</initrd>
<cmdline>console=ttyS0
ks=http://example.com/f8-i386/os/</cmdline>
+ <dtb>/root/ppc.dtb</dtb>
</os>
...</pre>
@@ -253,6 +254,10 @@
the kernel (or installer) at boottime. This is often used to
specify an alternate primary console (eg serial port), or the
installation media source / kickstart file</dd>
+ <dt><code>dtb</code></dt>
+ <dd>The contents of this element specify the fully-qualified path
+ to the (optional) device tree binary (dtb) image in the host OS.
+ Since 1.0.4</dd>
</dl>
<h4><a name="eleemntsOSContainer">Container
boot</a></h4>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 372aab7..88e89dd 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -832,6 +832,11 @@
<text/>
</element>
</optional>
+ <optional>
+ <element name="dtb">
+ <ref name="absFilePath"/>
+ </element>
+ </optional>
</interleave>
</define>
<define name="osbootdev">
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 717fc20..18e4906 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1785,6 +1785,7 @@ void virDomainDefFree(virDomainDefPtr def)
VIR_FREE(def->os.kernel);
VIR_FREE(def->os.initrd);
VIR_FREE(def->os.cmdline);
+ VIR_FREE(def->os.dtb);
VIR_FREE(def->os.root);
VIR_FREE(def->os.loader);
VIR_FREE(def->os.bootloader);
@@ -10063,6 +10064,7 @@ virDomainDefParseXML(virCapsPtr caps,
def->os.kernel = virXPathString("string(./os/kernel[1])", ctxt);
def->os.initrd = virXPathString("string(./os/initrd[1])", ctxt);
def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
+ def->os.dtb = virXPathString("string(./os/dtb[1])", ctxt);
def->os.root = virXPathString("string(./os/root[1])", ctxt);
def->os.loader = virXPathString("string(./os/loader[1])", ctxt);
}
@@ -14675,6 +14677,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
def->os.initrd);
virBufferEscapeString(buf, " <cmdline>%s</cmdline>\n",
def->os.cmdline);
+ virBufferEscapeString(buf, " <dtb>%s</dtb>\n",
+ def->os.dtb);
virBufferEscapeString(buf, " <root>%s</root>\n",
def->os.root);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2509193..03a5c33 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1535,6 +1535,7 @@ struct _virDomainOSDef {
char *kernel;
char *initrd;
char *cmdline;
+ char *dtb;
char *root;
char *loader;
char *bootloader;
--
1.6.4