Lines Matching refs:a
98 static void increase_reservation(struct memop_args *a) in increase_reservation() argument
103 struct domain *d = a->domain; in increase_reservation()
105 if ( !guest_handle_is_null(a->extent_list) && in increase_reservation()
106 !guest_handle_subrange_okay(a->extent_list, a->nr_done, in increase_reservation()
107 a->nr_extents-1) ) in increase_reservation()
110 if ( a->extent_order > max_order(current->domain) ) in increase_reservation()
113 for ( i = a->nr_done; i < a->nr_extents; i++ ) in increase_reservation()
115 if ( i != a->nr_done && hypercall_preempt_check() ) in increase_reservation()
117 a->preempted = 1; in increase_reservation()
121 page = alloc_domheap_pages(d, a->extent_order, a->memflags); in increase_reservation()
126 a->extent_order, d->domain_id, a->memflags, in increase_reservation()
127 i, a->nr_extents); in increase_reservation()
133 !guest_handle_is_null(a->extent_list) ) in increase_reservation()
136 if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) ) in increase_reservation()
142 a->nr_done = i; in increase_reservation()
145 static void populate_physmap(struct memop_args *a) in populate_physmap() argument
150 struct domain *d = a->domain, *curr_d = current->domain; in populate_physmap()
154 if ( !guest_handle_subrange_okay(a->extent_list, a->nr_done, in populate_physmap()
155 a->nr_extents-1) ) in populate_physmap()
158 if ( a->extent_order > (a->memflags & MEMF_populate_on_demand ? MAX_ORDER : in populate_physmap()
172 a->memflags |= MEMF_no_tlbflush; in populate_physmap()
180 a->memflags |= MEMF_no_icache_flush; in populate_physmap()
183 for ( i = a->nr_done; i < a->nr_extents; i++ ) in populate_physmap()
185 if ( i != a->nr_done && hypercall_preempt_check() ) in populate_physmap()
187 a->preempted = 1; in populate_physmap()
191 if ( unlikely(__copy_from_guest_offset(&gpfn, a->extent_list, i, 1)) ) in populate_physmap()
194 if ( a->memflags & MEMF_populate_on_demand ) in populate_physmap()
201 a->extent_order) < 0 ) in populate_physmap()
210 for ( j = 0; j < (1U << a->extent_order); j++, mfn++ ) in populate_physmap()
234 page = alloc_domheap_pages(d, a->extent_order, a->memflags); in populate_physmap()
238 if ( !tmem_enabled() || a->extent_order ) in populate_physmap()
241 a->extent_order, d->domain_id, a->memflags, in populate_physmap()
242 i, a->nr_extents); in populate_physmap()
246 if ( unlikely(a->memflags & MEMF_no_tlbflush) ) in populate_physmap()
248 for ( j = 0; j < (1U << a->extent_order); j++ ) in populate_physmap()
256 guest_physmap_add_page(d, _gfn(gpfn), _mfn(mfn), a->extent_order); in populate_physmap()
260 for ( j = 0; j < (1U << a->extent_order); j++ ) in populate_physmap()
264 if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) ) in populate_physmap()
274 if ( a->memflags & MEMF_no_icache_flush ) in populate_physmap()
277 a->nr_done = i; in populate_physmap()
387 static void decrease_reservation(struct memop_args *a) in decrease_reservation() argument
392 if ( !guest_handle_subrange_okay(a->extent_list, a->nr_done, in decrease_reservation()
393 a->nr_extents-1) || in decrease_reservation()
394 a->extent_order > max_order(current->domain) ) in decrease_reservation()
397 for ( i = a->nr_done; i < a->nr_extents; i++ ) in decrease_reservation()
399 if ( i != a->nr_done && hypercall_preempt_check() ) in decrease_reservation()
401 a->preempted = 1; in decrease_reservation()
405 if ( unlikely(__copy_from_guest_offset(&gmfn, a->extent_list, i, 1)) ) in decrease_reservation()
416 t.d = a->domain->domain_id; in decrease_reservation()
417 t.order = a->extent_order; in decrease_reservation()
423 if ( is_hvm_domain(a->domain) in decrease_reservation()
424 && p2m_pod_decrease_reservation(a->domain, _gfn(gmfn), in decrease_reservation()
425 a->extent_order) ) in decrease_reservation()
428 for ( j = 0; j < (1 << a->extent_order); j++ ) in decrease_reservation()
429 if ( guest_remove_page(a->domain, gmfn + j) ) in decrease_reservation()
434 a->nr_done = i; in decrease_reservation()
882 struct memop_args *a) in construct_memop_from_reservation() argument
886 a->extent_list = r->extent_start; in construct_memop_from_reservation()
887 a->nr_extents = r->nr_extents; in construct_memop_from_reservation()
888 a->extent_order = r->extent_order; in construct_memop_from_reservation()
889 a->memflags = 0; in construct_memop_from_reservation()
897 a->memflags = MEMF_bits(address_bits); in construct_memop_from_reservation()
903 struct domain *d = a->domain; in construct_memop_from_reservation()
918 a->memflags |= MEMF_node(pnode); in construct_memop_from_reservation()
920 a->memflags |= MEMF_exact_node; in construct_memop_from_reservation()
925 else if ( unlikely(!propagate_node(r->mem_flags, &a->memflags)) ) in construct_memop_from_reservation()