From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42752) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZC3gy-0001ym-Hn for qemu-devel@nongnu.org; Mon, 06 Jul 2015 06:32:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZC3gu-0007Wn-FI for qemu-devel@nongnu.org; Mon, 06 Jul 2015 06:32:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39564) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZC3gu-0007WP-AX for qemu-devel@nongnu.org; Mon, 06 Jul 2015 06:32:00 -0400 Date: Mon, 6 Jul 2015 13:31:56 +0300 From: "Michael S. Tsirkin" Message-ID: <20150706132538-mutt-send-email-mst@redhat.com> References: <20150702205556-mutt-send-email-mst@redhat.com> <55958AE2.1020600@redhat.com> <20150704230256-mutt-send-email-mst@redhat.com> <559A3246.7020103@redhat.com> <20150706105048-mutt-send-email-mst@redhat.com> <559A4067.3060109@redhat.com> <20150706120539-mutt-send-email-mst@redhat.com> <20150706125811-mutt-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH] virtio-pci: implement cfg capability List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Paolo Bonzini , =?iso-8859-1?Q?Herv=E9?= Poussineau , QEMU Developers On Mon, Jul 06, 2015 at 11:04:24AM +0100, Peter Maydell wrote: > On 6 July 2015 at 11:03, Michael S. Tsirkin wrote: > > On Mon, Jul 06, 2015 at 10:11:18AM +0100, Peter Maydell wrote: > >> 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. > > > 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. > > Yes, and address_space_rw() already deals with conversion to > that device's specified endianness. > > -- PMM Yes, but incorrectly if target endian != host endian. For example, LE target and LE device on BE host. IO callbacks always get a native endian format so they expect to get byte 0 of the buffer in MSB on this host. -- MST