[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 27/42] postcopy: ram_enable_notify to switch
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v7 27/42] postcopy: ram_enable_notify to switch on userfault |
Date: |
Mon, 13 Jul 2015 18:36:06 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
* Juan Quintela (address@hidden) wrote:
> "Dr. David Alan Gilbert (git)" <address@hidden> wrote:
> > From: "Dr. David Alan Gilbert" <address@hidden>
> >
> > Mark the area of RAM as 'userfault'
> > Start up a fault-thread to handle any userfaults we might receive
> > from it (to be filled in later)
> >
> > Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> > Reviewed-by: David Gibson <address@hidden>
> > ---
> > include/migration/migration.h | 3 ++
> > include/migration/postcopy-ram.h | 6 ++++
> > migration/postcopy-ram.c | 69
> > +++++++++++++++++++++++++++++++++++++++-
> > migration/savevm.c | 9 ++++++
> > 4 files changed, 86 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/migration/migration.h b/include/migration/migration.h
> > index 98e2568..e6585c5 100644
> > --- a/include/migration/migration.h
> > +++ b/include/migration/migration.h
> > @@ -69,6 +69,9 @@ struct MigrationIncomingState {
> > */
> > QemuEvent main_thread_load_event;
> >
> > + QemuThread fault_thread;
>
> Best name ever? Well, it could be "wrong_thread" O:-)
Well they are 'user faults'! Not that we blame the user for
them personally of course.
> > +static void *postcopy_ram_fault_thread(void *opaque)
> > +{
> > + MigrationIncomingState *mis = (MigrationIncomingState *)opaque;
>
> Uneeded cast.
Thanks, gone.
> > +
> > + fprintf(stderr, "postcopy_ram_fault_thread\n");
> > + /* TODO: In later patch */
> > + qemu_sem_post(&mis->fault_thread_sem);
> > + while (1) {
> > + /* TODO: In later patch */
> > + }
> > +
> > + return NULL;
> > +}
> > +
> > +int postcopy_ram_enable_notify(MigrationIncomingState *mis)
> > +{
> > + /* Create the fault handler thread and wait for it to be ready */
> > + qemu_sem_init(&mis->fault_thread_sem, 0);
> > + qemu_thread_create(&mis->fault_thread, "postcopy/fault",
> > + postcopy_ram_fault_thread, mis,
> > QEMU_THREAD_JOINABLE);
> > + qemu_sem_wait(&mis->fault_thread_sem);
> > + qemu_sem_destroy(&mis->fault_thread_sem);
> > +
> > + /* Mark so that we get notified of accesses to unwritten areas */
> > + if (qemu_ram_foreach_block(ram_block_enable_notify, mis)) {
> > + return -1;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > #else
> > /* No target OS support, stubs just fail */
> > -
>
> This belongs in a different patch O:-)
Thanks, gone.
> If you have to resend, just change them.
>
> Reviewed-by: Juan Quintela <address@hidden>
Dave
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK