On Thu, 12 Aug 2021 at 12:05, Peter Maydell <peter.mayd...@linaro.org> wrote: > > What's the right way to ensure that when a machine has multiple > buses of the same type (eg multiple i2c controllers, multiple > sd card controllers) they all get assigned unique names so that > the user can use '-device ...,bus=some-name' to put a device on a > specific bus? > > For instance in hw/arm/xlnx-zynqmp.c, the SoC object creates > a set of alias properties on the SoC for the sd-bus buses that > its 4 SD card controllers create. The alias properties are named > "sd-bus%d" so they are unique. This works, but it's kind of error-prone > because you need each machine model to remember to create these > aliases when necessary. > > mps3-an524 is an example of a machine that fails to do this > for its i2c buses, and therefore the user can't usefully > tell QEMU which bus to plug a command-line created i2c bus into. > > Ideally we should make buses get unique names by default > and also assert() at startup that there aren't any duplicated > names, I think. > > Side note: is there a way to mark a bus as "do not consider > this when plugging devices where the user did not specify > the bus themselves" ? Some of the i2c buses on that machine > are purely internal to the board (eg there's one that has > the touchscreen controller hanging off it and nothing else), > and some are "this i2c bus is connected to the expansion port", > so ideally if no bus is specified we would want to prefer > the expansion-port i2c bus, not the ones that are internal-only.
Ping, in the hopes anybody has an answer to these... -- PMM