[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 08/12] pckbd: adding new fields to vmstate
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 08/12] pckbd: adding new fields to vmstate |
Date: |
Tue, 26 Aug 2014 11:12:05 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 |
Il 26/08/2014 09:15, Pavel Dovgalyuk ha scritto:
> This patch adds outport to VMState to allow correct saving and restoring
> the state of PC keyboard controller.
>
> Signed-off-by: Pavel Dovgalyuk <address@hidden>
> ---
> hw/input/pckbd.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 51 insertions(+), 0 deletions(-)
>
> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
> index ca1cffc..95d8767 100644
> --- a/hw/input/pckbd.c
> +++ b/hw/input/pckbd.c
> @@ -131,6 +131,7 @@ typedef struct KBDState {
> uint8_t status;
> uint8_t mode;
> uint8_t outport;
> + bool outport_present;
> /* Bitmask of devices with data available. */
> uint8_t pending;
> void *kbd;
> @@ -367,18 +368,68 @@ static void kbd_reset(void *opaque)
> s->mode = KBD_MODE_KBD_INT | KBD_MODE_MOUSE_INT;
> s->status = KBD_STAT_CMD | KBD_STAT_UNLOCKED;
> s->outport = KBD_OUT_RESET | KBD_OUT_A20;
> + s->outport_present = false;
> +}
> +
> +static uint8_t kbd_outport_default(KBDState *s)
> +{
> + return KBD_OUT_RESET | KBD_OUT_A20
> + | (s->status & KBD_STAT_OBF ? KBD_OUT_OBF : 0)
> + | (s->status & KBD_STAT_MOUSE_OBF ? KBD_OUT_MOUSE_OBF : 0);
> +}
> +
> +static int kbd_outport_post_load(void *opaque, int version_id)
> +{
> + KBDState *s = opaque;
> + s->outport_present = true;
> + return 0;
> +}
> +
> +static const VMStateDescription vmstate_kbd_outport = {
> + .name = "pckbd_outport",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .post_load = kbd_outport_post_load,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT8(outport, KBDState),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> +static bool kbd_outport_needed(void *opaque)
> +{
> + KBDState *s = opaque;
> + return s->outport != kbd_outport_default(s);
> +}
> +
> +static int kbd_post_load(void *opaque, int version_id)
> +{
> + KBDState *s = opaque;
> + if (!s->outport_present) {
> + s->outport = kbd_outport_default(s);
> + }
> + s->outport_present = false;
> + return 0;
> }
>
> static const VMStateDescription vmstate_kbd = {
> .name = "pckbd",
> .version_id = 3,
> .minimum_version_id = 3,
> + .post_load = kbd_post_load,
> .fields = (VMStateField[]) {
> VMSTATE_UINT8(write_cmd, KBDState),
> VMSTATE_UINT8(status, KBDState),
> VMSTATE_UINT8(mode, KBDState),
> VMSTATE_UINT8(pending, KBDState),
> VMSTATE_END_OF_LIST()
> + },
> + .subsections = (VMStateSubsection[]) {
> + {
> + .vmsd = &vmstate_kbd_outport,
> + .needed = kbd_outport_needed,
> + },
> + VMSTATE_END_OF_LIST()
> }
> };
>
>
>
>
Reviewed-by: Paolo Bonzini <address@hidden>
- [Qemu-devel] [PATCH 05/12] serial: fixing vmstate for save/restore, (continued)
[Qemu-devel] [PATCH 07/12] hpet: fixing saving and loading process, Pavel Dovgalyuk, 2014/08/26
[Qemu-devel] [PATCH 08/12] pckbd: adding new fields to vmstate, Pavel Dovgalyuk, 2014/08/26
- Re: [Qemu-devel] [PATCH 08/12] pckbd: adding new fields to vmstate,
Paolo Bonzini <=
[Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Pavel Dovgalyuk, 2014/08/26
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Paolo Bonzini, 2014/08/26
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Pavel Dovgaluk, 2014/08/27
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Paolo Bonzini, 2014/08/27
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Pavel Dovgaluk, 2014/08/27
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Paolo Bonzini, 2014/08/27
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Pavel Dovgaluk, 2014/08/27
- Message not available
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Paolo Bonzini, 2014/08/27
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Pavel Dovgaluk, 2014/08/28
- Re: [Qemu-devel] [PATCH 09/12] rtl8139: adding new fields to vmstate, Paolo Bonzini, 2014/08/28