[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v1 62/74] xen/pvshim: memory hotplug
On Tue, Jan 09, 2018 at 03:42:01AM -0700, Jan Beulich wrote: > >>> On 04.01.18 at 14:06, <wei.liu2@xxxxxxxxxx> wrote: > > +void pv_shim_online_memory(unsigned int nr, unsigned int order) > > +{ > > + struct page_info *page, *tmp; > > + PAGE_LIST_HEAD(list); > > + > > + spin_lock(&balloon_lock); > > + page_list_for_each_safe ( page, tmp, &balloon ) > > + { > > + if ( page->v.free.order != order ) > > + continue; > > Since guests (afaik) only ever balloon order-0 pages, this is fine > for now. But it's insufficient in general - there's no point failing > a request when there's no exact match available, but a higher > order one is (which could be split). Yes, that's right. Using order != 0 is likely to not work properly given the lack of support for splitting higher order chunks. I haven't implemented this because as you say there's no guest making use of ti anyway. Let me add a TODO here. > > @@ -993,6 +997,11 @@ long do_memory_op(unsigned long cmd, > > XEN_GUEST_HANDLE_PARAM(void) arg) > > return start_extent; > > } > > > > +#ifdef CONFIG_X86 > > + if ( pv_shim && op != XENMEM_decrease_reservation && !args.nr_done > > ) > > + pv_shim_online_memory(args.nr_extents, args.extent_order); > > +#endif > > + > > switch ( op ) > > { > > case XENMEM_increase_reservation: > > @@ -1015,6 +1024,11 @@ long do_memory_op(unsigned long cmd, > > XEN_GUEST_HANDLE_PARAM(void) arg) > > __HYPERVISOR_memory_op, "lh", > > op | (rc << MEMOP_EXTENT_SHIFT), arg); > > > > +#ifdef CONFIG_X86 > > + if ( pv_shim && op == XENMEM_decrease_reservation ) > > + pv_shim_offline_memory(args.nr_extents, args.extent_order); > > +#endif > > Looking at both of these changes - is it somewhere being made > sure that shim containers won't boot in PoD mode? > > For the latter change - is this correct when the operation has been > preempted? I think you want to offline only the delta between > start and args.nr_done. AFAICT this function will only be called once, even when preempted. On the online case it's only called when args.nr_done == 0, and in the offline case it's only called after the work has been completely done. Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |