From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [RFC v2 01/20] Hierarchical memory region API Date: Tue, 28 Jun 2011 14:53:22 +0300 Message-ID: <4E09C0B2.3030101@redhat.com> References: <1309180927-19003-1-git-send-email-avi@redhat.com> <1309180927-19003-2-git-send-email-avi@redhat.com> <20110628100343.GA21866@redhat.com> <4E09ACD2.9070907@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Michael S. Tsirkin" , qemu-devel@nongnu.org, kvm@vger.kernel.org To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:15248 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757276Ab1F1Lx3 (ORCPT ); Tue, 28 Jun 2011 07:53:29 -0400 In-Reply-To: <4E09ACD2.9070907@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: On 06/28/2011 01:28 PM, Jan Kiszka wrote: > On 2011-06-28 12:03, Michael S. Tsirkin wrote: > >> +struct MemoryRegion { > >> + /* All fields are private - violators will be prosecuted */ > >> + const MemoryRegionOps *ops; > >> + MemoryRegion *parent; > >> + uint64_t size; > >> + target_phys_addr_t addr; > >> + target_phys_addr_t offset; > >> + ram_addr_t ram_addr; > >> + bool has_ram_addr; > >> + MemoryRegion *alias; > >> + target_phys_addr_t alias_offset; > >> + unsigned priority; > >> + bool may_overlap; > >> + QTAILQ_HEAD(subregions, MemoryRegion) subregions; > >> + QTAILQ_ENTRY(MemoryRegion) subregions_link; > >> + QTAILQ_HEAD(coalesced_ranges, CoalescedMemoryRange) coalesced; > >> + const char *name; > > > > I'm never completely sure whether these should be target addresses > > or bus addresses or just uint64_t. > > With pci on a 32 bit system you can stick a 64 bit address > > in a BAR and the result will be that it is never accessed > > from the CPU. > > > > Memory regions are not bound to any current or future PCI > specifications. Any fixed bit width would be wrong here, ie. size should > rather be target_phys_addr_t. The point is that different buses have different widths. target_phys_addr_t matches just one bus in the system. It needs to be the maximum size of all buses present to be useful. -- error compiling committee.c: too many arguments to function