|
| 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
| [Prev in Thread] | Current Thread | [Next in Thread] |