On 27 April 2015 at 17:06, Christoffer Dall <christoffer.d...@linaro.org> wrote: > On Tue, Apr 21, 2015 at 03:47:13PM +0100, Peter Maydell wrote: > > [...] > >> > @@ -340,9 +357,31 @@ static void fdt_add_gic_node(VirtBoardInfo *vbi) >> > 2, vbi->memmap[VIRT_GIC_DIST].size, >> > 2, vbi->memmap[VIRT_GIC_CPU].base, >> > 2, vbi->memmap[VIRT_GIC_CPU].size); >> > + qemu_fdt_setprop_cell(vbi->fdt, "/intc", "#address-cells", 0x2); >> > + qemu_fdt_setprop_cell(vbi->fdt, "/intc", "#size-cells", 0x2); >> > + qemu_fdt_setprop(vbi->fdt, "/intc", "ranges", NULL, 0); >> > >> >> Why do we need an empty ranges attribute? >> > > Without it, Linux fails to make things work. I suspect this is related > to specifically setting the #address-cells and #size-cells.
Looking at the DT spec I think it's a requirement for any node which has children, to specify the address translation. Empty ranges means "1:1 translation" (and more complicated transformations are possible). -- PMM