On Mon, Jul 06, 2015 at 10:11:18AM +0100, Peter Maydell wrote: > On 6 July 2015 at 10:06, Michael S. Tsirkin <m...@redhat.com> wrote: > > On Mon, Jul 06, 2015 at 10:46:31AM +0200, Paolo Bonzini wrote: > >> Why host endian and not device (in this case little) endian? > > > It's the endian of the originator of the transaction. > > And emulated device code is all compiled in host endian-ness. > > But address_space_rw() is just the "memcpy bytes to the > target's memory" operation -- if you have a pile of bytes > then there are no endianness concerns. If you don't have > a pile of bytes then you need to know the structure of > the data you're DMAing around, and you should probably > have a loop doing things with the specify-the-width functions. > > thanks > -- PMM
Absolutely. But what if DMA happens to target another device and not memory? Device needs some endian-ness so it needs to be converted to that. -- MST