From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Hering Subject: Re: non-contiguous allocations Date: Fri, 6 May 2011 12:25:57 +0200 Message-ID: <20110506102557.GA16863@aepfle.de> References: <3e95e737bc51c2295926.1301508274@localhost> <1301656691.9447.88.camel@elijah> <20110418184541.GA16935@aepfle.de> <4DB6CDE3020000780003E29C@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-path: Content-Disposition: inline In-Reply-To: <4DB6CDE3020000780003E29C@vpn.id2.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich Cc: "xen-devel@lists.xensource.com" , George Dunlap List-Id: xen-devel@lists.xenproject.org On Tue, Apr 26, Jan Beulich wrote: > >>> On 18.04.11 at 20:45, Olaf Hering wrote: > > On Fri, Apr 01, George Dunlap wrote: > > > >> On Wed, 2011-03-30 at 19:04 +0100, Olaf Hering wrote: > >> > Using the u16 means each cpu could in theory use up to 256MB as trace > >> > buffer. However such a large allocation will currently fail on x86 due > >> > to the MAX_ORDER limit. > >> > >> FWIW, I don't believe that there's any reason the allocations have to be > >> contiguous any more. I kept them contiguous to minimize the changes to > >> the moving parts near a release. But the new system has been pretty > >> well tested now, so I think looking at non-contiguous allocations may be > >> worthwhile. > > > > how do I allocate a few mfns and give them a virtual address? > > I dont find a malloc like interface to allocate random pages. > Otherwise I think the only option is to introduce indirection (using > the 1:1 mapping, and setting up an array of pointers). That may > however be a little difficult if (and I think that's the case) data > chunks aren't always of the same size (as then you need to deal > with the roll-over into the next page). I'm almost done with the per-page handling in __insert_record(). I just need to figure out the a usable address of a given mfn. Is the u8 *p = mfn_to_virt(mfn) the same as page_to_virt(mfn_to_page(mfn))? Olaf