From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49286) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TsFET-0008Qf-Bw for qemu-devel@nongnu.org; Mon, 07 Jan 2013 11:07:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TsFEQ-0006vh-Qk for qemu-devel@nongnu.org; Mon, 07 Jan 2013 11:07:25 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39187) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TsFEQ-0006vZ-Hb for qemu-devel@nongnu.org; Mon, 07 Jan 2013 11:07:22 -0500 Date: Mon, 7 Jan 2013 18:11:08 +0200 From: "Michael S. Tsirkin" Message-ID: <20130107161108.GA7062@redhat.com> References: <89fdb096d0f60d59e45f78d5b4ef26a743ffbc31.1356872111.git.blauwirbel@gmail.com> <50E9C18D.1070309@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] virtio-pci: replace byte swap hack List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: qemu-devel@nongnu.org, Anthony Liguori , Andreas =?iso-8859-1?Q?F=E4rber?= , Alexander Graf On Sun, Jan 06, 2013 at 08:04:39PM +0000, Blue Swirl wrote: > On Sun, Jan 6, 2013 at 6:25 PM, Andreas F=E4rber wro= te: > > Am 06.01.2013 14:17, schrieb Alexander Graf: > >> > >> On 30.12.2012, at 13:55, Blue Swirl wrote: > >> > >>> Remove byte swaps by declaring the config space > >>> as native endian. > >> > >> This is wrong. Virtio-pci config space is split into 2 regions. One = with native endianness, the other one with little endian. > > > > Can that MemoryRegion be split in two? >=20 > Yes, but unfortunately the offset for the second region depends on if > MSIX is enabled or not. PCI layer manages these bits without the > device seeing any changes. >=20 > This could be handled by introducing a callback at PCI layer to inform > interested devices about changes to MSIX setup, or even generalized: > inform devices about changes within any set of bits specified by the > device. We already have a generic config_write callback and even use it in virtio pci: virtio_write_config. So you could simply do there: if (region size !=3D VIRTIO_PCI_CONFIG(dev)) { resize regions } We would also have to resize to the default setup on vm load and on vm reset. Overall not sure whether this would make the code cleaner or uglier. > > > > Andreas > > > > -- > > SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany > > GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FC= rnberg