Thanks for the quick response! Sorry for my belated reply... > -----Original Message----- > From: peter.crosthwa...@petalogix.com > [mailto:peter.crosthwa...@petalogix.com] On Behalf Of Peter Crosthwaite > Sent: Friday, June 27, 2014 6:26 PM > To: Stalley, Sean; Alexander Graf > Cc: qemu-devel@nongnu.org > Subject: Re: [Qemu-devel] Adding memory region without specifying address > > On Sat, Jun 28, 2014 at 10:29 AM, Stalley, Sean <sean.stal...@intel.com> > wrote: > > Hello All, > > > > > > > > I am working on building a hardware model for QEMU. This model needs a > > couple memory regions for MMIO. > > > > The thing is, I don’t particularly care what the physical address of > > the memory region is (so long as it doesn’t overlap with any other > > memory region). > > > > Curious, what's your mechanism for giving the auto allocated address to the > guest? >
We have one memory space that is fixed. The plan is to put the addresses of the automatically allocated locations in the fixed space. > > > > > > I was wondering if QEMU is able to ‘allocate’ a memory region for > > hardware > > (IE: I call into something saying I need a memory region X bytes long, > > and QEMU returns with a pointer to a memory region X bytes long). > > > > Do you have full control over the memory region you are adding these sub- > regions too and can you implement a "for-everything" allocator on the machine > level? > We want to be able to put these sub-regions anywhere in memory-space, so a "for-everything" allocator isn't really a good option. > > > > > > Can QEMU do this? was looking at the various flavors of > > memory_region_add_subregion(), but they all seem to require a hardware > > offset… > > > > Alex's addressless -device work may be related but it's more about command > line usability. Autoallocation of MMIO addresses is a feature there however. Where is this code located? I have been looking, but I haven’t been able to find it yet. Is this called by qdev_device_add()? I have also been thinking about doing something like what pci_add_capability() does for capability descriptors, but this just reserves already allocated space. Thanks, Sean