[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv9 4/4] gnttab: use per-VCPU maptrack free lists
>>> On 20.05.15 at 17:54, <david.vrabel@xxxxxxxxxx> wrote: > static inline int > get_maptrack_handle( > struct grant_table *lgt) > { > + struct vcpu *v = current; > int i; > grant_handle_t handle; > struct grant_mapping *new_mt; > - unsigned int new_mt_limit, nr_frames; > + unsigned int nr_frames; > > - spin_lock(&lgt->maptrack_lock); > + handle = __get_maptrack_handle(lgt, v); > + if ( likely(handle != -1) ) > + return handle; > > - while ( unlikely((handle = __get_maptrack_handle(lgt)) == -1) ) > - { > - nr_frames = nr_maptrack_frames(lgt); > - if ( nr_frames >= max_maptrack_frames ) > - break; > + nr_frames = nr_vcpu_maptrack_frames(v); > + if ( nr_frames >= max_maptrack_frames ) I think you want to check lgt->maptrack_pages here, to make sure the global limit remains a per-domain one. Or else we'd need a dual (Dom0/DomU) or even per-domain bound to avoid many-vCPU guests being able to force Xen into using significant amounts of memory for their maptrack. > @@ -1447,6 +1484,17 @@ gnttab_setup_table( > gt = d->grant_table; > write_lock(>->lock); > > + /* Tracking of mapped foreign frames table */ > + if ( (gt->maptrack = xzalloc_array(struct grant_mapping *, > + max_maptrack_frames * d->max_vcpus)) > == NULL ) > + goto out3; Not that vzalloc() meanwhile exists. But depending on the resolution of the aspect above you may not even urgently need it here. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |