[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/19] ram_addr: Split RAMBlock definition
From: |
Juan Quintela |
Subject: |
[PULL 08/19] ram_addr: Split RAMBlock definition |
Date: |
Mon, 27 Jan 2020 23:33:10 +0100 |
We need some of the fields without having to poison everything else.
Signed-off-by: Juan Quintela <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
---
MAINTAINERS | 1 +
include/exec/ram_addr.h | 40 +-------------------------
include/exec/ramblock.h | 64 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 39 deletions(-)
create mode 100644 include/exec/ramblock.h
diff --git a/MAINTAINERS b/MAINTAINERS
index f6511d5120..b570a24d4d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1973,6 +1973,7 @@ F: ioport.c
F: include/exec/memop.h
F: include/exec/memory.h
F: include/exec/ram_addr.h
+F: include/exec/ramblock.h
F: memory.c
F: include/exec/memory-internal.h
F: exec.c
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index 5adebb0bc7..5e59a3d8d7 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -24,45 +24,7 @@
#include "hw/xen/xen.h"
#include "sysemu/tcg.h"
#include "exec/ramlist.h"
-
-struct RAMBlock {
- struct rcu_head rcu;
- struct MemoryRegion *mr;
- uint8_t *host;
- uint8_t *colo_cache; /* For colo, VM's ram cache */
- ram_addr_t offset;
- ram_addr_t used_length;
- ram_addr_t max_length;
- void (*resized)(const char*, uint64_t length, void *host);
- uint32_t flags;
- /* Protected by iothread lock. */
- char idstr[256];
- /* RCU-enabled, writes protected by the ramlist lock */
- QLIST_ENTRY(RAMBlock) next;
- QLIST_HEAD(, RAMBlockNotifier) ramblock_notifiers;
- int fd;
- size_t page_size;
- /* dirty bitmap used during migration */
- unsigned long *bmap;
- /* bitmap of already received pages in postcopy */
- unsigned long *receivedmap;
-
- /*
- * bitmap to track already cleared dirty bitmap. When the bit is
- * set, it means the corresponding memory chunk needs a log-clear.
- * Set this up to non-NULL to enable the capability to postpone
- * and split clearing of dirty bitmap on the remote node (e.g.,
- * KVM). The bitmap will be set only when doing global sync.
- *
- * NOTE: this bitmap is different comparing to the other bitmaps
- * in that one bit can represent multiple guest pages (which is
- * decided by the `clear_bmap_shift' variable below). On
- * destination side, this should always be NULL, and the variable
- * `clear_bmap_shift' is meaningless.
- */
- unsigned long *clear_bmap;
- uint8_t clear_bmap_shift;
-};
+#include "exec/ramblock.h"
/**
* clear_bmap_size: calculate clear bitmap size
diff --git a/include/exec/ramblock.h b/include/exec/ramblock.h
new file mode 100644
index 0000000000..07d50864d8
--- /dev/null
+++ b/include/exec/ramblock.h
@@ -0,0 +1,64 @@
+/*
+ * Declarations for cpu physical memory functions
+ *
+ * Copyright 2011 Red Hat, Inc. and/or its affiliates
+ *
+ * Authors:
+ * Avi Kivity <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or
+ * later. See the COPYING file in the top-level directory.
+ *
+ */
+
+/*
+ * This header is for use by exec.c and memory.c ONLY. Do not include it.
+ * The functions declared here will be removed soon.
+ */
+
+#ifndef QEMU_EXEC_RAMBLOCK_H
+#define QEMU_EXEC_RAMBLOCK_H
+
+#ifndef CONFIG_USER_ONLY
+#include "cpu-common.h"
+
+struct RAMBlock {
+ struct rcu_head rcu;
+ struct MemoryRegion *mr;
+ uint8_t *host;
+ uint8_t *colo_cache; /* For colo, VM's ram cache */
+ ram_addr_t offset;
+ ram_addr_t used_length;
+ ram_addr_t max_length;
+ void (*resized)(const char*, uint64_t length, void *host);
+ uint32_t flags;
+ /* Protected by iothread lock. */
+ char idstr[256];
+ /* RCU-enabled, writes protected by the ramlist lock */
+ QLIST_ENTRY(RAMBlock) next;
+ QLIST_HEAD(, RAMBlockNotifier) ramblock_notifiers;
+ int fd;
+ size_t page_size;
+ /* dirty bitmap used during migration */
+ unsigned long *bmap;
+ /* bitmap of already received pages in postcopy */
+ unsigned long *receivedmap;
+
+ /*
+ * bitmap to track already cleared dirty bitmap. When the bit is
+ * set, it means the corresponding memory chunk needs a log-clear.
+ * Set this up to non-NULL to enable the capability to postpone
+ * and split clearing of dirty bitmap on the remote node (e.g.,
+ * KVM). The bitmap will be set only when doing global sync.
+ *
+ * NOTE: this bitmap is different comparing to the other bitmaps
+ * in that one bit can represent multiple guest pages (which is
+ * decided by the `clear_bmap_shift' variable below). On
+ * destination side, this should always be NULL, and the variable
+ * `clear_bmap_shift' is meaningless.
+ */
+ unsigned long *clear_bmap;
+ uint8_t clear_bmap_shift;
+};
+#endif
+#endif
--
2.24.1
- [PULL 00/19] 10 next patches, Juan Quintela, 2020/01/27
- [PULL 01/19] migration-test: Use g_free() instead of free(), Juan Quintela, 2020/01/27
- [PULL 03/19] qemu-file: Don't do IO after shutdown, Juan Quintela, 2020/01/27
- [PULL 02/19] multifd: Make sure that we don't do any IO after an error, Juan Quintela, 2020/01/27
- [PULL 04/19] migration: Don't send data if we have stopped, Juan Quintela, 2020/01/27
- [PULL 05/19] migration-test: Make sure that multifd and cancel works, Juan Quintela, 2020/01/27
- [PULL 06/19] migration: Create migration_is_running(), Juan Quintela, 2020/01/27
- [PULL 08/19] ram_addr: Split RAMBlock definition,
Juan Quintela <=
- [PULL 07/19] migration/multifd: fix nullptr access in multifd_send_terminate_threads, Juan Quintela, 2020/01/27
- [PULL 09/19] multifd: multifd_send_pages only needs the qemufile, Juan Quintela, 2020/01/27
- [PULL 10/19] multifd: multifd_queue_page only needs the qemufile, Juan Quintela, 2020/01/27
- [PULL 11/19] multifd: multifd_send_sync_main only needs the qemufile, Juan Quintela, 2020/01/27
- [PULL 12/19] multifd: Use qemu_target_page_size(), Juan Quintela, 2020/01/27
- [PULL 13/19] migration: Make checkpatch happy with comments, Juan Quintela, 2020/01/27
- [PULL 14/19] multifd: Make multifd_save_setup() get an Error parameter, Juan Quintela, 2020/01/27
- [PULL 15/19] multifd: Make multifd_load_setup() get an Error parameter, Juan Quintela, 2020/01/27
- [PULL 16/19] multifd: Add multifd-method parameter, Juan Quintela, 2020/01/27
- [PULL 18/19] migration: Simplify get_qlist, Juan Quintela, 2020/01/27