[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 06/16] postcopy: Record largest page size
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PATCH v3 06/16] postcopy: Record largest page size |
Date: |
Fri, 24 Feb 2017 18:28:34 +0000 |
From: "Dr. David Alan Gilbert" <address@hidden>
Record the largest page size in use; we'll need it soon for allocating
temporary buffers.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
---
exec.c | 13 +++++++++++++
include/exec/cpu-common.h | 1 +
include/migration/migration.h | 1 +
migration/migration.c | 1 +
4 files changed, 16 insertions(+)
diff --git a/exec.c b/exec.c
index ec3a11f..099794a 100644
--- a/exec.c
+++ b/exec.c
@@ -1524,6 +1524,19 @@ size_t qemu_ram_pagesize(RAMBlock *rb)
return rb->page_size;
}
+/* Returns the largest size of page in use */
+size_t qemu_ram_pagesize_largest(void)
+{
+ RAMBlock *block;
+ size_t largest = 0;
+
+ QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
+ largest = MAX(largest, qemu_ram_pagesize(block));
+ }
+
+ return largest;
+}
+
static int memory_try_enable_merging(void *addr, size_t len)
{
if (!machine_mem_merge(current_machine)) {
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 1350c2e..8c305aa 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -64,6 +64,7 @@ void qemu_ram_set_idstr(RAMBlock *block, const char *name,
DeviceState *dev);
void qemu_ram_unset_idstr(RAMBlock *block);
const char *qemu_ram_get_idstr(RAMBlock *rb);
size_t qemu_ram_pagesize(RAMBlock *block);
+size_t qemu_ram_pagesize_largest(void);
void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
int len, int is_write);
diff --git a/include/migration/migration.h b/include/migration/migration.h
index aafa68f..e8e2a7f 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -92,6 +92,7 @@ struct MigrationIncomingState {
*/
QemuEvent main_thread_load_event;
+ size_t largest_page_size;
bool have_fault_thread;
QemuThread fault_thread;
QemuSemaphore fault_thread_sem;
diff --git a/migration/migration.c b/migration/migration.c
index c6ae69d..869697e 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -383,6 +383,7 @@ static void process_incoming_migration_co(void *opaque)
int ret;
mis->from_src_file = f;
+ mis->largest_page_size = qemu_ram_pagesize_largest();
postcopy_state_set(POSTCOPY_INCOMING_NONE);
migrate_set_state(&mis->state, MIGRATION_STATUS_NONE,
MIGRATION_STATUS_ACTIVE);
--
2.9.3
- [Qemu-devel] [PATCH v3 00/16] Postcopy: Hugepage support, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 02/16] postcopy: Transmit and compare individual page sizes, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 01/16] postcopy: Transmit ram size summary word, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 03/16] postcopy: Chunk discards for hugepages, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 04/16] exec: ram_block_discard_range, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 06/16] postcopy: Record largest page size,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PATCH v3 08/16] postcopy: Use temporary for placing zero huge pages, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 05/16] postcopy: enhance ram_block_discard_range for hugepages, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 07/16] postcopy: Plumb pagesize down into place helpers, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 10/16] postcopy: Mask fault addresses to huge page boundary, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 09/16] postcopy: Load huge pages in one go, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 12/16] postcopy: Allow hugepages, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 11/16] postcopy: Send whole huge pages, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 14/16] postcopy: Check for userfault+hugepage feature, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 13/16] postcopy: Update userfaultfd.h header, Dr. David Alan Gilbert (git), 2017/02/24
- [Qemu-devel] [PATCH v3 15/16] postcopy: Add doc about hugepages and postcopy, Dr. David Alan Gilbert (git), 2017/02/24