diff mbox series

[v28,10/17] memory: Set DIRTY_MEMORY_MIGRATION when IOMMU is enabled

Message ID 1603449643-12851-11-git-send-email-kwankhede@nvidia.com
State Superseded
Headers show
Series Add migration support for VFIO devices | expand

Commit Message

Kirti Wankhede Oct. 23, 2020, 10:40 a.m. UTC
mr->ram_block is NULL when mr->is_iommu is true, then fr.dirty_log_mask
wasn't set correctly due to which memory listener's log_sync doesn't
get called.
This patch returns log_mask with DIRTY_MEMORY_MIGRATION set when
IOMMU is enabled.

Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
---
 softmmu/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Yan Zhao Oct. 24, 2020, noon UTC | #1
Reviewed-by: Yan Zhao <yan.y.zhao@intel.com>

On Fri, Oct 23, 2020 at 04:10:36PM +0530, Kirti Wankhede wrote:
> mr->ram_block is NULL when mr->is_iommu is true, then fr.dirty_log_mask

> wasn't set correctly due to which memory listener's log_sync doesn't

> get called.

> This patch returns log_mask with DIRTY_MEMORY_MIGRATION set when

> IOMMU is enabled.

> 

> Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>

> ---

>  softmmu/memory.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/softmmu/memory.c b/softmmu/memory.c

> index 403ff3abc99b..94f606e9d9d9 100644

> --- a/softmmu/memory.c

> +++ b/softmmu/memory.c

> @@ -1792,7 +1792,7 @@ bool memory_region_is_ram_device(MemoryRegion *mr)

>  uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr)

>  {

>      uint8_t mask = mr->dirty_log_mask;

> -    if (global_dirty_log && mr->ram_block) {

> +    if (global_dirty_log && (mr->ram_block || memory_region_is_iommu(mr))) {

>          mask |= (1 << DIRTY_MEMORY_MIGRATION);

>      }

>      return mask;

> -- 

> 2.7.0

>
diff mbox series

Patch

diff --git a/softmmu/memory.c b/softmmu/memory.c
index 403ff3abc99b..94f606e9d9d9 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -1792,7 +1792,7 @@  bool memory_region_is_ram_device(MemoryRegion *mr)
 uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr)
 {
     uint8_t mask = mr->dirty_log_mask;
-    if (global_dirty_log && mr->ram_block) {
+    if (global_dirty_log && (mr->ram_block || memory_region_is_iommu(mr))) {
         mask |= (1 << DIRTY_MEMORY_MIGRATION);
     }
     return mask;