[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v19 3/7] introduce a new qom device to deal with
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v19 3/7] introduce a new qom device to deal with panicked event |
Date: |
Thu, 18 Apr 2013 11:23:46 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Hu Tao <address@hidden> writes:
> pvpanic device is used to send guest panic event from guest to qemu.
>
> When guest panic happens, pvpanic device driver will write a event
> number to IO port 0x505(which is the IO port occupied by pvpanic device,
> by default). On receiving the event, pvpanic device will pause guest
> cpu(s), and send a qmp event QEVENT_GUEST_PANICKED.
>
> Signed-off-by: Wen Congyang <address@hidden>
> Signed-off-by: Hu Tao <address@hidden>
> ---
> hw/misc/Makefile.objs | 2 +
> hw/misc/pvpanic.c | 123
> ++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 125 insertions(+)
> create mode 100644 hw/misc/pvpanic.c
>
> diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs
> index 03699c3..d72ea83 100644
> --- a/hw/misc/Makefile.objs
> +++ b/hw/misc/Makefile.objs
> @@ -38,3 +38,5 @@ obj-$(CONFIG_OMAP) += omap_tap.o
> obj-$(CONFIG_PXA2XX) += pxa2xx_pcmcia.o
> obj-$(CONFIG_SLAVIO) += slavio_misc.o
> obj-$(CONFIG_ZYNQ) += zynq_slcr.o
> +
> +common-obj-y += pvpanic.o
> diff --git a/hw/misc/pvpanic.c b/hw/misc/pvpanic.c
> new file mode 100644
> index 0000000..c3adcdf
> --- /dev/null
> +++ b/hw/misc/pvpanic.c
> @@ -0,0 +1,123 @@
> +/*
> + * QEMU simulated pvpanic 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 PVPANIC_F_PANICKED 0
> +
> +/* The pv event value */
> +#define PVPANIC_PANICKED (1 << PVPANIC_F_PANICKED)
> +
> +#define TYPE_ISA_PVPANIC_DEVICE "pvpanic"
> +#define ISA_PVPANIC_DEVICE(obj) \
> + OBJECT_CHECK(PVPanicState, (obj), TYPE_ISA_PVPANIC_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)
> +{
> + static bool logged;
> +
> + if (event & ~PVPANIC_PANICKED && !logged) {
> + fprintf(stderr, "pvpanic: unknown event %#x.\n", event);
> + logged = true;
> + }
qemu_log_mask(LOG_GUEST_ERROR, ...)?
Could be done on top, without a respin.
> +
> + if (event & PVPANIC_PANICKED) {
> + panicked_mon_event("pause");
> + vm_stop(RUN_STATE_GUEST_PANICKED);
> + return;
> + }
> +}
[...]
- [Qemu-devel] [PATCH v19 0/7] Add pvpanic device to deal with guest panic event, Hu Tao, 2013/04/17
- [Qemu-devel] [PATCH v19 2/7] add a new qevent: QEVENT_GUEST_PANICKED, Hu Tao, 2013/04/17
- [Qemu-devel] [PATCH v19 1/7] add a new runstate: RUN_STATE_GUEST_PANICKED, Hu Tao, 2013/04/17
- [Qemu-devel] [PATCH v19 5/7] pvpanic: add document of pvpanic, Hu Tao, 2013/04/17
- [Qemu-devel] [PATCH v19 7/7] Wire up disabled wait a panicked event on s390, Hu Tao, 2013/04/17
- [Qemu-devel] [PATCH v19 4/7] pvpanic: pass configurable ioport to seabios, Hu Tao, 2013/04/17