From: Jan Kiszka <jan.kiszka@siemens.com>
To: Lucas Meneghel Rodrigues <lmr@redhat.com>
Cc: "Hervé Poussineau" <hpoussin@reactos.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 1/2] debugexit: support for custom exit port (LGPL VGA BIOS port 0x501) v2
Date: Tue, 09 Oct 2012 15:58:02 +0200 [thread overview]
Message-ID: <50742D6A.2030502@siemens.com> (raw)
In-Reply-To: <1349787833-8644-2-git-send-email-lmr@redhat.com>
On 2012-10-09 15:03, Lucas Meneghel Rodrigues wrote:
> From: Hervé Poussineau <hpoussin@reactos.org>
>
> Add generic support for simple I/O port which, when written to, cause
> QEMU to exit with the given written value.
>
> There is no vmstate associated with the debugging port, simply because
> the entire interface is a single, stateless, write-only port.
>
> Changes from v1:
>
> * Changing PIO from MMIO, as requested during review.
>
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
> hw/debugexit.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++
> hw/i386/Makefile.objs | 2 +-
> 2 files changed, 76 insertions(+), 1 deletion(-)
> create mode 100644 hw/debugexit.c
>
> diff --git a/hw/debugexit.c b/hw/debugexit.c
> new file mode 100644
> index 0000000..fe4608c
> --- /dev/null
> +++ b/hw/debugexit.c
> @@ -0,0 +1,75 @@
> +/*
> + * QEMU debug exit port ("LGPL'ed-VGA-BIOS-style port 501/502") emulation
> + *
> + * Copyright (c) 2012 Herve Poussineau
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> + * See the GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License along
> + * with this program; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#include "isa.h"
> +#include "exec-memory.h"
> +
> +typedef struct ISADebugExitState {
> + ISADevice dev;
> + uint32_t iobase;
> + uint8_t access_size;
> +} ISADebugExitState;
> +
> +static void debugexit_ioport_write(void *opaque, uint32_t addr, uint32_t val)
> +{
> + exit((val << 1) | 1);
> +}
> +
> +static int debugexit_isa_initfn(ISADevice *dev)
> +{
> + ISADebugExitState *isa = DO_UPCAST(ISADebugExitState, dev, dev);
> +
> + const struct MemoryRegionPortio debugexit_portio_list[] = {
> + { isa->iobase, 1, isa->access_size, .write = debugexit_ioport_write, },
> + PORTIO_END_OF_LIST(),
> + };
> + PortioList *debugexit_port_list = g_new(PortioList, 1);
> + portio_list_init(debugexit_port_list, debugexit_portio_list,
> + NULL, "isa-debugexit");
> + portio_list_add(debugexit_port_list, get_system_io(), 0x0);
Please use a memory region (the example I cited should contain a pattern
for that as well). Portio lists are for scattered ports.
> + return 0;
> +}
> +
> +static Property debugexit_isa_properties[] = {
> + DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501),
> + DEFINE_PROP_UINT8("access-size", ISADebugExitState, access_size, 1),
> + DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void debugexit_isa_class_initfn(ObjectClass *klass, void *data)
> +{
> + DeviceClass *dc = DEVICE_CLASS(klass);
> + ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
> + ic->init = debugexit_isa_initfn;
> + dc->props = debugexit_isa_properties;
> +}
> +
> +static TypeInfo debugexit_isa_info = {
> + .name = "isa-debugexit",
> + .parent = TYPE_ISA_DEVICE,
> + .instance_size = sizeof(ISADebugExitState),
> + .class_init = debugexit_isa_class_initfn,
> +};
> +
> +static void debugexit_register_types(void)
> +{
> + type_register_static(&debugexit_isa_info);
> +}
> +
> +type_init(debugexit_register_types)
> diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
> index 8c764bb..b34c61c 100644
> --- a/hw/i386/Makefile.objs
> +++ b/hw/i386/Makefile.objs
> @@ -3,7 +3,7 @@ obj-y += apic_common.o apic.o kvmvapic.o
> obj-y += sga.o ioapic_common.o ioapic.o piix_pci.o
> obj-y += vmport.o
> obj-y += pci-hotplug.o smbios.o wdt_ib700.o
> -obj-y += debugcon.o multiboot.o
> +obj-y += debugcon.o debugexit.o multiboot.o
> obj-y += pc_piix.o
> obj-y += pc_sysfw.o
> obj-$(CONFIG_XEN) += xen_platform.o xen_apic.o
>
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2012-10-09 13:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-09 13:03 [Qemu-devel] [PATCH 0/2] Adding pc-testdev to qemu v3 Lucas Meneghel Rodrigues
2012-10-09 13:03 ` [Qemu-devel] [PATCH 1/2] debugexit: support for custom exit port (LGPL VGA BIOS port 0x501) v2 Lucas Meneghel Rodrigues
2012-10-09 13:58 ` Jan Kiszka [this message]
2012-10-09 13:03 ` [Qemu-devel] [PATCH 2/2] hw: Add test device for unittests execution v4 Lucas Meneghel Rodrigues
2012-10-09 13:58 ` Jan Kiszka
2012-10-13 8:48 ` Blue Swirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50742D6A.2030502@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=hpoussin@reactos.org \
--cc=lmr@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.