[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [PATCH V2 1/3] Introduce log_start/log_stop in CPUPhysMemoryClient



On Mon, 17 Jan 2011, Jan Kiszka wrote:

> On 2011-01-14 19:10, anthony.perard@xxxxxxxxxx wrote:
> > From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> >
> > In order to use log_start/log_stop with Xen as well in the vga code,
> > this two operations have been put in CPUPhysMemoryClient.
> >
> > The two new functions cpu_physical_log_start,cpu_physical_log_stop are
> > used in hw/vga.c and replace the kvm_log_start/stop. With this, vga does
> > no longer depends on kvm header.
>
> Basically, this looks good to me. Two remarks below.
>
> >
> > Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> > ---
> >  cpu-all.h    |    6 ++++++
> >  cpu-common.h |    4 ++++
> >  exec.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
> >  hw/vga.c     |   31 ++++++++++++++++---------------
> >  hw/vhost.c   |   16 ++++++++++++++++
> >  kvm-all.c    |    8 ++++++--
> >  kvm-stub.c   |   10 ----------
> >  kvm.h        |    3 ---
> >  8 files changed, 90 insertions(+), 30 deletions(-)
> >
> > diff --git a/exec.c b/exec.c
> > index c6ed96d..609ec88 100644
> > --- a/exec.c
> > +++ b/exec.c
> > @@ -1734,6 +1734,30 @@ static int cpu_notify_migration_log(int enable)
> >      return 0;
> >  }
> >
> > +static int cpu_notify_log_start(target_phys_addr_t start,
> > +                                ram_addr_t size)
> > +{
> > +    CPUPhysMemoryClient *client;
> > +    QLIST_FOREACH(client, &memory_client_list, list) {
> > +        int r = client->log_start(client, start, size);
> > +        if (r < 0)
> > +            return r;
> > +    }
> > +    return 0;
> > +}
> > +
> > +static int cpu_notify_log_stop(target_phys_addr_t start,
> > +                               ram_addr_t size)
> > +{
> > +    CPUPhysMemoryClient *client;
> > +    QLIST_FOREACH(client, &memory_client_list, list) {
> > +        int r = client->log_stop(client, start, size);
> > +        if (r < 0)
> > +            return r;
> > +    }
> > +    return 0;
> > +}
> > +
>
> I would make the new callbacks optional, i.e. only invoke them if the
> handler is non-NULL. Avoids stubs and branching to vhost.

Ok, I will do that.

> >  static void phys_page_for_each_1(CPUPhysMemoryClient *client,
> >                                   int level, void **lp)
> >  {
> > @@ -2073,6 +2097,24 @@ int 
> > cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr,
> >      return ret;
> >  }
> >
> > +int cpu_physical_log_start(target_phys_addr_t start_addr,
> > +                           ram_addr_t size)
> > +{
> > +    int ret;
> > +
> > +    ret = cpu_notify_log_start(start_addr, size);
> > +    return ret;
> > +}
> > +
> > +int cpu_physical_log_stop(target_phys_addr_t start_addr,
> > +                          ram_addr_t size)
> > +{
> > +    int ret;
> > +
> > +    ret = cpu_notify_log_stop(start_addr, size);
> > +    return ret;
> > +}
> > +
>
> I consider this split-up between API frontend and cpu_notify_* backend
> as unneeded. But that's not your fault, you just follow the pre-existing
> pattern. Unless someone feels strong about this, you may just keep it.

Actually, I will remove it, and keep only the frontend fonction.

Thanks,

-- 
Anthony PERARD

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.