On Wed, Jan 09, 2013 at 10:33:37AM +0100, Paolo Bonzini wrote: > 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
I'm not sure what would you like to change with PCIDevice. -- MST