Lines Matching refs:hvc
61 static int do_ops(struct host_vm_change *hvc, int end, in do_ops() argument
68 op = &hvc->ops[i]; in do_ops()
71 ret = map(hvc->id, op->u.mmap.addr, op->u.mmap.len, in do_ops()
73 op->u.mmap.offset, finished, &hvc->data); in do_ops()
76 ret = unmap(hvc->id, op->u.munmap.addr, in do_ops()
77 op->u.munmap.len, finished, &hvc->data); in do_ops()
80 ret = protect(hvc->id, op->u.mprotect.addr, in do_ops()
82 finished, &hvc->data); in do_ops()
99 unsigned int prot, struct host_vm_change *hvc) in add_mmap() argument
106 if (hvc->index != 0) { in add_mmap()
107 last = &hvc->ops[hvc->index - 1]; in add_mmap()
117 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_mmap()
118 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_mmap()
119 hvc->index = 0; in add_mmap()
122 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_mmap()
134 struct host_vm_change *hvc) in add_munmap() argument
142 if (hvc->index != 0) { in add_munmap()
143 last = &hvc->ops[hvc->index - 1]; in add_munmap()
151 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_munmap()
152 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_munmap()
153 hvc->index = 0; in add_munmap()
156 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_munmap()
164 unsigned int prot, struct host_vm_change *hvc) in add_mprotect() argument
169 if (hvc->index != 0) { in add_mprotect()
170 last = &hvc->ops[hvc->index - 1]; in add_mprotect()
179 if (hvc->index == ARRAY_SIZE(hvc->ops)) { in add_mprotect()
180 ret = do_ops(hvc, ARRAY_SIZE(hvc->ops), 0); in add_mprotect()
181 hvc->index = 0; in add_mprotect()
184 hvc->ops[hvc->index++] = ((struct host_vm_op) in add_mprotect()
196 struct host_vm_change *hvc) in update_pte_range() argument
217 if (hvc->force || pte_newpage(*pte)) { in update_pte_range()
220 PAGE_SIZE, prot, hvc); in update_pte_range()
222 ret = add_munmap(addr, PAGE_SIZE, hvc); in update_pte_range()
224 ret = add_mprotect(addr, PAGE_SIZE, prot, hvc); in update_pte_range()
232 struct host_vm_change *hvc) in update_pmd_range() argument
242 if (hvc->force || pmd_newpage(*pmd)) { in update_pmd_range()
243 ret = add_munmap(addr, next - addr, hvc); in update_pmd_range()
247 else ret = update_pte_range(pmd, addr, next, hvc); in update_pmd_range()
254 struct host_vm_change *hvc) in update_pud_range() argument
264 if (hvc->force || pud_newpage(*pud)) { in update_pud_range()
265 ret = add_munmap(addr, next - addr, hvc); in update_pud_range()
269 else ret = update_pmd_range(pud, addr, next, hvc); in update_pud_range()
278 struct host_vm_change hvc; in fix_range_common() local
282 hvc = INIT_HVC(mm, force); in fix_range_common()
288 ret = add_munmap(addr, next - addr, &hvc); in fix_range_common()
292 else ret = update_pud_range(pgd, addr, next, &hvc); in fix_range_common()
296 ret = do_ops(&hvc, hvc.index, 1); in fix_range_common()