From: Peter Crosthwaite <peter.crosthwa...@xilinx.com> Fix the name stem of the devicetree API (P1 - s/qemu_devtree/qemu_fdt) and cleanup error report (P3). Trivial patch P2 fixing an arugment name along the way.
Tested using: 1: Alex's e500 test vector. 2: Xilinx Zynq (tests arm/boot.c). I have testing using Zynq with Mem > 4gb and a bogus dts (size cells = 1) to give that particular error path some exercise. To give some exercise to the error paths, I hacked up my libfdt to throw errors randomly: --- a/libfdt/fdt_rw.c +++ b/libfdt/fdt_rw.c @@ -48,6 +48,8 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include <stdlib.h> #include "libfdt_env.h" #include <fdt.h> @@ -279,6 +281,15 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, FDT_RW_CHECK_HEADER(fdt); + static int seeded = 0; + if (!seeded) { + srand(time(NULL)); + seeded = 1; + } + if (!(rand() & 0x7)) { + return -((rand() & 0x3) + 1); + } + Some sample outputs from e500 boot (Using the above tainted libfdt): ----- qemu-system-ppc: qemu_fdt_setprop: Couldn't set /memory/reg: FDT_ERR_BADOFFSET Aborted ----- qemu-system-ppc: qemu_fdt_setprop_string: Couldn't set /soc@e0000000/device_type = soc: FDT_ERR_NOSPACE Aborted ----- qemu-system-ppc: qemu_fdt_setprop_cell: Couldn't set /soc@e0000000/#address-cells = 0x000001: FDT_ERR_NOSPACE Aborted ----- Peter Crosthwaite (3): device_tree: s/qemu_devtree/qemu_fdt globally device_tree: qemu_fdt_setprop: Rename val_array arg device_tree: qemu_fdt_setprop: Fixup error reporting device_tree.c | 230 +++++++++++++++++++++++++++-------------- hw/arm/boot.c | 51 ++++----- hw/arm/vexpress.c | 23 +++-- hw/microblaze/boot.c | 17 ++- hw/ppc/e500.c | 241 ++++++++++++++++++++++--------------------- hw/ppc/e500.h | 3 +- hw/ppc/e500plat.c | 9 +- hw/ppc/mpc8544ds.c | 9 +- hw/ppc/ppc440_bamboo.c | 34 ++---- hw/ppc/spapr_rtas.c | 40 ++----- hw/ppc/virtex_ml507.c | 5 +- include/sysemu/device_tree.h | 219 ++++++++++++++++++++++++++++++--------- 12 files changed, 519 insertions(+), 362 deletions(-) -- 1.8.3.rc1.44.gb387c77.dirty