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. thanks -- PMM