On 06/10/09 11:43, Filip Navara wrote:
On Wed, Jun 10, 2009 at 9:32 AM, Gerd Hoffmann<[email protected]> wrote:
In general I think we should handle as much as possible at DeviceState /
DeviceInfo level. Stuff which devices commonly have should live there:
IRQs, mmio, ioports, ... in DeviceState. name, init and other generic
callbacks, ... in DeviceInfo.
The bus structs should only hold stuff which is actually specific to that
bus. That is probably almost nothing for sysbus. i2c has the xfer
callbacks in I2CSlaveInfo. Likewise pci can have the config space
read/write callbacks in PCIDeviceInfo.
This is definitely based on wrong assumptions. I've GPIO devices
modelled on top of qdev and they don't know anything about IRQs, MMIO
or stuff like that. All they know about is that there are few in/out
GPIO pins, which are connected to the GPIO controller in the emulated
Sure, not every device has IRQs. Nevertheless almost every bus out
there supports IRQs. Thus it is IMHO pointless to have a common thing
duplicated in each end every bus implementation, it should be in the
most basic type instead.
That of course doesn't imply that every device must actually use them.