On Mon, 21 Jan 2019 at 15:22, Peter Maydell <peter.mayd...@linaro.org> wrote: > > In the process of debugging my board code that uses this > feature, I realized I needed to support the CPU object > not being a direct child of the cluster object, which > also lead me to the object_child_foreach_recursive() > function which is a neater way to iterate children anyway. > I also figured out we could add an assert which catches > most "parenting CPU vs cluster realize ordering" bugs. > > Only patch 2 has changed here, others are already reviewed. > > Changes v2->v3: > > * allow CPU objects to be indirect children of the cluster; > this is useful for ARMv7M, where the CPU object is a child > of the armv7m container and the board code that sets up > the cluster object only has the armv7m container object: > this is done by using object_child_foreach_recursive() > rather than an open-coded child iteration > * add an assertion that the cluster has at least one CPU, > which catches the easiest-to-make errors when creating > and populating the cluster
Oops, I should have tested this a bit more carefully before sending it out. It needs an extra "patch 0" adding at the start which makes xlnx_zynqmp_create_rpu() not create the rpu-cluster object if there aren't any RPUs to put in it. Otherwise we hit the new assertion when starting the xlnx-zcu102 board with fewer than 5 CPUs. I'll send that patch out in a second (but won't bother to re-roll the entire patchset). thanks -- PMM