qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH 0/4] Fix VMState design flaws


From: Paolo Bonzini
Subject: [Qemu-devel] Re: [PATCH 0/4] Fix VMState design flaws
Date: Mon, 14 Sep 2009 23:30:21 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090814 Fedora/3.0-2.6.b3.fc11 Lightning/1.0pre Thunderbird/3.0b3

On 09/14/2009 10:50 PM, Juan Quintela wrote:
Paolo Bonzini<address@hidden>  wrote:
    * Add version_id field to post_load().  Now we can assign default values
      in post_load for old versions of the state (ps2_kbd as example).

While this is a good idea, why don't we first reset the devices upon
load, which would also set the default values?...

It is safe to do that unconditionally?
If so, I am all for it.  We can:
- add reset field to vmstate
- add default values to some fields, if it makse sense (haven't yet
   looked at reset code).

The PS2 reset is this:

static void ps2_common_reset(PS2State *s)
{
    PS2Queue *q;
    s->write_cmd = -1;
    q = &s->queue;
    q->rptr = 0;
    q->wptr = 0;
    q->count = 0;
    s->update_irq(s->update_arg, 0); // calls kbd_update_kbd_irq
}

static void ps2_kbd_reset(void *opaque)
{
    PS2KbdState *s = (PS2KbdState *) opaque;

    ps2_common_reset(&s->common);
    s->scan_enabled = 0;
    s->translate = 0;
    s->scancode_set = 0;
}

All of these are later reset by load. The update_irq may seem unsafe, but maybe deasserting an IRQ is better than leaving it in whatever state it was left by the previous VM...

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]