On 19/11/15 16:22, Eric Auger wrote: > This function returns the host device tree blob from sysfs > (/sys/firmware/devicetree/base). > > This has a runtime dependency on the dtc binary. This functionality > is useful for platform device passthrough where the host device tree > needs to be parsed to feed information into the guest device tree. > > Signed-off-by: Eric Auger <eric.au...@linaro.org> > --- > device_tree.c | 40 ++++++++++++++++++++++++++++++++++++++++ > include/sysemu/device_tree.h | 1 + > 2 files changed, 41 insertions(+) > > diff --git a/device_tree.c b/device_tree.c > index a9f5f8e..58a5329 100644 > --- a/device_tree.c > +++ b/device_tree.c > @@ -117,6 +117,46 @@ fail: > return NULL; > } > > +/** > + * load_device_tree_from_sysfs > + * > + * extract the dt blob from host sysfs > + * this has a runtime dependency on the dtc binary > + */ > +void *load_device_tree_from_sysfs(void) > +{ > + char cmd[] = "dtc -I fs -O dtb /sys/firmware/devicetree/base"; > + FILE *pipe; > + void *fdt; > + int ret, actual_dt_size; > + > + pipe = popen(cmd, "r"); > + if (!pipe) { > + error_report("%s: Error when executing dtc", __func__); > + return NULL; > + }
The Device Tree Compiler binary is normally only installed on developer's machines, so I somewhat doubt that it is a good idea to rely on the availability of that binary in QEMU? Maybe you should rather extend libfdt to support such a feature? Thomas