[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/20] memory: Introduce replay_discarded callback for RamDiscardM
From: |
Juan Quintela |
Subject: |
[PULL 11/20] memory: Introduce replay_discarded callback for RamDiscardManager |
Date: |
Mon, 1 Nov 2021 23:09:03 +0100 |
From: David Hildenbrand <david@redhat.com>
Introduce replay_discarded callback similar to our existing
replay_populated callback, to be used my migration code to never migrate
discarded memory.
Acked-by: Peter Xu <peterx@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
include/exec/memory.h | 21 +++++++++++++++++++++
softmmu/memory.c | 11 +++++++++++
2 files changed, 32 insertions(+)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 04280450c9..20f1b27377 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -550,6 +550,7 @@ static inline void
ram_discard_listener_init(RamDiscardListener *rdl,
}
typedef int (*ReplayRamPopulate)(MemoryRegionSection *section, void *opaque);
+typedef void (*ReplayRamDiscard)(MemoryRegionSection *section, void *opaque);
/*
* RamDiscardManagerClass:
@@ -638,6 +639,21 @@ struct RamDiscardManagerClass {
MemoryRegionSection *section,
ReplayRamPopulate replay_fn, void *opaque);
+ /**
+ * @replay_discarded:
+ *
+ * Call the #ReplayRamDiscard callback for all discarded parts within the
+ * #MemoryRegionSection via the #RamDiscardManager.
+ *
+ * @rdm: the #RamDiscardManager
+ * @section: the #MemoryRegionSection
+ * @replay_fn: the #ReplayRamDiscard callback
+ * @opaque: pointer to forward to the callback
+ */
+ void (*replay_discarded)(const RamDiscardManager *rdm,
+ MemoryRegionSection *section,
+ ReplayRamDiscard replay_fn, void *opaque);
+
/**
* @register_listener:
*
@@ -682,6 +698,11 @@ int ram_discard_manager_replay_populated(const
RamDiscardManager *rdm,
ReplayRamPopulate replay_fn,
void *opaque);
+void ram_discard_manager_replay_discarded(const RamDiscardManager *rdm,
+ MemoryRegionSection *section,
+ ReplayRamDiscard replay_fn,
+ void *opaque);
+
void ram_discard_manager_register_listener(RamDiscardManager *rdm,
RamDiscardListener *rdl,
MemoryRegionSection *section);
diff --git a/softmmu/memory.c b/softmmu/memory.c
index f2ac0d2e89..7340e19ff5 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -2081,6 +2081,17 @@ int ram_discard_manager_replay_populated(const
RamDiscardManager *rdm,
return rdmc->replay_populated(rdm, section, replay_fn, opaque);
}
+void ram_discard_manager_replay_discarded(const RamDiscardManager *rdm,
+ MemoryRegionSection *section,
+ ReplayRamDiscard replay_fn,
+ void *opaque)
+{
+ RamDiscardManagerClass *rdmc = RAM_DISCARD_MANAGER_GET_CLASS(rdm);
+
+ g_assert(rdmc->replay_discarded);
+ rdmc->replay_discarded(rdm, section, replay_fn, opaque);
+}
+
void ram_discard_manager_register_listener(RamDiscardManager *rdm,
RamDiscardListener *rdl,
MemoryRegionSection *section)
--
2.33.1
- [PULL 02/20] KVM: introduce dirty_pages and kvm_dirty_ring_enabled, (continued)
- [PULL 02/20] KVM: introduce dirty_pages and kvm_dirty_ring_enabled, Juan Quintela, 2021/11/01
- [PULL 01/20] migration/rdma: Fix out of order wrid, Juan Quintela, 2021/11/01
- [PULL 04/20] migration/dirtyrate: introduce struct and adjust DirtyRateStat, Juan Quintela, 2021/11/01
- [PULL 05/20] migration/dirtyrate: adjust order of registering thread, Juan Quintela, 2021/11/01
- [PULL 03/20] memory: make global_dirty_tracking a bitmask, Juan Quintela, 2021/11/01
- [PULL 06/20] migration/dirtyrate: move init step of calculation to main thread, Juan Quintela, 2021/11/01
- [PULL 08/20] migration: Make migration blocker work for snapshots too, Juan Quintela, 2021/11/01
- [PULL 09/20] migration: Add migrate_add_blocker_internal(), Juan Quintela, 2021/11/01
- [PULL 10/20] dump-guest-memory: Block live migration, Juan Quintela, 2021/11/01
- [PULL 11/20] memory: Introduce replay_discarded callback for RamDiscardManager,
Juan Quintela <=
- [PULL 12/20] virtio-mem: Implement replay_discarded RamDiscardManager callback, Juan Quintela, 2021/11/01
- [PULL 13/20] migration/ram: Handle RAMBlocks with a RamDiscardManager on the migration source, Juan Quintela, 2021/11/01
- [PULL 14/20] virtio-mem: Drop precopy notifier, Juan Quintela, 2021/11/01
- [PULL 18/20] migration/ram: Handle RAMBlocks with a RamDiscardManager on background snapshots, Juan Quintela, 2021/11/01
- [PULL 07/20] migration/dirtyrate: implement dirty-ring dirtyrate calculation, Juan Quintela, 2021/11/01
- [PULL 19/20] memory: introduce total_dirty_pages to stat dirty pages, Juan Quintela, 2021/11/01
- [PULL 20/20] migration/dirtyrate: implement dirty-bitmap dirtyrate calculation, Juan Quintela, 2021/11/01
- [PULL 16/20] migration: Simplify alignment and alignment checks, Juan Quintela, 2021/11/01