On Thu, 4 Aug 2022 at 19:03, BALATON Zoltan <bala...@eik.bme.hu> wrote: > I was trying to find out how to do it but I don't understand QOM enough to > answer the simple question of how to get the cpu object from QOM. My > guesses are: > > object_resolve_path_type("/machine", TYPE_POWERPC_CPU, NULL) > > or maybe > > object_resolve_path_at(OBJECT(dev)->parent, "cpu") > > or how do these functions work and what is the preferred way to retrieve > an object from the QOM tree? This is what I hoped someone with more > understanding of QOM could answer.
The standard approach that we use elsewhere in the tree for handling "this device needs to have a pointer to a CPU object or whatever" is "the device has a QOM link property, and the SoC sets that property when it creates the device". There are other ways it could in theory be done, but there is benefit in consistency, and "define and set the property" is straightforward. It also means the device object doesn't have to know anything about the way the SoC container is laid out. (It's usually worth looking at whether there are cleanups that could mean the device doesn't have to have a pointer to that other object at all -- but that isn't always the case, or the cleanups would be a big job in their own right that are better not tangled up with QOMification.) thanks -- PMM