Lines Matching refs:hvc
60 static int do_ops(struct host_vm_change *hvc, int end, in do_ops() argument
67 op = &hvc->ops[i]; in do_ops()
70 ret = map(hvc->id, op->u.mmap.addr, op->u.mmap.len, in do_ops()
72 op->u.mmap.offset, finished, &hvc->data); in do_ops()
75 ret = unmap(hvc->id, op->u.munmap.addr, in do_ops()
76 op->u.munmap.len, finished, &hvc->data); in do_ops()
79 ret = protect(hvc->id, op->u.mprotect.addr, in do_ops()
81 finished, &hvc->data); in do_ops()
98 unsigned int prot, struct host_vm_change *hvc) in add_mmap() argument
105 if (hvc->index != 0) { in add_mmap()
106 last = &hvc->ops[hvc->index - 1]; in add_mmap()
116 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_mmap()
117 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_mmap()
118 hvc->index = 0; in add_mmap()
121 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_mmap()
133 struct host_vm_change *hvc) in add_munmap() argument
141 if (hvc->index != 0) { in add_munmap()
142 last = &hvc->ops[hvc->index - 1]; in add_munmap()
150 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_munmap()
151 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_munmap()
152 hvc->index = 0; in add_munmap()
155 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_munmap()
163 unsigned int prot, struct host_vm_change *hvc) in add_mprotect() argument
168 if (hvc->index != 0) { in add_mprotect()
169 last = &hvc->ops[hvc->index - 1]; in add_mprotect()
178 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_mprotect()
179 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_mprotect()
180 hvc->index = 0; in add_mprotect()
183 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_mprotect()
195 struct host_vm_change *hvc) in update_pte_range() argument
216 if (hvc->force || pte_newpage(*pte)) { in update_pte_range()
219 PAGE_SIZE, prot, hvc); in update_pte_range()
221 ret = add_munmap(addr, PAGE_SIZE, hvc); in update_pte_range()
223 ret = add_mprotect(addr, PAGE_SIZE, prot, hvc); in update_pte_range()
231 struct host_vm_change *hvc) in update_pmd_range() argument
241 if (hvc->force || pmd_newpage(*pmd)) { in update_pmd_range()
242 ret = add_munmap(addr, next - addr, hvc); in update_pmd_range()
246 else ret = update_pte_range(pmd, addr, next, hvc); in update_pmd_range()
253 struct host_vm_change *hvc) in update_pud_range() argument
263 if (hvc->force || pud_newpage(*pud)) { in update_pud_range()
264 ret = add_munmap(addr, next - addr, hvc); in update_pud_range()
268 else ret = update_pmd_range(pud, addr, next, hvc); in update_pud_range()
277 struct host_vm_change hvc; in fix_range_common() local
281 hvc = INIT_HVC(mm, force); in fix_range_common()
287 ret = add_munmap(addr, next - addr, &hvc); in fix_range_common()
291 else ret = update_pud_range(pgd, addr, next, &hvc); in fix_range_common()
295 ret = do_ops(&hvc, hvc.index, 1); in fix_range_common()