[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with p
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event |
Date: |
Wed, 20 Mar 2013 10:15:59 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Hu Tao <address@hidden> writes:
> pvevent device is used to send guest panic event from guest to qemu.
>
> When guest panic happens, pvevent device driver will write a event
> number to IO port 0x505(which is the IO port occupied by pvevent device,
> by default). On receiving the event, pvevent device will pause guest
> cpu(s), and send a qmp event QEVENT_GUEST_PANICKED.
>
> TODO: make the IO port configurable
>
> Signed-off-by: Wen Congyang <address@hidden>
> Signed-off-by: Hu Tao <address@hidden>
> ---
> hw/Makefile.objs | 2 +
> hw/pvevent.c | 116
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 118 insertions(+)
> create mode 100644 hw/pvevent.c
>
> diff --git a/hw/Makefile.objs b/hw/Makefile.objs
> index 40ebe46..edf499e 100644
> --- a/hw/Makefile.objs
> +++ b/hw/Makefile.objs
> @@ -218,5 +218,7 @@ obj-$(CONFIG_KVM) += ivshmem.o
> obj-$(CONFIG_LINUX) += vfio_pci.o
> endif
>
> +common-obj-y += pvevent.o
> +
> $(obj)/baum.o: QEMU_CFLAGS += $(SDL_CFLAGS)
> endif
> diff --git a/hw/pvevent.c b/hw/pvevent.c
> new file mode 100644
> index 0000000..c7df77b
> --- /dev/null
> +++ b/hw/pvevent.c
> @@ -0,0 +1,116 @@
> +/*
> + * QEMU simulated pvevent device.
> + *
> + * Copyright Fujitsu, Corp. 2013
> + *
> + * Authors:
> + * Wen Congyang <address@hidden>
> + * Hu Tao <address@hidden>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + *
> + */
> +
> +#include <qapi/qmp/qobject.h>
> +#include <qapi/qmp/qjson.h>
> +#include <monitor/monitor.h>
> +#include <sysemu/sysemu.h>
> +#include <sysemu/kvm.h>
> +
> +/* The bit of supported pv event */
> +#define PVEVENT_F_PANICKED 0
> +
> +/* The pv event value */
> +#define PVEVENT_PANICKED (1 << PVEVENT_F_PANICKED)
This looks like events are encoded as bits, which can be combined into a
set, but...
> +
> +#define TYPE_ISA_PVEVENT_DEVICE "pvevent"
> +#define ISA_PVEVENT_DEVICE(obj) \
> + OBJECT_CHECK(PVEventState, (obj), TYPE_ISA_PVEVENT_DEVICE)
> +
> +static void panicked_mon_event(const char *action)
> +{
> + QObject *data;
> +
> + data = qobject_from_jsonf("{ 'action': %s }", action);
> + monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
> + qobject_decref(data);
> +}
> +
> +static void handle_event(int event)
> +{
> + if (event == PVEVENT_PANICKED) {
... here you don't test bits. Weird. Intentional?
> + panicked_mon_event("pause");
> + vm_stop(RUN_STATE_GUEST_PANICKED);
> + return;
> + }
> +}
Should we log events we don't understand?
> +
> +#include "hw/isa.h"
> +
> +typedef struct PVEventState {
> + ISADevice parent_obj;
> +
> + MemoryRegion io;
> + uint16_t ioport;
> +} PVEventState;
> +
> +/* return supported events on read */
> +static uint64_t pvevent_ioport_read(void *opaque, hwaddr addr, unsigned size)
> +{
> + return PVEVENT_PANICKED;
> +}
> +
> +static void pvevent_ioport_write(void *opaque, hwaddr addr, uint64_t val,
> + unsigned size)
> +{
> + handle_event(val);
> +}
[...]
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, (continued)
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Paolo Bonzini, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Gleb Natapov, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Paolo Bonzini, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Gleb Natapov, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Paolo Bonzini, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Gleb Natapov, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Paolo Bonzini, 2013/03/14
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Gleb Natapov, 2013/03/15
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Markus Armbruster, 2013/03/20
- Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event, Hu Tao, 2013/03/14
Re: [Qemu-devel] [PATCH v14 3/4] introduce pvevent device to deal with panicked event,
Markus Armbruster <=
[Qemu-devel] [PATCH v14 4/4] pvevent: add document to describe the usage, Hu Tao, 2013/03/14
Re: [Qemu-devel] [PATCH v14 0/4] pvevent device to deal with guest panic event, Gleb Natapov, 2013/03/14