On Wed, Mar 24, 2010 at 06:07:35PM -0500, Anthony Liguori wrote: > On 03/24/2010 06:05 PM, Paul Brook wrote: >>> On 03/24/2010 05:33 PM, Paul Brook wrote: >>> >>>>> But now there is a bigger problem, how to pass the property to the >>>>> device. It's not fair to require the user to remember to set it. >>>>> >>>> It should not be a property of the device. All devices have a native >>>> endianness (for PCI this is little-endian), and the intermediate >>>> busses/interconnects should determine whether byteswapping occurs. >>>> >>> Right, the byte swapping needs to happen at the bus level which requires >>> that the PCI regions use a different callback mechanism (and don't >>> register directly with the cpu). >>> >> Not necessarily a different callback mechanism, but probably a different >> registration mechanism. >> > > Problem with the current scheme is that it's tied to target_phys_addr_t. > It's not a target_phys_addr_t and cannot be used with functions that take > target_phys_addr_ts. > > We can either introduce a generic address type or we can introduce bus > specific addresses and have different callbacks. The later has better > type safety and since this isn't an obvious issue to most developers, > that's probably an important feature. > > Regards, > > Anthony Liguori > >> Paul >>
I'd prefer a generic address type since this makes it easier to share code: for example virtio devices can use different busses, it's common for pci host bridges to have common code for i/o and memory, etc. -- MST