Il 07/01/2013 20:10, Anthony Liguori ha scritto: > Paolo Bonzini <pbonz...@redhat.com> writes: > >> After discussion with mst on the topic of resetting virtio devices, >> here is a series that hopefully clarifies the semantics of bus and >> device resets. >> >> After this series, there are two kinds of resets: >> >> 1) device-level reset is the kind of reset that you get with a register >> write on the device. It will clear interrupts and DMAs among other things, >> but not any bus-level state, for example it will not clear PCI BARs and >> other configuration space data. It is done with qdev_reset_all. >> >> 2) bus-level reset is the kind of reset that you get with a register >> write on the device that exports the bus (including triggering a device-level >> reset on the device that exports the bus). It will do a device-level >> reset on the child, but also clear bus-level state such as PCI BARs and >> other configuration space data. It can be triggered for all devices >> on a bus with qbus_reset_all. There is still no API for a bus-level >> reset of a single device (like PCI FLR), this can be added later. > > I don't really understand this dual abstraction. I suspect it's > overgeneralizing something that's the result of poor modeling.
It's possible. I'll move the SCSI bus away from qdev reset. Anthony/Michael, can you help doing the same with PCIDevice? And perhaps Peter and Andreas with sysbus? Paolo