Lines Matching full:backend
2 * QEMU Host Memory Backend
40 host_memory_backend_get_name(HostMemoryBackend *backend) in host_memory_backend_get_name() argument
42 if (!backend->use_canonical_path) { in host_memory_backend_get_name()
43 return g_strdup(object_get_canonical_path_component(OBJECT(backend))); in host_memory_backend_get_name()
46 return object_get_canonical_path(OBJECT(backend)); in host_memory_backend_get_name()
53 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_size() local
54 uint64_t value = backend->size; in host_memory_backend_get_size()
63 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_size() local
66 if (host_memory_backend_mr_inited(backend)) { in host_memory_backend_set_size()
81 backend->size = value; in host_memory_backend_set_size()
88 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_host_nodes() local
93 value = find_first_bit(backend->host_nodes, MAX_NODES); in host_memory_backend_get_host_nodes()
101 value = find_next_bit(backend->host_nodes, MAX_NODES, value + 1); in host_memory_backend_get_host_nodes()
119 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_host_nodes() local
132 bitmap_set(backend->host_nodes, l->value, 1); in host_memory_backend_set_host_nodes()
145 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_policy() local
146 return backend->policy; in host_memory_backend_get_policy()
152 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_policy() local
153 backend->policy = policy; in host_memory_backend_set_policy()
164 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_merge() local
166 return backend->merge; in host_memory_backend_get_merge()
171 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_merge() local
177 assert(!backend->merge); in host_memory_backend_set_merge()
181 if (host_memory_backend_mr_inited(backend) && in host_memory_backend_set_merge()
182 value != backend->merge) { in host_memory_backend_set_merge()
183 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_merge()
184 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_merge()
190 backend->merge = value; in host_memory_backend_set_merge()
195 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_dump() local
197 return backend->dump; in host_memory_backend_get_dump()
202 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_dump() local
208 assert(backend->dump); in host_memory_backend_set_dump()
212 if (host_memory_backend_mr_inited(backend) && in host_memory_backend_set_dump()
213 value != backend->dump) { in host_memory_backend_set_dump()
214 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_dump()
215 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_dump()
221 backend->dump = value; in host_memory_backend_set_dump()
226 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_prealloc() local
228 return backend->prealloc; in host_memory_backend_get_prealloc()
234 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_prealloc() local
236 if (!backend->reserve && value) { in host_memory_backend_set_prealloc()
241 if (!host_memory_backend_mr_inited(backend)) { in host_memory_backend_set_prealloc()
242 backend->prealloc = value; in host_memory_backend_set_prealloc()
246 if (value && !backend->prealloc) { in host_memory_backend_set_prealloc()
247 int fd = memory_region_get_fd(&backend->mr); in host_memory_backend_set_prealloc()
248 void *ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_set_prealloc()
249 uint64_t sz = memory_region_size(&backend->mr); in host_memory_backend_set_prealloc()
251 if (!qemu_prealloc_mem(fd, ptr, sz, backend->prealloc_threads, in host_memory_backend_set_prealloc()
252 backend->prealloc_context, false, errp)) { in host_memory_backend_set_prealloc()
255 backend->prealloc = true; in host_memory_backend_set_prealloc()
262 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_prealloc_threads() local
263 visit_type_uint32(v, name, &backend->prealloc_threads, errp); in host_memory_backend_get_prealloc_threads()
269 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_prealloc_threads() local
280 backend->prealloc_threads = value; in host_memory_backend_set_prealloc_threads()
285 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_init() local
289 backend->merge = machine_mem_merge(machine); in host_memory_backend_init()
290 backend->dump = machine_dump_guest_core(machine); in host_memory_backend_init()
291 backend->guest_memfd = machine_require_guest_memfd(machine); in host_memory_backend_init()
292 backend->reserve = true; in host_memory_backend_init()
293 backend->prealloc_threads = machine->smp.cpus; in host_memory_backend_init()
301 bool host_memory_backend_mr_inited(HostMemoryBackend *backend) in host_memory_backend_mr_inited() argument
304 * NOTE: We forbid zero-length memory backend, so here zero means in host_memory_backend_mr_inited()
305 * "we haven't inited the backend memory region yet". in host_memory_backend_mr_inited()
307 return memory_region_size(&backend->mr) != 0; in host_memory_backend_mr_inited()
310 MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend) in host_memory_backend_get_memory() argument
312 return host_memory_backend_mr_inited(backend) ? &backend->mr : NULL; in host_memory_backend_get_memory()
315 void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped) in host_memory_backend_set_mapped() argument
317 backend->is_mapped = mapped; in host_memory_backend_set_mapped()
320 bool host_memory_backend_is_mapped(HostMemoryBackend *backend) in host_memory_backend_is_mapped() argument
322 return backend->is_mapped; in host_memory_backend_is_mapped()
335 HostMemoryBackend *backend = MEMORY_BACKEND(uc); in host_memory_backend_memory_complete() local
345 if (!bc->alloc(backend, errp)) { in host_memory_backend_memory_complete()
349 ptr = memory_region_get_ram_ptr(&backend->mr); in host_memory_backend_memory_complete()
350 sz = memory_region_size(&backend->mr); in host_memory_backend_memory_complete()
351 pagesize = qemu_ram_pagesize(backend->mr.ram_block); in host_memory_backend_memory_complete()
353 if (backend->aligned && !QEMU_IS_ALIGNED(sz, pagesize)) { in host_memory_backend_memory_complete()
355 error_setg(errp, "backend '%s' memory size must be multiple of %s", in host_memory_backend_memory_complete()
360 if (backend->merge) { in host_memory_backend_memory_complete()
363 if (!backend->dump) { in host_memory_backend_memory_complete()
367 unsigned long lastbit = find_last_bit(backend->host_nodes, MAX_NODES); in host_memory_backend_memory_complete()
376 int mode = backend->policy; in host_memory_backend_memory_complete()
380 if (maxnode && backend->policy == MPOL_DEFAULT) { in host_memory_backend_memory_complete()
385 } else if (maxnode == 0 && backend->policy != MPOL_DEFAULT) { in host_memory_backend_memory_complete()
387 HostMemPolicy_str(backend->policy)); in host_memory_backend_memory_complete()
394 * cuts off the last specified node. This means backend->host_nodes in host_memory_backend_memory_complete()
397 assert(sizeof(backend->host_nodes) >= in host_memory_backend_memory_complete()
412 mbind(ptr, sz, mode, backend->host_nodes, maxnode + 1, flags)) { in host_memory_backend_memory_complete()
413 if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) { in host_memory_backend_memory_complete()
425 if (backend->prealloc && !qemu_prealloc_mem(memory_region_get_fd(&backend->mr), in host_memory_backend_memory_complete()
427 backend->prealloc_threads, in host_memory_backend_memory_complete()
428 backend->prealloc_context, in host_memory_backend_memory_complete()
446 HostMemoryBackend *backend = MEMORY_BACKEND(o); in host_memory_backend_get_share() local
448 return backend->share; in host_memory_backend_get_share()
453 HostMemoryBackend *backend = MEMORY_BACKEND(o); in host_memory_backend_set_share() local
455 if (host_memory_backend_mr_inited(backend)) { in host_memory_backend_set_share()
459 backend->share = value; in host_memory_backend_set_share()
465 HostMemoryBackend *backend = MEMORY_BACKEND(o); in host_memory_backend_get_reserve() local
467 return backend->reserve; in host_memory_backend_get_reserve()
472 HostMemoryBackend *backend = MEMORY_BACKEND(o); in host_memory_backend_set_reserve() local
474 if (host_memory_backend_mr_inited(backend)) { in host_memory_backend_set_reserve()
478 if (backend->prealloc && !value) { in host_memory_backend_set_reserve()
482 backend->reserve = value; in host_memory_backend_set_reserve()
489 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_get_use_canonical_path() local
491 return backend->use_canonical_path; in host_memory_backend_get_use_canonical_path()
498 HostMemoryBackend *backend = MEMORY_BACKEND(obj); in host_memory_backend_set_use_canonical_path() local
500 backend->use_canonical_path = value; in host_memory_backend_set_use_canonical_path()
571 * to keep migration working when backend is used for main RAM with in host_memory_backend_class_init()
572 * -machine memory-backend= option (main RAM historically used prefix-less in host_memory_backend_class_init()