1. Eliminate anonymous devices.
a. Will require touching any place in the tree that creates a qdev object and
giving a meaningful unique name.
2. Refactor any device that creates 2 or more busses to only create a single
bus. This will mean using composition.
a. An example: IDE controller creates two busses, one for the primary and one
for the secondary. Instead, IDE device should have two IDE controller sub
devices, each device having a single bus.
3. Unify the bus/device namespaces
a. This is a compatibility breaker
b. Depends on (1) and (2)
4. Modify qdev properties to allow devices to register setters/getters that use
visitors to access properties.
a. Implement existing properties in terms of visitors
5. Modify qdev properties to be stored in the object, not in the class
6. Expose children as named properties
a. Read only to start with
7. Change qdev to use QOM typing
a. Depends on (3)
b. Must change all init functions to use QOM init functions
c. Change all DO_UPCASTS to QOM macro casts
d. Can be largely done via sed
8. Change children to be based on plug and socket properties
a. Eliminate children list in each device
b. Compatibility breaker
9. Improve object model
a. Compatibility breaker