|
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] |