Patchwork [V4,5/5] xen: Set the vram dirty when an error occur.

login
register
mail settings
Submitter Anthony PERARD
Date Sept. 27, 2012, 11:12 a.m.
Message ID <1348744360-2989-6-git-send-email-anthony.perard@citrix.com>
Download mbox | patch
Permalink /patch/187328/
State New
Headers show

Comments

Anthony PERARD - Sept. 27, 2012, 11:12 a.m.
If the call to xc_hvm_track_dirty_vram() fails, then we set dirtybit on all the
video ram. This case happens during migration.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 xen-all.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Stefano Stabellini - Oct. 1, 2012, 10:33 a.m.
On Thu, 27 Sep 2012, Anthony PERARD wrote:
> If the call to xc_hvm_track_dirty_vram() fails, then we set dirtybit on all the
> video ram. This case happens during migration.
> 
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

>  xen-all.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/xen-all.c b/xen-all.c
> index b11542c..e6308be 100644
> --- a/xen-all.c
> +++ b/xen-all.c
> @@ -507,7 +507,8 @@ static void xen_sync_dirty_bitmap(XenIOState *state,
>                                   bitmap);
>      if (rc < 0) {
>          if (rc != -ENODATA) {
> -            fprintf(stderr, "xen: track_dirty_vram failed (0x" TARGET_FMT_plx
> +            memory_region_set_dirty(framebuffer, 0, size);
> +            DPRINTF("xen: track_dirty_vram failed (0x" TARGET_FMT_plx
>                      ", 0x" TARGET_FMT_plx "): %s\n",
>                      start_addr, start_addr + size, strerror(-rc));
>          }
> -- 
> Anthony PERARD
>

Patch

diff --git a/xen-all.c b/xen-all.c
index b11542c..e6308be 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -507,7 +507,8 @@  static void xen_sync_dirty_bitmap(XenIOState *state,
                                  bitmap);
     if (rc < 0) {
         if (rc != -ENODATA) {
-            fprintf(stderr, "xen: track_dirty_vram failed (0x" TARGET_FMT_plx
+            memory_region_set_dirty(framebuffer, 0, size);
+            DPRINTF("xen: track_dirty_vram failed (0x" TARGET_FMT_plx
                     ", 0x" TARGET_FMT_plx "): %s\n",
                     start_addr, start_addr + size, strerror(-rc));
         }