[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 58/71] backends: Simplify host_memory_backend_memory_complete()
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 58/71] backends: Simplify host_memory_backend_memory_complete() |
Date: |
Fri, 5 Jan 2024 16:42:51 +0100 |
Return early if bc->alloc is NULL. De-indent the if() ladder.
Note, this avoids a pointless call to error_propagate() with
errp=NULL at the 'out:' label.
Change trivial when reviewed with 'git-diff --ignore-all-space'.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Message-Id: <20231120213301.24349-16-philmd@linaro.org>
---
backends/hostmem.c | 133 +++++++++++++++++++++++----------------------
1 file changed, 67 insertions(+), 66 deletions(-)
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 747e7838c0..1723c19165 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -328,83 +328,84 @@ host_memory_backend_memory_complete(UserCreatable *uc,
Error **errp)
void *ptr;
uint64_t sz;
- if (bc->alloc) {
- bc->alloc(backend, &local_err);
- if (local_err) {
- goto out;
- }
+ if (!bc->alloc) {
+ return;
+ }
+ bc->alloc(backend, &local_err);
+ if (local_err) {
+ goto out;
+ }
- ptr = memory_region_get_ram_ptr(&backend->mr);
- sz = memory_region_size(&backend->mr);
+ ptr = memory_region_get_ram_ptr(&backend->mr);
+ sz = memory_region_size(&backend->mr);
- if (backend->merge) {
- qemu_madvise(ptr, sz, QEMU_MADV_MERGEABLE);
- }
- if (!backend->dump) {
- qemu_madvise(ptr, sz, QEMU_MADV_DONTDUMP);
- }
+ if (backend->merge) {
+ qemu_madvise(ptr, sz, QEMU_MADV_MERGEABLE);
+ }
+ if (!backend->dump) {
+ qemu_madvise(ptr, sz, QEMU_MADV_DONTDUMP);
+ }
#ifdef CONFIG_NUMA
- unsigned long lastbit = find_last_bit(backend->host_nodes, MAX_NODES);
- /* lastbit == MAX_NODES means maxnode = 0 */
- unsigned long maxnode = (lastbit + 1) % (MAX_NODES + 1);
- /* ensure policy won't be ignored in case memory is preallocated
- * before mbind(). note: MPOL_MF_STRICT is ignored on hugepages so
- * this doesn't catch hugepage case. */
- unsigned flags = MPOL_MF_STRICT | MPOL_MF_MOVE;
- int mode = backend->policy;
+ unsigned long lastbit = find_last_bit(backend->host_nodes, MAX_NODES);
+ /* lastbit == MAX_NODES means maxnode = 0 */
+ unsigned long maxnode = (lastbit + 1) % (MAX_NODES + 1);
+ /* ensure policy won't be ignored in case memory is preallocated
+ * before mbind(). note: MPOL_MF_STRICT is ignored on hugepages so
+ * this doesn't catch hugepage case. */
+ unsigned flags = MPOL_MF_STRICT | MPOL_MF_MOVE;
+ int mode = backend->policy;
- /* check for invalid host-nodes and policies and give more verbose
- * error messages than mbind(). */
- if (maxnode && backend->policy == MPOL_DEFAULT) {
- error_setg(errp, "host-nodes must be empty for policy default,"
- " or you should explicitly specify a policy other"
- " than default");
- return;
- } else if (maxnode == 0 && backend->policy != MPOL_DEFAULT) {
- error_setg(errp, "host-nodes must be set for policy %s",
- HostMemPolicy_str(backend->policy));
- return;
- }
+ /* check for invalid host-nodes and policies and give more verbose
+ * error messages than mbind(). */
+ if (maxnode && backend->policy == MPOL_DEFAULT) {
+ error_setg(errp, "host-nodes must be empty for policy default,"
+ " or you should explicitly specify a policy other"
+ " than default");
+ return;
+ } else if (maxnode == 0 && backend->policy != MPOL_DEFAULT) {
+ error_setg(errp, "host-nodes must be set for policy %s",
+ HostMemPolicy_str(backend->policy));
+ return;
+ }
- /* We can have up to MAX_NODES nodes, but we need to pass maxnode+1
- * as argument to mbind() due to an old Linux bug (feature?) which
- * cuts off the last specified node. This means backend->host_nodes
- * must have MAX_NODES+1 bits available.
- */
- assert(sizeof(backend->host_nodes) >=
- BITS_TO_LONGS(MAX_NODES + 1) * sizeof(unsigned long));
- assert(maxnode <= MAX_NODES);
+ /* We can have up to MAX_NODES nodes, but we need to pass maxnode+1
+ * as argument to mbind() due to an old Linux bug (feature?) which
+ * cuts off the last specified node. This means backend->host_nodes
+ * must have MAX_NODES+1 bits available.
+ */
+ assert(sizeof(backend->host_nodes) >=
+ BITS_TO_LONGS(MAX_NODES + 1) * sizeof(unsigned long));
+ assert(maxnode <= MAX_NODES);
#ifdef HAVE_NUMA_HAS_PREFERRED_MANY
- if (mode == MPOL_PREFERRED && numa_has_preferred_many() > 0) {
- /*
- * Replace with MPOL_PREFERRED_MANY otherwise the mbind() below
- * silently picks the first node.
- */
- mode = MPOL_PREFERRED_MANY;
- }
+ if (mode == MPOL_PREFERRED && numa_has_preferred_many() > 0) {
+ /*
+ * Replace with MPOL_PREFERRED_MANY otherwise the mbind() below
+ * silently picks the first node.
+ */
+ mode = MPOL_PREFERRED_MANY;
+ }
#endif
- if (maxnode &&
- mbind(ptr, sz, mode, backend->host_nodes, maxnode + 1, flags)) {
- if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) {
- error_setg_errno(errp, errno,
- "cannot bind memory to host NUMA nodes");
- return;
- }
+ if (maxnode &&
+ mbind(ptr, sz, mode, backend->host_nodes, maxnode + 1, flags)) {
+ if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) {
+ error_setg_errno(errp, errno,
+ "cannot bind memory to host NUMA nodes");
+ return;
}
+ }
#endif
- /* Preallocate memory after the NUMA policy has been instantiated.
- * This is necessary to guarantee memory is allocated with
- * specified NUMA policy in place.
- */
- if (backend->prealloc) {
- qemu_prealloc_mem(memory_region_get_fd(&backend->mr), ptr, sz,
- backend->prealloc_threads,
- backend->prealloc_context, &local_err);
- if (local_err) {
- goto out;
- }
+ /* Preallocate memory after the NUMA policy has been instantiated.
+ * This is necessary to guarantee memory is allocated with
+ * specified NUMA policy in place.
+ */
+ if (backend->prealloc) {
+ qemu_prealloc_mem(memory_region_get_fd(&backend->mr), ptr, sz,
+ backend->prealloc_threads,
+ backend->prealloc_context, &local_err);
+ if (local_err) {
+ goto out;
}
}
out:
--
2.41.0
- [PULL 47/71] memory: Simplify memory_region_init_rom_nomigrate() calls, (continued)
- [PULL 47/71] memory: Simplify memory_region_init_rom_nomigrate() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 49/71] memory: Have memory_region_init_ram() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 50/71] memory: Have memory_region_init_rom() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 51/71] memory: Have memory_region_init_rom_device_nomigrate() return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 52/71] memory: Simplify memory_region_init_rom_device_nomigrate() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 53/71] memory: Have memory_region_init_rom_device() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 54/71] memory: Have memory_region_init_resizeable_ram() return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 55/71] memory: Have memory_region_init_ram_from_file() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 56/71] memory: Have memory_region_init_ram_from_fd() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 57/71] backends: Use g_autofree in HostMemoryBackendClass::alloc() handlers, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 58/71] backends: Simplify host_memory_backend_memory_complete(),
Philippe Mathieu-Daudé <=
- [PULL 60/71] backends: Reduce variable scope in host_memory_backend_memory_complete, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 59/71] backends: Have HostMemoryBackendClass::alloc() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 61/71] util/oslib: Have qemu_prealloc_mem() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 62/71] misc: Simplify qemu_prealloc_mem() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 63/71] hw: Simplify memory_region_init_ram() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 64/71] hw/arm: Simplify memory_region_init_rom() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 66/71] hw/misc: Simplify memory_region_init_ram_from_fd() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 67/71] hw/nvram: Simplify memory_region_init_rom_device() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 65/71] hw/sparc: Simplify memory_region_init_ram_nomigrate() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 68/71] hw/pci-host/raven: Propagate error in raven_realize(), Philippe Mathieu-Daudé, 2024/01/05