From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47741) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QOAr0-0002HY-Nl for qemu-devel@nongnu.org; Sun, 22 May 2011 11:46:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QOAqz-00062m-Vx for qemu-devel@nongnu.org; Sun, 22 May 2011 11:46:06 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:63361) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QOAqz-00062e-TN for qemu-devel@nongnu.org; Sun, 22 May 2011 11:46:05 -0400 Received: by gyg4 with SMTP id 4so2138418gyg.4 for ; Sun, 22 May 2011 08:46:05 -0700 (PDT) Message-ID: <4DD92FBB.7030700@codemonkey.ws> Date: Sun, 22 May 2011 10:46:03 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1305814352-15044-1-git-send-email-avi@redhat.com> <1305814352-15044-2-git-send-email-avi@redhat.com> <4DD580FD.2030409@codemonkey.ws> <4DD6331E.8000105@redhat.com> <4DD67563.9080803@twiddle.net> <4DD67B2F.5080907@codemonkey.ws> <4DD67D50.30706@twiddle.net> <4DD67EB8.8050602@codemonkey.ws> <4DD8AF8C.5030305@redhat.com> In-Reply-To: <4DD8AF8C.5030305@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, Richard Henderson On 05/22/2011 01:39 AM, Avi Kivity wrote: > On 05/20/2011 05:46 PM, Anthony Liguori wrote: >> On 05/20/2011 09:40 AM, Richard Henderson wrote: >>> On 05/20/2011 07:31 AM, Anthony Liguori wrote: >>>> But is this a characteristic of devices or is this a characteristic >>>> of the chipset/CPU? >>> >>> Chipset. >> >> So if the chipset only allows accesses that are 64-bit, then you'll >> want to have hierarchical dispatch filter non 64-bit accesses and >> raise an MCE appropriately. >> >> So you don't need anything in MemoryRegion, you need code in the >> dispatch path. > > MemoryRegion *is* the dispatch path. Only done declaratively so we can > flatten it whenever it changes. We don't want dispatch to be 100% declarative. That's what will cause the API to get horrendously ugly. An example is PCI-bus level endianness conversion. I also believe the Sparc IOMMU has an xor engine. You could add a 'bool swap_endian' and an 'uint32_t xor_mask' in MemoryRegion but now you're adding a ton of platform specific knowledge to what should be an independent layer. Regards, Anthony Liguori >