From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:51261) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QzCl5-00038O-8Z for qemu-devel@nongnu.org; Thu, 01 Sep 2011 15:17:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QzCl3-0003uz-M7 for qemu-devel@nongnu.org; Thu, 01 Sep 2011 15:17:03 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:56657) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QzCl3-0003um-EB for qemu-devel@nongnu.org; Thu, 01 Sep 2011 15:17:01 -0400 Received: by gwb19 with SMTP id 19so1277895gwb.4 for ; Thu, 01 Sep 2011 12:17:00 -0700 (PDT) From: "Adnan Khaleel" Message-ID: <20110901191655.5b42e714@shadowfax.no-ip.com> Date: Thu, 01 Sep 2011 14:16:55 -0500 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="-----------2da77d2cbced2b9d1e5bfdc158618372" Subject: Re: [Qemu-devel] Single 64bit memory transaction instead of two 32bit memory transaction Reply-To: adnan@khaleel.us List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: blauwirbel@gmail.com This is a multi-part message in MIME format. -------------2da77d2cbced2b9d1e5bfdc158618372 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I had asked this question a year ago and I managed to have a temporary w= ork around for doing a single 64bit read/write operations but now I'm lo= oking for a more complete solution. Is there anyway we can prevent Qemu breaking up 64,128 and 256bit XMM or= YMM instructions into smaller chunks and have them issue as a single tr= ansaction of the original width=3F This is not an issue for reading/writ= ing to the processor's memory but for an I/O device attached over PCI. O= ne hack is that I could accumulate the writes as they're happening but I= have no way of knowing if the writes are from the same instruction. Thanks AK Re: [Qemu-devel] Single 64bit memory transaction instead of two 32bit me =5F=5F=5F=5F=5F =20 =20 From: Blue Swirl =20 Subject: Re: [Qemu-devel] Single 64bit memory transaction inst= ead of two 32bit memory transaction. =20 Date: Tue, 9 Nov 2010 17:57:28 +0000 > Legacy. Patches have been submitted to add 64 bit IO handlers. But > = there have been other discussions to change the whole I/O interface.=20 > On Mon, Nov 8, 2010 at 11:27 PM, Adnan Khaleel wrote:= >> In the file exec.c: >> The memory Write/Read functions are declared as an array of 4 entri= es where the index values of 0,1,2 correspond to 8,16 and 32bit write = and read functions respectively. >> CPUWriteMemoryFunc *io=5Fmem=5Fwrite[IO=5FMEM=5FNB=5FENTRIES][4]; >> CPUReadMemoryFunc *io=5Fmem=5Fread[IO=5FMEM=5FNB=5FENTRIES][4]; >> Is there any reason why we can't extend this to include 64bit write= s and read by increasing the array size=3F This is because 64bit reads= are currently handled as two separate 32bit reads for eg: sommu=5Ftem= plate.h >> static inline DATA=5FTYPE glue(io=5Fread, SUFFIX)(target=5Fphys=5Fadd= r=5Ft physaddr, >> target=5Fulong addr, >> void *retaddr) >> { >> : >> res =3D io=5Fmem=5Fread[index][2](io=5Fmem=5Fopaque[index], physad= dr); >> res |=3D (uint64=5Ft)io=5Fmem=5Fread[index][2](io=5Fmem=5Fopaque[i= ndex], physaddr + 4) << 32; >>: >> return res; >>} >> I'm sure this is happening in other places as well. Is there a reas= on for this or could we arbitrarily increase this (within limits >> of= course)=3F >> Thanks >> AK -------------2da77d2cbced2b9d1e5bfdc158618372 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I had asked this question a year ago and I managed to have a temporary w= ork around for doing a single 64bit read/write operations but now I'm lo= oking for a more complete solution.

Is there anyway we can preven= t Qemu breaking up 64,128 and 256bit XMM or YMM instructions into smalle= r chunks and have them issue as a single transaction of the original wid= th=3F This is not an issue for reading/writing to the processor's memory= but for an I/O device attached over PCI. One hack is that I could accum= ulate the writes as they're happening but I have no way of knowing if th= e writes are from the same instruction.

Thanks

AK

<= h2 style=3D"font-family: Courier; font-weight: bold;">R= e: [Qemu-devel] Single 64bit memory transaction instead of two 32bit=09m= e
From: Blue Swirl
Subject: Re: [Qemu-devel] Single 64bit memory transaction instead of two 32bit=09= memory transaction.
Date: Tue, 9 Nov 2010 17:57:28 +0000

=
> Legacy. Patches have been submitted to add 64 bit IO handlers. But
> there have been other discussions to change the whole I/O interface=
. 

> On Mon, Nov 8, 2010 at 11:27 PM, Adnan Khaleel <addr=
ess@hidden> wrote:
>> In the file exec.c:

>> = The memory Write/Read functions are declared=20 as an array of 4 entries where the index values of 0,1,2 correspond to= =20 8,16 and 32bit write and read functions respectively.

>> CP= UWriteMemoryFunc *io=5Fmem=5Fwrite[IO=5FMEM=5FNB=5FENTRIES][4];
>&= gt; CPUReadMemoryFunc *io=5Fmem=5Fread[IO=5FMEM=5FNB=5FENTRIES][4];
<= br>>> Is there any reason why we can't extend this to include 64bit writes and= =20 read by increasing the array size=3F This is because 64bit reads are=20 currently handled as two separate 32bit reads for eg: sommu=5Ftemplate.h=

>> static inline DATA=5FTYPE glue(io=5Fread, SUFFIX)(targe= t=5Fphys=5Faddr=5Ft physaddr,
>>      =             =             =             =      target=5Fulong addr,
>>   &n= bsp;           &n= bsp;           &n= bsp;           &n= bsp;       void *retaddr)
>> {>> :
>>    res =3D io=5Fmem=5Fread[index]= [2](io=5Fmem=5Fopaque[index], physaddr);
>>    r= es |=3D (uint64=5Ft)io=5Fmem=5Fread[index][2](io=5Fmem=5Fopaque[index], = physaddr + 4) << 32;
>>:
>>    re= turn res;
>>}

>> I'm sure this is happening in other places as well. Is there a reason for= =20 this or could we arbitrarily increase this (within limits >> ofcou= rse)=3F

>> Thanks

>> AK
-------------2da77d2cbced2b9d1e5bfdc158618372--