Anthony PERARD
2012-Sep-27 11:12 UTC
[PATCH V4 4/5] exec, memory: Call to xen_modified_memory.
This patch add some calls to xen_modified_memory to notify Xen about dirtybits during migration. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- exec.c | 1 + memory.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/exec.c b/exec.c index 366684c..1114a09 100644 --- a/exec.c +++ b/exec.c @@ -3427,6 +3427,7 @@ static void invalidate_and_set_dirty(target_phys_addr_t addr, /* set dirty bit */ cpu_physical_memory_set_dirty_flags(addr, (0xff & ~CODE_DIRTY_FLAG)); } + xen_modified_memory(addr, length); } void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, diff --git a/memory.c b/memory.c index 4f3ade0..015c544 100644 --- a/memory.c +++ b/memory.c @@ -19,6 +19,7 @@ #include "bitops.h" #include "kvm.h" #include <assert.h> +#include "hw/xen.h" #define WANT_EXEC_OBSOLETE #include "exec-obsolete.h" @@ -1077,6 +1078,7 @@ void memory_region_set_dirty(MemoryRegion *mr, target_phys_addr_t addr, target_phys_addr_t size) { assert(mr->terminates); + xen_modified_memory(mr->ram_addr + addr, size); return cpu_physical_memory_set_dirty_range(mr->ram_addr + addr, size, -1); } -- Anthony PERARD
Stefano Stabellini
2012-Oct-01 10:36 UTC
Re: [PATCH V4 4/5] exec, memory: Call to xen_modified_memory.
On Thu, 27 Sep 2012, Anthony PERARD wrote:> This patch add some calls to xen_modified_memory to notify Xen about dirtybits > during migration. > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>If I am not mistaken, this is the last patch that needs reviewing. Avi, are you OK with it?> exec.c | 1 + > memory.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/exec.c b/exec.c > index 366684c..1114a09 100644 > --- a/exec.c > +++ b/exec.c > @@ -3427,6 +3427,7 @@ static void invalidate_and_set_dirty(target_phys_addr_t addr, > /* set dirty bit */ > cpu_physical_memory_set_dirty_flags(addr, (0xff & ~CODE_DIRTY_FLAG)); > } > + xen_modified_memory(addr, length); > } > > void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, > diff --git a/memory.c b/memory.c > index 4f3ade0..015c544 100644 > --- a/memory.c > +++ b/memory.c > @@ -19,6 +19,7 @@ > #include "bitops.h" > #include "kvm.h" > #include <assert.h> > +#include "hw/xen.h" > > #define WANT_EXEC_OBSOLETE > #include "exec-obsolete.h" > @@ -1077,6 +1078,7 @@ void memory_region_set_dirty(MemoryRegion *mr, target_phys_addr_t addr, > target_phys_addr_t size) > { > assert(mr->terminates); > + xen_modified_memory(mr->ram_addr + addr, size); > return cpu_physical_memory_set_dirty_range(mr->ram_addr + addr, size, -1); > } > > -- > Anthony PERARD >
Avi Kivity
2012-Oct-02 10:25 UTC
Re: [PATCH V4 4/5] exec, memory: Call to xen_modified_memory.
On 10/01/2012 12:36 PM, Stefano Stabellini wrote:> On Thu, 27 Sep 2012, Anthony PERARD wrote: >> This patch add some calls to xen_modified_memory to notify Xen about dirtybits >> during migration. >> >> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > > If I am not mistaken, this is the last patch that needs reviewing. > Avi, are you OK with it? > > > >> exec.c | 1 + >> memory.c | 2 ++ >> 2 files changed, 3 insertions(+) >> >> diff --git a/exec.c b/exec.c >> index 366684c..1114a09 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -3427,6 +3427,7 @@ static void invalidate_and_set_dirty(target_phys_addr_t addr, >> /* set dirty bit */ >> cpu_physical_memory_set_dirty_flags(addr, (0xff & ~CODE_DIRTY_FLAG)); >> } >> + xen_modified_memory(addr, length); >> } >> >> void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, >> diff --git a/memory.c b/memory.c >> index 4f3ade0..015c544 100644 >> --- a/memory.c >> +++ b/memory.c >> @@ -19,6 +19,7 @@ >> #include "bitops.h" >> #include "kvm.h" >> #include <assert.h> >> +#include "hw/xen.h" >> >> #define WANT_EXEC_OBSOLETE >> #include "exec-obsolete.h" >> @@ -1077,6 +1078,7 @@ void memory_region_set_dirty(MemoryRegion *mr, target_phys_addr_t addr, >> target_phys_addr_t size) >> { >> assert(mr->terminates); >> + xen_modified_memory(mr->ram_addr + addr, size); >> return cpu_physical_memory_set_dirty_range(mr->ram_addr + addr, size, -1); >> }I would prefer this bit pushed into cpu_physical_set_dirty_range(). Possibly the first bit too? -- error compiling committee.c: too many arguments to function
Anthony PERARD
2012-Oct-02 16:16 UTC
Re: [PATCH V4 4/5] exec, memory: Call to xen_modified_memory.
On 10/02/2012 11:25 AM, Avi Kivity wrote:> On 10/01/2012 12:36 PM, Stefano Stabellini wrote: >> On Thu, 27 Sep 2012, Anthony PERARD wrote: >>> This patch add some calls to xen_modified_memory to notify Xen aboutdirtybits>>> during migration. >>> >>> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> >> >> If I am not mistaken, this is the last patch that needs reviewing. >> Avi, are you OK with it? >> >> >> >>> exec.c | 1 + >>> memory.c | 2 ++ >>> 2 files changed, 3 insertions(+) >>> >>> diff --git a/exec.c b/exec.c >>> index 366684c..1114a09 100644 >>> --- a/exec.c >>> +++ b/exec.c >>> @@ -3427,6 +3427,7 @@ static voidinvalidate_and_set_dirty(target_phys_addr_t addr,>>> /* set dirty bit */ >>> cpu_physical_memory_set_dirty_flags(addr, (0xff &~CODE_DIRTY_FLAG));>>> } >>> + xen_modified_memory(addr, length); >>> } >>> >>> void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, >>> diff --git a/memory.c b/memory.c >>> index 4f3ade0..015c544 100644 >>> --- a/memory.c >>> +++ b/memory.c >>> @@ -19,6 +19,7 @@ >>> #include "bitops.h" >>> #include "kvm.h" >>> #include <assert.h> >>> +#include "hw/xen.h" >>> >>> #define WANT_EXEC_OBSOLETE >>> #include "exec-obsolete.h" >>> @@ -1077,6 +1078,7 @@ void memory_region_set_dirty(MemoryRegion *mr,target_phys_addr_t addr,>>> target_phys_addr_t size) >>> { >>> assert(mr->terminates); >>> + xen_modified_memory(mr->ram_addr + addr, size); >>> return cpu_physical_memory_set_dirty_range(mr->ram_addr + addr,size, -1);>>> } > > I would prefer this bit pushed into cpu_physical_set_dirty_range().Ok, I will call the function from cpu_physical_memory_set_dirty_range() instead of from memory_region_set_dirty.> Possibly the first bit too?But the call from invalidate_and_set_dirty, I can not remove it because it does not work. The xen function must be called without condition as xen and qemu does not maintained the same dirtymap. -- Anthony PERARD
Avi Kivity
2012-Oct-02 16:20 UTC
Re: [PATCH V4 4/5] exec, memory: Call to xen_modified_memory.
On 10/02/2012 06:16 PM, Anthony PERARD wrote:> >> Possibly the first bit too? > > But the call from invalidate_and_set_dirty, I can not remove it because > it does not work. The xen function must be called without condition as > xen and qemu does not maintained the same dirtymap.Right, in fact we added invalidate_and_set_dirty() in order to stick the xen call in it, I just forgot about it. So the first bit is okay. -- error compiling committee.c: too many arguments to function